Subject: Re: bug#47293: Failure of “guix lint -c archival icecat”

From: Mark H Weaver <[email-masked]>
Date: Sun, 21 Mar 2021 15:39:11 -0400

zimoun <[email-masked]> writes:
> Indeed, there is a bug.  Because the source of ’icecat’ raises a case
> that is not handled by ’check-archival’ in (guix lint).
>
> Basically in the snippet:
>
> --8<---------------cut here---------------start------------->8---
>                  (match (lookup-content (content-hash-value hash)
>                                         (symbol->string
>                                          (content-hash-algorithm hash)))
> --8<---------------cut here---------------end--------------->8---
>
> ’lookup-content’ expect a bytevector for ’content-hash’ and in the case
> of ’icecat’, it returns #f.  Then raises the backtrace.

Icecat uses an unusual thing called a "computed origin", which means
that its source is itself built from other sources.  The only two places
in Guix where this is currently done is 'icecat' and 'linux-libre'.

See 'computed-origin-method' and 'icecat-source' in
gnu/packages/gnuzilla.scm, and 'computed-origin-method' and
'make-linux-libre-source' in gnu/packages/linux.scm.

       Mark