diff options
| author | David Elsing <david.elsing@posteo.net> | 2025-03-02 22:43:30 +0000 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2025-03-08 16:16:02 +0100 |
| commit | 70c7b4d7f0cdaa93db8232ae27e9e96a47e982ea (patch) | |
| tree | 99a25fb626bc7777edd87b0214c223a1bfa7e1ce /tests/packages.scm | |
| parent | 5ead9fa56c9ca97456796b09079fcfe0f24d8aa3 (diff) | |
packages: Honor system and target system for graft replacements.
Fixes <https://issues.guix.gnu.org/76110>.
Fixes a regression introduced in
28e4018e59d30efb3d52aa950ce2261f11b69b33 where the system and target
system would be ignored.
* guix/packages.scm (input-graft, input-cross-graft): Wrap graft replacement
in ‘with-parameters’.
* tests/packages.scm ("package-grafts, indirect grafts")
("package-grafts, indirect grafts, propagated inputs")
("package-grafts, same replacement twice")
("package-grafts, dependency on several outputs")
("replacement also grafted"): Adjust accordingly by comparing the replacement
after lowering to a derivation.
("package-grafts, indirect grafts, #:system argument"): New test.
Change-Id: I1663f0cc50842bb9abb53ba4aa9935052022d1f4
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Reported-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Diffstat (limited to 'tests/packages.scm')
| -rw-r--r-- | tests/packages.scm | 52 |
1 files changed, 44 insertions, 8 deletions
diff --git a/tests/packages.scm b/tests/packages.scm index 2863fb5991e..50c1cab9154 100644 --- a/tests/packages.scm +++ b/tests/packages.scm | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> | 4 | ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> |
| 5 | ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> | 5 | ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> |
| 6 | ;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com> | 6 | ;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com> |
| 7 | ;;; Copyright © 2025 David Elsing <david.elsing@posteo.net> | ||
| 7 | ;;; | 8 | ;;; |
| 8 | ;;; This file is part of GNU Guix. | 9 | ;;; This file is part of GNU Guix. |
| 9 | ;;; | 10 | ;;; |
| @@ -1095,7 +1096,29 @@ | |||
| 1095 | ((graft) | 1096 | ((graft) |
| 1096 | (and (eq? (graft-origin graft) | 1097 | (and (eq? (graft-origin graft) |
| 1097 | (package-derivation %store dep)) | 1098 | (package-derivation %store dep)) |
| 1098 | (eq? (graft-replacement graft) new)))))) | 1099 | (eq? (run-with-store %store |
| 1100 | (lower-object (graft-replacement graft))) | ||
| 1101 | (package-derivation %store new))))))) | ||
| 1102 | |||
| 1103 | (test-assert "package-grafts, indirect grafts, #:system argument" | ||
| 1104 | (let* ((system (if (string=? (%current-system) "riscv64-linux") | ||
| 1105 | "x86_64-linux" | ||
| 1106 | "riscv64-linux")) | ||
| 1107 | (new (dummy-package "dep" | ||
| 1108 | (arguments `(#:implicit-inputs? #f | ||
| 1109 | #:system ,system)))) | ||
| 1110 | (dep (package (inherit new) (version "0.0"))) | ||
| 1111 | (dep* (package (inherit dep) (replacement new))) | ||
| 1112 | (dummy (dummy-package "dummy" | ||
| 1113 | (arguments '(#:implicit-inputs? #f)) | ||
| 1114 | (inputs (list dep*))))) | ||
| 1115 | (match (package-grafts %store dummy) | ||
| 1116 | ((graft) | ||
| 1117 | (and (eq? (graft-origin graft) | ||
| 1118 | (package-derivation %store dep system)) | ||
| 1119 | (eq? (run-with-store %store | ||
| 1120 | (lower-object (graft-replacement graft))) | ||
| 1121 | (package-derivation %store new))))))) | ||
| 1099 | 1122 | ||
| 1100 | ;; XXX: This test would require building the cross toolchain just to see if it | 1123 | ;; XXX: This test would require building the cross toolchain just to see if it |
| 1101 | ;; needs grafting, which is obviously too expensive, and thus disabled. | 1124 | ;; needs grafting, which is obviously too expensive, and thus disabled. |
| @@ -1132,7 +1155,9 @@ | |||
| 1132 | ((graft) | 1155 | ((graft) |
| 1133 | (and (eq? (graft-origin graft) | 1156 | (and (eq? (graft-origin graft) |
| 1134 | (package-derivation %store dep)) | 1157 | (package-derivation %store dep)) |
| 1135 | (eq? (graft-replacement graft) new)))))) | 1158 | (eq? (run-with-store %store |
| 1159 | (lower-object (graft-replacement graft))) | ||
| 1160 | (package-derivation %store new))))))) | ||
| 1136 | 1161 | ||
| 1137 | (test-assert "package-grafts, same replacement twice" | 1162 | (test-assert "package-grafts, same replacement twice" |
| 1138 | (let* ((new (dummy-package "dep" | 1163 | (let* ((new (dummy-package "dep" |
| @@ -1157,7 +1182,9 @@ | |||
| 1157 | (package-derivation %store | 1182 | (package-derivation %store |
| 1158 | (package (inherit dep) | 1183 | (package (inherit dep) |
| 1159 | (replacement #f)))) | 1184 | (replacement #f)))) |
| 1160 | (eq? (graft-replacement graft) new)))))) | 1185 | (eq? (run-with-store %store |
| 1186 | (lower-object (graft-replacement graft))) | ||
| 1187 | (package-derivation %store new))))))) | ||
| 1161 | 1188 | ||
| 1162 | (test-assert "package-grafts, dependency on several outputs" | 1189 | (test-assert "package-grafts, dependency on several outputs" |
| 1163 | ;; Make sure we get one graft per output; see <https://bugs.gnu.org/41796>. | 1190 | ;; Make sure we get one graft per output; see <https://bugs.gnu.org/41796>. |
| @@ -1177,9 +1204,11 @@ | |||
| 1177 | ((graft1 graft2) | 1204 | ((graft1 graft2) |
| 1178 | (and (eq? (graft-origin graft1) (graft-origin graft2) | 1205 | (and (eq? (graft-origin graft1) (graft-origin graft2) |
| 1179 | (package-derivation %store p0)) | 1206 | (package-derivation %store p0)) |
| 1180 | (eq? (graft-replacement graft1) | 1207 | (eq? (run-with-store %store |
| 1181 | (graft-replacement graft2) | 1208 | (lower-object (graft-replacement graft1))) |
| 1182 | p0*) | 1209 | (run-with-store %store |
| 1210 | (lower-object (graft-replacement graft2))) | ||
| 1211 | (package-derivation %store p0*)) | ||
| 1183 | (string=? "lib" | 1212 | (string=? "lib" |
| 1184 | (graft-origin-output graft1) | 1213 | (graft-origin-output graft1) |
| 1185 | (graft-replacement-output graft1)) | 1214 | (graft-replacement-output graft1)) |
| @@ -1256,10 +1285,17 @@ | |||
| 1256 | ((graft1 graft2) | 1285 | ((graft1 graft2) |
| 1257 | (and (eq? (graft-origin graft1) | 1286 | (and (eq? (graft-origin graft1) |
| 1258 | (package-derivation %store p1 #:graft? #f)) | 1287 | (package-derivation %store p1 #:graft? #f)) |
| 1259 | (eq? (graft-replacement graft1) p1r) | 1288 | (eq? (run-with-store %store |
| 1289 | (lower-object (graft-replacement graft1))) | ||
| 1290 | (package-derivation %store p1r #:graft? #t)) | ||
| 1260 | (eq? (graft-origin graft2) | 1291 | (eq? (graft-origin graft2) |
| 1261 | (package-derivation %store p2 #:graft? #f)) | 1292 | (package-derivation %store p2 #:graft? #f)) |
| 1262 | (eq? (graft-replacement graft2) p2r)))))) | 1293 | ;; XXX: Remove parameterize when |
| 1294 | ;; <https://issues.guix.gnu.org/75879> is fixed. | ||
| 1295 | (eq? (parameterize ((%graft? #t)) | ||
| 1296 | (run-with-store %store | ||
| 1297 | (lower-object (graft-replacement graft2)))) | ||
| 1298 | (package-derivation %store p2r #:graft? #t))))))) | ||
| 1263 | 1299 | ||
| 1264 | ;;; XXX: Nowadays 'graft-derivation' needs to build derivations beforehand to | 1300 | ;;; XXX: Nowadays 'graft-derivation' needs to build derivations beforehand to |
| 1265 | ;;; find out about their run-time dependencies, so this test is no longer | 1301 | ;;; find out about their run-time dependencies, so this test is no longer |
