me
/
guix
Archived
1
0
Fork 0

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.
master
Ludovic Courtès 2021-10-12 23:47:59 +02:00
parent 8bc5f63c45
commit abd38dcee1
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 21 additions and 1 deletions

View File

@ -968,13 +968,32 @@ itself."
#:extensions dependencies #:extensions dependencies
#:guile-for-build guile-for-build)) #: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* (define *cli-modules*
(scheme-node "guix-cli" (scheme-node "guix-cli"
(append (scheme-modules* source "/guix/scripts") (append (scheme-modules* source "/guix/scripts")
`((gnu ci))) `((gnu ci)))
(list *core-modules* *extra-modules* (list *core-modules* *extra-modules*
*core-package-modules* *package-modules* *core-package-modules* *package-modules*
*system-modules* *home-modules*) *core-cli-modules* *system-modules* *home-modules*)
#:extensions dependencies #:extensions dependencies
#:guile-for-build guile-for-build)) #:guile-for-build guile-for-build))
@ -1020,6 +1039,7 @@ itself."
;; comes with *CORE-MODULES*. ;; comes with *CORE-MODULES*.
(list *config* (list *config*
*cli-modules* *cli-modules*
*core-cli-modules*
*system-test-modules* *system-test-modules*
*system-modules* *system-modules*
*home-modules* *home-modules*