Subject: bug#69284: guix pull is not reproducible

From: Andrew Tropin <[email-masked]>
Date: Mon, 08 Apr 2024 15:49:49 +0300

On 2024-03-10 11:13, Josselin Poiret via Bug reports for GNU Guix wrote:

> Hi Andrew,
>
> Andrew Tropin via Bug reports for GNU Guix <[email-masked]> writes:
>
>> I don't think that hash of the profile depends on the building process
>> itself.  And it seems on the same system it returns the same result on
>> consequent rebuilds.  It seems something leaks from the environment.
>
> Yes, it's rather that the .drv themselves are not reproducible
> apparently.  Can you compare the derivations building the guixes in the
> different profiles?  You can look at them using first `guix gc
> --derivers` on the profile and then analyzing the .drv manually.  I
> remember seeing the same thing, but I don't really remember anything
> conclusive.
>
> One thing I can say is that Guix generates the .drv dynamically by
> looking at the check-out.  If the checkout is somehow tainted (as it has
> often happened, maybe because of libgit2?), the .drv can end up being
> different.  If you retry by first resetting the Guix checkouts in
> ~/.cache/guix/checkouts/ to a pristine state, do you still get a
> discrepancy?
>
> Best,

I spinned up VPSes from scratch, so check-outs are empty.

I did the same thing as in the first message:

--8<---------------cut here---------------start------------->8---
curl https://paste.sr.ht/blob/538fae89d3ee38a803894ec675d78144c8111bb6 > channels.scm
guix pull -C channels-lock.scm -p tmp
--8<---------------cut here---------------end--------------->8---

but in addition to that I did rebuilds of guix profile with recently
built guix to find a "fixed point".

--8<---------------cut here---------------start------------->8---
tmp/bin/guix pull -C channels-lock.scm -p tmp2
tmp2/bin/guix pull -C channels-lock.scm -p tmp3
--8<---------------cut here---------------end--------------->8---

On both debian and guix machines fixed point was reached on the second
iteration, but they were not the same.

== Guix instance, guix profiles and respective derivations ==

/gnu/store/3xjs43f4x25gjic106q3gcagsxvzr2y6-profile.drv
tmp -> /gnu/store/w3qq81dzdj9wckcw8fpz5lv6ylhw1m2d-profile

/gnu/store/jirindb2jrzhap6br5lgs4babxgy7m5z-profile.drv
tmp2 -> /gnu/store/mn55rb4z9s2sriskn5qwbxjbl5na0ah2-profile

/gnu/store/jirindb2jrzhap6br5lgs4babxgy7m5z-profile.drv
tmp3 -> /gnu/store/mn55rb4z9s2sriskn5qwbxjbl5na0ah2-profile

/gnu/store/3xjs43f4x25gjic106q3gcagsxvzr2y6-profile.drv:
--8<---------------cut here---------------start------------->8---
Derive
([("out","/gnu/store/w3qq81dzdj9wckcw8fpz5lv6ylhw1m2d-profile","","")]
 ,[("/gnu/store/0d4wiyh27zdk96hvm2sdagr30845van1-fonts-dir.drv",["out"])
   ,("/gnu/store/3k0bmrwhvskpkgy4gkwmrbx55mmhp5z8-ca-certificate-bundle.drv",["out"])
   ,("/gnu/store/79j21y7hhqdv45z7p5fv9g40cknplvxh-guile-3.0.9.drv",["out"])
   ,("/gnu/store/7sap6q0xsyjz41wq7bccdh5jj6j94jbz-guix-package-cache.drv",["out"])
   ,("/gnu/store/a16s8ykjgsjx4xr2m9qicrkrn4kxbwbn-info-dir.drv",["out"])
   ,("/gnu/store/mijc61yfd18mjagsl2d13sx8ia3xy5gw-emacs-subdirs.drv",["out"])
   ,("/gnu/store/q33r4jx8gsb1kzjl96zyv6yl30jhilga-rde.drv",["out"])
   ,("/gnu/store/xhw613vcqq3fj7aj0wdj7jxpcch2ic7q-module-import-compiled.drv",["out"])
   ,("/gnu/store/yg6mqrnwn1f35dmq9xr8y6rqqd3sjgvw-guix-d264237d5.drv",["out"])
   ,("/gnu/store/zpai0c66k06ab1hcf10h032xzn5zb382-glibc-utf8-locales-2.35.drv",["out"])]
 ,["/gnu/store/4jw49s17qv7ppg07sb2ww43vsl9zk9wn-profile-builder","/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import"]
 ,"x86_64-linux","/gnu/store/354dvnz4pxvqdmx2hjk4qy6h3gkz5s8w-guile-3.0.9/bin/guile",["--no-auto-compile","-L","/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import","-C","/gnu/store/s1s8hxnj7prqafr6ay9994nj11d2wd1w-module-import-compiled","/gnu/store/4jw49s17qv7ppg07sb2ww43vsl9zk9wn-profile-builder"]
 ,[("GUILE_WARN_DEPRECATED","no")
   ,("allowSubstitutes","0")
   ,("guix properties","((type . profile) (profile (count . 2)))")
   ,("out","/gnu/store/w3qq81dzdj9wckcw8fpz5lv6ylhw1m2d-profile")
   ,("preferLocalBuild","1")])
