~ruther/guix-local

66018f1c338375796a8a2d5130bae5cdb9a48b5f — Ludovic Courtès 12 years ago 8ce3104
utils: 'find-files' returns a sorted list.

* guix/build/utils.scm (find-files): Sort the result lexicographically.
* guix/scripts/pull.scm (unpack): Don't sort the result of 'find-files'.
2 files changed, 22 insertions(+), 21 deletions(-)

M guix/build/utils.scm
M guix/scripts/pull.scm
M guix/build/utils.scm => guix/build/utils.scm +21 -18
@@ 185,29 185,32 @@ but ignore errors."
                    lstat))

(define (find-files dir regexp)
  "Return the list of files under DIR whose basename matches REGEXP."
  "Return the lexicographically sorted list of files under DIR whose basename
matches REGEXP."
  (define file-rx
    (if (regexp? regexp)
        regexp
        (make-regexp regexp)))

  (file-system-fold (const #t)
                    (lambda (file stat result)    ; leaf
                      (if (regexp-exec file-rx (basename file))
                          (cons file result)
                          result))
                    (lambda (dir stat result)     ; down
                      result)
                    (lambda (dir stat result)     ; up
                      result)
                    (lambda (file stat result)    ; skip
                      result)
                    (lambda (file stat errno result)
                      (format (current-error-port) "find-files: ~a: ~a~%"
                              file (strerror errno))
                      #f)
                    '()
                    dir))
  ;; Sort the result to get deterministic results.
  (sort (file-system-fold (const #t)
                          (lambda (file stat result)   ; leaf
                            (if (regexp-exec file-rx (basename file))
                                (cons file result)
                                result))
                          (lambda (dir stat result)    ; down
                            result)
                          (lambda (dir stat result)    ; up
                            result)
                          (lambda (file stat result)   ; skip
                            result)
                          (lambda (file stat errno result)
                            (format (current-error-port) "find-files: ~a: ~a~%"
                                    file (strerror errno))
                            #f)
                          '()
                          dir)
        string<?))


;;;

M guix/scripts/pull.scm => guix/scripts/pull.scm +1 -3
@@ 116,9 116,7 @@ files."
                   ;; download), we must build it first to avoid errors since
                   ;; (gnutls) is unavailable.
                   (cons (string-append out "/guix/build/download.scm")

                         ;; Sort the file names to get deterministic results.
                         (sort (find-files out "\\.scm") string<?)))
                         (find-files out "\\.scm")))

         ;; Remove the "fake" (guix config).
         (delete-file (string-append out "/guix/config.scm"))