[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/02: gexp: #:references-graphs refers to non-native derivations.
From: |
guix-commits |
Subject: |
01/02: gexp: #:references-graphs refers to non-native derivations. |
Date: |
Wed, 3 Mar 2021 08:20:15 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit 9fc4e94986e68e0e33b260e2389765e2d3b7dd07
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Wed Mar 3 12:27:18 2021 +0100
gexp: #:references-graphs refers to non-native derivations.
Fixes a regression introduced in
c6d6aee6659acb293eb33f498fdac3b47a19a48, where #:reference-graphs would
end up referring to native inputs.
This would notably break the compilation of systems using a childhurd,
because they would attempt to build the 'hurd' package natively.
* guix/gexp.scm (lower-reference-graphs)[tuple->gexp-input]: Honor TARGET.
* tests/gexp.scm ("gexp->derivation #:references-graphs cross-compilation"):
New test.
---
guix/gexp.scm | 4 ++--
tests/gexp.scm | 16 ++++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 8cd44ba..b72b8f4 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -875,9 +875,9 @@ corresponding <derivation-input> or store item."
(define tuple->gexp-input
(match-lambda
((thing)
- (%gexp-input thing "out" #t))
+ (%gexp-input thing "out" (not target)))
((thing output)
- (%gexp-input thing output #t))))
+ (%gexp-input thing output (not target)))))
(match graphs
(((file-names . inputs) ...)
diff --git a/tests/gexp.scm b/tests/gexp.scm
index a30d0ff..834e78b 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -1095,6 +1095,22 @@ importing.* \\(guix config\\) from the host"
(call-with-input-file g-guile read)
(list (derivation->output-path guile-drv) bash))))))
+(test-assertm "gexp->derivation #:references-graphs cross-compilation"
+ ;; The objects passed in #:references-graphs implicitly refer to
+ ;; cross-compiled derivations. Make sure this is the case.
+ (mlet* %store-monad ((drv1 (lower-object coreutils (%current-system)
+ #:target "i586-pc-gnu"))
+ (drv2 (lower-object coreutils (%current-system)
+ #:target #f))
+ (drv3 (gexp->derivation "three"
+ #~(symlink #$coreutils #$output)
+ #:target "i586-pc-gnu"
+ #:references-graphs
+ `(("coreutils" ,coreutils))))
+ (refs (references* (derivation-file-name drv3))))
+ (return (and (member (derivation-file-name drv1) refs)
+ (not (member (derivation-file-name drv2) refs))))))
+
(test-assertm "gexp->derivation #:allowed-references"
(mlet %store-monad ((drv (gexp->derivation "allowed-refs"
#~(begin