store: Add 'references/cached'.

* guix/store.scm (references/cached): New procedure.
This commit is contained in:
Ludovic Courtès 2020-03-29 01:21:32 +01:00
parent 25af35fa32
commit c70cf1a724
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -135,6 +135,7 @@
built-in-builders
references
references/cached
references/substitutes
references*
query-path-info*
@ -1393,6 +1394,13 @@ error if there is no such root."
;; would use a cache associated with the daemon connection instead (XXX).
(make-hash-table 100))
(define (references/cached store item)
"Like 'references', but cache results."
(or (hash-ref %reference-cache item)
(let ((references (references store item)))
(hash-set! %reference-cache item references)
references)))
(define (references/substitutes store items)
"Return the list of list of references of ITEMS; the result has the same
length as ITEMS. Query substitute information for any item missing from the