aboutsummaryrefslogtreecommitdiff
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
guix-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*))