mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-23 21:17:11 -05:00
guix package: '--upgrade' preserves package order.
Fixes <https://bugs.gnu.org/31142>.
Reported by Chris Marusich <cmmarusich@gmail.com>.
* guix/scripts/package.scm (options->installable)[upgraded]: Use 'fold'
instead of 'fold-right'. This reverts
eca16a3d1d
.
* tests/guix-package-net.sh: Add 'guix package u' test.
This commit is contained in:
parent
74a8b2cca1
commit
35225dc579
2 changed files with 38 additions and 7 deletions
|
@ -604,12 +604,12 @@ (define upgrade?
|
|||
(options->upgrade-predicate opts))
|
||||
|
||||
(define upgraded
|
||||
(fold-right (lambda (entry transaction)
|
||||
(if (upgrade? (manifest-entry-name entry))
|
||||
(transaction-upgrade-entry entry transaction)
|
||||
transaction))
|
||||
transaction
|
||||
(manifest-entries manifest)))
|
||||
(fold (lambda (entry transaction)
|
||||
(if (upgrade? (manifest-entry-name entry))
|
||||
(transaction-upgrade-entry entry transaction)
|
||||
transaction))
|
||||
transaction
|
||||
(manifest-entries manifest)))
|
||||
|
||||
(define to-install
|
||||
(filter-map (match-lambda
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
|
@ -167,6 +167,37 @@ then false; fi
|
|||
guix package -p "$profile" -p "$profile_alt" --search-paths \
|
||||
| grep "LIBRARY_PATH.*$profile/lib.$profile_alt/lib"
|
||||
|
||||
# Simulate an upgrade and make sure the package order is preserved.
|
||||
module_dir="t-guix-package-net-$$"
|
||||
trap 'rm -rf "$module_dir"' EXIT
|
||||
|
||||
mkdir "$module_dir"
|
||||
cat > "$module_dir/new.scm" <<EOF
|
||||
(define-module (new)
|
||||
#:use-module (guix)
|
||||
#:use-module (gnu packages bootstrap))
|
||||
|
||||
(define-public new-guile
|
||||
(package (inherit %bootstrap-guile)
|
||||
(version (string-append "42." (getenv "V_MINOR")))))
|
||||
(define-public new-gcc
|
||||
(package (inherit %bootstrap-gcc)
|
||||
(version (string-append "77." (getenv "V_MINOR")))))
|
||||
EOF
|
||||
|
||||
guix package --bootstrap -p "$profile" -i gcc-bootstrap
|
||||
installed="`guix package -p "$profile" -I | cut -f1`"
|
||||
|
||||
for i in 1 2
|
||||
do
|
||||
V_MINOR="$i"
|
||||
export V_MINOR
|
||||
|
||||
guix package -p "$profile" --bootstrap -L "$module_dir" -u .
|
||||
post_upgrade="`guix package -p "$profile" -I | cut -f1`"
|
||||
test "$post_upgrade" = "$installed"
|
||||
done
|
||||
|
||||
#
|
||||
# Try with the default profile.
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue