Subject: Re: bug#39993: Guix report hash mismatch when underlying cause is ENOSPC
From: Ludovic Courtès <[email-masked]>
To: Maxim Cournoyer <[email-masked]>
Cc: [email-masked]
Date: Sun, 22 Mar 2020 00:03:07 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

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

> Maxim Cournoyer <[email-masked]> skribis:
>
>> Guix should correctly report that it ran out of space instead of falsely
>> mentioning hash mismatches and attempting alternative download sources,
>> as demonstrated by the Guix output below:
>>
>> Session:
>>
>> building /gnu/store/dqzq8hbk8gqx5lhmnxsl5vl0c6s3i0a2-tcpdump-4.9.3.tar.gz.drv...
>> downloading from https://www.tcpdump.org/release/tcpdump-4.9.3.tar.gz...
>
> Could you post the log returned by ‘guix build --log-file
> /gnu/store/dqzq8hbk8gqx5lhmnxsl5vl0c6s3i0a2-tcpdump-4.9.3.tar.gz.drv’?

I was able to reproduce it with a hack and that gives:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build -S tcpdump --check 
accepted connection from pid 32022, user ludo
The following derivation will be built:
   /gnu/store/3y4zkzpkx799cvph0qi8kvkh26l8kfww-tcpdump-4.9.3.tar.gz.drv
building /gnu/store/3y4zkzpkx799cvph0qi8kvkh26l8kfww-tcpdump-4.9.3.tar.gz.drv...

Starting download of /gnu/store/124q26gkdyls859sblabz3f60grfvvdl-tcpdump-4.9.3.tar.gz
From https://www.tcpdump.org/release/tcpdump-4.9.3.tar.gz...
In procedure fport_write: Ne haviĝas plu da spaco sur aparato

Starting download of /gnu/store/124q26gkdyls859sblabz3f60grfvvdl-tcpdump-4.9.3.tar.gz
From https://ci.guix.gnu.org/file/tcpdump-4.9.3.tar.gz/sha256/0434vdcnbqaia672rggjzdn4bb8p8dchz559yiszzdk0sjrprm1c...
In procedure fport_write: Ne haviĝas plu da spaco sur aparato

Starting download of /gnu/store/124q26gkdyls859sblabz3f60grfvvdl-tcpdump-4.9.3.tar.gz
From https://tarballs.nixos.org/sha256/0434vdcnbqaia672rggjzdn4bb8p8dchz559yiszzdk0sjrprm1c...
following redirection to `https://tarballs.nixos.org/sha512/3aec673f78b996a4df884b1240e5d0a26a2ca81ee7aca8a2e6d50255bb53476e008a5ced4409e278a956710d8a4d31d85bbb800c9f1aab92b0b1046b59292a22'...
In procedure fport_write: Ne haviĝas plu da spaco sur aparato

Starting download of /gnu/store/124q26gkdyls859sblabz3f60grfvvdl-tcpdump-4.9.3.tar.gz
From https://archive.softwareheritage.org/api/1/content/sha256:2cd47cb3d460b6ff75f4a9940f594317ad456cfbf2bd2c8e5151e16559db6410/raw/...
In procedure fport_write: Ne haviĝas plu da spaco sur aparato
failed to download "/gnu/store/124q26gkdyls859sblabz3f60grfvvdl-tcpdump-4.9.3.tar.gz" from "https://www.tcpdump.org/release/tcpdump-4.9.3.tar.gz"
warning: rewriting hashes in `/gnu/store/mv33j0si1n75q9kdimhvyrjn05pbxz5b-tcpdump-4.9.3.tar.gz'; cross fingers
sha256 hash mismatch for /gnu/store/mv33j0si1n75q9kdimhvyrjn05pbxz5b-tcpdump-4.9.3.tar.gz:
  expected hash: 0434vdcnbqaia672rggjzdn4bb8p8dchz559yiszzdk0sjrprm1c
  actual hash:   0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
hash mismatch for store item '/gnu/store/mv33j0si1n75q9kdimhvyrjn05pbxz5b-tcpdump-4.9.3.tar.gz'
--8<---------------cut here---------------end--------------->8---

> The root cause is that ‘false-if-exception*’ as used in (guix build
> download) is too coarse-grain.

I came up with a fix in 4a6ec23a9780bd75a7e527bd0dfb1943347869bb.

Thanks,
Ludo’.