[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#48434] [PATCH] guile: allow pre-inst-env inject local paths
From: |
Sergei Trofimovich |
Subject: |
[bug#48434] [PATCH] guile: allow pre-inst-env inject local paths |
Date: |
Mon, 16 Aug 2021 18:28:31 +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:
>
> $ ./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
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths,
Sergei Trofimovich <=
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths, Maxime Devos, 2021/08/16
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths, Sergei Trofimovich, 2021/08/17
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths, Sergei Trofimovich, 2021/08/17
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths, Maxime Devos, 2021/08/17
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths, Sergei Trofimovich, 2021/08/17
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths, Maxime Devos, 2021/08/17
- [bug#48434] [PATCH] guile: allow pre-inst-env inject local paths, Sergei Trofimovich, 2021/08/17