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.
This commit is contained in:
Ludovic Courtès 2018-05-06 16:41:50 +02:00
parent effd8df8f2
commit f2e66663c2
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -260,13 +260,18 @@ (define *extra-modules*
#: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 @@ (define *package-modules*
(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 @@ (define *system-modules*
(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 @@ (define *config*
*cli-modules*
*system-modules*
*package-modules*
*core-package-modules*
*extra-modules*
*core-modules*))