summaryrefslogtreecommitdiff
path: root/tests/packages.scm
diff options
context:
space:
mode:
authorDavid Elsing <david.elsing@posteo.net>2025-03-02 22:43:30 +0000
committerLudovic Courtès <ludo@gnu.org>2025-03-08 16:16:02 +0100
commit70c7b4d7f0cdaa93db8232ae27e9e96a47e982ea (patch)
tree99a25fb626bc7777edd87b0214c223a1bfa7e1ce /tests/packages.scm
parent5ead9fa56c9ca97456796b09079fcfe0f24d8aa3 (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.scm52
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