2024-06-03 23:54:17 +03:00
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
2024-11-01 15:56:50 +02:00
|
|
|
|
source common.sh
|
2021-05-19 14:35:46 +03:00
|
|
|
|
|
2021-07-26 07:54:55 +03:00
|
|
|
|
requireDaemonNewerThan "2.4pre20210625"
|
|
|
|
|
|
2021-05-19 14:35:46 +03:00
|
|
|
|
export REMOTE_STORE_DIR="$TEST_ROOT/remote_store"
|
|
|
|
|
export REMOTE_STORE="file://$REMOTE_STORE_DIR"
|
|
|
|
|
|
2024-06-03 23:54:17 +03:00
|
|
|
|
rm -rf "$REMOTE_STORE_DIR"
|
2021-05-19 14:35:46 +03:00
|
|
|
|
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
|
2021-06-25 12:17:19 +03:00
|
|
|
|
nix build -f nondeterministic.nix dep2 --no-link
|
2021-05-19 14:35:46 +03:00
|
|
|
|
|
|
|
|
|
# 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`.
|
2021-06-25 12:17:19 +03:00
|
|
|
|
nix build --substituters "$REMOTE_STORE" -f nondeterministic.nix toplevel --no-require-sigs --no-link
|