summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-05-05 23:42:36 +0200
committerLudovic Courtès <ludo@gnu.org>2022-05-05 23:56:58 +0200
commit0f024554e63a49e20c2a7a67e928073c266bf5c5 (patch)
treeb180b949cde3306c08ee00e9dfa1fea4d639e481
parent0780164f1f718804d5ece3e7c17fd6639d2e6a1f (diff)
transformations: Preserve transformation order in package property.
Fixes <https://issues.guix.gnu.org/54942>. Reported by SeerLite <seerlite@nixnet.email>. * guix/transformations.scm (options->transformation) [package-with-transformation-properties]: Add call to 'reverse'. * tests/transformations.scm ("options->transformation, property order"): New test.
-rw-r--r--guix/transformations.scm2
-rw-r--r--tests/transformations.scm14
2 files changed, 14 insertions, 2 deletions
diff --git a/guix/transformations.scm b/guix/transformations.scm
index a0045e5b272..411c4014cb7 100644
--- a/guix/transformations.scm
+++ b/guix/transformations.scm
@@ -959,7 +959,7 @@ to that transformation."
959 . ,(map (match-lambda 959 . ,(map (match-lambda
960 ((key value _) 960 ((key value _)
961 (cons key value))) 961 (cons key value)))
962 applicable)) 962 (reverse applicable))) ;preserve order
963 ,@(package-properties p))))) 963 ,@(package-properties p)))))
964 964
965 (lambda (obj) 965 (lambda (obj)
diff --git a/tests/transformations.scm b/tests/transformations.scm
index 8db85b4305b..dbfe5235188 100644
--- a/tests/transformations.scm
+++ b/tests/transformations.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016, 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2016-2017, 2019-2022 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2021 Marius Bakke <marius@gnu.org> 3;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
4;;; 4;;;
5;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
@@ -451,6 +451,18 @@
451 (string=? (local-file-file input) patch))) 451 (string=? (local-file-file input) patch)))
452 inputs)))))))) 452 inputs))))))))
453 453
454(test-equal "options->transformation, property order"
455 ;; See <https://issues.guix.gnu.org/54942>.
456 '((with-debug-info . "does-not-exist")
457 (with-commit . "does-not-exist=aaaaaaa")
458 (without-tests . "does-not-exist"))
459 (let* ((t (options->transformation
460 '((with-debug-info . "does-not-exist")
461 (with-commit . "does-not-exist=aaaaaaa")
462 (without-tests . "does-not-exist")))))
463 (let ((new (t coreutils)))
464 (assq-ref (package-properties new) 'transformations))))
465
454(test-equal "options->transformation, with-latest" 466(test-equal "options->transformation, with-latest"
455 "42.0" 467 "42.0"
456 (mock ((guix upstream) %updaters 468 (mock ((guix upstream) %updaters