~ruther/guix-local

583323ca1d1af5462f1b45f4be50f96bc8f1e46b — Ludovic Courtès 10 years ago e8277f9
linux-initrd: Populate cpio archives in a deterministic order.

* gnu/build/linux-initrd.scm (write-cpio-archive)[files]: Use 'sort' instead
  of 'reverse'.
1 files changed, 16 insertions(+), 15 deletions(-)

M gnu/build/linux-initrd.scm
M gnu/build/linux-initrd.scm => gnu/build/linux-initrd.scm +16 -15
@@ 49,21 49,22 @@ COMPRESS? is true, compress it using GZIP.  On success, return OUTPUT."
  ;; directories."

  (define files
    ;; XXX: Use a deterministic order.
    (reverse
     (file-system-fold (const #t)                 ;enter?
                       (lambda (file stat result) ;leaf
                         (cons file result))
                       (lambda (dir stat result)  ;down
                         (if (string=? dir directory)
                             result
                             (cons dir result)))
                       (lambda (file stat result)
                         result)
                       (const #f)                 ;skip
                       (const #f)                 ;error
                       '()
                       directory)))
    ;; Use 'sort' so that (1) the order of files is deterministic, and (2)
    ;; directories appear before the files they contain.
    (sort (file-system-fold (const #t)                 ;enter?
                            (lambda (file stat result) ;leaf
                              (cons file result))
                            (lambda (dir stat result)  ;down
                              (if (string=? dir directory)
                                  result
                                  (cons dir result)))
                            (lambda (file stat result)
                              result)
                            (const #f)                 ;skip
                            (const #f)                 ;error
                            '()
                            directory)
          string<?))

  (call-with-output-file output
    (lambda (port)