summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-05-06 16:41:50 +0200
committerLudovic Courtès <ludo@gnu.org>2018-05-07 00:17:34 +0200
commitf2e66663c2e00b482cdf5ba83173291d30363e7c (patch)
tree60a3d8f406a1b8578b8bed8f5522aa7bf36e3e4c
parenteffd8df8f26ca3474edd4be53affd89579f03c68 (diff)
downloadguix-f2e66663c2e00b482cdf5ba83173291d30363e7c.tar.gz
self: Add "guix-packages-base" derivation.
This introduces an intermediate derivation, thereby reducing the amount
of rebuild that needs to happen when "leaf" package modules are
modified.

* guix/self.scm (compiled-guix)[*core-package-modules*]: New variable.
[*package-modules*, *system-modules*, *cli-modules*]: Depend on it.
Add it to the directory union.
-rw-r--r--guix/self.scm27
1 files changed, 21 insertions, 6 deletions
diff --git a/guix/self.scm b/guix/self.scm
index 6220efb397..4378a3dee5 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -260,13 +260,18 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
                  #:extensions dependencies
                  #:guile-for-build guile-for-build))
 
-  (define *package-modules*
-    (scheme-node "guix-packages"
+  (define *core-package-modules*
+    (scheme-node "guix-packages-base"
                  `((gnu packages)
-                   ,@(scheme-modules* source "gnu/packages"))
+                   (gnu packages base))
                  (list *core-modules* *extra-modules*)
                  #:extensions dependencies
-                 #:extra-files                    ;all the non-Scheme files
+
+                 ;; Add all the non-Scheme files here.  We must do it here so
+                 ;; that 'search-patches' & co. can find them.  Ideally we'd
+                 ;; keep them next to the .scm files that use them but it's
+                 ;; difficult to do (XXX).
+                 #:extra-files
                  (file-imports source "gnu/packages"
                                (lambda (file stat)
                                  (and (eq? 'regular (stat:type stat))
@@ -276,13 +281,21 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
                                       (not (string-suffix? "~" file)))))
                  #:guile-for-build guile-for-build))
 
+  (define *package-modules*
+    (scheme-node "guix-packages"
+                 (scheme-modules* source "gnu/packages")
+                 (list *core-modules* *extra-modules* *core-package-modules*)
+                 #:extensions dependencies
+                 #:guile-for-build guile-for-build))
+
   (define *system-modules*
     (scheme-node "guix-system"
                  `((gnu system)
                    (gnu services)
                    ,@(scheme-modules* source "gnu/system")
                    ,@(scheme-modules* source "gnu/services"))
-                 (list *package-modules* *extra-modules* *core-modules*)
+                 (list *core-package-modules* *package-modules*
+                       *extra-modules* *core-modules*)
                  #:extensions dependencies
                  #:extra-files
                  (file-imports source "gnu/system/examples" (const #t))
@@ -292,7 +305,8 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
   (define *cli-modules*
     (scheme-node "guix-cli"
                  (scheme-modules* source "/guix/scripts")
-                 (list *core-modules* *extra-modules* *package-modules*
+                 (list *core-modules* *extra-modules*
+                       *core-package-modules* *package-modules*
                        *system-modules*)
                  #:extensions dependencies
                  #:guile-for-build guile-for-build))
@@ -330,6 +344,7 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
                                      *cli-modules*
                                      *system-modules*
                                      *package-modules*
+                                     *core-package-modules*
                                      *extra-modules*
                                      *core-modules*))