diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-04-11 12:41:49 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-04-11 13:06:23 +0200 |
commit | 9bf3ced06c42700d6c83ce3a0eda244798104618 (patch) | |
tree | 7df998e019403db4601647bbd83fa7cd30e648d3 | |
parent | cceab87536d0385e406f30dea001d48e9b8f5621 (diff) | |
download | guix-9bf3ced06c42700d6c83ce3a0eda244798104618.tar.gz |
packages: 'package-transitive-supported-systems' accounts for implicit inputs.
Reported by Federico Beffa. * guix/packages.scm (package-transitive-supported-systems): Use bag-direct-inputs + package->bag rather than package-direct-inputs. * tests/packages.scm ("package-transitive-supported-systems"): Add explicit 'build-system' field to each 'dummy-package' form. ("package-transitive-supported-systems, implicit inputs"): New test.
-rw-r--r-- | guix/packages.scm | 2 | ||||
-rw-r--r-- | tests/packages.scm | 41 |
2 files changed, 33 insertions, 10 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index f278db50f1..7d4696fb5e 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -579,7 +579,7 @@ supported by its dependencies." (_ systems))) (package-supported-systems package) - (package-direct-inputs package))) + (bag-direct-inputs (package->bag package)))) (define (bag-direct-inputs bag) "Same as 'package-direct-inputs', but applied to a bag." diff --git a/tests/packages.scm b/tests/packages.scm index b50551e963..a93ee66831 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -128,21 +128,44 @@ ("y") ;c ("y") ;d ("y")) ;e - (let* ((a (dummy-package "a" (supported-systems '("x" "y" "z")))) - (b (dummy-package "b" (supported-systems '("x" "y")) - (inputs `(("a" ,a))))) - (c (dummy-package "c" (supported-systems '("y" "z")) - (inputs `(("b" ,b))))) - (d (dummy-package "d" (supported-systems '("x" "y" "z")) - (inputs `(("b" ,b) ("c" ,c))))) - (e (dummy-package "e" (supported-systems '("x" "y" "z")) - (inputs `(("d" ,d)))))) + ;; Use TRIVIAL-BUILD-SYSTEM because it doesn't add implicit inputs and thus + ;; doesn't restrict the set of supported systems. + (let* ((a (dummy-package "a" + (build-system trivial-build-system) + (supported-systems '("x" "y" "z")))) + (b (dummy-package "b" + (build-system trivial-build-system) + (supported-systems '("x" "y")) + (inputs `(("a" ,a))))) + (c (dummy-package "c" + (build-system trivial-build-system) + (supported-systems '("y" "z")) + (inputs `(("b" ,b))))) + (d (dummy-package "d" + (build-system trivial-build-system) + (supported-systems '("x" "y" "z")) + (inputs `(("b" ,b) ("c" ,c))))) + (e (dummy-package "e" + (build-system trivial-build-system) + (supported-systems '("x" "y" "z")) + (inputs `(("d" ,d)))))) (list (package-transitive-supported-systems a) (package-transitive-supported-systems b) (package-transitive-supported-systems c) (package-transitive-supported-systems d) (package-transitive-supported-systems e)))) +(test-equal "package-transitive-supported-systems, implicit inputs" + %supported-systems + + ;; Here GNU-BUILD-SYSTEM adds implicit inputs that build only on + ;; %SUPPORTED-SYSTEMS. Thus the others must be ignored. + (let ((p (dummy-package "foo" + (build-system gnu-build-system) + (supported-systems + `("does-not-exist" "foobar" ,@%supported-systems))))) + (package-transitive-supported-systems p))) + (test-skip (if (not %store) 8 0)) (test-assert "package-source-derivation, file" |