[PATCH] guile: allow pre-inst-env inject local paths

  • Open
  • quality assurance status badge
Details
3 participants
  • Maxime Devos
  • Sergei Trofimovich
  • Sergei Trofimovich
Owner
unassigned
Submitted by
Sergei Trofimovich
Severity
normal
S
S
Sergei Trofimovich wrote on 15 May 2021 11:52
(address . guix-patches@gnu.org)
20210515095227.3245343-1-slyfox@gentoo.org
I observed the problem when tried to run 'guix refresh' from local git checkout:

$ strace -f ./pre-inst-env guix refresh -u re2c |& fgrep re2c.scm
...
[pid 3014757] openat(AT_FDCWD, "/usr/share/guile/site/3.0/gnu/packages/re2c.scm.qilB0R",
O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)

Attempt to /usr/share happens because local directory override is ignored:

$ ./pre-inst-env guile -c '(display (search-path %load-path "gnu/packages/re2c.scm")) (newline) (display %load-path) (newline)'
/usr/share/guile/site/3.0/gnu/packages/re2c.scm
(/usr/share/guile/3.0 \
/usr/share/guile/site/3.0 \
/usr/share/guile/site \
/usr/share/guile \
/home/slyfox/dev/git/guix \
/home/slyfox/dev/git/guix)

It happens because ./guile ignores GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH
unconditionally.

The change keeps GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH for ./pre-inst-env.

* gnu/packages/aux-files/guile-launcher.c (main): don't ignore
GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH in GUIX_UNINSTALLED=1 mode.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
---
gnu/packages/aux-files/guile-launcher.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)

