mirror of
https://github.com/NixOS/nix.git
synced 2025-12-11 03:21:03 +01:00
This restores compatibility with Nix 2.18, which behaved this way. Note that this doesn't scan for the actually visible references. Unlike in Nix 2.18, we only do this for paths with context, i.e. it applies to `builtins.storePath "/nix/store/bla..."` but not `"/nix/store/bla..."`. We don't want the latter because it shouldn't matter whether a source file happens to be in the Nix store.
64 lines
2.1 KiB
Bash
Executable file
64 lines
2.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
source common.sh
|
|
|
|
TODO_NixOS
|
|
|
|
clearStoreIfPossible
|
|
|
|
export NIX_PATH=config="${config_nix}"
|
|
|
|
if nix-instantiate --readonly-mode ./import-from-derivation.nix -A result; then
|
|
echo "read-only evaluation of an imported derivation unexpectedly failed"
|
|
exit 1
|
|
fi
|
|
|
|
outPath=$(nix-build ./import-from-derivation.nix -A result --no-out-link)
|
|
|
|
[ "$(cat "$outPath")" = FOO579 ]
|
|
|
|
# Check that we can have access to the entire closure of a derivation output.
|
|
nix build --no-link --restrict-eval -I src=. -f ./import-from-derivation.nix importAddPathExpr -v
|
|
|
|
# FIXME: the next tests are broken on CA.
|
|
if [[ -n "${NIX_TESTS_CA_BY_DEFAULT:-}" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
# Test filterSource on the result of a derivation.
|
|
outPath2=$(nix-build ./import-from-derivation.nix -A addPath --no-out-link)
|
|
[[ "$(cat "$outPath2")" = BLAFOO579 ]]
|
|
|
|
# Test that applying builtins.path to the result of a derivation propagates all references
|
|
for attr in pathFromDerivation pathFromDerivation2; do
|
|
outPath3=$(nix eval --raw -f ./import-from-derivation.nix "$attr")
|
|
refs=$(nix path-info --json "$outPath3" | jq -r '.[].references.[]')
|
|
[[ $(printf "%s" "$refs" | wc -w) = 2 ]]
|
|
[[ $refs =~ -step1 ]]
|
|
[[ $refs =~ -symlink ]]
|
|
done
|
|
|
|
# Test that IFD works with a chroot store.
|
|
if canUseSandbox; then
|
|
|
|
store2="$TEST_ROOT/store2"
|
|
store2_url="$store2?store=$NIX_STORE_DIR"
|
|
|
|
# Copy the derivation outputs to the chroot store to avoid having
|
|
# to actually build anything, as that would fail due to the lack
|
|
# of a shell in the sandbox. We only care about testing the IFD
|
|
# semantics.
|
|
for i in bar result addPath; do
|
|
nix copy --to "$store2_url" --no-check-sigs "$(nix-build ./import-from-derivation.nix -A "$i" --no-out-link)"
|
|
done
|
|
|
|
clearStore
|
|
|
|
outPath_check=$(nix-build ./import-from-derivation.nix -A result --no-out-link --store "$store2_url")
|
|
[[ "$outPath" = "$outPath_check" ]]
|
|
[[ ! -e "$outPath" ]]
|
|
[[ -e "$store2/nix/store/$(basename "$outPath")" ]]
|
|
|
|
outPath2_check=$(nix-build ./import-from-derivation.nix -A addPath --no-out-link --store "$store2_url")
|
|
[[ "$outPath2" = "$outPath2_check" ]]
|
|
fi
|