Skip to content

Commit

Permalink
DerivationGoal: only retry if output closure incomplete is only problem
Browse files Browse the repository at this point in the history
(cherry picked from commit bd9eb5c)
  • Loading branch information
roberth committed Dec 22, 2020
1 parent 8803753 commit c29fffe
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/libstore/build.cc
Expand Up @@ -1222,8 +1222,13 @@ void DerivationGoal::outputsSubstituted()

/* If the substitutes form an incomplete closure, then we should
build the dependencies of this derivation, but after that, we
can still use the substitutes for this derivation itself. */
if (nrIncompleteClosure > 0) retrySubstitution = true;
can still use the substitutes for this derivation itself.
If the nrIncompleteClosure != nrFailed, we have another issue as well.
In particular, it may be the case that the hole in the closure is
an output of the current derivation, which causes a loop if retried.
*/
if (nrIncompleteClosure > 0 && nrIncompleteClosure == nrFailed) retrySubstitution = true;

nrFailed = nrNoSubstituters = nrIncompleteClosure = 0;

Expand Down

0 comments on commit c29fffe

Please sign in to comment.