Merge pull request #7465 from edolstra/impure-derivations-dry-run

Fix a crash in DerivedPath::Built::toJSON() with impure derivations
This commit is contained in:
Eelco Dolstra 2022-12-15 18:15:23 +01:00 committed by GitHub
commit 26c7602c39
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 4 deletions

View file

@ -22,9 +22,10 @@ nlohmann::json DerivedPath::Built::toJSON(ref<Store> store) const {
const auto knownOutputs = store->queryPartialDerivationOutputMap(drvPath); const auto knownOutputs = store->queryPartialDerivationOutputMap(drvPath);
for (const auto & output : outputs) { for (const auto & output : outputs) {
auto knownOutput = get(knownOutputs, output); auto knownOutput = get(knownOutputs, output);
res["outputs"][output] = (knownOutput && *knownOutput) if (knownOutput && *knownOutput)
? store->printStorePath(**knownOutput) res["outputs"][output] = store->printStorePath(**knownOutput);
: nullptr; else
res["outputs"][output] = nullptr;
} }
return res; return res;
} }

View file

@ -12,6 +12,7 @@ clearStore
# Basic test of impure derivations: building one a second time should not use the previous result. # Basic test of impure derivations: building one a second time should not use the previous result.
printf 0 > $TEST_ROOT/counter printf 0 > $TEST_ROOT/counter
nix build --dry-run --json --file ./impure-derivations.nix impure.all
json=$(nix build -L --no-link --json --file ./impure-derivations.nix impure.all) json=$(nix build -L --no-link --json --file ./impure-derivations.nix impure.all)
path1=$(echo $json | jq -r .[].outputs.out) path1=$(echo $json | jq -r .[].outputs.out)
path1_stuff=$(echo $json | jq -r .[].outputs.stuff) path1_stuff=$(echo $json | jq -r .[].outputs.stuff)