summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/store.scm28
1 files changed, 18 insertions, 10 deletions
diff --git a/guix/store.scm b/guix/store.scm
index 56aa38ba8d..a220b6e6f9 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -752,18 +752,24 @@ the list of references")
(status 1)))))
;; Intersperse SUBSTS and LOCAL-REFS.
- (let loop ((local-refs local-refs)
- (remote-refs (map substitutable-references substs))
+ (let loop ((items items)
+ (local-refs local-refs)
(result '()))
- (match local-refs
+ (match items
(()
(reverse result))
- ((#f tail ...)
- (match remote-refs
- ((remote rest ...)
- (loop tail rest (cons remote result)))))
- ((head tail ...)
- (loop tail remote-refs (cons head result)))))))
+ ((item items ...)
+ (match local-refs
+ ((#f tail ...)
+ (loop items tail
+ (cons (any (lambda (subst)
+ (and (string=? (substitutable-path subst) item)
+ (substitutable-references subst)))
+ substs)
+ result)))
+ ((head tail ...)
+ (loop items tail
+ (cons head result)))))))))
(define* (fold-path store proc seed path
#:optional (relatives (cut references store <>)))
@@ -852,7 +858,9 @@ topological order."
(operation (query-substitutable-path-infos (store-path-list paths))
"Return information about the subset of PATHS that is
substitutable. For each substitutable path, a `substitutable?' object is
-returned."
+returned; thus, the resulting list can be shorter than PATHS. Furthermore,
+that there is no guarantee that the order of the resulting list matches the
+order of PATHS."
substitutable-path-list))
(define-operation (optimize-store)