aboutsummaryrefslogtreecommitdiff
path: root/guix/self.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-10-12 23:47:59 +0200
committerLudovic Courtès <ludo@gnu.org>2021-10-13 11:48:02 +0200
commitabd38dcee16f0ac71191527c38dcd3659111e2ba (patch)
tree9ad0a1f2a1c6c993b2157737c8943818d529c901 /guix/self.scm
parent8bc5f63c456502ed80af99933a02642da9cf547a (diff)
downloadguix-abd38dcee16f0ac71191527c38dcd3659111e2ba.tar
guix-abd38dcee16f0ac71191527c38dcd3659111e2ba.tar.gz
self: Move core (guix script ...) modules to a separate derivation.
This adds an opportunity for parallelism and reduces the amount of rebuild needed when "secondary" modules are modified. * guix/self.scm (compiled-guix)[*core-cli-modules*]: New variable. [*cli-modules*]: Depend on it. [built-modules]: Likewise.
Diffstat (limited to 'guix/self.scm')
-rw-r--r--guix/self.scm22
1 files changed, 21 insertions, 1 deletions
diff --git a/guix/self.scm b/guix/self.scm
index 61ff423086..a0d448742a 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -968,13 +968,32 @@ itself."
#:extensions dependencies
#:guile-for-build guile-for-build))
+ (define *core-cli-modules*
+ ;; Core command-line interface modules that do not depend on (gnu system
+ ;; …) or (gnu home …), and not even on *PACKAGE-MODULES*.
+ (scheme-node "guix-cli-core"
+ (remove (match-lambda
+ (('guix 'scripts 'system . _) #t)
+ (('guix 'scripts 'environment) #t)
+ (('guix 'scripts 'container . _) #t)
+ (('guix 'scripts 'deploy) #t)
+ (('guix 'scripts 'home . _) #t)
+ (('guix 'scripts 'import . _) #t)
+ (('guix 'pack) #t)
+ (_ #f))
+ (scheme-modules* source "guix/scripts"))
+ (list *core-modules* *extra-modules*
+ *core-package-modules*)
+ #:extensions dependencies
+ #:guile-for-build guile-for-build))
+
(define *cli-modules*
(scheme-node "guix-cli"
(append (scheme-modules* source "/guix/scripts")
`((gnu ci)))
(list *core-modules* *extra-modules*
*core-package-modules* *package-modules*
- *system-modules* *home-modules*)
+ *core-cli-modules* *system-modules* *home-modules*)
#:extensions dependencies
#:guile-for-build guile-for-build))
@@ -1020,6 +1039,7 @@ itself."
;; comes with *CORE-MODULES*.
(list *config*
*cli-modules*
+ *core-cli-modules*
*system-test-modules*
*system-modules*
*home-modules*