diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-03-29 01:21:32 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-03-29 15:32:17 +0200 |
commit | c70cf1a724fb15e108dc842413db15a0b9f4bc10 (patch) | |
tree | 2739f9db7b01b6c0ac8ab7cf773f557703fdf879 | |
parent | 25af35fa32bf6c991510406a330d4a42bd5beba8 (diff) | |
download | guix-c70cf1a724fb15e108dc842413db15a0b9f4bc10.tar.gz guix-c70cf1a724fb15e108dc842413db15a0b9f4bc10.zip |
store: Add 'references/cached'.
* guix/store.scm (references/cached): New procedure.
-rw-r--r-- | guix/store.scm | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/guix/store.scm b/guix/store.scm index b3641ef95d..ca8c0e5ef8 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -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 |