summary refs log tree commit diff
path: root/tests/guix-package.sh
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-02-06 17:52:07 +0100
committerLudovic Courtès <ludo@gnu.org>2015-02-06 17:56:22 +0100
commitc9323a4c69d48bc9af3825674e43a3febbb42091 (patch)
tree5b3d5e9dec0d8ba5bfb6adc0d59e1a6ce5a31b00 /tests/guix-package.sh
parent3df5acf332fd7b5c21c09961eaa5353c1bd08c60 (diff)
downloadguix-c9323a4c69d48bc9af3825674e43a3febbb42091.tar.gz
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.
Diffstat (limited to 'tests/guix-package.sh')
-rw-r--r--tests/guix-package.sh14
1 files changed, 13 insertions, 1 deletions
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.
 #