Channel dependencies should be propagated

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Ludovic Courtès
Owner
unassigned
Submitted by
Ludovic Courtès
Severity
important
L
L
Ludovic Courtès wrote on 29 Jan 16:01 +0100
(address . bug-guix@gnu.org)
878r48p4jp.fsf@inria.fr
Hello!

With channels flourishing, we found a bug that’s always been there.

When channel C depends on B, which depends on A, in general you need
both A and B to be present in the build environment of C (the derivation
that compiles C when you run ‘pull’ or ‘time-machine’) because
potentially B is going to load modules from A.

However, currently only B is present in C’s environment.

To illustrate that, the script below creates three such channels.
Right now it fails like this:

Toggle snippet (11 lines)
building /gnu/store/2pnfkl9l6lsndsgk4qg7rq4wjh2iisj0-my-channel-c.drv...
|builder for `/gnu/store/2pnfkl9l6lsndsgk4qg7rq4wjh2iisj0-my-channel-c.drv' failed to produce output path `/gnu/store/lix9sz9g2x2ixr3dsyrbnxhxfcqn41l7-my-channel-c'
build of /gnu/store/2pnfkl9l6lsndsgk4qg7rq4wjh2iisj0-my-channel-c.drv failed
View build log at '/var/log/guix/drvs/2p/nfkl9l6lsndsgk4qg7rq4wjh2iisj0-my-channel-c.drv.gz'.
cannot build derivation `/gnu/store/alh2yy1258206zki24z9nzi1zwrggd4d-profile.drv': 1 dependencies couldn't be built
guix time-machine: error: build of `/gnu/store/alh2yy1258206zki24z9nzi1zwrggd4d-profile.drv' failed
$ zcat /var/log/guix/drvs/2p/nfkl9l6lsndsgk4qg7rq4wjh2iisj0-my-channel-c.drv.gz
(repl-version 0 1 1)
(exception misc-error (value #f) (value "no code for module ~S") (value ((my-channel-a))) (value #f))

Here’s the script:

Toggle snippet (53 lines)
#!/bin/sh

set -ex

mkdir a
echo '(define-module (my-channel-a))' > a/my-channel-a.scm
(cd a; git init; git add .; git commit -m init)

mkdir b
cat > b/my-channel-b.scm <<EOF
(define-module (my-channel-b)
#:use-module (my-channel-a))
EOF
cat > b/.guix-channel <<EOF
(channel
(version 0)
(dependencies
(channel (name my-channel-a) (url "$PWD/a"))))
EOF
(cd b; git init; git add .; git commit -m init)

mkdir c
cat > c/my-channel-c.scm <<EOF
(define-module (my-channel-c)
#:use-module (my-channel-b))
EOF
cat > c/.guix-channel <<EOF
(channel
(version 0)
(dependencies
(channel (name my-channel-b) (url "$PWD/b"))))
EOF
(cd c; git init; git add .; git commit -m init)

cat > "channels.scm" <<EOF
(list (channel
(name 'guix)
(url "https://git.savannah.gnu.org/git/guix.git")
(commit
"65dc2d40cb113382fb98796f1d04099f28cab355")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))
(channel
(name 'my-channel-c)
(url "$PWD/c")))
EOF

exec guix time-machine -C channels.scm -- describe

Ludo’.
L
L
Ludovic Courtès wrote on 30 Jan 18:17 +0100
control message for bug #68797
(address . control@debbugs.gnu.org)
87eddykafh.fsf@gnu.org
severity 68797 important
quit
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 68797@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 68797
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