mirror of
https://github.com/NixOS/nix.git
synced 2024-11-22 06:42:28 +00:00
9f39dda66c
I don't love the way this code looks. There are two larger problems: - eval, build/scratch, destination stores (#5025) should have different types to reflect the fact that they are used for different purposes and those purposes correspond to different operations. It should be impossible to "use the wrong store" in my cases. - Since drvs can end up in both the eval and build/scratch store, we should have some sort of union/layered store (not on the file sytem level, just conceptual level) that allows accessing both. This would get rid of the ugly "check both" boilerplate in this PR. Still, it might be better to land this now / soon after minimal cleanup, so we have a concrete idea of what problem better abstractions are supposed to solve.
43 lines
1.3 KiB
Bash
43 lines
1.3 KiB
Bash
source common.sh
|
|
|
|
# Using `--eval-store` with the daemon will eventually copy everything
|
|
# to the build store, invalidating most of the tests here
|
|
needLocalStore "“--eval-store” doesn't achieve much with the daemon"
|
|
|
|
eval_store=$TEST_ROOT/eval-store
|
|
|
|
clearStore
|
|
rm -rf "$eval_store"
|
|
|
|
nix build -f dependencies.nix --eval-store "$eval_store" -o "$TEST_ROOT/result"
|
|
[[ -e $TEST_ROOT/result/foobar ]]
|
|
if [[ ! -n "${NIX_TESTS_CA_BY_DEFAULT:-}" ]]; then
|
|
# Resolved CA derivations are written to store for building
|
|
#
|
|
# TODO when we something more systematic
|
|
# (https://github.com/NixOS/nix/issues/5025) that distinguishes
|
|
# between scratch storage for building and the final destination
|
|
# store, we'll be able to make this unconditional again -- resolved
|
|
# derivations should only appear in the scratch store.
|
|
(! ls $NIX_STORE_DIR/*.drv)
|
|
fi
|
|
ls $eval_store/nix/store/*.drv
|
|
|
|
clearStore
|
|
rm -rf "$eval_store"
|
|
|
|
nix-instantiate dependencies.nix --eval-store "$eval_store"
|
|
(! ls $NIX_STORE_DIR/*.drv)
|
|
ls $eval_store/nix/store/*.drv
|
|
|
|
clearStore
|
|
rm -rf "$eval_store"
|
|
|
|
nix-build dependencies.nix --eval-store "$eval_store" -o "$TEST_ROOT/result"
|
|
[[ -e $TEST_ROOT/result/foobar ]]
|
|
if [[ ! -n "${NIX_TESTS_CA_BY_DEFAULT:-}" ]]; then
|
|
# See above
|
|
(! ls $NIX_STORE_DIR/*.drv)
|
|
fi
|
|
ls $eval_store/nix/store/*.drv
|