Subject: Re: bug#38226: guix pull: error: build failed: [...] ice-9/boot-9.scm:109:20: Syntax error:

From: zimoun <[email-masked]>
Date: Mon, 18 Nov 2019 17:44:43 +0100

Hi Ludo,

On Mon, 18 Nov 2019 at 17:22, Ludovic Courtès <[email-masked]> wrote:

> zimoun <[email-masked]> skribis:

> > On Sun, 17 Nov 2019 at 22:15, Ludovic Courtès <[email-masked]> wrote:

> >> The only thing that’s missing here is that currently “guix build
> >> /gnu/store/….drv” fails if the .drv doesn’t already exist, which is why
> >> the trick above resorts to a lower-level mechanism.
> >
> > I miss how to fetch this missing .drv. :-)
> >
> > For example this evaluation built a recent enough Guix, right?
> >
> > $ wget -q -O - 'http://ci.guix.gnu.org/build/1943556' | jq '."derivation"'
> >
> >
> > outputs the derivation file. But how do you fetch it?
>
> You don’t explicitly fetch it.  Instead, you run “guix build /….drv”,
> and the daemon automatically attempts to substitute it if it’s not
> available in your store (note that you need commit
> 9c9982dc0c8c38ce3821b154b7e92509c1564317.)

I do not have when I tested.
The commit is from yesterday evening. ;-)
(that's a real rolling release :-D)

But if you have this commit, you do not need the dance that you
described to "guix pull" with a very very old Guix version -- say
before the 0.15 overhaul.

> Now, I noticed that it doesn’t work so well when ‘guix publish --cache’
> is used, as is the case on berlin.  The reason is that the daemon will
> query substitutes one by one: guix-xyz.drv, then guix-xyz-builder, and
> so on.  And because of the ‘--cache’ behavior, they’ll all have to be
> baked separately.

--8<---------------cut here---------------start------------->8---
 $ guix build "/gnu/store/bz1qqy225p1jlicwf07iiqr79icqddcv-guix-4de11dda7.drv"
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
cannot build missing derivation
‘/gnu/store/bz1qqy225p1jlicwf07iiqr79icqddcv-guix-4de11dda7.drv’
guix build: error: build of
`/gnu/store/bz1qqy225p1jlicwf07iiqr79icqddcv-guix-4de11dda7.drv'
failed

 $ guix describe
Generation 55    Nov 18 2019 13:21:24    (current)
  guix 900ef20
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 900ef20b1da66ad71145082c883dc12f31fafa54
--8<---------------cut here---------------end--------------->8---

> >> Perhaps ‘guix pull’ should have a ‘--rescue’ option to do the trick
> >> above?
> >
> > Is it possible?
> > We need to track on Cuirass one recent enough derivation of Guix for
> > each architecture, right?
>
> Yeah well, that needs more thought.  :-)

I am not sure to clearly understand what we are talking about. :-)

All the best,
simon