summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-03-02 11:58:51 +0100
committerLudovic Courtès <ludo@gnu.org>2022-03-02 19:26:15 +0100
commitee6275c9744f8649bccc8cfa7c52d100044d7570 (patch)
tree2a05adecfe550b4012c3eedb51971b35a52b59d3
parent209a3274f8702acd32fa2a489667048ca4ad304b (diff)
downloadguix-ee6275c9744f8649bccc8cfa7c52d100044d7570.tar.gz
shell: Disable caching when '-p' is passed.
Fixes <https://issues.guix.gnu.org/53658>.
Reported by Guillaume Le Vaillant <glv@posteo.net>.

Previously we would wrongfully cache things, by adding a
new (profile . _) pair to the option alist, when the user runs:

  guix shell -p /path/to/profile -q

* guix/scripts/shell.scm (profile-cached-gc-root): Add ('profile . _) case.
-rw-r--r--guix/scripts/shell.scm4
1 files changed, 4 insertions, 0 deletions
diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm
index a92932cbc9..1eab05d737 100644
--- a/guix/scripts/shell.scm
+++ b/guix/scripts/shell.scm
@@ -372,6 +372,10 @@ return #f and #f."
        ;; least depending on external state (with-source, with-commit, etc.),
        ;; so do not cache anything when they're used.
        (values #f #f))
+      ((('profile . _) . _)
+       ;; If the user already specified a profile, there's nothing more to
+       ;; cache.
+       (values #f #f))
       ((('system . system) . rest)
        (loop rest system file specs))
       ((_ . rest) (loop rest system file specs)))))