summaryrefslogtreecommitdiff
path: root/guix/store.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-07-02 00:37:49 +0200
committerLudovic Courtès <ludo@gnu.org>2017-07-02 00:41:12 +0200
commitb2fde4800d39863d9260509ac0b174b459d42840 (patch)
treed91b70dab106a024b0150d3ef918bb3fdaa2ef95 /guix/store.scm
parent2633bd324b4333168518511030f227ee9664e65f (diff)
downloadgnu-guix-b2fde4800d39863d9260509ac0b174b459d42840.tar
gnu-guix-b2fde4800d39863d9260509ac0b174b459d42840.tar.gz
store: 'references/substitutes' really caches its result.
Until now the cache was always empty because 'for-each' was passed ITEMS as its second argument, and ITEMS was the empty list at that point. * guix/store.scm (references/substitutes): Add 'requested' variable. Use it as second argument of 'for-each' in base case.
Diffstat (limited to 'guix/store.scm')
-rw-r--r--guix/store.scm5
1 files changed, 3 insertions, 2 deletions
diff --git a/guix/store.scm b/guix/store.scm
index afd26d3fec..a207d478e6 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1009,7 +1009,8 @@ error if there is no such root."
length as ITEMS. Query substitute information for any item missing from the
store at once. Raise a '&nix-protocol-error' exception if reference
information for one of ITEMS is missing."
- (let* ((local-refs (map (lambda (item)
+ (let* ((requested items)
+ (local-refs (map (lambda (item)
(or (hash-ref %reference-cache item)
(guard (c ((nix-protocol-error? c) #f))
(references store item))))
@@ -1040,7 +1041,7 @@ the list of references")
(()
(let ((result (reverse result)))
(for-each (cut hash-set! %reference-cache <> <>)
- items result)
+ requested result)
result))
((item items ...)
(match local-refs