From c9323a4c69d48bc9af3825674e43a3febbb42091 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 6 Feb 2015 17:52:07 +0100 Subject: guix package: Make custom profiles actual indirect roots. Before that, any profile generation built when '-p' is used would effectively become a permanent GC root because the symlink in /var/guix/gcroots/auto would point directly to /gnu/store/...-profile. * guix/scripts/package.scm (maybe-register-gc-root): Rename to... (register-gc-root): ... this. Remove conditional, and replace call to 'canonicalize-path' with (string-append (getcwd) "/" ...). (guix-package): Call 'register-gc-root' only if PROFILE is different from %CURRENT-PROFILE. * tests/guix-package.sh: Add test case. --- tests/guix-package.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 3959269d44..d4917bbf90 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -32,7 +32,7 @@ module_dir="t-guix-package-$$" profile="t-profile-$$" rm -f "$profile" -trap 'rm "$profile" "$profile-"[0-9]* ; rm -rf "$module_dir" t-home-'"$$" EXIT +trap 'rm -f "$profile" "$profile-"[0-9]* ; rm -rf "$module_dir" t-home-'"$$" EXIT # Use `-e' with a non-package expression. if guix package --bootstrap -e +; @@ -203,6 +203,18 @@ if guix package -p "$profile" --delete-generations=12m; then false; else true; fi test "`readlink_base "$profile"`" = "$generation" +# Make sure $profile is a GC root at this point. +real_profile="`readlink -f "$profile"`" +if guix gc -d "$real_profile" +then false; else true; fi +test -d "$real_profile" + +# Now, let's remove all the symlinks to $real_profile, and make sure +# $real_profile is no longer a GC root. +rm "$profile" "$profile"-[0-9]-link +guix gc -d "$real_profile" +[ ! -d "$real_profile" ] + # # Try with the default profile. # -- cgit v1.2.3