--8<---------------cut here---------------end--------------->8---

/gnu/store/jirindb2jrzhap6br5lgs4babxgy7m5z-profile.drv:
--8<---------------cut here---------------start------------->8---
Derive
([("out","/gnu/store/mn55rb4z9s2sriskn5qwbxjbl5na0ah2-profile","","")]
 ,[("/gnu/store/05vsyxfknr3aqa5ybj39215plc1im06k-rde.drv",["out"])
   ,("/gnu/store/07q4ssl50hnvjgh439qrphzz6xwmcn4c-module-import-compiled.drv",["out"])
   ,("/gnu/store/0ihckcn6p4sg4pgj2rbc5pqq854b4v95-ca-certificate-bundle.drv",["out"])
   ,("/gnu/store/ga7yd5agimq60p8p0x0a7byv25bic72r-fonts-dir.drv",["out"])
   ,("/gnu/store/gk1x2b9hcrw5vkfz7b84j36xwv7wdkn8-emacs-subdirs.drv",["out"])
   ,("/gnu/store/jymwk91cnl9m05rmyjvaabz1p49nrr1b-info-dir.drv",["out"])
   ,("/gnu/store/lls79ps9qdzlmv9szfqic8y2nryl6j4d-guile-3.0.9.drv",["out"])
   ,("/gnu/store/lxs0s0pvgkcpv7hkmls6d9a8ya5f6ppr-glibc-utf8-locales-2.35.drv",["out"])
   ,("/gnu/store/qjxqq5vvy8p556wfk8gyyk9xf5szkz22-guix-package-cache.drv",["out"])
   ,("/gnu/store/yg6mqrnwn1f35dmq9xr8y6rqqd3sjgvw-guix-d264237d5.drv",["out"])]
 ,["/gnu/store/ijplia8qw64fm2apkc0zzrcd4a2q5mjw-profile-builder","/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import"]
 ,"x86_64-linux","/gnu/store/g49b4v7dff8xwfi7wpi8pps1ixhld3n7-guile-3.0.9/bin/guile",["--no-auto-compile","-L","/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import","-C","/gnu/store/8ikjnswwrdr5dyplxnr3bwrskyymib7f-module-import-compiled","/gnu/store/ijplia8qw64fm2apkc0zzrcd4a2q5mjw-profile-builder"]
 ,[("GUILE_WARN_DEPRECATED","no")
   ,("allowSubstitutes","0")
   ,("guix properties","((type . profile) (profile (count . 2)))")
   ,("out","/gnu/store/mn55rb4z9s2sriskn5qwbxjbl5na0ah2-profile")
   ,("preferLocalBuild","1")])
--8<---------------cut here---------------end--------------->8---

== Debian 12 instance, guix profiles and respective derivations ==

/gnu/store/f62sdihndq4srl5z83cn1hw3pyqh8f4b-profile.drv
tmp -> /gnu/store/svg0is4iwvlg6mgi2rvpkngcccqcvhys-profile

/gnu/store/51b8agjnxrzd6pkigl5i4pkia01m7wja-profile.drv
tmp2-1-link -> /gnu/store/6mjx3nx8w6b31hz3z3m0w79ahw8j1g3g-profile

/gnu/store/51b8agjnxrzd6pkigl5i4pkia01m7wja-profile.drv
tmp3-1-link -> /gnu/store/6mjx3nx8w6b31hz3z3m0w79ahw8j1g3g-profile

