guix-commits
[Top][All Lists]
Advanced

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

01/09: upstream: Sort '%updaters' alphabetically.


From: guix-commits
Subject: 01/09: upstream: Sort '%updaters' alphabetically.
Date: Tue, 19 Jul 2022 12:58:07 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit e87c6fb95a2898df3eb5b557407a4504977182da
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Mon Jul 18 13:16:04 2022 +0200

    upstream: Sort '%updaters' alphabetically.
    
    Previously the output of 'guix refresh --list-updaters' would be
    non-deterministic, and likewise the order in which updaters are tried
    would be non-deterministic.
    
    Reported by zimoun <zimon.toutoune@gmail.com>.
    
    * guix/upstream.scm (%updaters): Add call to 'sort'.
---
 guix/upstream.scm | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/guix/upstream.scm b/guix/upstream.scm
index 9b49d1641f..cbfd1aa609 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -251,13 +251,17 @@ correspond to the same version."
                      #:warn warn-about-load-error)))
 
 (define %updaters
-  ;; The list of publically-known updaters.
-  (delay (fold-module-public-variables (lambda (obj result)
-                                         (if (upstream-updater? obj)
-                                             (cons obj result)
-                                             result))
-                                       '()
-                                       (importer-modules))))
+  ;; The list of publically-known updaters, alphabetically sorted.
+  (delay
+    (sort (fold-module-public-variables (lambda (obj result)
+                                          (if (upstream-updater? obj)
+                                              (cons obj result)
+                                              result))
+                                        '()
+                                        (importer-modules))
+          (lambda (updater1 updater2)
+            (string<? (symbol->string (upstream-updater-name updater1))
+                      (symbol->string (upstream-updater-name updater2)))))))
 
 ;; Tests need to mock this variable so mark it as "non-declarative".
 (set! %updaters %updaters)



reply via email to

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