summaryrefslogtreecommitdiff
path: root/tests/guix-register.sh
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-07-18 11:03:50 +0200
committerLudovic Courtès <ludo@gnu.org>2014-07-18 20:40:51 +0200
commit689142cd759457f375230a00dc719ddc00dc2fe4 (patch)
treed605e372177e1a2f3c895d5cfb86c401d3a1de38 /tests/guix-register.sh
parent1c00f83650d9412f140cce6766753a611330d6f1 (diff)
downloadpatches-689142cd759457f375230a00dc719ddc00dc2fe4.tar
patches-689142cd759457f375230a00dc719ddc00dc2fe4.tar.gz
guix-register: Add '--state-directory' parameter.
* nix/guix-register/guix-register.cc (GUIX_OPT_STATE_DIRECTORY): New macro. (parse_opt): Honor it. * tests/guix-register.sh: Add test with '--state-directory'. * guix/store.scm (register-path): Add #:state-directory parameter.
Diffstat (limited to 'tests/guix-register.sh')
-rw-r--r--tests/guix-register.sh72
1 files changed, 43 insertions, 29 deletions
diff --git a/tests/guix-register.sh b/tests/guix-register.sh
index 28b799b5c1..e258ec1244 100644
--- a/tests/guix-register.sh
+++ b/tests/guix-register.sh
@@ -79,34 +79,48 @@ guix-register -p "$new_store" < "$closure"
# Doing it a second time shouldn't hurt.
guix-register --prefix "$new_store" "$closure"
-# Now make sure this is recognized as valid.
-
-NIX_STORE_DIR="$new_store_dir"
-NIX_STATE_DIR="$new_store$localstatedir"
-NIX_LOG_DIR="$new_store$localstatedir/log/guix"
-NIX_DB_DIR="$new_store$localstatedir/guix/db"
-
-export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR NIX_STATE_DIR \
- NIX_LOG_DIR NIX_DB_DIR
-
-guix-daemon --disable-chroot &
-subdaemon_pid=$!
-exit_hook="kill $subdaemon_pid"
+# Same, but with the database stored in a different place.
+guix-register -p "$new_store" \
+ --state-directory "$new_store/chbouib" "$closure"
-final_name="$storedir/`basename $to_copy`"
+# Now make sure this is recognized as valid.
-# At this point the copy in $new_store must be valid, and unreferenced.
-# The database under $new_store uses the $final_name, but we can't use
-# that name in a 'valid-path?' query because 'assertStorePath' would kill
-# us because of the wrong prefix. So we just list dead paths instead.
-guile -c "
- (use-modules (guix store))
- (define s (open-connection))
- (exit (equal? (list \"$copied\") (dead-paths s)))"
-
-# When 'sqlite3' is available, check the name in the database.
-if type -P sqlite3
-then
- echo "select * from ValidPaths where path=\"$final_name\";" | \
- sqlite3 $NIX_DB_DIR/db.sqlite
-fi
+ls -R "$new_store"
+for state_dir in "$new_store$localstatedir/guix" "$new_store/chbouib"
+do
+ NIX_STORE_DIR="$new_store_dir"
+ NIX_STATE_DIR="$new_store$state_dir"
+ NIX_LOG_DIR="$new_store$state_dir/log/guix"
+ NIX_DB_DIR="$new_store$state_dir/db"
+
+ export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR NIX_STATE_DIR \
+ NIX_LOG_DIR NIX_DB_DIR
+
+ guix-daemon --disable-chroot &
+ subdaemon_pid=$!
+ exit_hook="kill $subdaemon_pid"
+
+ final_name="$storedir/`basename $to_copy`"
+
+ # At this point the copy in $new_store must be valid, and unreferenced.
+ # The database under $NIX_DB_DIR uses the $final_name, but we can't use
+ # that name in a 'valid-path?' query because 'assertStorePath' would kill
+ # us because of the wrong prefix. So we just list dead paths instead.
+ guile -c "
+ (use-modules (guix store))
+ (define s (open-connection))
+ (exit (equal? (list \"$copied\") (dead-paths s)))"
+
+ # Kill the daemon so we can access the database below (otherwise we may
+ # get "database is locked" errors.)
+ kill $subdaemon_pid
+ exit_hook=":"
+ while kill -0 $subdaemon_pid ; do sleep 0.5 ; done
+
+ # When 'sqlite3' is available, check the name in the database.
+ if type -P sqlite3
+ then
+ echo "select * from ValidPaths where path=\"$final_name\";" | \
+ sqlite3 "$NIX_DB_DIR/db.sqlite"
+ fi
+done