mirror of
https://github.com/NixOS/nix
synced 2025-06-30 07:33:16 +02:00
Merge pull request #4732 from NixOS/4725-always-register-the-realisations
Aways register the realisations
This commit is contained in:
commit
4549d65b4f
3 changed files with 40 additions and 15 deletions
|
@ -736,18 +736,9 @@ std::set<RealisedPath> toRealisedPaths(
|
|||
output.first);
|
||||
auto outputId = DrvOutput{outputHashes.at(output.first), output.first};
|
||||
auto realisation = store->queryRealisation(outputId);
|
||||
if (!realisation) {
|
||||
// TODO: remove this check once #4725 is fixed
|
||||
// as we’ll have the guaranty that if
|
||||
// `output.second` exists, then the realisation
|
||||
// will be there too
|
||||
if (output.second)
|
||||
res.insert(*output.second);
|
||||
else
|
||||
throw Error("cannot operate on an output of unbuilt content-addresed derivation '%s'", outputId.to_string());
|
||||
} else {
|
||||
res.insert(RealisedPath{*realisation});
|
||||
}
|
||||
if (!realisation)
|
||||
throw Error("cannot operate on an output of unbuilt content-addresed derivation '%s'", outputId.to_string());
|
||||
res.insert(RealisedPath{*realisation});
|
||||
}
|
||||
else {
|
||||
// If ca-derivations isn't enabled, behave as if
|
||||
|
|
|
@ -1269,12 +1269,23 @@ void DerivationGoal::checkPathValidity()
|
|||
};
|
||||
}
|
||||
if (settings.isExperimentalFeatureEnabled("ca-derivations")) {
|
||||
if (auto real = worker.store.queryRealisation(
|
||||
DrvOutput{initialOutputs.at(i.first).outputHash, i.first})) {
|
||||
auto drvOutput = DrvOutput{initialOutputs.at(i.first).outputHash, i.first};
|
||||
if (auto real = worker.store.queryRealisation(drvOutput)) {
|
||||
info.known = {
|
||||
.path = real->outPath,
|
||||
.status = PathStatus::Valid,
|
||||
};
|
||||
} else if (info.known && info.known->status == PathStatus::Valid) {
|
||||
// We know the output because it' a static output of the
|
||||
// derivation, and the output path is valid, but we don't have
|
||||
// its realisation stored (probably because it has been built
|
||||
// without the `ca-derivations` experimental flag)
|
||||
worker.store.registerDrvOutput(
|
||||
Realisation{
|
||||
drvOutput,
|
||||
info.known->path,
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue