guix pull: error: build failed: [...] ice-9/boot-9.scm:109:20: Syntax error:

  • Done
  • quality assurance status badge
Details
3 participants
  • Kai Mertens
  • Ludovic Courtès
  • zimoun
Owner
unassigned
Submitted by
Kai Mertens
Severity
normal

Debbugs page

K
K
Kai Mertens wrote on 15 Nov 2019 18:26
(address . bug-guix@gnu.org)
20191116032658.42f4533d.kmx@posteo.net
Dear Guix Developers,

unfortunately, I do not manage to update my outdated GNU Guix version
via

“sudo -i guix pull -c0”.

The command fails with the listed message after being executed for
about 16hours. I tried it three times, on different days. The most
recent one was yesterday.

In difference to a recently posted failure, this time...
* my /tmp partition has enough space available (>12GB)
* and guix is substituting from https://ci.guix.gnu.org

I would very much apreciate if you find the time to investigate this
bug. I hope it is one, as I don't want to spoil the mailing list with
just personal obstacles in respect to guix usage.

What kind of information shall I provide, else?

The command “sudo -i guix --version” gives me:
guix (GNU Guix) 20170703.13

I would have tried to update guix in smaller steps, but option
“pull --commit”
is not available.

~~~

[...]
grafting '/gnu/store/nk1w9h9998w5vyj6zw3h37idmm8c7xsd-guile-2.0.14-debug' -> '/gnu/store/1xbphq9bpylnv46y1dmax5866nbvxyjm-guile-2.0.14-debug'...
grafting '/gnu/store/brn8kcdv4xyjn445540zmpvawyzb4c38-guile-2.0.14' -> '/gnu/store/prq1xm7fp9dzp7whw8742djw4vsrsd4f-guile-2.0.14'...
ice-9/boot-9.scm:109:20: In procedure #<procedure 863fca0 at ice-9/boot-9.scm:100:6 (thrown-k . args)>:
ice-9/boot-9.scm:109:20: Syntax error:
unknown location: unexpected syntax in form current-imported-modules
builder for `/gnu/store/qrsd2qvaj52fqsywdwlcrh6366gasiff-module-import-compiled.drv' failed with exit code 1
cannot build derivation `/gnu/store/agyip2r3ars2yxjxnm3s3jlh4q5fjcpk-compute-guix-derivation.drv': 1 dependencies couldn't be built
guix pull: error: build failed: build of `/gnu/store/agyip2r3ars2yxjxnm3s3jlh4q5fjcpk-compute-guix-derivation.drv' failed

~~~

best regards
Kai


--
Kai Mertens <kmx@posteo.net>
OpenPGP Key-ID: 0x40B15AB4B05B5BF1 on keys.gnupg.net
Key fingerprint = 7C83 0A80 01FF 679C 6E8E AFD3 40B1 5AB4 B05B 5BF1
What is that? Please check: https://emailselfdefense.fsf.org/en/
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfIMKgAH/Z5xujq/TQLFatLBbW/EFAl3PXnIACgkQQLFatLBb
W/EFCA/+PX1AmsZKMMai5AzdW8VFhx0P0730oN4JD42CjEpkk6WreZexzBFQCJT8
Qhsah89NDXqtt6PpxxaI9vX6DbRhx0i2Jfv/bsv7094uaNr5XiV5x7va/vI+qeKB
NaQoiFe0V/4JwEIWfFSxhAaamHq+K0LtW6V7TzootBy9FlDt7YaqDQjg26FgTim3
4b3DNGGr9TMfg/6KYWDqxiI90IhhtDMJYAkszJ9ryxhraPq/c2S0y+snqsEugMnK
5CmHj523NIFYnfqDzhcl0Kc4lO4EWMG9Vf+iKyNYWma9WU1ZinkHHy36WBhreQZJ
Xo26ozlmT+GwOtdO5Aoc71hXsi2kZCh+ZfZIx9wH8Y4Upm2iPdHv7hRuVSa4dxbZ
gZtmkQ4IKeMf3YznUC+dl1KAHksO2zqsHMf6tc128ejWF/UZhj/tHoWYR/KrtRhQ
OB0PmQj4bYKC4goVCqUT1kYKxou2xZc3V388p43aDQUf8jE7H03+zqZMo4YxONeV
cCkz/ObE8mqQkX1K5GBeG8TfB1HNwC0aagyR3P/fCyIqN2BEPbRWmPoHAgNo6WLM
P9yeB2KU4crsFKaS2gi5pr2SiyHs+fuR29elADzoZxENspU2d7D1Z/o9x8VbOjo0
+BxqFCqRkNirEtpWdWUEvpQcURBP6C0K2D/X+AHtm98v/YentYc=
=d45d
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 17 Nov 2019 13:14
(name . Kai Mertens)(address . kmx@posteo.net)(address . 38226@debbugs.gnu.org)
87eey6jjds.fsf@gnu.org
Hello Kai,

Kai Mertens <kmx@posteo.net> skribis:

Toggle quote (3 lines)
> The command “sudo -i guix --version” gives me:
> guix (GNU Guix) 20170703.13

This version predates the big ‘guix pull’ overhaul in 0.15.0 (what
basically makes this kind of problem much less likely to happen.)

Thus, you need a more recent ‘guix’ to upgrade.

One way to do that is to fetch the derivation that builds a recent Guix
and to build it.

Here’s a trick to do that (for commit 57c7bfec6, on x86_64-linux):

Toggle snippet (5 lines)
$ guile -c '(use-modules (guix)) (with-store s (build-things s (list "/gnu/store/ihylk84symj8mjhp3zmy83ch2h2pl0ks-guix-57c7bfec6.drv")))'
$ guix build "/gnu/store/ihylk84symj8mjhp3zmy83ch2h2pl0ks-guix-57c7bfec6.drv"
$ /gnu/store/4zmf32hjrjjjl2xp91aldxhmsmk6ff29-guix-57c7bfec6/bin/guix pull

Let me know how it goes!

We should probably streamline that. Actually, it’s already almost
automated:

Toggle snippet (4 lines)
$ wget -q -O - 'https://ci.guix.gnu.org/api/latestbuilds?nr=1&jobset=guix-modular-master' | jq '.[0]["derivation"]'
"/gnu/store/ihylk84symj8mjhp3zmy83ch2h2pl0ks-guix-57c7bfec6.drv"

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.

Perhaps ‘guix pull’ should have a ‘--rescue’ option to do the trick
above?

HTH,
Ludo’.
K
K
Kai Mertens wrote on 18 Nov 2019 03:15
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 38226@debbugs.gnu.org)
20191118121535.256353ae.kmx@posteo.net
On Sun, 17 Nov 2019 22:14:07 +0100
Ludovic Courtès <ludo@gnu.org> wrote:

Hello Ludo’,

Toggle quote (3 lines)
>
> Here’s a trick to do that (for commit 57c7bfec6, on x86_64-linux):

hmm, I am on i686 – is the trick still applicable?
I will switch to root’s profile with “sudo -i”, but that is ok, right?
(If you please send your OK – then I will try it...)

My current root profile contains three packages:

~~~
glibc-utf8-locales 2.25 out /gnu/store/9vv6szr949m8mrqfyj7bfkxi8g5mfr2y-glibc-utf8-locales-2.25
guix 0.13.0-2.de9d8f0 out /gnu/store/34541bys6lh3wjwjn81b9bxjb93q83qx-guix-0.13.0-2.de9d8f0
glibc 2.25 out /gnu/store/2bw8y2k8fi9n6yl43ks0m62z919kgrfv-glibc-2.25
~~~

I guess I cannot use a simple “sudo -i guix package -u guix” as a
workaround for the failing “sudo -i guix pull”, as it would bring up
the same issue?


Toggle quote (5 lines)
> [...]
>
> Perhaps ‘guix pull’ should have a ‘--rescue’ option to do the trick
> above?

Oh, I don't feel competent enough to give ideas, but “pull --rescue”
sounds too generic to me. Maybe there will be other use cases that will
require a (different) rescue trick in future. Instead, your commit
9c9982dc0 suggests a “pull --substitute-missing-derivations” to me.

Toggle quote (4 lines)
>
> HTH,
> Ludo’.

Thank you very much for that fast response and commits!
best regards
Kai



--
Kai Mertens <kmx@posteo.net>
OpenPGP Key-ID: 0x40B15AB4B05B5BF1 on keys.gnupg.net
Key fingerprint = 7C83 0A80 01FF 679C 6E8E AFD3 40B1 5AB4 B05B 5BF1
What is that? Please check: https://emailselfdefense.fsf.org/en/
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfIMKgAH/Z5xujq/TQLFatLBbW/EFAl3SfVcACgkQQLFatLBb
W/GJcw/+Pcy0p36zddRs3qD9AnbCrekYT7KJwmO39aYfDckQV7ulG8Qp2jUkjYp8
XhJLQSRsaD1PmpX86Ows/YlX7pVNgzEx4moz8UDBabhur+j3BqjAMDH1BovtHnBJ
xG5pXGYeaSDBlFLpQP3vsCy4899mEHN0+MdyMvGaovmkKC8rx66JcbeezrUVBmVb
wQp3jkcmJ5QMyPva7hUNlG5zNHgK2sQLxQ3dzE8EJzBbNBoofIU0Qx3N7GG+eEMC
jS3J1KsPbafYBD+9V0Sms/ZwEJbVT6yZArr5KAI5HA7bccUlzGzeplKa7Vp5JkFS
hVC3rK35Ny0uyzJBvHNkmDdXadhreCTGWoQTevkEwPU1pYPsb/82O3f+mEq/nJu0
xdYlsZ+fjtdqtoLNZ4/h83PL+5SI0ej9vupak6ooJmYVghO4NEBOvKZ45lgbr1+o
o+kMt/vkc19KrmVG5ZjI1rx/tm0nthNVOL+CL2f0F6TGqobPgGRG5l2kn+rEzEEO
iUdgIcyMaB7ISlb08P2+K3DI6sOthXDyLqNW7VrabmSonKvH2rlJFTa30hcInMvS
KkK0F37Nkx8UYsypFl1u1YWsVm7AA6xte6/eJB3XfBWgN7uufb+c1Hxs6Avvu/k6
VGfouqlN5TiMZ6RoB51iNdQSAG2Ijo9u5bHIuajqFNVI5ONKRV4=
=DPgZ
-----END PGP SIGNATURE-----


Z
Z
zimoun wrote on 18 Nov 2019 04:08
(name . Ludovic Courtès)(address . ludo@gnu.org)
CAJ3okZ0uOQn26BaFi7o7B_pgANzOHhbaELo_e-vw98hFCcH0uA@mail.gmail.com
Hi Ludo,

On Sun, 17 Nov 2019 at 22:15, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (4 lines)
> 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?

Toggle snippet (3 lines)
$ wget -q -O - 'http://ci.guix.gnu.org/build/1943556' | jq '."derivation"'

outputs the derivation file. But how do you fetch it?

I have not found in the Cuirass API doc. Maybe I missing the obvious.

Then, once I have downloaded this derivation, the old Guix should be
able to build it, right? No daemon issue?

Toggle snippet (3 lines)
$ guix build "/gnu/store/bz1qqy225p1jlicwf07iiqr79icqddcv-guix-4de11dda7.drv"

This will populate the store with a new guix. Then I need to pull as
root, in order to also update the daemon, right?

Toggle snippet (6 lines)
# /gnu/store/<hash-returned-by-previous-build>-guix-4de11dda7/bin/guix pulll




Toggle quote (3 lines)
> 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?



All the best,
simon
Z
Z
zimoun wrote on 18 Nov 2019 04:23
(name . Kai Mertens)(address . kmx@posteo.net)
CAJ3okZ33Z7X3Q6ZKQf0iwGGrYujSLFg5KeRw7b57vSick1M7pg@mail.gmail.com
Hi Kai,

On Mon, 18 Nov 2019 at 12:19, Kai Mertens <kmx@posteo.net> wrote:

Toggle quote (9 lines)
> On Sun, 17 Nov 2019 22:14:07 +0100
> Ludovic Courtès <ludo@gnu.org> wrote:

> > Here’s a trick to do that (for commit 57c7bfec6, on x86_64-linux):
>
> hmm, I am on i686 – is the trick still applicable?
> I will switch to root’s profile with “sudo -i”, but that is ok, right?
> (If you please send your OK – then I will try it...)

I think the evaluation [1] should do the job for i686.





Toggle quote (4 lines)
> I guess I cannot use a simple “sudo -i guix package -u guix” as a
> workaround for the failing “sudo -i guix pull”, as it would bring up
> the same issue?

The issue you encounter comes from a compatibility break in Guix. Four
years later (more or less I guess), inferiors has bee introduced in
Guix. They allow to go back and forward with "guix pull --commit=".
Well, other said, your version of Guix is too old to be updated using
the usual way.

The only way is to apply the Ludo's "trick". If I understand well:
1. Fetch a recent enough derivation of Guix
2. Build this derivation with your old Guix
3. Manually pull to populate the store
4. Then the profile ~/.config/guix/ should be ok


Toggle quote (5 lines)
> Oh, I don't feel competent enough to give ideas, but “pull --rescue”
> sounds too generic to me. Maybe there will be other use cases that will
> require a (different) rescue trick in future. Instead, your commit
> 9c9982dc0 suggests a “pull --substitute-missing-derivations” to me.

If I understand well, your version of Guix is too old to use the
feature described in commit 9c9982dc0.

And if I still understand correctly, "pull --rescue" should be
mechanism to easily update an old Guix (before the overhaul in 0.15.0)
instead of doing all the dance.


All the best,
simon
L
L
Ludovic Courtès wrote on 18 Nov 2019 08:22
(name . zimoun)(address . zimon.toutoune@gmail.com)
87zhgtgno6.fsf@gnu.org
Hi!

zimoun <zimon.toutoune@gmail.com> skribis:

Toggle quote (18 lines)
> Hi Ludo,
>
> On Sun, 17 Nov 2019 at 22:15, Ludovic Courtès <ludo@gnu.org> 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.)

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.

Apart from that it’s really fun, I wonder why I’ve never used that
feature before!

Toggle quote (7 lines)
>> 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. :-)

Thanks,
Ludo’.
Z
Z
zimoun wrote on 18 Nov 2019 08:44
(name . Ludovic Courtès)(address . ludo@gnu.org)
CAJ3okZ3hOLcWKAhPW8NiJQDMSZuszQK1g2o15yogecgSb51f2A@mail.gmail.com
Hi Ludo,

On Mon, 18 Nov 2019 at 17:22, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (22 lines)
> zimoun <zimon.toutoune@gmail.com> skribis:

> > On Sun, 17 Nov 2019 at 22:15, Ludovic Courtès <ludo@gnu.org> 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.


Toggle quote (6 lines)
> 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.

Toggle snippet (24 lines)
$ 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



Toggle quote (9 lines)
> >> 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
L
L
Ludovic Courtès wrote on 18 Nov 2019 12:10
(name . zimoun)(address . zimon.toutoune@gmail.com)
87sgmlgd2t.fsf@gnu.org
zimoun <zimon.toutoune@gmail.com> skribis:

Toggle quote (4 lines)
> 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.

You need to do the short version of the dance, so to speak, and the
proposed ‘--rescue’ could do that for you.

Toggle quote (20 lines)
>> 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.
>
> $ 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

That’s a perfect illustration of the problem I described just above.

If you try again 5mn later, it should go a bit further, and so forth.

Ludo’.
L
L
Ludovic Courtès wrote on 18 Nov 2019 12:19
(name . Kai Mertens)(address . kmx@posteo.net)(address . 38226@debbugs.gnu.org)
87lfsdgcos.fsf@gnu.org
Hello,

Kai Mertens <kmx@posteo.net> skribis:

Toggle quote (2 lines)
> hmm, I am on i686 – is the trick still applicable?

Sure, you can try the command I gave with
"/gnu/store/ly0x0dk2qm0jk3fgwsrnl5cy8a1ybwkk-guix-900ef20b1.drv" for
instance.

Toggle quote (2 lines)
> I will switch to root’s profile with “sudo -i”, but that is ok, right?

Yes, you can do that. “sudo -i guix pull” means you’ll be updating
root’s Guix. You’ll probably want to update your user’s Guix as well,
with just “guix pull”.

Toggle quote (4 lines)
> I guess I cannot use a simple “sudo -i guix package -u guix” as a
> workaround for the failing “sudo -i guix pull”, as it would bring up
> the same issue?

Right, you have to get yourself a newer Guix first. :-)

HTH!

Ludo’.
Z
Z
zimoun wrote on 19 Nov 2019 03:49
(name . Ludovic Courtès)(address . ludo@gnu.org)
CAJ3okZ2pAijUaCfEiF=Se_LfW2AN=s4wwUHFwO4nPexkdJOkjQ@mail.gmail.com
Hi Ludo,

On Mon, 18 Nov 2019 at 21:10, Ludovic Courtès <ludo@gnu.org> wrote:
Toggle quote (10 lines)
>
> zimoun <zimon.toutoune@gmail.com> skribis:
>
> > 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.
>
> You need to do the short version of the dance, so to speak, and the
> proposed ‘--rescue’ could do that for you.

Sorry, I am slow to understand.

My current Guix version is pre-0.15. So "guix pull" does not work anymore.
This evaluation [1] contains a recent enough Guix to be able to pull, I guess.


I can download the derivation with:


But how to move the derivation to store? I am not sure that it makes sense.

Well, the previous Guile snippet you have shown returns an error.


My other approach is to clone and fetch a recent Guix from Git. Then:

./pre-env guix pull "bz1qqy225p1jlicwf07iiqr79icqddcv-guix-4de11dda7.drv"

But I am not sure it will work because of the daemon. Do it make sense
to start the fresh compiled daemon?


Toggle quote (22 lines)
> >> 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.
> >
> > $ 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
>
> That’s a perfect illustration of the problem I described just above.

Ahah! I am very slow to understand. :-)



Cheers,
simon
L
L
Ludovic Courtès wrote on 20 Nov 2019 06:15
(name . zimoun)(address . zimon.toutoune@gmail.com)
87y2waocpx.fsf@gnu.org
Hi,

zimoun <zimon.toutoune@gmail.com> skribis:

Toggle quote (6 lines)
> I can download the derivation with:
>
> wget https://ci.guix.info/nar/gzip/bz1qqy225p1jlicwf07iiqr79icqddcv-guix-4de11dda7.drv
>
> But how to move the derivation to store? I am not sure that it makes sense.

It’s easier than this: just type

guix build /gnu/store/bz1qqy225p1jlicwf07iiqr79icqddcv-guix-4de11dda7.drv

and it will download the .drv and start building it.

(Modulo the ‘guix publish --cache’ issue I mentioned.)

HTH!

Ludo’.
K
K
Kai Mertens wrote on 20 Nov 2019 06:21
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 38226@debbugs.gnu.org)
20191120152127.561dbc3f.kmx@posteo.net
On Sun, 17 Nov 2019 22:14:07 +0100
Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (21 lines)
> > The command “sudo -i guix --version” gives me:
> > guix (GNU Guix) 20170703.13
>
> This version predates the big ‘guix pull’ overhaul in 0.15.0 (what
> basically makes this kind of problem much less likely to happen.)
>
> Thus, you need a more recent ‘guix’ to upgrade.
>
> One way to do that is to fetch the derivation that builds a recent Guix
> and to build it.
>
> Here’s a trick to do that (for commit 57c7bfec6, on x86_64-linux):
>
> --8<---------------cut here---------------start------------->8---
> $ guile -c '(use-modules (guix)) (with-store s (build-things s (list "/gnu/store/ihylk84symj8mjhp3zmy83ch2h2pl0ks-guix-57c7bfec6.drv")))'
> $ guix build "/gnu/store/ihylk84symj8mjhp3zmy83ch2h2pl0ks-guix-57c7bfec6.drv"
> $ /gnu/store/4zmf32hjrjjjl2xp91aldxhmsmk6ff29-guix-57c7bfec6/bin/guix pull
> --8<---------------cut here---------------end--------------->8---
>
> Let me know how it goes!

Puh, in respect to the sequencing mails I have to admit that it is hard
to me to follow the discussion. So please let me ask something else in
between: Can I make use of an existing guix derivation file or guix
binary, available in /gnu/store?

In example (on i686):

The root account has this very old guix version:
v0.13.0-443-gde9d8f0e29

Whereas, my user account has a more up-to-date version:
bootstrap-20190815-3564-g7696af421b
and its Generation 1 refers to:
v0.16.0

In /gnu/store/, I have several guix derivations available:
$ ll *-guix-0.13.0-2.???????.drv
-r--r--r-- 2 root root 4,5K Jan 1 1970 6r87sglvwbmqcz2zhzgvag7aakk1shc3-guix-0.13.0-2.de9d8f0.drv
-r--r--r-- 2 root root 1,1K Jan 1 1970 c24j1glzsgzklkjmv2ik7vcsyasc6yg2-guix-0.13.0-2.de9d8f0.drv
-r--r--r-- 2 root root 2,7K Jan 1 1970 cav8ip7bazglbhagd7afbyw9aah94q3m-guix-0.13.0-2.de9d8f0.drv
-r--r--r-- 2 root root 4,5K Jan 1 1970 p5m5qhkab5rxki8fmn89wgmnvchf1p1l-guix-0.13.0-2.de9d8f0.drv

and

$ ll *-guix-?????????.drv
-r--r--r-- 2 root root 1,2K Jan 1 1970 0ypa7ga44mprjp2cfyk5iwlg07jqq2m4-guix-b8f0a3fdc.drv
-r--r--r-- 2 root root 1,3K Jan 1 1970 3b4kw7sfm03092cc0sxh91w2v26jvq4n-guix-4a0b87f0e.drv
-r--r--r-- 2 root root 1,2K Jan 1 1970 bl41dqirc8j6mza8f01xac1f8pd5fbh3-guix-d8048dbe5.drv
-r--r--r-- 2 root root 1,2K Jan 1 1970 iq424kad8wj3ws0g59nwdkccrk34k76g-guix-c72c10053.drv
-r--r--r-- 2 root root 1,2K Jan 1 1970 r2hww1x08y9gz9a9fb94w1b0d3rjv9d5-guix-7696af421.drv

...which can be sorted by age if I use “git describe” to get a human
readable string:

~~~

$ git describe 7696af421
bootstrap-20190815-3564-g7696af421b
$ git describe d8048dbe5
bootstrap-20190815-3491-gd8048dbe50
$ git describe b8f0a3fdc
bootstrap-20190815-3368-gb8f0a3fdc8
$ git describe c72c10053
v1.0.0-696-gc72c10053d
$ git describe 4a0b87f0e
v0.16.0
$ git describe de9d8f0
v0.13.0-443-gde9d8f0e29

~~~

If I pick the oldest commit beyond 0.15, I try an already built binary.
That seems to work, although I receive a bunch of warnings (not shown here):

~~~

# /gnu/store/b0br0mhjxcy7bzg0c2pij1vf48jf9ddj-guix-4a0b87f0e/bin/guix pull -c0
guile: warning: failed to install locale
hint: Consider installing the `glibc-utf8-locales' or `glibc-locales' package and defining `GUIX_LOCPATH', along these lines:

guix package -i glibc-utf8-locales
export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"

See the "Application Setup" section in the manual, for more info.


Migrating profile generations to '/var/guix/profiles/per-user/root'...
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Building from this channel:
substitute: updating list of substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating list of substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating list of substitutes from 'https://ci.guix.gnu.org'... 100.0%

[...]

building /gnu/store/3yk3qh02vx8zm7pd9d3x7gicikfbpybr-profile.drv...
successfully built /gnu/store/3yk3qh02vx8zm7pd9d3x7gicikfbpybr-profile.drv
1 package in profile

# guix pull -l
guile: warning: failed to install locale
Generation 1 Nov 18 2019 22:45:38 (current)
guix 900ef20
branch: master
commit: 900ef20b1da66ad71145082c883dc12f31fafa54

# guix package -I
guile: warning: failed to install locale
glibc-utf8-locales 2.25 out /gnu/store/9vv6szr949m8mrqfyj7bfkxi8g5mfr2y-glibc-utf8-locales-2.25
guix 0.13.0-2.de9d8f0 out /gnu/store/34541bys6lh3wjwjn81b9bxjb93q83qx-guix-0.13.0-2.de9d8f0
glibc 2.25 out /gnu/store/2bw8y2k8fi9n6yl43ks0m62z919kgrfv-glibc-2.25

~~~

If I understand correctly, I have just updated my root’s guix and I
carefully update packages glibc and glibc-utf8-locales in order to
satisfy guile and make the warning disappear:

~~~

# guix package -c0 -u glibc-utf8-locales -u glibc
guile: warning: failed to install locale
The following packages will be upgraded:
glibc-utf8-locales 2.25 → 2.29 /gnu/store/lhcmsprr3jz8cp0wg27ql59fv1k6hrkl-glibc-utf8-locales-2.29
glibc 2.25 → 2.29 /gnu/store/df1lrb4b1dmw99b764qdk7akv0hpyjiw-glibc-2.29

[...]

3 packages in profile

# guix package -I
guix 0.13.0-2.de9d8f0 out /gnu/store/34541bys6lh3wjwjn81b9bxjb93q83qx-guix-0.13.0-2.de9d8f0
glibc-utf8-locales 2.29 out /gnu/store/lhcmsprr3jz8cp0wg27ql59fv1k6hrkl-glibc-utf8-locales-2.29
glibc 2.29 out /gnu/store/df1lrb4b1dmw99b764qdk7akv0hpyjiw-glibc-2.29

~~~

Now I remember that I have to restart the daemon and reboot the
machine. Playing around with “pull” and “package -u” again brings me to
the situation where I am now:

~~~

# guix pull -l
Generation 1 Nov 18 2019 22:45:38
guix 900ef20
branch: master
commit: 900ef20b1da66ad71145082c883dc12f31fafa54
Generation 2 Nov 19 2019 00:11:25
guix e26867f
branch: master
commit: e26867f74b629c4a981e45332ce94637cf4230eb
1 package upgraded: tome4@1.6.1
Generation 3 Nov 20 2019 13:33:09 (current)
guix 30ebff6
branch: master
commit: 30ebff69a75fe90a1694ef35cf6e749ec376b67e
7 new packages: carla, emacs-ample-theme, font-dseg, minisat, python-intelhex, python-mcuboot-imgtool, python-next
4 packages upgraded: brlaser@6, cmark@0.29.0, mcron@1.1.3, uefitool@0.26.0

# guix package -I
glibc-utf8-locales 2.29 out /gnu/store/lhcmsprr3jz8cp0wg27ql59fv1k6hrkl-glibc-utf8-locales-2.29
guix 1.0.1-10.41b4b71 out /gnu/store/4djl9bnl0p62jmfidk5vc2sjchx5m2h7-guix-1.0.1-10.41b4b71
glibc 2.29 out /gnu/store/df1lrb4b1dmw99b764qdk7akv0hpyjiw-glibc-2.29

~~~

I guess I am back on track now, would you agree?
Or does my procedure contain any mistakes?

I wonder why guix did not use local guix derivations or binaries that
were already available in the store. Maybe a now-a-days version of guix
would do?

I further wonder why the guix package itself is still listed, as with a
fresh, recent installation of guix on top of a foreign distro, guix
itself is not listed with “guix package -l”.


best regards
Kai


--
Kai Mertens <kmx@posteo.net>
OpenPGP Key-ID: 0x40B15AB4B05B5BF1 on keys.gnupg.net
Key fingerprint = 7C83 0A80 01FF 679C 6E8E AFD3 40B1 5AB4 B05B 5BF1
What is that? Please check: https://emailselfdefense.fsf.org/en/
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfIMKgAH/Z5xujq/TQLFatLBbW/EFAl3VS+cACgkQQLFatLBb
W/F7yhAArHaoNkhyWE+IG62/fKac/0I5eLRoARj0pz1pajgtbww2bBmxz7aVK2Ub
FT8+jL1DT+6f0c6rcq1zcmO7+Hlk7+HTHvGoCpkaWozbWuANt7J8q7ycqUMZ9jIh
9KGA1IwWaYkET2HuErNpQ8C2IYJzdbUNNp3B2jU9myMXHAA2PGAMvwNCouoTIPGu
KnTetL49Hnqvnmcw4TwPGDlCbCcNQ5kL3gseuZkJWXPPR3UgsUnLdrTi+q+Nl3M3
bRXzsU7aiN8Du8KWNkG5El1d2ndfHOkyOFCHi8jhGHBIvc3SA+sw7RuZSTfYmFyE
6fEl1T6AdPaAHypFyqX4FmoBWBFqJ/50r+A3aPOseDY0VKYxyHFUE/0ph0Ef4fkH
BqqUjLS/7rYRnn7X7fctCimfvHYgLgMy42ZsDVdUDbq16+5M44jVf0p1sKrzDrQX
7bAEV04PBRk1vbP9oH+wJzXD3HVcHQQWpH+0SGR+G08+RlrDJv44Zq60Ua4BfJT7
3PNWpmpdNLqCvrgsLN+TWr3cNqF3cwE2LOw4dOoauNi338mSO5lkidbR/2MLSEJZ
kmY3j4W+9LlEpRrBxqN0xTm8NB9V2I4Kgditl8QGtELlD7RcirpNR0O+WolkfjS8
AS+DAJl5b9S3JoidP9Mjb58u4gI4LaX+jHdxEIbXcMif4OKjcPI=
=qDHt
-----END PGP SIGNATURE-----


Z
Z
zimoun wrote on 18 Feb 2020 05:27
(name . Kai Mertens)(address . kmx@posteo.net)
CAJ3okZ3C3M9U9hBg=Z6Ag_rBBoKLGNbTjY9NK6VmA=+ZXUnRgQ@mail.gmail.com
Hi Kai,

What is the status of this bug?
Have you solved it? Any progress?


On Wed, 20 Nov 2019 at 15:30, Kai Mertens <kmx@posteo.net> wrote:
Toggle quote (34 lines)
> On Sun, 17 Nov 2019 22:14:07 +0100
> Ludovic Courtès <ludo@gnu.org> wrote:

> > > The command “sudo -i guix --version” gives me:
> > > guix (GNU Guix) 20170703.13
> >
> > This version predates the big ‘guix pull’ overhaul in 0.15.0 (what
> > basically makes this kind of problem much less likely to happen.)
> >
> > Thus, you need a more recent ‘guix’ to upgrade.
> >
> > One way to do that is to fetch the derivation that builds a recent Guix
> > and to build it.
> >
> > Here’s a trick to do that (for commit 57c7bfec6, on x86_64-linux):
> >
> > --8<---------------cut here---------------start------------->8---
> > $ guile -c '(use-modules (guix)) (with-store s (build-things s (list "/gnu/store/ihylk84symj8mjhp3zmy83ch2h2pl0ks-guix-57c7bfec6.drv")))'
> > $ guix build "/gnu/store/ihylk84symj8mjhp3zmy83ch2h2pl0ks-guix-57c7bfec6.drv"
> > $ /gnu/store/4zmf32hjrjjjl2xp91aldxhmsmk6ff29-guix-57c7bfec6/bin/guix pull
> > --8<---------------cut here---------------end--------------->8---
> >
> > Let me know how it goes!
>
> Puh, in respect to the sequencing mails I have to admit that it is hard
> to me to follow the discussion. So please let me ask something else in
> between: Can I make use of an existing guix derivation file or guix
> binary, available in /gnu/store?
>
> In example (on i686):
>
> The root account has this very old guix version:
> v0.13.0-443-gde9d8f0e29

Yes, very very old! ;-)


Toggle quote (5 lines)
> Whereas, my user account has a more up-to-date version:
> bootstrap-20190815-3564-g7696af421b
> and its Generation 1 refers to:
> v0.16.0

And do you still have an issue when pulling from there?


Toggle quote (12 lines)
> # /gnu/store/b0br0mhjxcy7bzg0c2pij1vf48jf9ddj-guix-4a0b87f0e/bin/guix pull -c0
> guile: warning: failed to install locale
> hint: Consider installing the `glibc-utf8-locales' or `glibc-locales' package and defining `GUIX_LOCPATH', along these lines:
>
> guix package -i glibc-utf8-locales
> export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
>
> See the "Application Setup" section in the manual, for more info.
>
>
> Migrating profile generations to '/var/guix/profiles/per-user/root'...

This message is not expected. Something is going wrongly and was wrong before.


Toggle quote (2 lines)
> I guess I am back on track now, would you agree?

Yes, you seems back on track. :-)
Is it ok for you? If yes, answer to 38226-done@debbugs.gnu.org to
close the bug. :-)


Toggle quote (4 lines)
> I wonder why guix did not use local guix derivations or binaries that
> were already available in the store. Maybe a now-a-days version of guix
> would do?

What do you mean by "did not use local derivations or binaries that
were already available in the store"? Do you have a concrete example?


Toggle quote (4 lines)
> I further wonder why the guix package itself is still listed, as with a
> fresh, recent installation of guix on top of a foreign distro, guix
> itself is not listed with “guix package -l”.

The command "guix package -i guix" will install the package 'guix' in
the profile and so 'guix' will appear with "guix package -I"
It is different than installing Guix itself.

Roughly speaking, "--install guix" will install the Guile library named 'guix'.
And installing Guix itself on a foreign distro will install all the
package manager.


All the best,
simon
Z
Z
zimoun wrote on 14 May 2020 07:57
tags moreinfo
(address . control@debbugs.gnu.org)
CAJ3okZ3RVH5+VjtdgokwCqE_WYV=u3=p62J7R3KVqPHy0dmZPw@mail.gmail.com
tags 38226 moreinfo
thanks
Z
Z
zimoun wrote on 21 May 2020 17:22
bug#38226: guix pull: error: build failed:
(address . 38226-done@debbugs.gnu.org)
CAJ3okZ13o7g-vnzi28TsgRo2pG2MqDKKhGkqnxq8jguR3c2ejQ@mail.gmail.com
Dear,

Because this bug is tagged moreinfo and without any activities since
13 weeks, I am closing.
Feel free to reopen it if I have misunderstood the status of this bug.


Best regards,
simon
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 38226@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 38226
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch