mirror of
https://github.com/NixOS/nix
synced 2025-06-25 06:31:14 +02:00
* Propagate the deriver of a path through the substitute mechanism.
* Removed some dead code (successor stuff) from nix-push. * Updated terminology in the tests (store expr -> drv path). * Check that the deriver is set properly in the tests.
This commit is contained in:
parent
582e01c06f
commit
98df735b51
18 changed files with 86 additions and 74 deletions
|
@ -1,10 +1,10 @@
|
|||
export NIX_BUILD_HOOK="build-hook.hook.sh"
|
||||
|
||||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate build-hook.nix)
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate build-hook.nix)
|
||||
|
||||
echo "store expr is $storeExpr"
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
outPath=$($TOP/src/nix-store/nix-store -quf "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -quf "$drvPath")
|
||||
|
||||
echo "output path is $outPath"
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate dependencies.nix)
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate dependencies.nix)
|
||||
|
||||
echo "store expr is $storeExpr"
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
outPath=$($TOP/src/nix-store/nix-store -rvv "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -rvv "$drvPath")
|
||||
|
||||
echo "output path is $outPath"
|
||||
|
||||
text=$(cat "$outPath"/foobar)
|
||||
if test "$text" != "FOOBAR"; then exit 1; fi
|
||||
|
||||
deps=$($TOP/src/nix-store/nix-store -quR "$storeExpr")
|
||||
deps=$($TOP/src/nix-store/nix-store -quR "$drvPath")
|
||||
|
||||
echo "output closure contains $deps"
|
||||
|
||||
|
@ -24,3 +24,7 @@ input2OutPath=$(echo "$deps" | grep "dependencies-input-2")
|
|||
|
||||
# The referers closure of input-2 should include outPath.
|
||||
$TOP/src/nix-store/nix-store -q --referers-closure "$input2OutPath" | grep "$outPath"
|
||||
|
||||
# Check that the derivers are set properly.
|
||||
test $($TOP/src/nix-store/nix-store -q --deriver "$outPath") = "$drvPath"
|
||||
$TOP/src/nix-store/nix-store -q --deriver "$input2OutPath" | grep -q -- "-input-2.drv"
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate fallback.nix)
|
||||
echo "store expr is $storeExpr"
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate fallback.nix)
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
outPath=$($TOP/src/nix-store/nix-store -q --fallback "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -q --fallback "$drvPath")
|
||||
echo "output path is $outPath"
|
||||
|
||||
# Register a non-existant substitute
|
||||
(echo $outPath && echo $TOP/no-such-program && echo 0 && echo 0) | $TOP/src/nix-store/nix-store --substitute
|
||||
(echo $outPath && echo "" && echo $TOP/no-such-program && echo 0 && echo 0) | $TOP/src/nix-store/nix-store --substitute
|
||||
|
||||
# Build the derivation
|
||||
$TOP/src/nix-store/nix-store -r --fallback "$storeExpr"
|
||||
$TOP/src/nix-store/nix-store -r --fallback "$drvPath"
|
||||
|
||||
text=$(cat "$outPath"/hello)
|
||||
if test "$text" != "Hello World!"; then exit 1; fi
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
storeExpr1=$($TOP/src/nix-instantiate/nix-instantiate gc-concurrent.nix)
|
||||
outPath1=$($TOP/src/nix-store/nix-store -q $storeExpr1)
|
||||
drvPath1=$($TOP/src/nix-instantiate/nix-instantiate gc-concurrent.nix)
|
||||
outPath1=$($TOP/src/nix-store/nix-store -q $drvPath1)
|
||||
|
||||
storeExpr2=$($TOP/src/nix-instantiate/nix-instantiate gc-concurrent2.nix)
|
||||
outPath2=$($TOP/src/nix-store/nix-store -q $storeExpr2)
|
||||
drvPath2=$($TOP/src/nix-instantiate/nix-instantiate gc-concurrent2.nix)
|
||||
outPath2=$($TOP/src/nix-store/nix-store -q $drvPath2)
|
||||
|
||||
ln -s $storeExpr2 "$NIX_STATE_DIR"/gcroots/foo2
|
||||
ln -s $drvPath2 "$NIX_STATE_DIR"/gcroots/foo2
|
||||
|
||||
# Start build #1 in the background. It starts immediately.
|
||||
$TOP/src/nix-store/nix-store -rvv "$storeExpr1" &
|
||||
$TOP/src/nix-store/nix-store -rvv "$drvPath1" &
|
||||
pid1=$!
|
||||
|
||||
# Start build #2 in the background after 3 seconds.
|
||||
(sleep 3 && $TOP/src/nix-store/nix-store -rvv "$storeExpr2") &
|
||||
(sleep 3 && $TOP/src/nix-store/nix-store -rvv "$drvPath2") &
|
||||
pid2=$!
|
||||
|
||||
# Run the garbage collector while the build is running. Note: the GC
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate dependencies.nix)
|
||||
outPath=$($TOP/src/nix-store/nix-store -rvv "$storeExpr")
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate dependencies.nix)
|
||||
outPath=$($TOP/src/nix-store/nix-store -rvv "$drvPath")
|
||||
|
||||
# Set a GC root.
|
||||
ln -s $outPath "$NIX_STATE_DIR"/gcroots/foo
|
||||
|
@ -11,4 +11,4 @@ cat $outPath/foobar
|
|||
cat $outPath/input-2/bar
|
||||
|
||||
# Check that the derivation has been GC'd.
|
||||
if cat $storeExpr > /dev/null; then false; fi
|
||||
if cat $drvPath > /dev/null; then false; fi
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate locking.nix)
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate locking.nix)
|
||||
|
||||
echo "store expr is $storeExpr"
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
for i in 1 2 3 4 5; do
|
||||
echo "WORKER $i"
|
||||
$TOP/src/nix-store/nix-store -rvv "$storeExpr" &
|
||||
$TOP/src/nix-store/nix-store -rvv "$drvPath" &
|
||||
done
|
||||
|
||||
sleep 5
|
||||
|
||||
outPath=$($TOP/src/nix-store/nix-store -qvvf "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -qvvf "$drvPath")
|
||||
|
||||
echo "output path is $outPath"
|
||||
|
||||
|
|
|
@ -31,3 +31,7 @@ echo "building $drvPath using substitutes..."
|
|||
$TOP/src/nix-store/nix-store -r $drvPath
|
||||
|
||||
cat $outPath/input-2/bar
|
||||
|
||||
# Check that the derivers are set properly.
|
||||
test $($TOP/src/nix-store/nix-store -q --deriver "$outPath") = "$drvPath"
|
||||
$TOP/src/nix-store/nix-store -q --deriver $(readlink $outPath/input-2) | grep -q -- "-input-2.drv"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate parallel.nix)
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate parallel.nix)
|
||||
|
||||
echo "store expr is $storeExpr"
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
outPath=$($TOP/src/nix-store/nix-store -qfvv -j10000 "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -qfvv -j10000 "$drvPath")
|
||||
|
||||
echo "output path is $outPath"
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate simple.nix)
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate simple.nix)
|
||||
|
||||
echo "store expr is $storeExpr"
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
outPath=$($TOP/src/nix-store/nix-store -rvv "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -rvv "$drvPath")
|
||||
|
||||
echo "output path is $outPath"
|
||||
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# Instantiate.
|
||||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate substitutes.nix)
|
||||
echo "store expr is $storeExpr"
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate substitutes.nix)
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
# Find the output path.
|
||||
outPath=$($TOP/src/nix-store/nix-store -qvv "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -qvv "$drvPath")
|
||||
echo "output path is $outPath"
|
||||
|
||||
regSub() {
|
||||
(echo $1 && echo $2 && echo 3 && echo $outPath && echo Hallo && echo Wereld && echo 0) | $TOP/src/nix-store/nix-store --substitute
|
||||
(echo $1 && echo "" && echo $2 && echo 3 && echo $outPath && echo Hallo && echo Wereld && echo 0) | $TOP/src/nix-store/nix-store --substitute
|
||||
}
|
||||
|
||||
# Register a substitute for the output path.
|
||||
regSub $outPath $(pwd)/substituter.sh
|
||||
|
||||
|
||||
$TOP/src/nix-store/nix-store -rvv "$storeExpr"
|
||||
$TOP/src/nix-store/nix-store -rvv "$drvPath"
|
||||
|
||||
text=$(cat "$outPath"/hello)
|
||||
if test "$text" != "Hallo Wereld"; then exit 1; fi
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# Instantiate.
|
||||
storeExpr=$($TOP/src/nix-instantiate/nix-instantiate substitutes2.nix)
|
||||
echo "store expr is $storeExpr"
|
||||
drvPath=$($TOP/src/nix-instantiate/nix-instantiate substitutes2.nix)
|
||||
echo "derivation is $drvPath"
|
||||
|
||||
# Find the output path.
|
||||
outPath=$($TOP/src/nix-store/nix-store -qvvvvv "$storeExpr")
|
||||
outPath=$($TOP/src/nix-store/nix-store -qvvvvv "$drvPath")
|
||||
echo "output path is $outPath"
|
||||
|
||||
regSub() {
|
||||
(echo $1 && echo $2 && echo 3 && echo $outPath && echo Hallo && echo Wereld && echo 0) | $TOP/src/nix-store/nix-store --substitute
|
||||
(echo $1 && echo "" && echo $2 && echo 3 && echo $outPath && echo Hallo && echo Wereld && echo 0) | $TOP/src/nix-store/nix-store --substitute
|
||||
}
|
||||
|
||||
# Register a substitute for the output path.
|
||||
|
@ -17,7 +17,7 @@ regSub $outPath $(pwd)/substituter.sh
|
|||
# precedence over the previous one. It will fail.
|
||||
regSub $outPath $(pwd)/substituter2.sh
|
||||
|
||||
$TOP/src/nix-store/nix-store -rvv "$storeExpr"
|
||||
$TOP/src/nix-store/nix-store -rvv "$drvPath"
|
||||
|
||||
text=$(cat "$outPath"/hello)
|
||||
if test "$text" != "Hallo Wereld"; then exit 1; fi
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue