diff options
author | Ludovic Courtès <ludo@gnu.org> | 2023-07-13 16:50:27 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-07-13 17:20:02 +0200 |
commit | 9c513303156b418567b9d2cde9f8df66190051ac (patch) | |
tree | 7bfc0a7d64153e2ea18b653f3e94b556c8b608c3 | |
parent | ae92d98b9375e1d753bd9ab495ed5c7dcd3f1af5 (diff) | |
download | guix-9c513303156b418567b9d2cde9f8df66190051ac.tar.gz |
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'.
-rw-r--r-- | guix/scripts/shell.scm | 4 |
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 '())) |