summaryrefslogtreecommitdiff
path: root/guix/scripts
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-07-13 16:50:27 +0200
committerLudovic Courtès <ludo@gnu.org>2023-07-13 17:20:02 +0200
commit9c513303156b418567b9d2cde9f8df66190051ac (patch)
tree7bfc0a7d64153e2ea18b653f3e94b556c8b608c3 /guix/scripts
parentae92d98b9375e1d753bd9ab495ed5c7dcd3f1af5 (diff)
shell: Really take system into account in the cache key.
Fixes <https://issues.guix.gnu.org/63230>. Previously, when running "guix shell -s X ...", OPTS would contain something like '((system . "X") ... (system . "DEFAULT")). Thus, since 'profile-cached-gc-root' would iterate over it in this order, "DEFAULT" would be passed to 'profile-file-cache-key' and 'profile-spec-cache-key' instead of "X". * guix/scripts/shell.scm (profile-cached-gc-root): Reverse OPTS before entering 'loop'.
Diffstat (limited to 'guix/scripts')
-rw-r--r--guix/scripts/shell.scm4
1 files changed, 3 insertions, 1 deletions
diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm
index 1b42cc2af0..d67152cef7 100644
--- a/guix/scripts/shell.scm
+++ b/guix/scripts/shell.scm
@@ -374,7 +374,9 @@ return #f and #f."
(define (key->file key)
(string-append (%profile-cache-directory) "/" key))
- (let loop ((opts opts)
+ ;; A given key such as 'system might appear more than once in OPTS, so
+ ;; process it backwards so the last occurrence "wins".
+ (let loop ((opts (reverse opts))
(system (%current-system))
(file #f)
(specs '()))