/gnu/store/f62sdihndq4srl5z83cn1hw3pyqh8f4b-profile.drv:
--8<---------------cut here---------------start------------->8---
Derive
([("out","/gnu/store/svg0is4iwvlg6mgi2rvpkngcccqcvhys-profile","","")]
 ,[("/gnu/store/1ky8afdkrscv94cww8rna46a4r9r7z2s-fonts-dir.drv",["out"])
   ,("/gnu/store/3zqp0vwwnmkmyigh65qmcdj8qbhpr71f-guix-d264237d5.drv",["out"])
   ,("/gnu/store/a46hfl81mknjjs0yxsp1gwc70kx1djmx-info-dir.drv",["out"])
   ,("/gnu/store/fw8ja4778c050z573xmpjr56r7j9ydr2-ca-certificate-bundle.drv",["out"])
   ,("/gnu/store/h0kzcbwqdvjsr9bbzamqdjz6ip21yxjj-guix-package-cache.drv",["out"])
   ,("/gnu/store/hyr6znh34bdd67cdldrh1p66kbbal7qb-glibc-utf8-locales-2.33.drv",["out"])
   ,("/gnu/store/pjbfwdwrnm1aj6698mhjiw6nq160p5lq-rde.drv",["out"])
   ,("/gnu/store/psv1j490rzfxv6r55qk3ap7rnajgrgmy-guile-3.0.7.drv",["out"])
   ,("/gnu/store/x6siyw5lwjy4hp5s8mvb46869axhph24-emacs-subdirs.drv",["out"])
   ,("/gnu/store/x7ddqq1z4vxc75vrkdcaid5ikp9qr23l-module-import-compiled.drv",["out"])]
 ,["/gnu/store/8cwwiqlk99fg0x4rfjdy4ll51qw8yp2p-profile-builder","/gnu/store/m1r9xh1zm2dhrlfvg39za6gmwr66wjrk-module-import"]
 ,"x86_64-linux","/gnu/store/1kws5vkl0glvpxg7arabsv6q9vazp0hx-guile-3.0.7/bin/guile",["--no-auto-compile","-L","/gnu/store/m1r9xh1zm2dhrlfvg39za6gmwr66wjrk-module-import","-C","/gnu/store/nmwgz7b9qrqlx4r1r7wbm94yg8p5a7z0-module-import-compiled","/gnu/store/8cwwiqlk99fg0x4rfjdy4ll51qw8yp2p-profile-builder"]
 ,[("GUILE_WARN_DEPRECATED","no")
   ,("allowSubstitutes","0")
   ,("guix properties","((type . profile) (profile (count . 2)))")
   ,("out","/gnu/store/svg0is4iwvlg6mgi2rvpkngcccqcvhys-profile")
   ,("preferLocalBuild","1")])
--8<---------------cut here---------------end--------------->8---

/gnu/store/51b8agjnxrzd6pkigl5i4pkia01m7wja-profile.drv:
--8<---------------cut here---------------start------------->8---
Derive
([("out","/gnu/store/6mjx3nx8w6b31hz3z3m0w79ahw8j1g3g-profile","","")]
 ,[("/gnu/store/07q4ssl50hnvjgh439qrphzz6xwmcn4c-module-import-compiled.drv",["out"])
   ,("/gnu/store/3zqp0vwwnmkmyigh65qmcdj8qbhpr71f-guix-d264237d5.drv",["out"])
   ,("/gnu/store/44bykcwlb79mww2k6dzf13cq7dyh1pnr-emacs-subdirs.drv",["out"])
   ,("/gnu/store/76riab3qihlidba7j5xigdim27fdcaad-fonts-dir.drv",["out"])
   ,("/gnu/store/8g68zsqxgbxv2cs4chcnfpz7fa23aj1g-ca-certificate-bundle.drv",["out"])
   ,("/gnu/store/cd9m24lf3fhcgs9jpn0pgascpfql8wav-rde.drv",["out"])
   ,("/gnu/store/lls79ps9qdzlmv9szfqic8y2nryl6j4d-guile-3.0.9.drv",["out"])
   ,("/gnu/store/lxs0s0pvgkcpv7hkmls6d9a8ya5f6ppr-glibc-utf8-locales-2.35.drv",["out"])
   ,("/gnu/store/pj4s2rj5xw5fqlb18vl2qq2wr2ir7xbj-guix-package-cache.drv",["out"])
   ,("/gnu/store/xv5ydfvnjc2fvl4x0s4m4r9mchypby04-info-dir.drv",["out"])]
 ,["/gnu/store/lmkgymvqdzq0rp4z4waf3fs83bn3g94y-profile-builder","/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import"]
 ,"x86_64-linux","/gnu/store/g49b4v7dff8xwfi7wpi8pps1ixhld3n7-guile-3.0.9/bin/guile",["--no-auto-compile","-L","/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import","-C","/gnu/store/8ikjnswwrdr5dyplxnr3bwrskyymib7f-module-import-compiled","/gnu/store/lmkgymvqdzq0rp4z4waf3fs83bn3g94y-profile-builder"]
 ,[("GUILE_WARN_DEPRECATED","no")
   ,("allowSubstitutes","0")
   ,("guix properties","((type . profile) (profile (count . 2)))")
   ,("out","/gnu/store/6mjx3nx8w6b31hz3z3m0w79ahw8j1g3g-profile")
   ,("preferLocalBuild","1")])
