-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Showing
5 changed files
with
101 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters