Subject: bug#65979: incorrect “guix hash” for FastQC

From: Simon Tournier <[email-masked]>
Date: Thu, 14 Sep 2023 18:46:05 +0200

Hi,

Currently Guix stores in its source the hash
00y9drm0bkpxw8xfl8ysss18jmnhj8blgqgr6fpa58rkpfcbg8qk and this has not
changed since February (Guix revision
b6a4fbb488f1f539ae45ed7924c9af8905fa0d8b).

Well, because the origin contains a snippet, “guix build -S” does not
return the result of the fixed derivation.  Instead, it is one or the other:

--8<---------------cut here---------------start------------->8---
$ guix gc -R $(guix build -S fastqc -d) | grep checkout.drv
/gnu/store/8gxx74w8pa0fx74lx1ka654rhyyr51cs-fastqc-0.11.9-checkout.drv
/gnu/store/7rdcyl7iq00xfdwh6azgmc3i7mr2769b-fastqc-0.11.9-checkout.drv
--8<---------------cut here---------------end--------------->8---

Let pick the correct one and I get:

--8<---------------cut here---------------start------------->8---
$ guix hash -rx $(guix build /gnu/store/8gxx74w8pa0fx74lx1ka654rhyyr51cs-fastqc-0.11.9-checkout.drv)
0jyk90kg6s62w3dn6qjx9nrawjs12qx172lii0yxbvsfylhnx479
--8<---------------cut here---------------end--------------->8---

Oh, it is not the expected result!  Instead, I have to omit the option
’-x’:

--8<---------------cut here---------------start------------->8---
$ guix hash -r $(guix build /gnu/store/8gxx74w8pa0fx74lx1ka654rhyyr51cs-fastqc-0.11.9-checkout.drv)
00y9drm0bkpxw8xfl8ysss18jmnhj8blgqgr6fpa58rkpfcbg8qk
--8<---------------cut here---------------end--------------->8---

Hum, I am missing something…

Let clone from upstream.

--8<---------------cut here---------------start------------->8---
$ git clone https://github.com/s-andrews/FastQC
$ git -C FastQC checkout v0.11.9
$ guix hash -rx FastQC
0jyk90kg6s62w3dn6qjx9nrawjs12qx172lii0yxbvsfylhnx479
--8<---------------cut here---------------end--------------->8---

Ah… incorrect but consistent with previously.  The question is why is
this following,

--8<---------------cut here---------------start------------->8---
$ mv FastQC/.git bye-bye
$ guix hash -r FastQC
00y9drm0bkpxw8xfl8ysss18jmnhj8blgqgr6fpa58rkpfcbg8qk
--8<---------------cut here---------------end--------------->8---

is correct?  And obviously without .git we get the same hash just as
above,

--8<---------------cut here---------------start------------->8---
$ guix hash -rx FastQC
0jyk90kg6s62w3dn6qjx9nrawjs12qx172lii0yxbvsfylhnx479
--8<---------------cut here---------------end--------------->8---

Any idea?

Cheers,
simon