unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#43408] [PATCH] environment: '--link-profile' uses ~/.guix-profile for environment variables.
@ 2020-09-14 20:53 Ludovic Courtès
  2020-09-21 21:38 ` bug#43408: " Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Ludovic Courtès @ 2020-09-14 20:53 UTC (permalink / raw)
  To: 43408; +Cc: Ludovic Courtès

Before this patch, we had:

  $ guix environment -CP --ad-hoc coreutils
  [env]$ echo $PATH
  /gnu/store/…-profile/bin
  [env]$ echo $GUIX_ENVIRONMENT
  /gnu/store/…-profile

After this patch:

  $ guix environment -CP --ad-hoc coreutils
  [env]$ echo $PATH
  /home/ludo/.guix-profile/bin
  [env]$ echo $GUIX_ENVIRONMENT
  /home/ludo/.guix-profile

* guix/scripts/environment.scm (launch-environment/container): When
LINK-PROFILE? is true, pass ~/.guix-profile as the second argument to
'launch-environment'.
* tests/guix-environment-container.sh: Adjust test accordingly.
* doc/guix.texi (Invoking guix environment): Update accordingly.
---
 doc/guix.texi                       |  5 +++--
 guix/scripts/environment.scm        |  6 +++++-
 tests/guix-environment-container.sh | 10 +++++++---
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 5e4bfd8e85..e4650b2311 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5420,8 +5420,9 @@ device.
 @item --link-profile
 @itemx -P
 For containers, link the environment profile to @file{~/.guix-profile}
-within the container.  This is equivalent to running the command
-@samp{ln -s $GUIX_ENVIRONMENT ~/.guix-profile} within the container.
+within the container and set @code{GUIX_ENVIRONMENT} to that.
+This is equivalent to making @file{~/.guix-profile} a symlink to the
+actual profile within the container.
 Linking will fail and abort the environment if the directory already
 exists, which will certainly be the case if @command{guix environment}
 was invoked in the user's home directory.
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index ad50281eb2..e2e481dd02 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -564,7 +564,11 @@ WHILE-LIST."
             (primitive-exit/status
              ;; A container's environment is already purified, so no need to
              ;; request it be purified again.
-             (launch-environment command profile manifest #:pure? #f)))
+             (launch-environment command
+                                 (if link-profile?
+                                     (string-append home-dir "/.guix-profile")
+                                     profile)
+                                 manifest #:pure? #f)))
           #:guest-uid uid
           #:guest-gid gid
           #:namespaces (if network?
diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh
index 45264d4978..040f32cce9 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -127,11 +127,15 @@ grep -e "$NIX_STORE_DIR/.*-bash" $tmpdir/mounts # bootstrap bash
 
 rm $tmpdir/mounts
 
-# Make sure 'GUIX_ENVIRONMENT' is linked to '~/.guix-profile' when requested
+# Make sure 'GUIX_ENVIRONMENT' is set to '~/.guix-profile' when requested
 # within a container.
 (
-  linktest='(exit (string=? (getenv "GUIX_ENVIRONMENT")
-(readlink (string-append (getenv "HOME") "/.guix-profile"))))'
+  linktest='
+(exit (and (string=? (getenv "GUIX_ENVIRONMENT")
+                     (string-append (getenv "HOME") "/.guix-profile"))
+           (string-prefix? "'"$NIX_STORE_DIR"'"
+                           (readlink (string-append (getenv "HOME")
+                                                    "/.guix-profile")))))'
 
   cd "$tmpdir" \
      && guix environment --bootstrap --container --link-profile \
-- 
2.28.0





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

* bug#43408: [PATCH] environment: '--link-profile' uses ~/.guix-profile for environment variables.
  2020-09-14 20:53 [bug#43408] [PATCH] environment: '--link-profile' uses ~/.guix-profile for environment variables Ludovic Courtès
@ 2020-09-21 21:38 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2020-09-21 21:38 UTC (permalink / raw)
  To: 43408-done

Ludovic Courtès <ludo@gnu.org> skribis:

> Before this patch, we had:
>
>   $ guix environment -CP --ad-hoc coreutils
>   [env]$ echo $PATH
>   /gnu/store/…-profile/bin
>   [env]$ echo $GUIX_ENVIRONMENT
>   /gnu/store/…-profile
>
> After this patch:
>
>   $ guix environment -CP --ad-hoc coreutils
>   [env]$ echo $PATH
>   /home/ludo/.guix-profile/bin
>   [env]$ echo $GUIX_ENVIRONMENT
>   /home/ludo/.guix-profile
>
> * guix/scripts/environment.scm (launch-environment/container): When
> LINK-PROFILE? is true, pass ~/.guix-profile as the second argument to
> 'launch-environment'.
> * tests/guix-environment-container.sh: Adjust test accordingly.
> * doc/guix.texi (Invoking guix environment): Update accordingly.

Pushed as 9b65281de51bcb56714509524f5ae0731c9b96d0.

Ludo’.




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

end of thread, other threads:[~2020-09-21 21:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-14 20:53 [bug#43408] [PATCH] environment: '--link-profile' uses ~/.guix-profile for environment variables Ludovic Courtès
2020-09-21 21:38 ` bug#43408: " Ludovic Courtès

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).