summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/build/linux-initrd.scm31
1 files changed, 16 insertions, 15 deletions
diff --git a/gnu/build/linux-initrd.scm b/gnu/build/linux-initrd.scm
index 2c148836f3..815c7a0aeb 100644
--- a/gnu/build/linux-initrd.scm
+++ b/gnu/build/linux-initrd.scm
@@ -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)