Hi,

On Thu, 30 Jun 2022 at 10:58, Hartmut Goebel <h.goe...@crazy-compilers.com> 
wrote:

> BTW 2: Which updater is used for each package is non-deterministic.

>From (guix discovery), ’all-modules’ is not deterministic because it
depends on how the filesystem tree is walked.

Therefore, indeed ’importer-modules’ from (guix upstream) is not sorted
and the order is non-deterministic.

(Note that ’fold-packages’ from (guix packages) is not determining too,
if I remember correctly.)


Well, make ’all-modules’ deterministic requires some benchmark because
it could like to some time penalty; even if the order does not matter.
Some commands are already enough slow for adding an extra penalty. ;-)

Maybe sorting ’%updaters’ would be enough; something like,

--8<---------------cut here---------------start------------->8---
(define %updaters
  ;; The list of publically-known updaters.
  (delay (sort (fold-module-public-variables (lambda (obj result)
                                               (if (upstream-updater? obj)
                                                   (cons obj result)
                                                   result))
                                             '()
                                             (importer-modules))
               (lambda (u1 u2)
                 (string<?
                  (upstream-updater-name u1) (upstream-updater-name u2))))))
--8<---------------cut here---------------end--------------->8---


Cheers,
simon


Reply via email to