guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: environment: Fix '--emulate-fhs' option overridin


From: guix-commits
Subject: branch master updated: environment: Fix '--emulate-fhs' option overriding $PATH.
Date: Sun, 15 Jan 2023 17:57:10 -0500

This is an automated email from the git hooks/post-receive script.

podiki pushed a commit to branch master
in repository guix.

The following commit(s) were added to refs/heads/master by this push:
     new 3bfbfa2946 environment: Fix '--emulate-fhs' option overriding $PATH.
3bfbfa2946 is described below

commit 3bfbfa2946aebb7f68c8027ae80f272f6915c94f
Author: John Kehayias <john.kehayias@protonmail.com>
AuthorDate: Thu Jan 5 16:06:19 2023 -0500

    environment: Fix '--emulate-fhs' option overriding $PATH.
    
    Fixes <https://issues.guix.gnu.org/60566> where even if 
"--preserve='^PATH$'"
    was passed to 'guix shell' it would be replaced by just the FHS directories
    when '--emulate-fhs' was also set.
    
    * gnu/scripts/environment.scm (launch-environment): Add the FHS directories 
to
    $PATH rather than overriding $PATH completely.
    * tests/guix-environment-container.sh: Test that FHS directories are in 
$PATH
    in the container and that $PATH can be preserved.
    
    Co-authored-by: Ludovic Courtès <ludo@gnu.org>
---
 guix/scripts/environment.scm        | 11 +++++++----
 tests/guix-environment-container.sh | 13 ++++++++++++-
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index c7fd8fd340..46435ae48e 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -1,8 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2018 David Thompson <davet@gnu.org>
-;;; Copyright © 2015-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Mike Gerwitz <mtg@gnu.org>
-;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -475,10 +475,13 @@ cache."
      (catch 'system-error
        (lambda ()
          (when emulate-fhs?
-           ;; When running in a container with EMULATE-FHS?, override $PATH
+           ;; When running in a container with EMULATE-FHS?, augment $PATH
            ;; (optional, but to better match FHS expectations), and generate
            ;; /etc/ld.so.cache.
-           (setenv "PATH" "/bin:/usr/bin:/sbin:/usr/sbin")
+           (setenv "PATH" (string-append "/bin:/usr/bin:/sbin:/usr/sbin"
+                                         (if (getenv "PATH")
+                                             (string-append ":" (getenv 
"PATH"))
+                                             "")))
            (invoke "ldconfig" "-X"))
          (apply execlp program program args))
        (lambda _
diff --git a/tests/guix-environment-container.sh 
b/tests/guix-environment-container.sh
index 0306fc1744..0475405a89 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -1,6 +1,7 @@
 # GNU Guix --- Functional package management for GNU
 # Copyright © 2015 David Thompson <davet@gnu.org>
-# Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+# Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
+# Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
 #
 # This file is part of GNU Guix.
 #
@@ -242,6 +243,16 @@ guix shell -CF --bootstrap guile-bootstrap glibc \
                            0
                            1))'
 
+# Test that $PATH inside the container includes the FHS directories.
+guix shell -CF coreutils -- env | grep ^PATH=/bin:/usr/bin:/sbin:/usr/sbin.*
+
+# Make sure '--preserve' is honored for $PATH, which the '--emulate-fhs'
+# option modifies.  We can't (easily) check the whole $PATH as it will differ
+# inside and outside the container, so just check our test $PATH is still
+# present.  See <https://issues.guix.gnu.org/60566>.
+PATH=/foo $(type -P guix) shell -CF -E ^PATH$ coreutils \
+     -- env | grep ^PATH=.*:/foo
+
 # '--symlink' works.
 echo "TESTING SYMLINK IN CONTAINER"
 guix shell --bootstrap guile-bootstrap --container \



reply via email to

[Prev in Thread] Current Thread [Next in Thread]