From ccda88a07039c62d5d0bfde7fccef02ef3937ccf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 19 Jan 2022 22:01:35 +0100 Subject: package: Honor '--dry-run' when target profile is already in store. Fixes . Reported by Tirifto . Regression introduced in 65ffb9388c1c3d870cb07e4cb3ef12c9ac06a161. In the (unlikely) case where the profile we're targeting with "guix upgrade -n" or similar is already built, a new profile generation would be created and linked to despite the use of '-n'. This is because 65ffb9388c1c3d870cb07e4cb3ef12c9ac06a161 assumed that dry-run behavior would be handled solely by the build handler, which is not the case when there's nothing to build. * guix/scripts/package.scm (build-and-use-profile): Reintroduce #:dry-run? and honor it. (process-actions): Pass #:dry-run? to 'build-and-use-profile'. * tests/guix-package-net.sh: Add test. --- tests/guix-package-net.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tests') diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh index a3beb238fe..1cdeff773a 100644 --- a/tests/guix-package-net.sh +++ b/tests/guix-package-net.sh @@ -196,6 +196,16 @@ EOF guix package --bootstrap -p "$profile" -i gcc-bootstrap installed="`guix package -p "$profile" -I | cut -f1`" +# Dry-run upgrade. Make sure no new generation is created when things are +# already in store and '-n' is used: . +V_MINOR=0 +export V_MINOR +profile_before="$(readlink "$profile")" +guix package -p "$profile" --bootstrap -L "$module_dir" -u # build the profile +guix package -p "$profile" --roll-back +guix package -p "$profile" --bootstrap -L "$module_dir" -u . -n # check '-n' +test "$(readlink "$profile")" = "$profile_before" + for i in 1 2 do V_MINOR="$i" -- cgit v1.2.3