Add a test for the “two glibc” issue
This commit is contained in:
parent
4a5aa1dbf6
commit
a5df669bc6
26
tests/ca/duplicate-realisation-in-closure.sh
Normal file
26
tests/ca/duplicate-realisation-in-closure.sh
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
source ./common.sh
|
||||||
|
|
||||||
|
sed -i 's/experimental-features .*/& ca-derivations ca-references/' "$NIX_CONF_DIR"/nix.conf
|
||||||
|
|
||||||
|
export REMOTE_STORE_DIR="$TEST_ROOT/remote_store"
|
||||||
|
export REMOTE_STORE="file://$REMOTE_STORE_DIR"
|
||||||
|
|
||||||
|
rm -rf $REMOTE_STORE_DIR
|
||||||
|
clearStore
|
||||||
|
|
||||||
|
# Build dep1 and push that to the binary cache.
|
||||||
|
# This entails building (and pushing) current-time.
|
||||||
|
nix copy --to "$REMOTE_STORE" -f nondeterministic.nix dep1
|
||||||
|
clearStore
|
||||||
|
sleep 2 # To make sure that `$(date)` will be different
|
||||||
|
# Build dep2.
|
||||||
|
# As we’ve cleared the cache, we’ll have to rebuild current-time. And because
|
||||||
|
# the current time isn’t the same as before, this will yield a new (different)
|
||||||
|
# realisation
|
||||||
|
nix build -f nondeterministic.nix dep2
|
||||||
|
|
||||||
|
# Build something that depends both on dep1 and dep2.
|
||||||
|
# If everything goes right, we should rebuild dep2 rather than fetch it from
|
||||||
|
# the cache (because that would mean duplicating `current-time` in the closure),
|
||||||
|
# and have `dep1 == dep2`.
|
||||||
|
nix build --substituters "$REMOTE_STORE" -f nondeterministic.nix toplevel --no-require-sigs
|
35
tests/ca/nondeterministic.nix
Normal file
35
tests/ca/nondeterministic.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
with import ./config.nix;
|
||||||
|
|
||||||
|
let mkCADerivation = args: mkDerivation ({
|
||||||
|
__contentAddressed = true;
|
||||||
|
outputHashMode = "recursive";
|
||||||
|
outputHashAlgo = "sha256";
|
||||||
|
} // args);
|
||||||
|
in
|
||||||
|
|
||||||
|
rec {
|
||||||
|
currentTime = mkCADerivation {
|
||||||
|
name = "current-time";
|
||||||
|
buildCommand = ''
|
||||||
|
mkdir $out
|
||||||
|
echo $(date) > $out/current-time
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
dep = seed: mkCADerivation {
|
||||||
|
name = "dep";
|
||||||
|
inherit seed;
|
||||||
|
buildCommand = ''
|
||||||
|
echo ${currentTime} > $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
dep1 = dep 1;
|
||||||
|
dep2 = dep 2;
|
||||||
|
toplevel = mkCADerivation {
|
||||||
|
name = "toplevel";
|
||||||
|
buildCommand = ''
|
||||||
|
test ${dep1} == ${dep2}
|
||||||
|
touch $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@ nix_tests = \
|
||||||
compute-levels.sh \
|
compute-levels.sh \
|
||||||
ca/build.sh \
|
ca/build.sh \
|
||||||
ca/build-with-garbage-path.sh \
|
ca/build-with-garbage-path.sh \
|
||||||
|
ca/duplicate-realisation-in-closure.sh \
|
||||||
ca/substitute.sh \
|
ca/substitute.sh \
|
||||||
ca/signatures.sh \
|
ca/signatures.sh \
|
||||||
ca/nix-run.sh \
|
ca/nix-run.sh \
|
||||||
|
|
Loading…
Reference in a new issue