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) { if (hook) {
bool allValid = true; bool allValid = true;
for (auto & i : drv->outputsAndOptPaths(worker.store)) { for (auto & [outputName, outputPath] : worker.store.queryPartialDerivationOutputMap(drvPath)) {
if (!i.second.second || !worker.store.isValidPath(*i.second.second)) if (!outputPath || !worker.store.isValidPath(*outputPath))
allValid = false; allValid = false;
else else
finalOutputs.insert_or_assign(i.first, *i.second.second); finalOutputs.insert_or_assign(outputName, *outputPath);
} }
if (allValid) return; if (allValid) return;
} }