Toggle diff (33 lines)
diff --git a/gnu/packages/aux-files/guile-launcher.c b/gnu/packages/aux-files/guile-launcher.c
index 47ba069de1..bed63353a9 100644
--- a/gnu/packages/aux-files/guile-launcher.c
+++ b/gnu/packages/aux-files/guile-launcher.c
@@ -73,14 +73,19 @@ main (int argc, char **argv)
which is always preferable over the C locale. */
setlocale (LC_ALL, "en_US.utf8");
- const char *str;
- str = getenv ("GUILE_LOAD_PATH");
- load_path = str != NULL ? strdup (str) : NULL;
- str = getenv ("GUILE_LOAD_COMPILED_PATH");
- load_compiled_path = str ? strdup (str) : NULL;
+ /* Allow ./pre-inst-env to inject local paths. That way local sources
+ are preferred for most operations. */
+ if (getenv ("GUIX_UNINSTALLED") == NULL)
+ {
+ const char *str;
+ str = getenv ("GUILE_LOAD_PATH");
+ load_path = str != NULL ? strdup (str) : NULL;
+ str = getenv ("GUILE_LOAD_COMPILED_PATH");
+ load_compiled_path = str ? strdup (str) : NULL;
- unsetenv ("GUILE_LOAD_PATH");
- unsetenv ("GUILE_LOAD_COMPILED_PATH");
+ unsetenv ("GUILE_LOAD_PATH");
+ unsetenv ("GUILE_LOAD_COMPILED_PATH");
+ }
/* XXX: Do not let GMP allocate via libgc as this can lead to memory
corruption in GnuTLS/Nettle since Nettle also uses GMP:
--
2.31.1
S
S
Sergei Trofimovich wrote on 16 Aug 2021 19:28
(address . 48434@debbugs.gnu.org)
20210816182822.654d3e1f@zn3
On Sat, 15 May 2021 10:52:27 +0100
Sergei Trofimovich <slyfox@gentoo.org> wrote:

Toggle quote (63 lines)
> I observed the problem when tried to run 'guix refresh' from local git checkout:
>
> $ strace -f ./pre-inst-env guix refresh -u re2c |& fgrep re2c.scm
> ...
> [pid 3014757] openat(AT_FDCWD, "/usr/share/guile/site/3.0/gnu/packages/re2c.scm.qilB0R",
> O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
>
> Attempt to /usr/share happens because local directory override is ignored:
>
> $ ./pre-inst-env guile -c '(display (search-path %load-path "gnu/packages/re2c.scm")) (newline) (display %load-path) (newline)'
> /usr/share/guile/site/3.0/gnu/packages/re2c.scm
> (/usr/share/guile/3.0 \
> /usr/share/guile/site/3.0 \
> /usr/share/guile/site \
> /usr/share/guile \
> /home/slyfox/dev/git/guix \
> /home/slyfox/dev/git/guix)
>
> It happens because ./guile ignores GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH
> unconditionally.
>
> The change keeps GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH for ./pre-inst-env.
>
> * gnu/packages/aux-files/guile-launcher.c (main): don't ignore
> GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH in GUIX_UNINSTALLED=1 mode.
>
> Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
> ---
> gnu/packages/aux-files/guile-launcher.c | 19 ++++++++++++-------
> 1 file changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/gnu/packages/aux-files/guile-launcher.c b/gnu/packages/aux-files/guile-launcher.c
> index 47ba069de1..bed63353a9 100644
> --- a/gnu/packages/aux-files/guile-launcher.c
> +++ b/gnu/packages/aux-files/guile-launcher.c
> @@ -73,14 +73,19 @@ main (int argc, char **argv)
> which is always preferable over the C locale. */
> setlocale (LC_ALL, "en_US.utf8");
>
> - const char *str;
> - str = getenv ("GUILE_LOAD_PATH");
> - load_path = str != NULL ? strdup (str) : NULL;
> - str = getenv ("GUILE_LOAD_COMPILED_PATH");
> - load_compiled_path = str ? strdup (str) : NULL;
> + /* Allow ./pre-inst-env to inject local paths. That way local sources
> + are preferred for most operations. */
> + if (getenv ("GUIX_UNINSTALLED") == NULL)
> + {
> + const char *str;
> + str = getenv ("GUILE_LOAD_PATH");
> + load_path = str != NULL ? strdup (str) : NULL;
> + str = getenv ("GUILE_LOAD_COMPILED_PATH");
> + load_compiled_path = str ? strdup (str) : NULL;
>
> - unsetenv ("GUILE_LOAD_PATH");
> - unsetenv ("GUILE_LOAD_COMPILED_PATH");
> + unsetenv ("GUILE_LOAD_PATH");
> + unsetenv ("GUILE_LOAD_COMPILED_PATH");
> + }
>
> /* XXX: Do not let GMP allocate via libgc as this can lead to memory
> corruption in GnuTLS/Nettle since Nettle also uses GMP:

Stumbled on it again today when cloned fresh guix repo and forgot to
apply this patch. Is it a reasonable approach? Or something else is
at fault here?

Thanks!

--

Sergei
M
M
Maxime Devos wrote on 16 Aug 2021 20:52
Re: [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths
430b0e953bf76a13ff2290004d3e7ac1f0bdef7c.camel@telenet.be
Sergei Trofimovich schreef op ma 16-08-2021 om 18:28 [+0100]:
Toggle quote (21 lines)
> On Sat, 15 May 2021 10:52:27 +0100
> Sergei Trofimovich <slyfox@gentoo.org> wrote:
>
> > I observed the problem when tried to run 'guix refresh' from local git checkout:
> >
> > $ strace -f ./pre-inst-env guix refresh -u re2c |& fgrep re2c.scm
> > ...
> > [pid 3014757] openat(AT_FDCWD, "/usr/share/guile/site/3.0/gnu/packages/re2c.scm.qilB0R",
> > O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
> >
> > Attempt to /usr/share happens because local directory override is ignored:
> >
> > $ ./pre-inst-env guile -c '(display (search-path %load-path "gnu/packages/re2c.scm")) (newline) (display %load-path) (newline)'
> > /usr/share/guile/site/3.0/gnu/packages/re2c.scm
> > (/usr/share/guile/3.0 \
> > /usr/share/guile/site/3.0 \
> > /usr/share/guile/site \
> > /usr/share/guile \
> > /home/slyfox/dev/git/guix \
> > /home/slyfox/dev/git/guix)

^ here's the checkout in the load path

Toggle quote (4 lines)
> >
> > It happens because ./guile ignores GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH
> > unconditionally.

The local directory isn't ignored, it's at the end (the effect is about the same though).

Toggle quote (5 lines)
> > The change keeps GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH for ./pre-inst-env.
> >
> > * gnu/packages/aux-files/guile-launcher.c (main): don't ignore
> > GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH in GUIX_UNINSTALLED=1 mode.

Could you do something like

#define GUIX_UNINSTALLED 1
#if GUIX_UNINSTALLED
new behaviour
#else
OLD BEHAVIOUR
#endif

and change "Makefile.am" to compile two variants of "guile",
one with "DGUIX_UNINSTALLED=1" which goes into libexec, and another
with "DGUIX_UNINSTALLED=0" named "$CHECKOUT/guile" which isn't installed
anywhere but will be added to PATH by "pre-inst-env", or something like that?

I've a bit of an aversion towards using $..._UNINSTALLED environment variables,
as it leads to difficult situations like ‘what should happen if I /gnu/store/.../bin/guix
is run with GUIX_UNINSTALLED set to 1’:

(a): Reset "GUILE_LOAD{,_COMPILED}_PATH" because we're running directly from the store
(b): Don't reset "GUILE_LOAD_{,_COMPILED}_PATH" because GUIX_UNINSTALLED is set to 1.

As a comparison, GUIX_UNINSTALLED, the preprocessor variable, is like a ‘lexical variable’,
and GUIX_UNINSTALLED, the environment variable, is like a
‘parameter object’/‘dynamically bound variable’ (see, e.g., 6.11.12 Parameters in the Guile
manual). I tend to prefer the former, except for dynamic things like LC_ALL, $[...]_PATH
(when used by "guile", "gcc" -- applications typically shouldn't depend on $GUILE_LOAD_PATH,
if they do, they need 'wrap-program' or the like’).

Also, "guile-launcher.c" is used by 'quiet-quile" in (guix self). It should probably be
verified that "guix pull" still works well.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYRq0ABccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7u7dAP9nyeKHaysuBDca+a/M++uXSwnB
KuxMRdGln5+HLg/dJgEArmz16fXyIH98bXEO/VAu3uc7l/Mk5c9cdYsIDx9XqAM=
=ipRd
-----END PGP SIGNATURE-----


S
S
Sergei Trofimovich wrote on 17 Aug 2021 10:28
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 48434@debbugs.gnu.org)
20210817092830.7a86d795@zn3
On Mon, 16 Aug 2021 20:52:48 +0200
Maxime Devos <maximedevos@telenet.be> wrote:

Toggle quote (15 lines)
> Sergei Trofimovich schreef op ma 16-08-2021 om 18:28 [+0100]:
> > On Sat, 15 May 2021 10:52:27 +0100
> > Sergei Trofimovich <slyfox@gentoo.org> wrote:
> >
> > > I observed the problem when tried to run 'guix refresh' from local git checkout:
> > >
> > > $ strace -f ./pre-inst-env guix refresh -u re2c |& fgrep re2c.scm
> > > ...
> > > [pid 3014757] openat(AT_FDCWD, "/usr/share/guile/site/3.0/gnu/packages/re2c.scm.qilB0R",
> > > O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
> > >
> > > Attempt to /usr/share happens because local directory override is ignored:

> The local directory isn't ignored, it's at the end (the effect is about the same though).

Reworded to: "because local directory override has too low priority".

Toggle quote (19 lines)
> > > The change keeps GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH for ./pre-inst-env.
> > >
> > > * gnu/packages/aux-files/guile-launcher.c (main): don't ignore
> > > GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH in GUIX_UNINSTALLED=1 mode.
>
> Could you do something like
>
> #define GUIX_UNINSTALLED 1
> #if GUIX_UNINSTALLED
> new behaviour
> #else
> OLD BEHAVIOUR
> #endif
>
> and change "Makefile.am" to compile two variants of "guile",
> one with "DGUIX_UNINSTALLED=1" which goes into libexec, and another
> with "DGUIX_UNINSTALLED=0" named "$CHECKOUT/guile" which isn't installed
> anywhere but will be added to PATH by "pre-inst-env", or something like that?

Attached v2 patch that should solve all the above.

Added two 'guile' flavours:
inplace/guile (to be used inplace)
store/guile (to be installed to libexec)
While at it moved 'guix-daemon' to 'inplace/' as well to make it clear that
tests use inplace variant sometimes. Installation location did not change.

Also moved scripts/guix to inplace/guix as ./pre-inst-env relies on it to
be injected to PATH.

Toggle quote (3 lines)
> Also, "guile-launcher.c" is used by 'quiet-quile" in (guix self). It should probably be
> verified that "guix pull" still works well.

It's a bit hard to test right now as guix-master is slightly broken due to
missing installed files when installed as a primary package manager, but at
least fetch part works fine:

$ guix pull
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Authenticating channel 'guix', commits 9edb3f6 to f7094f5 (29 new commits)...
Building from this channel:
Backtrace:
In ice-9/boot-9.scm:
222:29 19 (map1 (((guix store)) ((guix records)) ((guix #)) (#) …))
222:29 18 (map1 (((guix records)) ((guix profiles)) ((guix #)) # …))
222:29 17 (map1 (((guix profiles)) ((guix discovery)) ((guix …)) …))
222:29 16 (map1 (((guix discovery)) ((guix combinators)) ((# …)) …))
222:29 15 (map1 (((guix combinators)) ((guix channels)) ((# #)) …))
222:29 14 (map1 (((guix channels)) ((guix describe)) ((guix #)) …))
222:29 13 (map1 (((guix describe)) ((guix sets)) ((guix ui)) (#) …))
222:29 12 (map1 (((guix sets)) ((guix ui)) ((guix diagnostics)) …))
222:29 11 (map1 (((guix ui)) ((guix diagnostics)) ((guix #)) (#) …))
222:29 10 (map1 (((guix diagnostics)) ((guix modules)) ((# #)) # …))
222:29 9 (map1 (((guix modules)) ((guix packages)) ((guix #)) # …))
222:29 8 (map1 (((guix packages)) ((guix utils)) ((gnu # #)) # …))
222:29 7 (map1 (((guix utils)) ((gnu packages base)) ((gnu …)) …))
222:29 6 (map1 (((gnu packages base)) ((gnu packages bash)) (#) …))
222:29 5 (map1 (((gnu packages bash)) ((gnu packages hurd)) (#) …))
222:29 4 (map1 (((gnu packages hurd)) ((gnu system setuid)) (#) …))
222:17 3 (map1 (((gnu system setuid)) ((srfi srfi-1)) ((# #)) # …))
3329:6 2 (resolve-interface (gnu system setuid) #:select _ #:hide …)
1685:16 1 (raise-exception _ #:continuable? _)
1685:16 0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
no code for module (gnu system setuid)

Thanks!

--

Sergei
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQKTBAEBCgB9FiEE+g11JqJ4cL44QkmN7V5F4G8qwpMFAmEbcy5fFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZB
MEQ3NTI2QTI3ODcwQkUzODQyNDk4REVENUU0NUUwNkYyQUMyOTMACgkQ7V5F4G8q
wpNFdw//XKDejSC5UcZ0uGEqXcpWL8Cz+RjiXFHOqQBZR7grr4EV3cME6GSONBe9
jgKXhO44xJa2+uv5IRFGqWNqcwKThFZw4Is4cOfkNxKI2BL5/AMXJOmoYV5aARRf
jE/UxkI3DplzB69d5iWbUmRwzFUk0FB88hxchjxmfl0pvmUV1KEdBv75rwaGALlE
KbcVJWVhOeoVTDIYNLpLuIHjpE4xIYSOYEaeLBCzlUERYw0ddI3dj/PBGL1QOSlK
xoyRctXBzO/LglKJv9AaA++Lbx3+GdxrXTxijRfLPsJFfm/CDVr5Z/l742URZ8Mv
fLxKGuA5EflTGR37wf192+8kPNgdVBIes2aoQMxmbkBk39u1jWmUvflYSHVKCRvm
jde9ctTO/ZdxRFL34VPHXspCSSe7s84ZFz67Pj/BBwG6+1vud45XacHxDpOeCQRD
NFRofFF1FOhIm7mJEwxbfTu1mtCPcavhSehXhkha1EghychYJS/65P4THz0qZ9qh
DlxjNpBRa73tCuJ12jYpgGr5bU0QInhbM+YRt+cZ5sQQHjs0kMhay9y0WabM+VPy
Dn1cbxhxqXWNPmjpD2iQNukAeD3bmb/vwCXrw0OGDgus5vtN5yFo5FiJTjsEhWKg
PxjclmWVgFD49ww70doX570+0vI/ufnrraFP5Qzbancy2hQKbKw=
=Pz9u
-----END PGP SIGNATURE-----


S
S
Sergei Trofimovich wrote on 17 Aug 2021 11:35
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 48434@debbugs.gnu.org)
20210817103539.205800bd@zn3
On Tue, 17 Aug 2021 09:28:30 +0100
Sergei Trofimovich <slyich@gmail.com> wrote:

Toggle quote (88 lines)
> On Mon, 16 Aug 2021 20:52:48 +0200
> Maxime Devos <maximedevos@telenet.be> wrote:
>
> > Sergei Trofimovich schreef op ma 16-08-2021 om 18:28 [+0100]:
> > > On Sat, 15 May 2021 10:52:27 +0100
> > > Sergei Trofimovich <slyfox@gentoo.org> wrote:
> > >
> > > > I observed the problem when tried to run 'guix refresh' from local git checkout:
> > > >
> > > > $ strace -f ./pre-inst-env guix refresh -u re2c |& fgrep re2c.scm
> > > > ...
> > > > [pid 3014757] openat(AT_FDCWD, "/usr/share/guile/site/3.0/gnu/packages/re2c.scm.qilB0R",
> > > > O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
> > > >
> > > > Attempt to /usr/share happens because local directory override is ignored:
>
> > The local directory isn't ignored, it's at the end (the effect is about the same though).
>
> Reworded to: "because local directory override has too low priority".
>
> > > > The change keeps GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH for ./pre-inst-env.
> > > >
> > > > * gnu/packages/aux-files/guile-launcher.c (main): don't ignore
> > > > GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH in GUIX_UNINSTALLED=1 mode.
> >
> > Could you do something like
> >
> > #define GUIX_UNINSTALLED 1
> > #if GUIX_UNINSTALLED
> > new behaviour
> > #else
> > OLD BEHAVIOUR
> > #endif
> >
> > and change "Makefile.am" to compile two variants of "guile",
> > one with "DGUIX_UNINSTALLED=1" which goes into libexec, and another
> > with "DGUIX_UNINSTALLED=0" named "$CHECKOUT/guile" which isn't installed
> > anywhere but will be added to PATH by "pre-inst-env", or something like that?
>
> Attached v2 patch that should solve all the above.
>
> Added two 'guile' flavours:
> inplace/guile (to be used inplace)
> store/guile (to be installed to libexec)
> While at it moved 'guix-daemon' to 'inplace/' as well to make it clear that
> tests use inplace variant sometimes. Installation location did not change.
>
> Also moved scripts/guix to inplace/guix as ./pre-inst-env relies on it to
> be injected to PATH.
>
> > Also, "guile-launcher.c" is used by 'quiet-quile" in (guix self). It should probably be
> > verified that "guix pull" still works well.
>
> It's a bit hard to test right now as guix-master is slightly broken due to
> missing installed files when installed as a primary package manager, but at
> least fetch part works fine:
>
> $ guix pull
> Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> Authenticating channel 'guix', commits 9edb3f6 to f7094f5 (29 new commits)...
> Building from this channel:
> guix https://git.savannah.gnu.org/git/guix.git f7094f5
> Backtrace:
> In ice-9/boot-9.scm:
> 222:29 19 (map1 (((guix store)) ((guix records)) ((guix #)) (#) …))
> 222:29 18 (map1 (((guix records)) ((guix profiles)) ((guix #)) # …))
> 222:29 17 (map1 (((guix profiles)) ((guix discovery)) ((guix …)) …))
> 222:29 16 (map1 (((guix discovery)) ((guix combinators)) ((# …)) …))
> 222:29 15 (map1 (((guix combinators)) ((guix channels)) ((# #)) …))
> 222:29 14 (map1 (((guix channels)) ((guix describe)) ((guix #)) …))
> 222:29 13 (map1 (((guix describe)) ((guix sets)) ((guix ui)) (#) …))
> 222:29 12 (map1 (((guix sets)) ((guix ui)) ((guix diagnostics)) …))
> 222:29 11 (map1 (((guix ui)) ((guix diagnostics)) ((guix #)) (#) …))
> 222:29 10 (map1 (((guix diagnostics)) ((guix modules)) ((# #)) # …))
> 222:29 9 (map1 (((guix modules)) ((guix packages)) ((guix #)) # …))
> 222:29 8 (map1 (((guix packages)) ((guix utils)) ((gnu # #)) # …))
> 222:29 7 (map1 (((guix utils)) ((gnu packages base)) ((gnu …)) …))
> 222:29 6 (map1 (((gnu packages base)) ((gnu packages bash)) (#) …))
> 222:29 5 (map1 (((gnu packages bash)) ((gnu packages hurd)) (#) …))
> 222:29 4 (map1 (((gnu packages hurd)) ((gnu system setuid)) (#) …))
> 222:17 3 (map1 (((gnu system setuid)) ((srfi srfi-1)) ((# #)) # …))
> 3329:6 2 (resolve-interface (gnu system setuid) #:select _ #:hide …)
> 1685:16 1 (raise-exception _ #:continuable? _)
> 1685:16 0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> no code for module (gnu system setuid)

works successfully on a multi-user foreign distribution.

--

Sergei
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQKTBAEBCgB9FiEE+g11JqJ4cL44QkmN7V5F4G8qwpMFAmEbgutfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZB
MEQ3NTI2QTI3ODcwQkUzODQyNDk4REVENUU0NUUwNkYyQUMyOTMACgkQ7V5F4G8q
wpPKXw/+OcS0qx0cxflo0VmNqJ4kEUoPtEDLbrkrsZYOTEAaIqkv1Tjp+dZdRb3p
0b/Q+dE5jbKXfSgoMnfju8r1UFjInwwe0rtysH/4wm14dYgHuITSCS2QROmkXgyY
smFW52iRfxYdy7q7rsBnoSSaf3BVwB/5FMP8ytxFosqwb3vmaHX7VurjNNXam3zo
i7zXtz0VV00xcHxLIvF5uOJGqFwQITGridPtNlLOC7JfaOj7bsJwrFpbhmvMiRAd
+YSBVsWXo9Ou57qmbtyd4t5s8EPGt3mzcjXr0xbp2jdWwMXXvSBrQRIMBoMmnVJc
vLuWRsEUaXYJcU6j5yMXG5j0D7Q+Q1eP+K/1vDJj5Eh3IAtPWGJOnQ1DP5/sKnFQ
pf1KmotcmtmUcLn2LBNqUyrmUTvBx4mX3moc5DctNpwCcxV/U/I3Np2+L6TMAOgS
nd1Z+uqGnqngbhczfQ4MqoEKSgq/9K3V7SD636Jmq/EdptPIC8XKwLMaqJcbnjPw
SwjwwQgNJ9nZEkTGna+pSU0RrPYIsBslI1lvUShdcOPAGa8RwBI5ZbSXla+pT3FP
4hd6uO/ryCSUnzGn+riSeW93POkY1MchyNO8f5ahTClJ7FnKsdd8XAzL4/2fw7JV
Uz0mxtjVfLHAQOIx+0Q/nZ9haXxWPvhobJp/ZuTtRLD1P5Fd0Yc=
=6d4Q
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Aug 2021 12:24
(name . Sergei Trofimovich)(address . slyich@gmail.com)(address . 48434@debbugs.gnu.org)
1c0ddae642a3ffc341ae8d904c8fc2d5eecfef5f.camel@telenet.be
Sergei Trofimovich schreef op di 17-08-2021 om 09:28 [+0100]:
Toggle quote (10 lines)
> It's a bit hard to test right now as guix-master is slightly broken due to
> missing installed files when installed as a primary package manager, but at
> least fetch part works fine:
>
> $ guix pull
> Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> Authenticating channel 'guix', commits 9edb3f6 to f7094f5 (29 new commits)...
> Building from this channel:
> guix https://git.savannah.gnu.org/git/guix.git f7094f5

I meant something like "$ guix pull --url=. --commit=... --root=guix0"
or "$ ./pre-inst-env guix pull --url=. --commit=... --root=guix1" or
"$ ./pre-inst-env guix pull --root=guix2". Simply running "$
guix pull",
outside "./pre-inst-env", would simply test the (unpatched) guix you have
installed (with "make install" or "apt-get install guix" or "guix pull"),
and doesn't test the patched guix.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYRuOchccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tw8AQCokkS8Gg1Ix1CIl1Le1GSRfGHs
k6d7RXNLeoB11b8JtwEA9VIokkouqtdTpcn5QbrgsFnt1a8jTR85CUPX+1se/QU=
=5YcE
-----END PGP SIGNATURE-----


S
S
Sergei Trofimovich wrote on 17 Aug 2021 14:15
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 48434@debbugs.gnu.org)
20210817131551.68222eee@zn3
On Tue, 17 Aug 2021 12:24:50 +0200
Maxime Devos <maximedevos@telenet.be> wrote:

Toggle quote (19 lines)
> Sergei Trofimovich schreef op di 17-08-2021 om 09:28 [+0100]:
> > It's a bit hard to test right now as guix-master is slightly broken due to
> > missing installed files when installed as a primary package manager, but at
> > least fetch part works fine:
> >
> > $ guix pull
> > Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> > Authenticating channel 'guix', commits 9edb3f6 to f7094f5 (29 new commits)...
> > Building from this channel:
> > guix https://git.savannah.gnu.org/git/guix.git f7094f5
>
> I meant something like "$ guix pull --url=. --commit=... --root=guix0"
> or "$ ./pre-inst-env guix pull --url=. --commit=... --root=guix1" or
> "$ ./pre-inst-env guix pull --root=guix2". Simply running "$
> guix pull",
> outside "./pre-inst-env", would simply test the (unpatched) guix you have
> installed (with "make install" or "apt-get install guix" or "guix pull"),
> and doesn't test the patched guix.

Ah. I did install patched guix into the system (and that's how

I still don't quite understand if channel we pull from also should be patched.
Let's assume it should:

$ LANG=C ./pre-inst-env guix pull --url=. --commit=e9029ed5eae45ee8f53f055ee66f9bce353cac84 --root=guix0
guix pull: error: root=guix0: unrecognized option

I'm not sure what --root= does. Is it a user name? Or a profile name?

--

Sergei
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQKTBAEBCgB9FiEE+g11JqJ4cL44QkmN7V5F4G8qwpMFAmEbqHdfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZB
MEQ3NTI2QTI3ODcwQkUzODQyNDk4REVENUU0NUUwNkYyQUMyOTMACgkQ7V5F4G8q
wpNUOhAApkFGbFmIRphayF0JPO+gPl/p7a9ZxeDnaaviZ7SjFS98Nb3r6wKW2Fkj
ztMnAT8H9ZkFumNXVvCwqv8LGd4eLy1OdcYT0rR1iYJJxvVrlcEh3dN3/8rRY3qE
qCDFG7rjnP/QxcNRgRHw2HY8BR5X94Yet68Bvi/d59FZ5104tSvAc0aVUITIZVVh
sarjfTLSWhJOtZ83JfbCQ5wnfr2gA3OZi4+J8hQdOqERWXN7te538KYKAfglJy0A
5F/EvsSSu1i3jtqyvSAaF2EbEPaj1iJdqO1RyU43cSUVXzQTvouIk3FIiclvCpNw
waonZyKuer3lxBmrh2766tp9HEh4bL036Mu4wgYbXkB7jQWbEd2LoLorZsJHPgVm
IFGhQXjfHqkRIW9QlkwLOnY+4ymvSyTXnVdejkx13Y24uSNYs9OFJVl40UmPT7hi
FKsgzg5eypv73J/FM28boaYZov7Ck91tiu0EYvULhnUAQC+UjyRwN7SGSdpk9FoW
SA8KAeXAhNizmNpNxQAF92umff25PszqJL2lWfeIybvHSl/aQlxQBN8F9nbb73zE
Sj73W4Wka+Sxy6iC8SBDXXSfAYeKKJ/jJ3xDHH/hWIY/xstMLE74P1ygMlUiwhXB
Z30effVGFMNqKM+j32ij/+d6MX7nxf6pukqt6Fn6nxiMP0Z+Bhw=
=hbyi
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Aug 2021 15:59
(name . Sergei Trofimovich)(address . slyich@gmail.com)(address . 48434@debbugs.gnu.org)
83e6e2b24540bdcbd584bd9418b59c952a6baa26.camel@telenet.be
Toggle quote (11 lines)
> Ah. I did install patched guix into the system (and that's how
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50090).
>
> I still don't quite understand if channel we pull from also should be patched.
> Let's assume it should:
>
> $ LANG=C ./pre-inst-env guix pull --url=. --commit=e9029ed5eae45ee8f53f055ee66f9bce353cac84 --root=guix0
> guix pull: error: root=guix0: unrecognized option
>
> I'm not sure what --root= does. Is it a user name? Or a profile name?

I forgot the exact option, it should have been "--profile=guix0".
From (guix)Submitting patches:

15. Make sure your changes do not break Guix and simulate a ‘guix
pull’ with:
guix pull --url=/path/to/your/checkout --profile=/tmp/guix.master

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYRvAqRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kGLAQCEQrHEsSAM4u5KChmrKb4lKls5
n5U+T78LR3WQofS92AEAsTabHaYLebAjw7emKIkOn6J/XNbjhCCgZq5p8rGZewI=
=Wp4T
-----END PGP SIGNATURE-----


S
S
Sergei Trofimovich wrote on 17 Aug 2021 19:42
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 48434@debbugs.gnu.org)
20210817184205.670d2121@zn3
On Tue, 17 Aug 2021 15:59:05 +0200
Maxime Devos <maximedevos@telenet.be> wrote:

Toggle quote (19 lines)
> > Ah. I did install patched guix into the system (and that's how
> > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50090).
> >
> > I still don't quite understand if channel we pull from also should be patched.
> > Let's assume it should:
> >
> > $ LANG=C ./pre-inst-env guix pull --url=. --commit=e9029ed5eae45ee8f53f055ee66f9bce353cac84 --root=guix0
> > guix pull: error: root=guix0: unrecognized option
> >
> > I'm not sure what --root= does. Is it a user name? Or a profile name?
>
> I forgot the exact option, it should have been "--profile=guix0".
> From (guix)Submitting patches:
>
> 15. Make sure your changes do not break Guix and simulate a ‘guix
> pull’ with:
> guix pull --url=/path/to/your/checkout --profile=/tmp/guix.master
>

Aha, thank you! That works:

$ guix pull --commit=... --url=${PWD} --profile=/tmp/g1.master --disable-authentication
$ ./pre-inst-env guix pull --commit=... --url=${PWD} --profile=/tmp/g2.master --disable-authentication

--

Sergei
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQKTBAEBCgB9FiEE+g11JqJ4cL44QkmN7V5F4G8qwpMFAmEb9O5fFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZB
MEQ3NTI2QTI3ODcwQkUzODQyNDk4REVENUU0NUUwNkYyQUMyOTMACgkQ7V5F4G8q
wpM0JRAAvwwekozFPyqUfMKEouVI6Q0LV+wyiGlEdPJBV53fsADUyUs+b0R68Fxf
dRxLt0Fh7Hf8NWBeBAzmLNwouv3hZYdEXydR0RrZ+lwhGTh9hJN3oX3e6O/WhifA
Eh3vz9Y17DvkBQ3sDnZbrOEni9EOay9RTml7PBbrT2C1+hOFNIMiPu5HismEP1Mt
WhQhuHagYxjBkHyekF/dDyu5PLmEicYLSScPFyz8pExoMIQjXh3z63CsPcfV3uhL
o3n4ged/Vwi1rUOU9oeeejzTB4WsSgxV5ynsPheAWL9CtIdA4BR+dpZmRgvNr63S
OS9pvQ5cFVbPkgxA8wYCW8hyqJGn1PfoKKVbxZkvZ3FuqF2ioAywpSKToQarLbbu
tjekRSVo+BuL/JAQ0Ikq1ShPaFguBKKKlE4+JGM/KI1UUUWmh0v84iM45nIS7qSi
krSOUkOWMeF3xSFal0wiCeEe7AygJ6xmo6OA3xXTakZOemkPy1nrFPD80P5rK9AO
pkz2+y+aeN2omLoTIFQq5UP702U47vX+pVsW2v4Bl3csO0Hi3q0huc1L14uWONFA
AJJRv6SNCx9f4ciNRvt4E67rFSc5V7X4rGcjdw2KmqMIseguELB86J7E415yqVMZ
h+i1m9fKvoHAzRlMQcO+Yhkjvq18Am0hcwqvRom0M5qXe6RuEhc=
=378X
-----END PGP SIGNATURE-----


?