summaryrefslogtreecommitdiff
path: root/tests/packages.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-06-11 18:24:59 +0200
committerLudovic Courtès <ludo@gnu.org>2020-06-11 19:05:05 +0200
commit03a70e4c190420e87c0b535285caf8f77260d4ff (patch)
treedbf3f3952af4990b959e048b1ae2766c1fc83ffa /tests/packages.scm
parentcbd9581acc41cd49eb81c2432452cad4de805cbd (diff)
packages: 'package-grafts' returns grafts for all the relevant outputs.
Fixes <https://bugs.gnu.org/41796>. Reported by Jakub Kądziołka <kuba@kadziolka.net>. * guix/packages.scm (input-graft): Add 'output' parameter and honor it. Add OUTPUT to the cache key. (input-cross-graft): Likewise. (fold-bag-dependencies): Operate on inputs instead of nodes. Turn VISITED into a vhash instead of a set. Pass PROC HEAD and OUTPUT instead of just HEAD. (bag-grafts): Adjust accordingly. * tests/packages.scm ("package-grafts, dependency on several outputs"): New test.
Diffstat (limited to 'tests/packages.scm')
-rw-r--r--tests/packages.scm24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/packages.scm b/tests/packages.scm
index 72e87dbfb7d..c7b6f669b5e 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -900,6 +900,30 @@
900 (replacement #f)))) 900 (replacement #f))))
901 (replacement (package-derivation %store new))))))) 901 (replacement (package-derivation %store new)))))))
902 902
903(test-assert "package-grafts, dependency on several outputs"
904 ;; Make sure we get one graft per output; see <https://bugs.gnu.org/41796>.
905 (letrec* ((p0 (dummy-package "p0"
906 (version "1.0")
907 (replacement p0*)
908 (arguments '(#:implicit-inputs? #f))
909 (outputs '("out" "lib"))))
910 (p0* (package (inherit p0) (version "1.1")))
911 (p1 (dummy-package "p1"
912 (arguments '(#:implicit-inputs? #f))
913 (inputs `(("p0" ,p0)
914 ("p0:lib" ,p0 "lib"))))))
915 (lset= equal? (pk (package-grafts %store p1))
916 (list (graft
917 (origin (package-derivation %store p0))
918 (origin-output "out")
919 (replacement (package-derivation %store p0*))
920 (replacement-output "out"))
921 (graft
922 (origin (package-derivation %store p0))
923 (origin-output "lib")
924 (replacement (package-derivation %store p0*))
925 (replacement-output "lib"))))))
926
903(test-assert "replacement also grafted" 927(test-assert "replacement also grafted"
904 ;; We build a DAG as below, where dotted arrows represent replacements and 928 ;; We build a DAG as below, where dotted arrows represent replacements and
905 ;; solid arrows represent dependencies: 929 ;; solid arrows represent dependencies: