about summary refs log tree commit diff
path: root/src/libstore
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/build.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index b62991dff0f3..d05ff75064fe 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -1105,8 +1105,10 @@ void DerivationGoal::repairClosure()
         if (worker.store.pathContentsGood(*i)) continue;
         printMsg(lvlError, format("found corrupted or missing path `%1%' in the output closure of `%2%'") % *i % drvPath);
         Path drvPath2 = outputsToDrv[*i];
-        if (drvPath2 == "") throw Error(format("don't know how to repair corrupted or missing path `%1%'") % *i);
-        addWaitee(worker.makeDerivationGoal(drvPath2, true));
+        if (drvPath2 == "")
+            addWaitee(worker.makeSubstitutionGoal(*i, true));
+        else
+            addWaitee(worker.makeDerivationGoal(drvPath2, true));
     }
 
     if (waitees.empty()) {