lix-releng-staging/tests/init.sh

106 lines
3.5 KiB
Bash
Raw Normal View History

source common.sh
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"
2005-02-01 17:50:48 +00:00
mkdir "$NIX_LOCALSTATE_DIR"
2005-02-18 08:40:52 +00:00
mkdir -p "$NIX_LOG_DIR"/drvs
mkdir "$NIX_STATE_DIR"
mkdir "$NIX_DB_DIR"
2005-02-15 09:39:12 +00:00
mkdir "$NIX_CONF_DIR"
mkdir $NIX_BIN_DIR
2006-03-01 12:51:18 +00:00
ln -s $nixstore $NIX_BIN_DIR/
ln -s $nixinstantiate $NIX_BIN_DIR/
ln -s $nixhash $NIX_BIN_DIR/
ln -s $nixenv $NIX_BIN_DIR/
2007-08-13 14:56:40 +00:00
ln -s $nixworker $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-prefetch-url $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-collect-garbage $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-build $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-install-package $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-push $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-pull $NIX_BIN_DIR/
ln -s $bzip2_bin_test/bzip2 $NIX_BIN_DIR/
ln -s $bzip2_bin_test/bunzip2 $NIX_BIN_DIR/
mkdir $NIX_BIN_DIR/nix
2008-07-18 20:03:12 +00:00
ln -s $TOP/scripts/copy-from-other-stores.pl $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/
2005-02-01 17:50:48 +00:00
mkdir -p "$NIX_STATE_DIR"/manifests
mkdir -p "$NIX_STATE_DIR"/gcroots
mkdir -p "$NIX_STATE_DIR"/temproots
2006-02-08 14:32:06 +00:00
mkdir -p "$NIX_STATE_DIR"/profiles
ln -s "$NIX_STATE_DIR"/profiles "$NIX_STATE_DIR"/gcroots/
2005-02-15 09:39:12 +00:00
cat > "$NIX_CONF_DIR"/nix.conf <<EOF
gc-keep-outputs = false
gc-keep-derivations = false
env-keep-derivations = false
EOF
mkdir $NIX_DATA_DIR/nix
2005-03-21 16:28:58 +00:00
cp -pr $TOP/corepkgs $NIX_DATA_DIR/nix/
2005-01-28 11:05:56 +00:00
# Bah, script has the prefix hard-coded. This is really messy stuff
# (and likely to fail).
2005-01-27 19:15:12 +00:00
for i in \
$NIX_DATA_DIR/nix/corepkgs/nar/nar.sh \
$NIX_BIN_DIR/nix/download-using-manifests.pl \
2008-07-18 20:03:12 +00:00
$NIX_BIN_DIR/nix/copy-from-other-stores.pl \
$NIX_BIN_DIR/nix-prefetch-url \
$NIX_BIN_DIR/nix-collect-garbage \
$NIX_BIN_DIR/nix-build \
$NIX_BIN_DIR/nix-install-package \
$NIX_BIN_DIR/nix-push \
$NIX_BIN_DIR/nix-pull \
$NIX_BIN_DIR/nix/readmanifest.pm \
; do
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^" \
2005-01-28 11:05:56 +00:00
-e "s^$REAL_STORE_DIR\([^/]\)^$NIX_STORE_DIR\1^"
mv $i.tmp $i
chmod +x $i
done
# Another ugly hack.
2006-05-29 21:53:58 +00:00
sed "s|^$|PATH='$PATH'|" < $NIX_DATA_DIR/nix/corepkgs/nar/nar.sh > tmp
chmod +x tmp
mv tmp $NIX_DATA_DIR/nix/corepkgs/nar/nar.sh
# An uberhack for Mac OS X 10.5: download-using-manifests uses Perl,
# and Perl links against Darwin's libutil.dylib (in /usr/lib), but
# when running "make check", the libtool wrapper script around the Nix
# binaries sets DYLD_LIBRARY_PATH so that Perl finds Nix's (completely
# different) libutil --- so it barfs. So generate a shell wrapper
# around download-using-manifests that clears DYLD_LIBRARY_PATH.
mv $NIX_BIN_DIR/nix/download-using-manifests.pl $NIX_BIN_DIR/nix/download-using-manifests.pl.real
cat > $NIX_BIN_DIR/nix/download-using-manifests.pl <<EOF
#! $SHELL -e
export DYLD_LIBRARY_PATH=
exec $NIX_BIN_DIR/nix/download-using-manifests.pl.real "\$@"
EOF
chmod +x $NIX_BIN_DIR/nix/download-using-manifests.pl
2008-07-18 20:03:12 +00:00
mkdir -p $NIX_BIN_DIR/nix/substituters
mv $NIX_BIN_DIR/nix/copy-from-other-stores.pl $NIX_BIN_DIR/nix/substituters/copy-from-other-stores.pl
mv $NIX_BIN_DIR/nix/download-using-manifests.pl $NIX_BIN_DIR/nix/substituters/download-using-manifests.pl
# Initialise the database.
2006-03-01 12:51:18 +00:00
$nixstore --init
# Did anything happen?
test -e "$NIX_DB_DIR"/info
test -e "$NIX_DB_DIR"/referrer