GNU bug report logs -
#46776
[PATCH] inferior: Extend cached-channel-instance scope.
Previous Next
Reported by: Mathieu Othacehe <othacehe <at> gnu.org>
Date: Thu, 25 Feb 2021 17:22:01 UTC
Severity: normal
Tags: patch
Done: Mathieu Othacehe <othacehe <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#46776: [PATCH] inferior: Extend cached-channel-instance scope.
which was filed against the guix-patches package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 46776 <at> debbugs.gnu.org.
--
46776: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=46776
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
Hello,
> This would only accept homogeneous lists, which is kinda weird.
>
> Could we instead have a separate procedure taking channel instances, and
> arrange to factorize common code in a third procedure?
I managed to rewrite Cuirass evaluation without modifying the inferior
API. Closing this one.
Thanks for having a look,
Mathieu
[Message part 3 (message/rfc822, inline)]
* 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
This bug report was last modified 4 years and 53 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.