Subject: Re: bug#34934: deeptools is not reproducible

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 28 Mar 2019 09:45:03 -0400

Hello Ludovic!

Ludovic Courtès <[email-masked]> writes:

> Hi Gábor,
>
> Gábor Boskovits <[email-masked]> skribis:
>
>> Ludovic Courtès <[email-masked]> ezt írta (időpont: 2019. márc. 23., Szo, 18:01):
>>>
>>> Hi,
>>>
>>> Maxim Cournoyer <[email-masked]> skribis:
>>>
>>> > │ │ │ │ ├── tree.cpython-37m-x86_64-linux-gnu.so
>>> > │ │ │ │ │ ├── /gnu/store/02iklp4swqs0ipxhg5x9b2shmj6b30h1-binutils-2.31.1/bin/readelf --wide --dynamic {}
>>> > │ │ │ │ │ │ @@ -2,15 +2,15 @@
>>> > │ │ │ │ │ │  Dynamic section at offset 0xcd90 contains 30 entries:
>>> > │ │ │ │ │ │    Tag        Type                         Name/Value
>>> > │ │ │ │ │ │   0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
>>> > │ │ │ │ │ │   0x0000000000000001 (NEEDED)             Shared library: [libpython3.7m.so.1.0]
>>> > │ │ │ │ │ │   0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
>>> > │ │ │ │ │ │   0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
>>> > │ │ │ │ │ │   0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
>>> > │ │ │ │ │ │ - 0x000000000000001d (RUNPATH) Library runpath:
>>> > [/gnu/store/9z98cvjm7p7z21xdid1ryydxy5vyz6wr-python-3.7.0/lib:/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib:/gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib:/gnu/store/nq4lsyipmfb0q7g26ra45rwwqrh3x8zw-zlib-1.2.11/lib:/gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../..]
>>> > │ │ │ │ │ │ + 0x000000000000001d (RUNPATH)            Library runpath:
>>> > [/gnu/store/b7fqhszxl02g6pfm3vw6b3cjz472qrly-python-3.7.0/lib:/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib:/gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib:/gnu/store/nq4lsyipmfb0q7g26ra45rwwqrh3x8zw-zlib-1.2.11/lib:/gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../..]
>>>
>>> Hmmm, what’s the difference between these two RUNPATHs?
>>>
>>
>> At first They looked ver similar to me, but the hash of the first
>> python-3.7.0 differs, right at the beginning.
>
> Oooh, indeed, I had overlooked that.
>
> So to me that means we’re probably looking at the wrong diff: the hash
> is definitely deterministic.  Maxim, are you sure you were comparing
> /gnu/store/…-deeptools with /gnu/store/…-deeptools-check, as discussed
> in another message?

That must be my mistake yes; the output of 'guix build --check --no-grafts
python-deeptools':

--8<---------------cut here---------------start------------->8---
guix build: error: derivation `/gnu/store/hky07zjsvai0x3n99lqmgyh6rhld6v4s-deeptools-3.1.3.drv' may not be deterministic: output `/gnu/store/0j8200f20mp5grjkjh5kw2q9a67gw3rn-deeptools-3.1.3' differs
--8<---------------cut here---------------end--------------->8---

left me confused about what and what store items were
being compared exactly, and I must have went on and diff'd something not quite
right, sorry! Perhaps the store output differing should be mentioned
explicitly in the error?

The suggested command doesn't help :-(, as the ...-check output
doesn't seem to exist:

--8<---------------cut here---------------start------------->8---
$ guix build --check -K deeptools
The following graft will be made:
   /gnu/store/mhqdaw8q8p6r3g12c95d7pmfxnmgg50j-deeptools-3.1.3.drv
applying 30 grafts for /gnu/store/mhqdaw8q8p6r3g12c95d7pmfxnmgg50j-deeptools-3.1.3.drv...
grafting '/gnu/store/f3z6fczw70j6692ddy467pbagbjck009-deeptools-3.1.3' -> '/gnu/store/9vdd6k083y8l83d8yck4wlf09pdmp1wi-deeptools-3.1.3'...
note: keeping build directory `/tmp/guix-build-deeptools-3.1.3.drv-1'
/gnu/store/9vdd6k083y8l83d8yck4wlf09pdmp1wi-deeptools-3.1.3

$ diffoscope /gnu/store/9vdd6k083y8l83d8yck4wlf09pdmp1wi-deeptools-3.1.3{,-check}
/gnu/store/6lgkzp4x3nh32n4pbkdm618wah0b0038-diffoscope-111/bin/.diffoscope-real: /gnu/store/9vdd6k083y8l83d8yck4wlf09pdmp1wi-deeptools-3.1.3-check: No such file or directory
--8<---------------cut here---------------end--------------->8---

Maxim