Subject: bug#29570: challenge Backtraces

From: [email-masked] (Ludovic Courtès)
Date: Tue, 05 Dec 2017 21:56:41 +0100

Hi Vagrant,

Vagrant Cascadian <[email-masked]> skribis:

> $ guix --version
> guix (GNU guix) 1fa37d1b55b1d25a9d20c7b50a531b763e7a1398

It looks like my repo lacks this commit.

> $ guix challenge --substitute-urls="https://berlin.guixsd.org https://mirror.hydra.gnu.org" linux-libre

[...]

> In guix/scripts/challenge.scm:
>    305:15  5 (_ _)
>    149:34  4 (_ _)
> In srfi/srfi-1.scm:
>    679:15  3 (append-map _ _ . _)
>    592:17  2 (map1 ("https://berlin.guixsd.org"; "https://mirror.hy…"))
> In guix/scripts/substitute.scm:
>    725:23  1 (lookup-narinfos "https://berlin.guixsd.org"; _)
>    697:16  0 (fetch-narinfos "https://berlin.guixsd.org"; ("/gnu/sto…"))
>
> guix/scripts/substitute.scm:697:16: In procedure fetch-narinfos:
> guix/scripts/substitute.scm:697:16: Wrong type to apply: #<syntax-transformer uri?>

This is due to an ABI breakage in the (web uri) module that Guile
provides: in 2.2.3 ‘uri?’ is a procedure, but in 2.2.2 it’s a macro.

As it turns out, build-aux/build-self.scm (which is what ‘guix pull’
evaluates) selects the latest Guile 2.2.x, so it builds with 2.2.3, but
then you run that code with 2.2.2, hence the error.

Let’s see how we can work around it…

Ludo’.