‘guix shell -CW’ provides a Guix command without extra channels

  • Open
  • quality assurance status badge
Details
3 participants
  • Ludovic Courtès
  • Ludovic Courtès
  • Simon Tournier
Owner
unassigned
Submitted by
Ludovic Courtès
Severity
important
L
L
Ludovic Courtès wrote on 23 Oct 18:26 +0200
(address . bug-guix@gnu.org)
87msw9fgpp.fsf@inria.fr
‘guix shell -CW’ dismisses extra channels available in the original
Guix, as illustrated by this example:

Toggle snippet (17 lines)
$ guix time-machine -C <(echo '(cons (channel (name (quote guix-hpc)) (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git")) %default-channels)') -- shell -CW coreutils -- guix describe
guix cbd20d6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: cbd20d627497053871db863970c07d93c7081786

$ guix time-machine -C <(echo '(cons (channel (name (quote guix-hpc)) (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git")) %default-channels)') -- describe
guix cbd20d6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: cbd20d627497053871db863970c07d93c7081786
guix-hpc 887d76a
repository URL: https://gitlab.inria.fr/guix-hpc/guix-hpc.git
branch: master
commit: 887d76a8e1d0f35d615c613b28b9b871f39a997e

This is due to the fact that ‘-W’ (‘--nesting’) is implemented by adding
the outer ‘guix’ to the container’s profile, without also adding its
companion profile entries (those that provide channels).

Ludo’.
L
L
Ludovic Courtès wrote on 23 Oct 18:52 +0200
Re: bug#66705: ‘guix shell -CW ’ provides a Guix command without extra channels
(address . 66705@debbugs.gnu.org)
87fs21ffhf.fsf@gnu.org
Ludovic Courtès <ludovic.courtes@inria.fr> skribis:

Toggle quote (4 lines)
> This is due to the fact that ‘-W’ (‘--nesting’) is implemented by adding
> the outer ‘guix’ to the container’s profile, without also adding its
> companion profile entries (those that provide channels).

Actually, the original profile, which contains ‘guix’ and its channels,
*is* available in the environment:

Toggle snippet (18 lines)
$ guix time-machine -C <(echo '(cons (channel (name (quote guix-hpc)) (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git")) %default-channels)') -- shell -CW coreutils
[env]$ readlink -f $(type -P guix)
/gnu/store/42731vcvzl6nrwa584mziwhpvp4xs72r-guix-command
[env]$ type -P guix
/gnu/store/ca142m4lm0grxmsjqrcqpfl5qb5i1rka-profile/bin/guix
[env]$ readlink $(type -P guix)
/gnu/store/j5g09kjd7pv1b6919vbsnjs160xfw9md-profile/bin/guix
[env]$ /gnu/store/j5g09kjd7pv1b6919vbsnjs160xfw9md-profile/bin/guix describe
guix cbd20d6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=cbd20d627497053871db863970c07d93c7081786\cbd20d627497053871db863970c07d93c7081786]8;;\
guix-hpc 887d76a
repository URL: https://gitlab.inria.fr/guix-hpc/guix-hpc.git
branch: master
commit: ]8;;https://gitlab.inria.fr/guix-hpc/guix-hpc/commit/887d76a8e1d0f35d615c613b28b9b871f39a997e\887d76a8e1d0f35d615c613b28b9b871f39a997e]8;;\

The problem is the extra profile layer that confuses
‘current-channel-entries’ in (guix describe).

Ludo’.
S
S
Simon Tournier wrote on 23 Oct 21:14 +0200
87zg09i22n.fsf@gmail.com
Hi,

On Mon, 23 Oct 2023 at 18:52, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (25 lines)
> Actually, the original profile, which contains ‘guix’ and its channels,
> *is* available in the environment:
>
> --8<---------------cut here---------------start------------->8---
> $ guix time-machine -C <(echo '(cons (channel (name (quote guix-hpc)) (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git")) %default-channels)') -- shell -CW coreutils
> [env]$ readlink -f $(type -P guix)
> /gnu/store/42731vcvzl6nrwa584mziwhpvp4xs72r-guix-command
> [env]$ type -P guix
> /gnu/store/ca142m4lm0grxmsjqrcqpfl5qb5i1rka-profile/bin/guix
> [env]$ readlink $(type -P guix)
> /gnu/store/j5g09kjd7pv1b6919vbsnjs160xfw9md-profile/bin/guix
> [env]$ /gnu/store/j5g09kjd7pv1b6919vbsnjs160xfw9md-profile/bin/guix describe
> guix cbd20d6
> repository URL: https://git.savannah.gnu.org/git/guix.git
> branch: master
> commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=cbd20d627497053871db863970c07d93c7081786\cbd20d627497053871db863970c07d93c7081786]8;;\
> guix-hpc 887d76a
> repository URL: https://gitlab.inria.fr/guix-hpc/guix-hpc.git
> branch: master
> commit: ]8;;https://gitlab.inria.fr/guix-hpc/guix-hpc/commit/887d76a8e1d0f35d615c613b28b9b871f39a997e\887d76a8e1d0f35d615c613b28b9b871f39a997e]8;;\
> --8<---------------cut here---------------end--------------->8---
>
> The problem is the extra profile layer that confuses
> ‘current-channel-entries’ in (guix describe).

Oh. Naive remarks. The ’guix’ in the manifest points to the correct
one with both channels.

Toggle snippet (41 lines)
$ guix time-machine -C <(echo '(cons (channel (name (quote guix-hpc)) (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git")) %default-channels)') -- shell -CW coreutils
[env]$ cat $GUIX_ENVIRONMENT/manifest
;; This file was automatically generated and is for internal use only.
;; It cannot be passed to the '--manifest' option.
;; Run 'guix package --export-manifest' if you want to export a file
;; suitable for '--manifest'.

