summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-12-14 16:48:38 +0100
committerLudovic Courtès <ludo@gnu.org>2013-12-14 16:48:38 +0100
commit52a79f1e73f9489b1c89c001f65ca2097e40e92b (patch)
tree6a85878781d8e379ffade812c611ab5ad6ce1c42
parentca6c4fa190e95efba7ade83a0decb19de084f4f5 (diff)
downloadguix-52a79f1e73f9489b1c89c001f65ca2097e40e92b.tar.gz
pull: Compile guix/ files before gnu/ files.
* guix/scripts/pull.scm (unpack)[builder]: Build files under guix/
  before files under gnu/.
-rw-r--r--guix/scripts/pull.scm11
1 files changed, 10 insertions, 1 deletions
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index e56897986a..11f5cc1493 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -150,7 +150,16 @@ files."
                                        %auto-compilation-options)))
 
                      (filter (cut string-suffix? ".scm" <>)
-                             (find-files out "\\.scm")))
+
+                             ;; Build guix/*.scm before gnu/*.scm to speed
+                             ;; things up.
+                             (sort (find-files out "\\.scm")
+                                   (let ((guix (string-append out "/guix"))
+                                         (gnu  (string-append out "/gnu")))
+                                     (lambda (a b)
+                                       (or (and (string-prefix? guix a)
+                                                (string-prefix? gnu b))
+                                           (string<? a b)))))))
 
          ;; Remove the "fake" (guix config).
          (delete-file (string-append out "/guix/config.scm"))