mirror of
https://github.com/NixOS/nix
synced 2025-07-10 04:43:53 +02:00
Try to realise CA derivations during queryMissing
This enables nix to correctly report what will be fetched in the case that everything is a cache hit. Note however that if an intermediate build of something which is not cached could still cause products to end up being substituted if the intermediate build results in a CA path which is in the cache. Fixes #8615. Signed-off-by: Peter Waller <p@pwaller.net>
This commit is contained in:
parent
d00fe5f225
commit
4b1bd822ac
5 changed files with 101 additions and 11 deletions
51
tests/ca/build-cache.sh
Normal file
51
tests/ca/build-cache.sh
Normal file
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source common.sh
|
||||
|
||||
# The substituters didn't work prior to this time.
|
||||
requireDaemonNewerThan "2.18.0pre20230808"
|
||||
|
||||
drv=$(nix-instantiate ./content-addressed.nix -A rootCA --arg seed 1)^out
|
||||
nix derivation show "$drv" --arg seed 1
|
||||
|
||||
buildAttr () {
|
||||
local derivationPath=$1
|
||||
local seedValue=$2
|
||||
shift; shift
|
||||
local args=("./content-addressed.nix" "-A" "$derivationPath" --arg seed "$seedValue" "--no-out-link")
|
||||
args+=("$@")
|
||||
nix-build "${args[@]}"
|
||||
}
|
||||
|
||||
copyAttr () {
|
||||
local derivationPath=$1
|
||||
local seedValue=$2
|
||||
shift; shift
|
||||
local args=("-f" "./content-addressed.nix" "$derivationPath" --arg seed "$seedValue")
|
||||
args+=("$@")
|
||||
# Note: to copy CA derivations, we need to copy the realisations, which
|
||||
# currently requires naming the installables, not just the derivation output
|
||||
# path.
|
||||
nix copy --to file://$cacheDir "${args[@]}"
|
||||
}
|
||||
|
||||
testRemoteCacheFor () {
|
||||
local derivationPath=$1
|
||||
clearCache
|
||||
copyAttr "$derivationPath" 1
|
||||
clearStore
|
||||
# Check nothing gets built.
|
||||
buildAttr "$derivationPath" 1 --option substituters file://$cacheDir --no-require-sigs |& grepQuietInverse " will be built:"
|
||||
}
|
||||
|
||||
testRemoteCache () {
|
||||
testRemoteCacheFor rootCA
|
||||
testRemoteCacheFor dependentCA
|
||||
testRemoteCacheFor dependentNonCA
|
||||
testRemoteCacheFor dependentFixedOutput
|
||||
testRemoteCacheFor dependentForBuildCA
|
||||
testRemoteCacheFor dependentForBuildNonCA
|
||||
}
|
||||
|
||||
clearStore
|
||||
testRemoteCache
|
Loading…
Add table
Add a link
Reference in a new issue