--8<---------------cut here---------------end--------------->8---

== guix-d264237d5 derivation for Guix and Debian respectively ==

--8<---------------cut here---------------start------------->8---
Derive
([("out","/gnu/store/krrlf3lnxnhx0lgx2y7r1bggii9sf1xc-guix-d264237d5","","")]
 ,[("/gnu/store/07gbxg5dfiwhclsxwm9773mc0c4v3f71-guix-d264237d5-modules.drv",["out"])
   ,("/gnu/store/0zjk0c9fvgambb06advdfdic1k8vrqv6-module-import-compiled.drv",["out"])
   ,("/gnu/store/1wm2dyvsg1fxlv64jcwywljh2400bhxp-guix-misc.drv",["out"])
   ,("/gnu/store/fgih1pfak3b047n1ks3wl63hhxafysp5-guix-daemon.drv",["out"])
   ,("/gnu/store/g08yyzl44v5vpxk93q0l6hjq3jlx3f06-guix-command.drv",["out"])
   ,("/gnu/store/jjd8jwysh5v3gc7gqblv6sg4xbax8w2v-guile-3.0.9.drv",["out"])
   ,("/gnu/store/s029qqxk7w1f6v05grj09glmcxdk5rfw-guix-manual.drv",["out"])]
 ,["/gnu/store/pj751v3199vmv6i6sf0szp185ryzcfdg-module-import","/gnu/store/zqclazankb7qr4mg98yk6pbp1v9jjmp7-guix-d264237d5-builder"]
 ,"x86_64-linux","/gnu/store/1gd9nsy4cps8fnrd1avkc9l01l7ywiai-guile-3.0.9/bin/guile",["--no-auto-compile","-L","/gnu/store/pj751v3199vmv6i6sf0szp185ryzcfdg-module-import","-C","/gnu/store/iqbchmbmhmi34bwgv4sm14li9m24dpnl-module-import-compiled","/gnu/store/zqclazankb7qr4mg98yk6pbp1v9jjmp7-guix-d264237d5-builder"]
 ,[("out","/gnu/store/krrlf3lnxnhx0lgx2y7r1bggii9sf1xc-guix-d264237d5")
   ,("preferLocalBuild","1")])

Derive
([("out","/gnu/store/1m3xinbbm6ikzvmf90mi8a834q5j4fkj-guix-d264237d5","","")]
 ,[("/gnu/store/0zjk0c9fvgambb06advdfdic1k8vrqv6-module-import-compiled.drv",["out"])
   ,("/gnu/store/3jqbig0y50xnf3fks3j64c6fj65070kz-guix-misc.drv",["out"])
   ,("/gnu/store/d2gc091wns8v34c1vmd5rbivvlfdzyqb-guix-manual.drv",["out"])
   ,("/gnu/store/jjd8jwysh5v3gc7gqblv6sg4xbax8w2v-guile-3.0.9.drv",["out"])
   ,("/gnu/store/l4ibq9lxy3hyq8y2ilqyn1jy6l2m71fh-guix-daemon.drv",["out"])
   ,("/gnu/store/r026rnpisbyybjha90xk3ck8mlnsiz1g-guix-d264237d5-modules.drv",["out"])
   ,("/gnu/store/y2nicynxl10xqyz6x5b73w8n04an9m04-guix-command.drv",["out"])]
 ,["/gnu/store/pj751v3199vmv6i6sf0szp185ryzcfdg-module-import","/gnu/store/w2ag1xlycmbmaskf6anlxvicsx67wnj0-guix-d264237d5-builder"]
 ,"x86_64-linux","/gnu/store/1gd9nsy4cps8fnrd1avkc9l01l7ywiai-guile-3.0.9/bin/guile",["--no-auto-compile","-L","/gnu/store/pj751v3199vmv6i6sf0szp185ryzcfdg-module-import","-C","/gnu/store/iqbchmbmhmi34bwgv4sm14li9m24dpnl-module-import-compiled","/gnu/store/w2ag1xlycmbmaskf6anlxvicsx67wnj0-guix-d264237d5-builder"]
 ,[("out","/gnu/store/1m3xinbbm6ikzvmf90mi8a834q5j4fkj-guix-d264237d5")
   ,("preferLocalBuild","1")])
--8<---------------cut here---------------end--------------->8---

-- 
Best regards,
Andrew Tropin