diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2020-06-11 18:24:59 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2020-06-11 19:05:05 +0200 |
| commit | 03a70e4c190420e87c0b535285caf8f77260d4ff (patch) | |
| tree | dbf3f3952af4990b959e048b1ae2766c1fc83ffa /tests/packages.scm | |
| parent | cbd9581acc41cd49eb81c2432452cad4de805cbd (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.scm | 24 |
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: |
