diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-05-14 16:03:56 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-05-14 17:21:27 +0200 |
commit | f52fbf7094c9c346d38ad469cc8d92d18387786e (patch) | |
tree | 954c567a163e6547aa7988063f9183c72112df40 | |
parent | a89df83c79340b5d0dfefcc6250dc69d502f3f5d (diff) | |
download | guix-f52fbf7094c9c346d38ad469cc8d92d18387786e.tar.gz |
packages: Ensure bags are insensitive to '%current-target-system'.
Fixes a bug whereby a bag's transitive dependencies would depend on the global '%current-target-system' value. Partly fixes <https://issues.guix.gnu.org/41182>. * guix/packages.scm (bag-transitive-inputs) (bag-transitive-build-inputs, bag-transitive-target-inputs): Parameterize '%current-target-system'. * tests/packages.scm ("package->bag, sensitivity to %current-target-system"): New test.
-rw-r--r-- | guix/packages.scm | 9 | ||||
-rw-r--r-- | tests/packages.scm | 13 |
2 files changed, 19 insertions, 3 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index 9fdc679f9a..3fff50a6e8 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -814,11 +814,13 @@ dependencies are known to build on SYSTEM." (define (bag-transitive-inputs bag) "Same as 'package-transitive-inputs', but applied to a bag." - (transitive-inputs (bag-direct-inputs bag))) + (parameterize ((%current-target-system #f)) + (transitive-inputs (bag-direct-inputs bag)))) (define (bag-transitive-build-inputs bag) "Same as 'package-transitive-native-inputs', but applied to a bag." - (transitive-inputs (bag-build-inputs bag))) + (parameterize ((%current-target-system #f)) + (transitive-inputs (bag-build-inputs bag)))) (define (bag-transitive-host-inputs bag) "Same as 'package-transitive-target-inputs', but applied to a bag." @@ -827,7 +829,8 @@ dependencies are known to build on SYSTEM." (define (bag-transitive-target-inputs bag) "Return the \"target inputs\" of BAG, recursively." - (transitive-inputs (bag-target-inputs bag))) + (parameterize ((%current-target-system (bag-target bag))) + (transitive-inputs (bag-target-inputs bag)))) (define* (package-closure packages #:key (system (%current-system))) "Return the closure of PACKAGES on SYSTEM--i.e., PACKAGES and the list of diff --git a/tests/packages.scm b/tests/packages.scm index 7a8b5e4a2d..c528d2080c 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -1000,6 +1000,19 @@ (("dep" package) (eq? package dep))))) +(test-assert "package->bag, sensitivity to %current-target-system" + (let* ((dep (dummy-package "dep" + (propagated-inputs (if (%current-target-system) + `(("libxml2" ,libxml2)) + '())))) + (pkg (dummy-package "foo" + (native-inputs `(("dep" ,dep))))) + (bag (package->bag pkg (%current-system) "foo86-hurd"))) + (equal? (parameterize ((%current-target-system "foo64-gnu")) + (bag-transitive-inputs bag)) + (parameterize ((%current-target-system #f)) + (bag-transitive-inputs bag))))) + (test-assert "bag->derivation" (parameterize ((%graft? #f)) (let ((bag (package->bag gnu-make)) |