Subject: Re: bug#41457: guix pull: channel d8feee9 - extraneous field initializers (sha256)

From: Ludovic Courtès <[email-masked]>
Date: Fri, 22 May 2020 20:01:56 +0200

Hi,

Ricardo Wurmus <[email-masked]> skribis:

> [[email-masked]:~/code/guix] (1005) $ ~/.config/guix/current/bin/guix pull
> Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> Building from this channel:
>   guix      https://git.savannah.gnu.org/git/guix.git	cd5d5f5
> Computing Guix derivation for 'x86_64-linux'...  ice-9/psyntax.scm:1585:32: In procedure expand-macro:
> Syntax error:
> unknown location: %origin: extraneous field initializers (sha256) in form (%origin (method url-fetch) (uri (string-append "mirror://gnu/bash/bash-" version ".tar.gz")) (sha256 (base32 "0kgvfwqdcd90waczf4gx39xnrxzijhjrzyzv7s8v4w31qqm0za5l")) (patch-flags (quote ("-p0"))) (patches (cons (search-patch "bash-linux-pgrp-pipe.patch") %patch-series-5.0)))
> -guix pull: error: You found a bug: the program '/gnu/store/fsch1y8hilmkg21rmgk256j3wfi2w7wk-compute-guix-derivation'
> failed to compute the derivation for Guix (version: "cd5d5f53228fd5bf96d9f790aa2606ae71fa68d7"; system: "x86_64-linux";
> host version: "be0ecfb1787b9e6954bf745bceeb1b9d2669d51a"; pull-version: 1).
> Please report it by email to <[email-masked]>.

Good news, this is fixed by 50ea3135e0948a042cd3b899e970f6ade291a0c2!

As noted in the commit log, this issue stemmed from a change in
#:autoload semantics in Guile 3.0.  In 3.0, the line:

  #:autoload (gcrypt hash) (port-sha256)

means that only ‘port-sha256’ is imported.  Conversely, in 2.2 (which is
the Guile version used by the ‘compute-guix-derivation’ program above),
that #:autoload line means that all the (gcrypt hash) bindings are
imported.  That includes the ‘sha256’ bindings, which would thus prevent
matching the ‘sha256’ literal in the ‘origin-compatibility-helper’
macro.  Terrible!

Ludo’.