forked from lix-project/lix
![Eelco Dolstra](/assets/img/avatar_default.png)
roots to a per-process temporary file in /nix/var/nix/temproots while holding a write lock on that file. The garbage collector acquires read locks on all those files, thus blocking further progress in other Nix processes, and reads the sets of temporary roots.
58 lines
1.7 KiB
Bash
58 lines
1.7 KiB
Bash
echo "NIX_STORE_DIR=$NIX_STORE_DIR NIX_DB_DIR=$NIX_DB_DIR"
|
|
|
|
test -n "$TEST_ROOT"
|
|
if test -d "$TEST_ROOT"; then
|
|
chmod -R u+w "$TEST_ROOT"
|
|
rm -rf "$TEST_ROOT"
|
|
fi
|
|
mkdir "$TEST_ROOT"
|
|
|
|
mkdir "$NIX_STORE_DIR"
|
|
mkdir "$NIX_DATA_DIR"
|
|
mkdir "$NIX_LOG_DIR"
|
|
mkdir "$NIX_STATE_DIR"
|
|
mkdir "$NIX_DB_DIR"
|
|
|
|
mkdir $NIX_BIN_DIR
|
|
ln -s $TOP/src/nix-store/nix-store $NIX_BIN_DIR/
|
|
ln -s $TOP/src/nix-instantiate/nix-instantiate $NIX_BIN_DIR/
|
|
ln -s $TOP/src/nix-hash/nix-hash $NIX_BIN_DIR/
|
|
ln -s $TOP/scripts/nix-prefetch-url $NIX_BIN_DIR/
|
|
ln -s $TOP/scripts/nix-collect-garbage $NIX_BIN_DIR/
|
|
mkdir $NIX_BIN_DIR/nix
|
|
ln -s $TOP/scripts/download-using-manifests.pl $NIX_BIN_DIR/nix/
|
|
ln -s $TOP/scripts/readmanifest.pm $NIX_BIN_DIR/nix/
|
|
|
|
mkdir -p "$NIX_LOCALSTATE_DIR"/nix/manifests
|
|
mkdir -p "$NIX_LOCALSTATE_DIR"/nix/gcroots
|
|
mkdir -p "$NIX_LOCALSTATE_DIR"/log/nix
|
|
mkdir -p "$NIX_LOCALSTATE_DIR"/temproots
|
|
|
|
mkdir $NIX_DATA_DIR/nix
|
|
cp -prd $TOP/corepkgs $NIX_DATA_DIR/nix/
|
|
# Bah, script has the prefix hard-coded. This is really messy stuff
|
|
# (and likely to fail).
|
|
for i in \
|
|
$NIX_DATA_DIR/nix/corepkgs/nar/nar.sh \
|
|
$NIX_DATA_DIR/nix/corepkgs/fetchurl/builder.sh \
|
|
$NIX_BIN_DIR/nix/download-using-manifests.pl \
|
|
$NIX_BIN_DIR/nix-prefetch-url \
|
|
$NIX_BIN_DIR/nix-collect-garbage \
|
|
; do
|
|
echo "$REAL_BIN_DIR"
|
|
sed < $i > $i.tmp \
|
|
-e "s^$REAL_BIN_DIR^$NIX_BIN_DIR^" \
|
|
-e "s^$REAL_LIBEXEC_DIR^$NIX_LIBEXEC_DIR^" \
|
|
-e "s^$REAL_LOCALSTATE_DIR^$NIX_LOCALSTATE_DIR^" \
|
|
-e "s^$REAL_DATA_DIR^$NIX_DATA_DIR^" \
|
|
-e "s^$REAL_STORE_DIR\([^/]\)^$NIX_STORE_DIR\1^"
|
|
mv $i.tmp $i
|
|
chmod +x $i
|
|
done
|
|
|
|
# Initialise the database.
|
|
$TOP/src/nix-store/nix-store --init
|
|
|
|
# Did anything happen?
|
|
test -e "$NIX_DB_DIR"/validpaths
|