set -e datadir="@datadir@" profiledir="@sysconfdir@/profile.d" export TEST_ROOT=$(pwd)/test-tmp export NIX_STORE_DIR if ! NIX_STORE_DIR=$(readlink -f $TEST_ROOT/store 2> /dev/null); then # Maybe the build directory is symlinked. export NIX_IGNORE_SYMLINK_STORE=1 NIX_STORE_DIR=$TEST_ROOT/store fi export NIX_LOCALSTATE_DIR=$TEST_ROOT/var export NIX_LOG_DIR=$TEST_ROOT/var/log/nix export NIX_STATE_DIR=$TEST_ROOT/var/nix export NIX_DB_DIR=$TEST_ROOT/db export NIX_CONF_DIR=$TEST_ROOT/etc export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests export _NIX_TEST_SHARED=$TEST_ROOT/shared export NIX_REMOTE=$NIX_REMOTE_ export PATH=@bindir@:$PATH export NIX_BUILD_HOOK= export dot=@dot@ export xmllint="@xmllint@" export xmlflags="@xmlflags@" export xsltproc="@xsltproc@" export SHELL="@bash@" export version=@PACKAGE_VERSION@ export system=@system@ readLink() { ls -l "$1" | sed 's/.*->\ //' } clearProfiles() { profiles="$NIX_STATE_DIR"/profiles rm -rf $profiles } clearStore() { echo "clearing store..." chmod -R +w "$NIX_STORE_DIR" rm -rf "$NIX_STORE_DIR" mkdir "$NIX_STORE_DIR" rm -rf "$NIX_DB_DIR" mkdir "$NIX_DB_DIR" nix-store --init clearProfiles rm -f "$NIX_STATE_DIR"/gcroots/auto/* rm -f "$NIX_STATE_DIR"/gcroots/ref } clearManifests() { rm -f $NIX_STATE_DIR/manifests/* } startDaemon() { # Start the daemon, wait for the socket to appear. !!! # ‘nix-daemon’ should have an option to fork into the background. rm -f $NIX_STATE_DIR/daemon-socket/socket nix-daemon & for ((i = 0; i < 30; i++)); do if [ -e $NIX_STATE_DIR/daemon-socket/socket ]; then break; fi sleep 1 done pidDaemon=$! trap "kill -9 $pidDaemon" EXIT export NIX_REMOTE=daemon } killDaemon() { kill -9 $pidDaemon wait $pidDaemon || true trap "" EXIT } fail() { echo "$1" exit 1 } set -x