From: Mathieu Othacehe <othacehe@gnu.org>
To: 46776@debbugs.gnu.org
Cc: Mathieu Othacehe <othacehe@gnu.org>
Subject: [bug#46776] [PATCH] inferior: Extend cached-channel-instance scope.
Date: Thu, 25 Feb 2021 18:20:48 +0100 [thread overview]
Message-ID: <20210225172048.22398-1-othacehe@gnu.org> (raw)
* 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
next reply other threads:[~2021-02-25 17:22 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-25 17:20 Mathieu Othacehe [this message]
2021-03-01 14:47 ` [bug#46776] [PATCH] inferior: Extend cached-channel-instance scope Ludovic Courtès
2021-03-26 9:54 ` bug#46776: " Mathieu Othacehe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210225172048.22398-1-othacehe@gnu.org \
--to=othacehe@gnu.org \
--cc=46776@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.