Properly bypass the registering step when all outputs are present

There was already some logic for that, but it didn't handle the case of
content-addressed outputs, so extend it a bit for that
This commit is contained in:
regnat 2021-01-26 10:02:03 +01:00
parent 69666b951e
commit 527da73690

View file

@ -3001,11 +3001,11 @@ void DerivationGoal::registerOutputs()
*/
if (hook) {
bool allValid = true;
for (auto & i : drv->outputsAndOptPaths(worker.store)) {
if (!i.second.second || !worker.store.isValidPath(*i.second.second))
for (auto & [outputName, outputPath] : worker.store.queryPartialDerivationOutputMap(drvPath)) {
if (!outputPath || !worker.store.isValidPath(*outputPath))
allValid = false;
else
finalOutputs.insert_or_assign(i.first, *i.second.second);
finalOutputs.insert_or_assign(outputName, *outputPath);
}
if (allValid) return;
}