'guix pull --branch=master' on core-updates (Guile 2.2.6) fails

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Marius Bakke
Owner
unassigned
Submitted by
Marius Bakke
Severity
important
M
M
Marius Bakke wrote on 24 Sep 2019 19:00
[core-updates] Inferiors cannot reference master branch
(address . bug-guix@gnu.org)
87muetaau0.fsf@devup.no
Hello,

On the 'core-updates' branch, if you try to reference the 'master'
branch in an inferior, your system will fail to build like so:

Backtrace:
11 (primitive-load "/gnu/store/m5wq1irm2gb7r4k72qmzf1hi426?")
In ice-9/eval.scm:
619:8 10 (_ #f)
In srfi/srfi-1.scm:
466:18 9 (fold #<procedure 7ffff4f17ec0 at ice-9/eval.scm:336:1?> ?)
466:18 8 (fold #<procedure 7ffff445c500 at ice-9/eval.scm:336:1?> ?)
466:18 7 (fold #<procedure 7fffeff86ea0 at ice-9/eval.scm:336:1?> ?)
In ice-9/eval.scm:
619:8 6 (_ #(#(#<directory (guix build utils) 7ffff5c9e500>) # ?))
In ice-9/boot-9.scm:
2312:4 5 (save-module-excursion _)
In unknown file:
4 (primitive-load "./guix/build/syscalls.scm")
In ice-9/eval.scm:
619:8 3 (_ #f)
In ice-9/boot-9.scm:
2071:24 2 (call-with-deferred-observers #<procedure 7fffeecd2480 ?>)
260:13 1 (for-each #<procedure 7fffeecd2340 at ice-9/boot-9.scm?> ?)
In unknown file:
0 (scm-error misc-error #f "~A ~S" ("re-exporting loc?" ?) ?)

ERROR: In procedure scm-error:
re-exporting local variable: AT_SYMLINK_NOFOLLOW
builder for `/gnu/store/3a5d7ykx6wpyw9z1i01w69cafhrzjc21-module-import-compiled.drv' failed with exit code 1
cannot build derivation `/gnu/store/l3kml1yk7ma9d1bybsjvv5iw1khy6b89-compute-guix-derivation.drv': 1 dependencies couldn't be built
guix system: error: exception thrown: #<condition &store-protocol-error [message: "build of `/gnu/store/l3kml1yk7ma9d1bybsjvv5iw1khy6b89-compute-guix-derivation.drv' failed" status: 100] 7f97fba2e540
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl2KS6cACgkQoqBt8qM6
VPrUVAgAzy5POPOlPTllw4arewNAS96ZXTiTnnjFOn1UJCdtj1dTJPND5yYbt2M/
IovjlFqTw0hI57b0reIZzGLGBics4gqCZVWzQE5auJKTV4d7jnPzyRbVIBueq1jR
sbJXuRFumzz6kyebOPwYRT5vErlYz/XapnqPYagznYNwb1UP8yea8Aqf9dzK6g56
LD8ADsZ53hiDfxIFIPkShB2tuqrssRRhlRSF0uUlHgnIZBrOeOmU5KEudyRs3QHY
a3ffr3B4RBig6vLgnGVhEvRbTwjBlwLAYXx9Yd7OgTUU4rGWkSXNwvuiWEJTcctq
ulhTRz0m0QqhEWk8OlDSuuLwQOCk4w==
=4oLE
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 26 Sep 2019 23:17
(name . Marius Bakke)(address . mbakke@fastmail.com)(address . 37506@debbugs.gnu.org)
87v9tehi4u.fsf@gnu.org
Hi,

Marius Bakke <mbakke@fastmail.com> skribis:

Toggle quote (3 lines)
> On the 'core-updates' branch, if you try to reference the 'master'
> branch in an inferior, your system will fail to build like so:

Could you provide a manifest or something to reproduce this?

Thanks,
Ludo’.
M
M
Marius Bakke wrote on 27 Sep 2019 14:16
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 37506@debbugs.gnu.org)
87d0fm9bno.fsf@devup.no
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (9 lines)
> Hi,
>
> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> On the 'core-updates' branch, if you try to reference the 'master'
>> branch in an inferior, your system will fail to build like so:
>
> Could you provide a manifest or something to reproduce this?

Here is a manifest that reproduces this failure:
(use-modules (guix channels) (guix inferior) (srfi srfi-1)) (define channels (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "dec845606d2d184da31065fa26cd951b84b3ce2d")))) (define inferior (inferior-for-channels channels)) (packages->manifest (first (lookup-inferior-packages inferior "hello")))
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl2N/bsACgkQoqBt8qM6
VPpIaQf/VEOlXzwml4lwQN8OgRfVAuWPKcvLMhCPHyaofULviAuixo0yPONARbCk
ET/jIMHHMxitHiT/xC2dF8e6mhP7R8MmE02GnVxqi4UKPfRoyahNGNNJHGsvIlwz
6cVy6DWNsHhlZJlW5ozb6ofw0mBYNf/AEp9zzupcXPjPDeiIdCmyM5jdlFdHIH83
rU9Uu0iQ+/w12tD0hb5gZ9V7Uh1J67M/V6LqQa6GjLVT/J7M5mhAJP6HVVw2fvLa
2G/wpg+o1j2YY/L4+6cbC1+hw3u5WCDO4JNversrcUhxTKDLFX+CN0hyBu7ALWUf
nkZgz916u7vDzLpZ/+eXPHEFSJPpUA==
=g0+E
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 28 Sep 2019 21:52
(name . Marius Bakke)(address . mbakke@fastmail.com)(address . 37506@debbugs.gnu.org)
87a7aop59n.fsf@gnu.org
Hi Marius!

Marius Bakke <mbakke@fastmail.com> skribis:

Toggle quote (16 lines)
> Here is a manifest that reproduces this failure:
>
> (use-modules (guix channels)
> (guix inferior)
> (srfi srfi-1))
>
> (define channels
> (list (channel
> (name 'guix)
> (url "https://git.savannah.gnu.org/git/guix.git")
> (commit "dec845606d2d184da31065fa26cd951b84b3ce2d"))))
>
> (define inferior
> (inferior-for-channels channels))
>
> (packages->manifest (first (lookup-inferior-packages inferior "hello")))
^~~~~
‘packages->manifest’ expects a list, so I had to remove the call to ‘first’.

But then it works for me on both ‘core-updates’ and ‘master’:

Toggle snippet (28 lines)
$ ./pre-inst-env guix package -m /tmp/t.scm -p /tmp/prof
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
installing new manifest from '/tmp/t.scm' with 1 entries
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
/gnu/store/4h0y9413i4nvdwccz5svv1m5y36l384v-profile.drv
The following profile hooks will be built:
/gnu/store/8rp1mzhlscri2ipx9xszld9sli79ywpn-ca-certificate-bundle.drv
/gnu/store/g2cvc48yn91igp7bvsv6bw5cz47gzgzs-fonts-dir.drv
/gnu/store/p5m0rag6q73qisrcnp0l79fdrp1hj2rv-manual-database.drv
/gnu/store/pvhkcys50sz2apq1pb05fgva2hky91ap-info-dir.drv
building CA certificate bundle...
building fonts directory...
building directory of Info manuals...
building database for manual pages...
building /gnu/store/4h0y9413i4nvdwccz5svv1m5y36l384v-profile.drv...
1 package in profile
hint: Consider setting the necessary environment variables by running:

GUIX_PROFILE="/tmp/prof"
. "$GUIX_PROFILE/etc/profile"

Alternately, see `guix package --search-paths -p "/tmp/prof"'.

$ git log|head -1
commit 3128d6a16a80d40d927c41f530dd48ebbb8a036d

Am I missing something?

Ludo’.
M
M
Marius Bakke wrote on 29 Sep 2019 13:46
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 37506@debbugs.gnu.org)
87y2y78gv5.fsf@devup.no
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (23 lines)
> Hi Marius!
>
> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> Here is a manifest that reproduces this failure:
>>
>> (use-modules (guix channels)
>> (guix inferior)
>> (srfi srfi-1))
>>
>> (define channels
>> (list (channel
>> (name 'guix)
>> (url "https://git.savannah.gnu.org/git/guix.git")
>> (commit "dec845606d2d184da31065fa26cd951b84b3ce2d"))))
>>
>> (define inferior
>> (inferior-for-channels channels))
>>
>> (packages->manifest (first (lookup-inferior-packages inferior "hello")))
> ^~~~~
> ‘packages->manifest’ expects a list, so I had to remove the call to ‘first’.

Whoops... It still fails in the same way for me without the (first ...).

Toggle quote (33 lines)
> But then it works for me on both ‘core-updates’ and ‘master’:
>
> --8<---------------cut here---------------start------------->8---
> $ ./pre-inst-env guix package -m /tmp/t.scm -p /tmp/prof
> Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> installing new manifest from '/tmp/t.scm' with 1 entries
> substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> The following derivation will be built:
> /gnu/store/4h0y9413i4nvdwccz5svv1m5y36l384v-profile.drv
> The following profile hooks will be built:
> /gnu/store/8rp1mzhlscri2ipx9xszld9sli79ywpn-ca-certificate-bundle.drv
> /gnu/store/g2cvc48yn91igp7bvsv6bw5cz47gzgzs-fonts-dir.drv
> /gnu/store/p5m0rag6q73qisrcnp0l79fdrp1hj2rv-manual-database.drv
> /gnu/store/pvhkcys50sz2apq1pb05fgva2hky91ap-info-dir.drv
> building CA certificate bundle...
> building fonts directory...
> building directory of Info manuals...
> building database for manual pages...
> building /gnu/store/4h0y9413i4nvdwccz5svv1m5y36l384v-profile.drv...
> 1 package in profile
> hint: Consider setting the necessary environment variables by running:
>
> GUIX_PROFILE="/tmp/prof"
> . "$GUIX_PROFILE/etc/profile"
>
> Alternately, see `guix package --search-paths -p "/tmp/prof"'.
>
> $ git log|head -1
> commit 3128d6a16a80d40d927c41f530dd48ebbb8a036d
> --8<---------------cut here---------------end--------------->8---
>
> Am I missing something?

I have included a system configuration that works fine on 'master' but
not on 'core-updates'. It consistently fails to `guix system build`
across multiple machines, including "berlin".
(use-modules (gnu) (gnu system nss) (guix inferior) (guix channels) (srfi srfi-1)) (use-service-modules base) (define channels (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "9b983086345557ac0a6a40c8cb3a2afd5250d3ee")))) (define inferior (inferior-for-channels channels)) (operating-system (host-name "antelope") (timezone "Europe/Paris") (locale "en_US.utf8") (kernel (first (lookup-inferior-packages "linux-libre"))) (bootloader (bootloader-configuration (bootloader grub-bootloader) (target "/dev/sda"))) (file-systems (cons (file-system (device "/dev/sda1") (mount-point "/") (type "ext4")) %base-file-systems)) (users %base-user-accounts) (packages %base-packages) (services %base-services))
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl2QmZ4ACgkQoqBt8qM6
VPqIIAgAzwkBwnRlTf36DYG5UcEDMgcbutUDwg+Doz9l7FGoI9OVaf3VB3JDG4UM
juDYUIn93TUb64LoZRkKg7aMiBRWWox1mW/JIwdoBg22II9sAOOTeqoFXzfoUd2p
GfjTfDTFMnBv+CuExUXeoimVOjLKqU5lEtbNdVlq0yidP5EWmleRNDo9oftpGwLp
SZtAV139XoEjE7mqkZCYULtlnSDpftuM0fULChVPeMYxYA+0T4jl55Pci6vk8pPX
0hCSL8R7bhCN7P/7FXrWkzSKnF0NMaibzwdKwBZbe9UEh31b2vlzsf3DEF0u1Bms
fYZQWhTG9Wsp2nOmKrh66tP3UURjuw==
=0Zii
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 29 Sep 2019 21:27
(name . Marius Bakke)(address . mbakke@fastmail.com)(address . 37506-done@debbugs.gnu.org)
87impalx6u.fsf@gnu.org
Hi Marius,

Marius Bakke <mbakke@fastmail.com> skribis:

Toggle quote (4 lines)
> I have included a system configuration that works fine on 'master' but
> not on 'core-updates'. It consistently fails to `guix system build`
> across multiple machines, including "berlin".

Oh I see. This is fixed by cherry-picking
96783ed6275cd2818ff56916274e6e4582f1dc9b from ‘core-updates’ into
‘master’. Will push shortly.

Thank you!

Ludo’.
Closed
L
L
Ludovic Courtès wrote on 30 Sep 2019 09:59
control message for bug #37506
(address . control@debbugs.gnu.org)
87r23y6wp1.fsf@gnu.org
retitle 37506 'guix pull --branch=master' on core-updates (Guile 2.2.6) fails
quit
L
L
Ludovic Courtès wrote on 30 Sep 2019 09:59
(address . control@debbugs.gnu.org)
87pnji6woy.fsf@gnu.org
severity 37506 important
quit
L
L
Ludovic Courtès wrote on 30 Sep 2019 10:15
Re: bug#37506: [core-updates] Inferiors cannot reference master branch
87blv26vym.fsf_-_@gnu.org
Hello,

Toggle quote (4 lines)
> Oh I see. This is fixed by cherry-picking
> 96783ed6275cd2818ff56916274e6e4582f1dc9b from ‘core-updates’ into
> ‘master’. Will push shortly.

On second thought, that doesn’t solve the problem for revisions on the
current ‘master’ branch between and
456c7ade095cce96f47389c37a4fe3b0390047fd and
7089f98ef1c274f1607ec314f3a16bd3c3ac89a4. For any commit in that range,
‘guix pull --commit=COMMIT’ will now always fail with:

Toggle snippet (27 lines)
[10/86] Loading './guix/build/syscalls.scm'...
Backtrace:
11 (primitive-load "/gnu/store/yk0wdnkknq9wra78ndvzv2vhc11?")
In ice-9/eval.scm:
619:8 10 (_ #f)
In srfi/srfi-1.scm:
466:18 9 (fold #<procedure 7ffff5afbe00 at ice-9/eval.scm:336:1?> ?)
466:18 8 (fold #<procedure 7fffef7ef0a0 at ice-9/eval.scm:336:1?> ?)
466:18 7 (fold #<procedure 7ffff4a17420 at ice-9/eval.scm:336:1?> ?)
In ice-9/eval.scm:
619:8 6 (_ #(#(#<directory (guix build utils) 7ffff5f51500>) # ?))
In ice-9/boot-9.scm:
2312:4 5 (save-module-excursion _)
In unknown file:
4 (primitive-load "./guix/build/syscalls.scm")
In ice-9/eval.scm:
619:8 3 (_ #f)
In ice-9/boot-9.scm:
2071:24 2 (call-with-deferred-observers #<procedure 7fffeec6ea40 ?>)
260:13 1 (for-each #<procedure 7fffeec6e900 at ice-9/boot-9.scm?> ?)
In unknown file:
0 (scm-error misc-error #f "~A ~S" ("re-exporting loc?" ?) ?)

ERROR: In procedure scm-error:
re-exporting local variable: AT_SYMLINK_NOFOLLOW

It’s a case where code isn’t “forward-compatible”, and it’s code needed
to build the “compute-guix-derivation” trampoline. Bummer.

We could hack something to work around it. For example, we could add to
‘compiled-modules’ a magic parameter that would tell it to undefine
AT_SYMLINK_NOFOLLOW & co., or we could build the trampoline with 2.2.4.

Problem is that we would potentially need to keep the hack forever.

Needs more thought…

Ludo’.
L
L
Ludovic Courtès wrote on 2 Oct 2019 11:40
(name . Marius Bakke)(address . mbakke@fastmail.com)(address . 37506-done@debbugs.gnu.org)
875zl7jxhx.fsf@gnu.org
Hi,

Ludovic Courtès <ludo@gnu.org> skribis:

Toggle quote (10 lines)
>> Oh I see. This is fixed by cherry-picking
>> 96783ed6275cd2818ff56916274e6e4582f1dc9b from ‘core-updates’ into
>> ‘master’. Will push shortly.
>
> On second thought, that doesn’t solve the problem for revisions on the
> current ‘master’ branch between and
> 456c7ade095cce96f47389c37a4fe3b0390047fd and
> 7089f98ef1c274f1607ec314f3a16bd3c3ac89a4. For any commit in that range,
> ‘guix pull --commit=COMMIT’ will now always fail with:

[...]

Toggle quote (10 lines)
> ERROR: In procedure scm-error:
> re-exporting local variable: AT_SYMLINK_NOFOLLOW
>
> It’s a case where code isn’t “forward-compatible”, and it’s code needed
> to build the “compute-guix-derivation” trampoline. Bummer.
>
> We could hack something to work around it. For example, we could add to
> ‘compiled-modules’ a magic parameter that would tell it to undefine
> AT_SYMLINK_NOFOLLOW & co., or we could build the trampoline with 2.2.4.

I added a “quirk” for that in 37c0d4580e464a5915ea34109f78898325aae2c4.

I suppose we’ll accumulate quirks like this over time here. Normally
they should be quite rare because the code used to build the trampoline
targets the common denominator of all Guile and Guix revisions, but
we’ll see.

Ludo’.
Closed
?