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

From: Simon Tournier <[email-masked]>
Date: Tue, 26 Sep 2023 15:00:25 +0200

Hi,

On Thu, 14 Sep 2023 at 18:46, Simon Tournier <[email-masked]> wrote:

> $ guix hash -rx $(guix build /gnu/store/8gxx74w8pa0fx74lx1ka654rhyyr51cs-fastqc-0.11.9-checkout.drv)
> 0jyk90kg6s62w3dn6qjx9nrawjs12qx172lii0yxbvsfylhnx479
>
> Oh, it is not the expected result!  Instead, I have to omit the option
> ’-x’:
>
> $ guix hash -r $(guix build /gnu/store/8gxx74w8pa0fx74lx1ka654rhyyr51cs-fastqc-0.11.9-checkout.drv)
> 00y9drm0bkpxw8xfl8ysss18jmnhj8blgqgr6fpa58rkpfcbg8qk

[...]

> $ git clone https://github.com/s-andrews/FastQC
> $ git -C FastQC checkout v0.11.9
> $ guix hash -rx FastQC
> 0jyk90kg6s62w3dn6qjx9nrawjs12qx172lii0yxbvsfylhnx479

[...]

> $ mv FastQC/.git bye-bye
> $ guix hash -r FastQC
> 00y9drm0bkpxw8xfl8ysss18jmnhj8blgqgr6fpa58rkpfcbg8qk

[...]

> Any idea?

The issue is from .svn folders.

--8<---------------cut here---------------start------------->8---
$ find $(guix build /gnu/store/8gxx74w8pa0fx74lx1ka654rhyyr51cs-fastqc-0.11.9-checkout.drv) \
       -type d -name ".svn" -print
/gnu/store/5dyvjgylwiixhp8z9a08rnddh53h4cdx-fastqc-0.11.9-checkout/Help/1 Introduction/.svn
/gnu/store/5dyvjgylwiixhp8z9a08rnddh53h4cdx-fastqc-0.11.9-checkout/Help/3 Analysis Modules/.svn
/gnu/store/5dyvjgylwiixhp8z9a08rnddh53h4cdx-fastqc-0.11.9-checkout/Help/2 Basic Operations/.svn
--8<---------------cut here---------------end--------------->8---

The option ’-x’ excludes them; see vcs-file? from (guix hash) module,
and let confirm:

    $ git clone https://github.com/s-andrews/FastQC
    $ git -C FastQC checkout v0.11.9

    $ guix hash -rx FastQC
    0jyk90kg6s62w3dn6qjx9nrawjs12qx172lii0yxbvsfylhnx479

    $ find FastQC -type d -name ".svn" -exec rm -r "{}" \;
    $ mv FastQC/.git bye-bye
    $ guix hash -r FastQC
    0jyk90kg6s62w3dn6qjx9nrawjs12qx172lii0yxbvsfylhnx479

Therefore, we have a discrepancy between “guix hash” command-line and
checksum verification from ’source’ field.

The package definition reads:

    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/s-andrews/FastQC")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "00y9drm0bkpxw8xfl8ysss18jmnhj8blgqgr6fpa58rkpfcbg8qk"))

when this hash contains .svn subfolders that are excluded by ’-x’
command-line option.

What do we fix?  The procedure vcs-file? or fixed-output computation?

Cheers,
simon