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
|
@ -604,12 +604,12 @@ and upgrades."
|
||||||
(options->upgrade-predicate opts))
|
(options->upgrade-predicate opts))
|
||||||
|
|
||||||
(define upgraded
|
(define upgraded
|
||||||
(fold-right (lambda (entry transaction)
|
(fold (lambda (entry transaction)
|
||||||
(if (upgrade? (manifest-entry-name entry))
|
(if (upgrade? (manifest-entry-name entry))
|
||||||
(transaction-upgrade-entry entry transaction)
|
(transaction-upgrade-entry entry transaction)
|
||||||
transaction))
|
transaction))
|
||||||
transaction
|
transaction
|
||||||
(manifest-entries manifest)))
|
(manifest-entries manifest)))
|
||||||
|
|
||||||
(define to-install
|
(define to-install
|
||||||
(filter-map (match-lambda
|
(filter-map (match-lambda
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# GNU Guix --- Functional package management for GNU
|
# 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>
|
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Guix.
|
# This file is part of GNU Guix.
|
||||||
|
@ -167,6 +167,37 @@ then false; fi
|
||||||
guix package -p "$profile" -p "$profile_alt" --search-paths \
|
guix package -p "$profile" -p "$profile_alt" --search-paths \
|
||||||
| grep "LIBRARY_PATH.*$profile/lib.$profile_alt/lib"
|
| 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.
|
# Try with the default profile.
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue