diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-02-15 09:31:42 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-02-15 09:33:59 +0100 |
commit | 7f6dd3be3dceb0fda15fd02c9165614b2626813e (patch) | |
tree | 508ece49301b8c262b19ec8d1eff5fee45a70035 | |
parent | 7d580f1c2c2dd4077101b66bbe7b46348c5af636 (diff) | |
download | guix-7f6dd3be3dceb0fda15fd02c9165614b2626813e.tar.gz guix-7f6dd3be3dceb0fda15fd02c9165614b2626813e.zip |
gexp: 'computed-file' always uses a native Guile.
Fixes a regression whereby, when cross-compiling, 'computed-file' would
use a cross-compiled Guile as its builder, which would fail to run.
Regression introduced in af57d1bf6c46f47d82dbc234dde1e16fa8634e9d (the
problem had always been there but was hidden before behind the (not guile)
condition.)
* guix/gexp.scm (computed-file-compiler): For 'guile', pass #:target #f.
* tests/gexp.scm ("lower-object, computed-file, #:target"): New test.
-rw-r--r-- | guix/gexp.scm | 2 | ||||
-rw-r--r-- | tests/gexp.scm | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm index dfeadbd15d..d23683e2a6 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -598,7 +598,7 @@ This is the declarative counterpart of 'gexp->derivation'." (match file (($ <computed-file> name gexp guile options) (mlet %store-monad ((guile (lower-object (or guile (default-guile)) - system #:target target))) + system #:target #f))) (apply gexp->derivation name gexp #:guile-for-build guile #:system system #:target target options))))) diff --git a/tests/gexp.scm b/tests/gexp.scm index 390cf7a207..bcda516623 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -1539,6 +1539,28 @@ importing.* \\(guix config\\) from the host" (cons (derivation-file-name drv) refs)))))))) +(test-assertm "lower-object, computed-file, #:target" + (let* ((target "i586-pc-gnu") + (computed (computed-file "computed-cross" + #~(symlink #$coreutils output) + #:guile (default-guile)))) + ;; When lowered to TARGET, the derivation of COMPUTED should run natively, + ;; using a native Guile, but it should refer to the target COREUTILS. + (mlet* %store-monad ((drv (lower-object computed (%current-system) + #:target target)) + (refs (references* (derivation-file-name drv))) + (guile (lower-object (default-guile) + (%current-system) + #:target #f)) + (cross (lower-object coreutils #:target target)) + (native (lower-object coreutils #:target #f))) + (return (and (string=? (derivation-system (pk 'drv drv)) (%current-system)) + (string=? (derivation-builder drv) + (string-append (derivation->output-path guile) + "/bin/guile")) + (not (member (derivation-file-name native) refs)) + (member (derivation-file-name cross) refs)))))) + (test-assert "lower-object & gexp-input-error?" (guard (c ((gexp-input-error? c) (gexp-error-invalid-input c))) |