Hi, On Mon, 04 Jul 2022 at 15:40, Ludovic Courtès <l...@gnu.org> wrote:
> Indeed, ‘guix build > /gnu/store/v3kc0z1mx7zai6hky8kzlp171cxr2ccj-curl-7.84.0.drv’ fails with: [...] > Now, I don’t see where this .drv comes from. Here’s what I see on > x86_64: I think it comes from a twist with i686: --8<---------------cut here---------------start------------->8--- $ guix time-machine --commit=81cf674 \ -- build --no-grafts \ -e '(@@ (gnu packages curl) curl-7.84.0)' \ -s i686-linux -d /gnu/store/v3kc0z1mx7zai6hky8kzlp171cxr2ccj-curl-7.84.0.drv --8<---------------cut here---------------end--------------->8--- > --8<---------------cut here---------------start------------->8--- > $ guix build curl -d --no-grafts > /gnu/store/vygnm458v0vpnpqfcgdgk7i46gy7znv3-curl-7.79.1.drv > $ guix build curl -d > /gnu/store/zny336h8l7h5vjslck2f40a6cdw8mn0m-curl-7.84.0.drv > $ guix describe > Generation 221 Jul 03 2022 23:52:07 (current) > guix e069de4 > repository URL: https://git.savannah.gnu.org/git/guix.git > branch: master > commit: e069de452a2c923868f5137421b4b6349c38d754 > --8<---------------cut here---------------end--------------->8--- Well, from [1], it is reported 81cf674, in case something had been changed (see various fixes as aeb8c4fbea8197f5c568efab800a45aba53d4dd6 or 89fe091bb4f70c7f929c770ed5ca8e8ad52f8e09 or c145e51844bf52eb77cdc969a0fe30a48755b29e). Just a step by step to find the issue. Maybe it can help. Let check the derivations: --8<---------------cut here---------------start------------->8--- $ guix time-machine --commit=81cf674 \ -- build \ -e '(@@ (gnu packages curl) curl)' -d /gnu/store/381k3irnlmb9iqqwlabsk1c3xsczaijs-curl-7.84.0.drv $ guix time-machine --commit=81cf674 \ -- build \ -e '(@@ (gnu packages curl) curl-7.84.0)' -d /gnu/store/381k3irnlmb9iqqwlabsk1c3xsczaijs-curl-7.84.0.drv --8<---------------cut here---------------end--------------->8--- If we compare /gnu/store/v3kc0z1mx7zai6hky8kzlp171cxr2ccj-curl-7.84.0.drv and /gnu/store/381k3irnlmb9iqqwlabsk1c3xsczaijs-curl-7.84.0.drv , even the hashes of the inputs are different. For instance, /gnu/store/01mqx581dqhw947rzj2x83cb4c3aafq6-bash-minimal-5.1.8.drv vs /gnu/store/3qaj00bq9h3wnpm5nxh02zfl0sg9vmqc-bash-minimal-5.1.8.drv. Therefore, the twist is deep. :-) Note that, the derivation which fails uses /gnu/store/9p23m7lh18w21qij5s0ka2kd6s5vidr0-curl-7.84.0-builder and it reads, --8<---------------cut here---------------start------------->8--- ("source" . "/gnu/store/0g24sh9v8hqf901aj7bp0hl5swf4hfr7-curl-7.84.0.tar.xz") --8<---------------cut here---------------end--------------->8--- when the source from the correct builder reads, --8<---------------cut here---------------start------------->8--- ("source" . "/gnu/store/67w9zrlm1xahczf55f9rd15aaqadbixj-curl-7.84.0.tar.xz") --8<---------------cut here---------------end--------------->8--- but both have the same hash: --8<---------------cut here---------------start------------->8--- $ guix hash \ /gnu/store/0g24sh9v8hqf901aj7bp0hl5swf4hfr7-curl-7.84.0.tar.xz \ /gnu/store/67w9zrlm1xahczf55f9rd15aaqadbixj-curl-7.84.0.tar.xz 1wy3p1dz18sx0mv3yqpwd47k3026bwnc0giniy0ksaqfx77hspy0 1wy3p1dz18sx0mv3yqpwd47k3026bwnc0giniy0ksaqfx77hspy0 --8<---------------cut here---------------end--------------->8--- Well, note that, --8<---------------cut here---------------start------------->8--- $ guix gc --derivers /gnu/store/0g24sh9v8hqf901aj7bp0hl5swf4hfr7-curl-7.84.0.tar.xz /gnu/store/rhkhh9scip2j24mf5lx0xcawc0ykfd05-curl-7.84.0.tar.xz.drv --8<---------------cut here---------------end--------------->8--- which reads, --8<---------------cut here---------------start------------->8--- Derive ([("out","/gnu/store/b6h8v89cavb5zji6ys7bzlb193s0hzf2-curl-7.84.0.tar.xz","sha256","2d118b43f547bfe5bae806d8d47b4e596ea5b25a6c1f080aef49fbcd817c5db8")] ,[] ,["/gnu/store/0mxnx8l4fgigvd7gakwdk6hc6im4wnai-disarchive-mirrors","/gnu/store/lv7dc09895a2d7cn0m6ysrdlgkhx5ld8-content-addressed-mirrors","/gnu/store/nb73zsx418kbz2p3f15pvv9spi0afmz7-mirrors"] ,"i686-linux","builtin:download",[] ,[("content-addressed-mirrors","/gnu/store/lv7dc09895a2d7cn0m6ysrdlgkhx5ld8-content-addressed-mirrors") ,("disarchive-mirrors","/gnu/store/0mxnx8l4fgigvd7gakwdk6hc6im4wnai-disarchive-mirrors") ,("impureEnvVars","http_proxy https_proxy LC_ALL LC_MESSAGES LANG COLUMNS") ,("mirrors","/gnu/store/nb73zsx418kbz2p3f15pvv9spi0afmz7-mirrors") ,("out","/gnu/store/b6h8v89cavb5zji6ys7bzlb193s0hzf2-curl-7.84.0.tar.xz") ,("preferLocalBuild","1") ,("url","\"https://curl.se/download/curl-7.84.0.tar.xz\"")]) --8<---------------cut here---------------end--------------->8--- Tandan! :-) The other derivation (for x86_64) reads, --8<---------------cut here---------------start------------->8--- Derive ([("out","/gnu/store/b6h8v89cavb5zji6ys7bzlb193s0hzf2-curl-7.84.0.tar.xz","sha256","2d118b43f547bfe5bae806d8d47b4e596ea5b25a6c1f080aef49fbcd817c5db8")] ,[] ,["/gnu/store/0mxnx8l4fgigvd7gakwdk6hc6im4wnai-disarchive-mirrors","/gnu/store/lv7dc09895a2d7cn0m6ysrdlgkhx5ld8-content-addressed-mirrors","/gnu/store/nb73zsx418kbz2p3f15pvv9spi0afmz7-mirrors"] ,"x86_64-linux","builtin:download",[] ,[("content-addressed-mirrors","/gnu/store/lv7dc09895a2d7cn0m6ysrdlgkhx5ld8-content-addressed-mirrors") ,("disarchive-mirrors","/gnu/store/0mxnx8l4fgigvd7gakwdk6hc6im4wnai-disarchive-mirrors") ,("impureEnvVars","http_proxy https_proxy LC_ALL LC_MESSAGES LANG COLUMNS") ,("mirrors","/gnu/store/nb73zsx418kbz2p3f15pvv9spi0afmz7-mirrors") ,("out","/gnu/store/b6h8v89cavb5zji6ys7bzlb193s0hzf2-curl-7.84.0.tar.xz") ,("preferLocalBuild","1") ,("url","\"https://curl.se/download/curl-7.84.0.tar.xz\"")]) --8<---------------cut here---------------end--------------->8--- That’s why the prefix hash is different but not the content hash. And the fixed-output corresponding to the checksum hash in the source is the expected one: --8<---------------cut here---------------start------------->8--- $ guix hash /gnu/store/b6h8v89cavb5zji6ys7bzlb193s0hzf2-curl-7.84.0.tar.xz 1f2xgj0wvys9xw50h7vcbaraavjr9rxx9n06x2xfbgs7ym1qn49d --8<---------------cut here---------------end--------------->8--- Last to be complete, if like me, you are asking why there is hashes mismatch, some explanations. These two items /gnu/store/0g24sh9v8hqf901aj7bp0hl5swf4hfr7-curl-7.84.0.tar.xz /gnu/store/67w9zrlm1xahczf55f9rd15aaqadbixj-curl-7.84.0.tar.xz have the same checksum hash but it is different from /gnu/store/b6h8v89cavb5zji6ys7bzlb193s0hzf2-curl-7.84.0.tar.xz because the ’origin’ contains a patch: (origin (method url-fetch) (uri (string-append "https://curl.se/download/curl-" version ".tar.xz")) (sha256 (base32 "129n9hi7rbg3s112chyadhp4y27ppb5i65n12wm77aw2255zf1h6")) (patches (search-patches "curl-use-ssl-cert-env.patch"))) Therefore, it means that the output of “guix build -S curl” contains this patch and it does not correspond to what upstream distributes with the checksum 129n9hi7rbg3s112chyadhp4y27ppb5i65n12wm77aw2255zf1h6. The prefix hash /gnu/store/<prefix-hash>-curl-7.84.0.tar.xz is different because it is computed using all the inputs and the derivation itself. Since the derivation here contains the architecture i686-linux or x86_64-linux then the output (prefix-hash) is thus different. 1: <https://yhetil.org/guix/87r134n66m....@disroot.org> Cheers, simon