[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#46776] [PATCH] inferior: Extend cached-channel-instance scope.
From: |
Mathieu Othacehe |
Subject: |
[bug#46776] [PATCH] inferior: Extend cached-channel-instance scope. |
Date: |
Thu, 25 Feb 2021 18:20:48 +0100 |
* guix/inferior.scm (cached-channel-instance): Turn channels argument into
channels-or-instances. Adapt the rest of the procedure.
---
guix/inferior.scm | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/guix/inferior.scm b/guix/inferior.scm
index 0990696e6c..06a187b879 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -709,20 +709,30 @@ prefix, resolve it; and if 'commit' is unset, fetch
CHANNEL's branch tip."
commit))))
(define* (cached-channel-instance store
- channels
+ channels-or-instances
#:key
(authenticate? #t)
(cache-directory (%inferior-cache-directory))
(ttl (* 3600 24 30)))
- "Return a directory containing a guix filetree defined by CHANNELS, a list
of channels.
-The directory is a subdirectory of CACHE-DIRECTORY, where entries can be
reclaimed after TTL seconds.
-This procedure opens a new connection to the build daemon. AUTHENTICATE?
-determines whether CHANNELS are authenticated."
+ "Return a directory containing a guix filetree defined by
+CHANNELS-OR-INSTANCES, a list of channels or channel instances. The directory
+is a subdirectory of CACHE-DIRECTORY, where entries can be reclaimed after TTL
+seconds. This procedure opens a new connection to the build daemon.
+AUTHENTICATE? determines whether CHANNELS are authenticated."
+ ;; Determine if we are dealing with channels or channel instances.
+ (define channels?
+ (match (pk channels-or-instances)
+ (((? channel? c) rest ...)
+ #t)
+ (else #f)))
+
(define commits
;; Since computing the instances of CHANNELS is I/O-intensive, use a
;; cheaper way to get the commit list of CHANNELS. This limits overhead
;; to the minimum in case of a cache hit.
- (map channel-full-commit channels))
+ (if channels?
+ (map channel-full-commit channels-or-instances)
+ (map channel-instance-commit channels-or-instances)))
(define key
(bytevector->base32-string
@@ -756,9 +766,12 @@ determines whether CHANNELS are authenticated."
cached
(run-with-store store
(mlet* %store-monad ((instances
- -> (latest-channel-instances store channels
- #:authenticate?
- authenticate?))
+ -> (if channels?
+ (latest-channel-instances
+ store channels-or-instances
+ #:authenticate?
+ authenticate?)
+ channels-or-instances))
(profile
(channel-instances->derivation instances)))
(mbegin %store-monad
--
2.30.1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [bug#46776] [PATCH] inferior: Extend cached-channel-instance scope.,
Mathieu Othacehe <=