guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/05: pull: Preserve channel ordering when using '--commit', '--url', e


From: guix-commits
Subject: 01/05: pull: Preserve channel ordering when using '--commit', '--url', etc.
Date: Thu, 15 Jun 2023 18:18:00 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit a3beb8d741e88f30765f4e3bc525c3433bf49498
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Thu Jun 15 10:34:31 2023 +0200

    pull: Preserve channel ordering when using '--commit', '--url', etc.
    
    Previously using '--url', '--commit', or '--branch' would move the
    'guix' channel to the front.  This is okay in itself but it gratuitously
    leads to a different cache key in 'cached-channel-instance'--IOW, 'guix
    time-machine --commit=X' where X is already in cache would gratuitously
    recompute the channel derivations.
    
    * guix/scripts/pull.scm (channel-list): Use 'map' instead of 'find' +
    'remove' + 'cons'.
---
 guix/scripts/pull.scm | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index cd2e470289..ecd264d3fa 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -769,22 +769,21 @@ Use '~/.config/guix/channels.scm' instead."))
         (url (or (assoc-ref opts 'repository-url)
                  (environment-variable))))
     (if (or ref url)
-        (match (find guix-channel? channels)
-          ((? channel? guix)
-           ;; Apply '--url', '--commit', and '--branch' to the 'guix' channel.
-           (let ((url (or url (channel-url guix))))
-             (cons (match ref
-                     (('commit . commit)
-                      (channel (inherit guix)
-                               (url url) (commit commit) (branch #f)))
-                     (('branch . branch)
-                      (channel (inherit guix)
-                               (url url) (commit #f) (branch branch)))
-                     (#f
-                      (channel (inherit guix) (url url))))
-                   (remove guix-channel? channels))))
-          (#f                           ;no 'guix' channel, failure will ensue
-           channels))
+        ;; Apply '--url', '--commit', and '--branch' to the 'guix' channel.
+        (map (lambda (c)
+               (if (guix-channel? c)
+                   (let ((url (or url (channel-url c))))
+                     (match ref
+                       (('commit . commit)
+                        (channel (inherit c)
+                                 (url url) (commit commit) (branch #f)))
+                       (('branch . branch)
+                        (channel (inherit c)
+                                 (url url) (commit #f) (branch branch)))
+                       (#f
+                        (channel (inherit c) (url url)))))
+                   c))
+             channels)
         channels)))
 
 (define (validate-cache-directory-ownership)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]