me
/
guix
Archived
1
0
Fork 0

channels: Use 'fold2'.

* guix/channels.scm (latest-channel-instances): Use 'fold2' instead of
'fold'.
master
Ludovic Courtès 2019-01-20 18:45:40 +01:00
parent ab6025b52c
commit f58f676b12
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 36 additions and 36 deletions

View File

@ -26,6 +26,7 @@
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix profiles) #:use-module (guix profiles)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix combinators)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix i18n) #:use-module (guix i18n)
#:use-module ((guix utils) #:use-module ((guix utils)
@ -162,13 +163,13 @@ of previously processed channels."
(or (channel-commit b) (or (channel-commit b)
(not (or (channel-commit a) (not (or (channel-commit a)
(channel-commit b)))))))) (channel-commit b))))))))
;; Accumulate a list of instances. A list of processed channels is also ;; Accumulate a list of instances. A list of processed channels is also
;; accumulated to decide on duplicate channel specifications. ;; accumulated to decide on duplicate channel specifications.
(match (fold (lambda (channel acc) (define-values (resulting-channels instances)
(match acc (fold2 (lambda (channel previous-channels instances)
((#:channels previous-channels #:instances instances)
(if (ignore? channel previous-channels) (if (ignore? channel previous-channels)
acc (values previous-channels instances)
(begin (begin
(format (current-error-port) (format (current-error-port)
(G_ "Updating channel '~a' from Git repository at '~a'...~%") (G_ "Updating channel '~a' from Git repository at '~a'...~%")
@ -184,22 +185,21 @@ of previously processed channels."
store store
(channel-instance-dependencies instance) (channel-instance-dependencies instance)
previous-channels))) previous-channels)))
`(#:channels (values (append (cons channel new-channels)
,(append (cons channel new-channels)
previous-channels) previous-channels)
#:instances (append (cons instance new-instances)
,(append (cons instance new-instances) instances))))))))
instances)))))))))) previous-channels
`(#:channels ,previous-channels #:instances ()) '() ;instances
channels) channels))
((#:channels channels #:instances instances)
(let ((instance-name (compose channel-name channel-instance-channel))) (let ((instance-name (compose channel-name channel-instance-channel)))
;; Remove all earlier channel specifications if they are followed by a ;; Remove all earlier channel specifications if they are followed by a
;; more specific one. ;; more specific one.
(values (delete-duplicates instances (values (delete-duplicates instances
(lambda (a b) (lambda (a b)
(eq? (instance-name a) (instance-name b)))) (eq? (instance-name a) (instance-name b))))
channels))))) resulting-channels)))
(define* (checkout->channel-instance checkout (define* (checkout->channel-instance checkout
#:key commit #:key commit