(manifest
(version 4)
(packages
(("coreutils"
"9.1"
"out"
"/gnu/store/d4rqw481nwvrzs09nd8ad647nczgm9k1-coreutils-9.1")
("guix"
"cbd20d627497053871db863970c07d93c7081786"
"out"
"/gnu/store/vrmfn5142771vzma3nzivb8j3zx9780v-profile"
(search-paths
(("GUIX_EXTENSIONS_PATH"
("share/guix/extensions")
":"
directory
#f)
("SSL_CERT_DIR"
("etc/ssl/certs")
#f
directory
#f)))))))

[env]$ /gnu/store/vrmfn5142771vzma3nzivb8j3zx9780v-profile/bin/guix describe
guix cbd20d6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=cbd20d627497053871db863970c07d93c7081786\cbd20d627497053871db863970c07d93c7081786]8;;\
guix-hpc ef21e73
repository URL: https://gitlab.inria.fr/guix-hpc/guix-hpc.git
branch: master
commit: ]8;;https://gitlab.inria.fr/guix-hpc/guix-hpc/commit/ef21e73d09e792c3ed18b2483a6290b8309bd929\ef21e73d09e792c3ed18b2483a6290b8309bd929]8;;\

Well, what appears to me weird is that the ’guix’ I type is incorrect
but points to a correct one.

Toggle snippet (20 lines)
[env]$ ls -l $(type -P guix)
lrwxrwxrwx 1 65534 overflow 60 Jan 1 1970 /gnu/store/519kyqhl1n5r6cj0jbpkc77v4mnf6ip9-profile/bin/guix -> /gnu/store/vrmfn5142771vzma3nzivb8j3zx9780v-profile/bin/guix

[env]$ /gnu/store/519kyqhl1n5r6cj0jbpkc77v4mnf6ip9-profile/bin/guix describe
guix cbd20d6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=cbd20d627497053871db863970c07d93c7081786\cbd20d627497053871db863970c07d93c7081786]8;;\

[env]$ /gnu/store/vrmfn5142771vzma3nzivb8j3zx9780v-profile/bin/guix describe
guix cbd20d6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=cbd20d627497053871db863970c07d93c7081786\cbd20d627497053871db863970c07d93c7081786]8;;\
guix-hpc ef21e73
repository URL: https://gitlab.inria.fr/guix-hpc/guix-hpc.git
branch: master
commit: ]8;;https://gitlab.inria.fr/guix-hpc/guix-hpc/commit/ef21e73d09e792c3ed18b2483a6290b8309bd929\ef21e73d09e792c3ed18b2483a6290b8309bd929]8;;\

Well, another way to express,

This is due to the fact that ‘-W’ (‘--nesting’) is implemented by adding
the outer ‘guix’ to the container’s profile, without also adding its
companion profile entries (those that provide channels).

is to note that the manifest file is incorrect and does not contain the
outer manifest file, right?

Toggle snippet (78 lines)
[env]$ cat /gnu/store/519kyqhl1n5r6cj0jbpkc77v4mnf6ip9-profile/manifest
;; This file was automatically generated and is for internal use only.
;; It cannot be passed to the '--manifest' option.
;; Run 'guix package --export-manifest' if you want to export a file
;; suitable for '--manifest'.

(manifest
(version 4)
(packages
(("coreutils"
"9.1"
"out"
"/gnu/store/d4rqw481nwvrzs09nd8ad647nczgm9k1-coreutils-9.1")
("guix"
"cbd20d627497053871db863970c07d93c7081786"
"out"
"/gnu/store/vrmfn5142771vzma3nzivb8j3zx9780v-profile"
(search-paths
(("GUIX_EXTENSIONS_PATH"
("share/guix/extensions")
":"
directory
#f)
("SSL_CERT_DIR"
("etc/ssl/certs")
#f
directory
#f)))))))

[env]$ cat /gnu/store/vrmfn5142771vzma3nzivb8j3zx9780v-profile/manifest
;; This file was automatically generated and is for internal use only.
;; It cannot be passed to the '--manifest' option.
;; Run 'guix package --export-manifest' if you want to export a file
;; suitable for '--manifest'.

(manifest
(version 3)
(packages
(("guix"
"cbd20d6"
"out"
"/gnu/store/xhim59kcwjnccsvyjv2cv2sbmid9lxm9-guix-cbd20d627"
(propagated-inputs ())
(search-paths ())
(properties
(source
(repository
(version 0)
(url "https://git.savannah.gnu.org/git/guix.git")
(branch "master")
(commit
"cbd20d627497053871db863970c07d93c7081786")
(name guix)
(introduction
(channel-introduction
(version 0)
(commit
"9edb3f66fd807b096b48283debdcddccfea34bad")
(signer
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))))
("guix-hpc"
"ef21e73"
"out"
"/gnu/store/hjjwsjwm3csih0764f2mkbd65h44j7fz-guix-hpc"
(propagated-inputs ())
(search-paths ())
(properties
(source
(repository
(version 0)
(url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git")
(branch "master")
(commit
"ef21e73d09e792c3ed18b2483a6290b8309bd929")
(name guix-hpc))))))))


Cheers,
simon
L
L
Ludovic Courtès wrote on 23 Oct 21:54 +0200
control message for bug #66705
(address . control@debbugs.gnu.org)
87a5s9f72x.fsf@gnu.org
severity 66705 important
quit
?