self: Use default config variable values for derivations.

The value of %localstatedir, %storedir, and %sysconfdir is known to have
no impact on the compilation of the Guix modules.  Thus, explicitly
build those modules against a (guix config) module that uses all the
default values.  That way, a Guix installation that uses different
config values can still benefit from substitutes.

Reported by Ricardo Wurmus.

* guix/self.scm (%default-config-variables): New variable.
(make-config.scm): Add #:config-variables and honor it.
(compiled-guix)[*core-modules*]: Pass #:config-variables to
'make-config.scm'.
This commit is contained in:
Ludovic Courtès 2021-08-09 12:28:17 +02:00
parent 30289f4d46
commit 27f00963d3
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -872,7 +872,9 @@ (define *core-modules*
;; rebuilt when the version changes, which in turn means we
;; can have substitutes for it.
#:extra-modules
`(((guix config) => ,(make-config.scm)))
`(((guix config)
=> ,(make-config.scm
#:config-variables %default-config-variables)))
;; (guix man-db) is needed at build-time by (guix profiles)
;; but we don't need to compile it; not compiling it allows
@ -1084,10 +1086,17 @@ (define %config-variables
(variables rest ...))))))
(variables %localstatedir %storedir %sysconfdir)))
(define %default-config-variables
;; Default values of the configuration variables above.
`((%localstatedir . "/var")
(%storedir . "/gnu/store")
(%sysconfdir . "/etc")))
(define* (make-config.scm #:key gzip xz bzip2
(package-name "GNU Guix")
(package-version "0")
(channel-metadata #f)
(config-variables %config-variables)
(bug-report-address "bug-guix@gnu.org")
(home-page-url "https://guix.gnu.org"))
@ -1117,7 +1126,7 @@ (define %system
#$@(map (match-lambda
((name . value)
#~(define-public #$name #$value)))
%config-variables)
config-variables)
(define %store-directory
(or (and=> (getenv "NIX_STORE_DIR") canonicalize-path)