unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#68797: Channel dependencies should be propagated
@ 2024-01-29 15:01 Ludovic Courtès
  2024-06-28  4:29 ` bug#68797: Relevant code Richard Sent
  0 siblings, 1 reply; 2+ messages in thread
From: Ludovic Courtès @ 2024-01-29 15:01 UTC (permalink / raw)
  To: 68797

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:

--8<---------------cut here---------------start------------->8---
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))
--8<---------------cut here---------------end--------------->8---

Here’s the script:

--8<---------------cut here---------------start------------->8---
#!/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
--8<---------------cut here---------------end--------------->8---

Ludo’.




^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#68797: Relevant code
  2024-01-29 15:01 bug#68797: Channel dependencies should be propagated Ludovic Courtès
@ 2024-06-28  4:29 ` Richard Sent
  0 siblings, 0 replies; 2+ messages in thread
From: Richard Sent @ 2024-06-28  4:29 UTC (permalink / raw)
  To: 68797

For whoever takes this on, I believe the relevant code is
resolve-dependencies in (guix channels). Note that resolve-dependencies
operates on <channel-instance> records, not <channel>.

I came up with something earlier that handled one level of searching in
the dependency graph, but between the awkwardness of converting between
<channel-instance> to <channel-metadata> to <channel> to
<channel-instance> and the unfamiliar VHash structure, couldn't quite
iron it out to handle arbitrary depths. Unfortunately that code is lost,
but I'll give it another try sometime if no one else gets to this first.

-- 
Take it easy,
Richard Sent
Making my computer weirder one commit at a time.




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-06-28  6:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-29 15:01 bug#68797: Channel dependencies should be propagated Ludovic Courtès
2024-06-28  4:29 ` bug#68797: Relevant code Richard Sent

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).