parent
							
								
									bfee9a2581
								
							
						
					
					
						commit
						6cc2a8f8ed
					
				
					 1 changed files with 17 additions and 11 deletions
				
			
		|  | @ -786,6 +786,9 @@ private: | |||
|     /* Outputs that are already valid. */ | ||||
|     PathSet validPaths; | ||||
| 
 | ||||
|     /* Outputs that are corrupt or not valid. */ | ||||
|     PathSet missingPaths; | ||||
| 
 | ||||
|     /* User selected for running the builder. */ | ||||
|     UserLock buildUser; | ||||
| 
 | ||||
|  | @ -1305,6 +1308,9 @@ void DerivationGoal::tryToBuild() | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     missingPaths = outputPaths(drv.outputs); | ||||
|     foreach (PathSet::iterator, i, validPaths) missingPaths.erase(*i); | ||||
| 
 | ||||
|     /* If any of the outputs already exist but are not valid, delete
 | ||||
|        them. */ | ||||
|     foreach (DerivationOutputs::iterator, i, drv.outputs) { | ||||
|  | @ -1442,8 +1448,8 @@ void DerivationGoal::buildDone() | |||
|         /* Some cleanup per path.  We do this here and not in
 | ||||
|            computeClosure() for convenience when the build has | ||||
|            failed. */ | ||||
|         foreach (DerivationOutputs::iterator, i, drv.outputs) { | ||||
|             Path path = i->second.path; | ||||
|         foreach (PathSet::iterator, i, missingPaths) { | ||||
|             Path path = *i; | ||||
| 
 | ||||
|             /* If the output was already valid, just skip (discard) it. */ | ||||
|             if (validPaths.find(path) != validPaths.end()) continue; | ||||
|  | @ -1671,9 +1677,7 @@ int childEntry(void * arg) | |||
| 
 | ||||
| void DerivationGoal::startBuilder() | ||||
| { | ||||
|     PathSet missing = outputPaths(drv.outputs); | ||||
|     foreach (PathSet::iterator, i, validPaths) missing.erase(*i); | ||||
|     startNest(nest, lvlInfo, format(repair ? "repairing path(s) %1%" : "building path(s) %1%") % showPaths(missing)); | ||||
|     startNest(nest, lvlInfo, format(repair ? "repairing path(s) %1%" : "building path(s) %1%") % showPaths(missingPaths)); | ||||
| 
 | ||||
|     /* Right platform? */ | ||||
|     if (!canBuildLocally(drv.platform)) | ||||
|  | @ -1964,7 +1968,7 @@ void DerivationGoal::startBuilder() | |||
|         /* If we're repairing, then we don't want to delete the
 | ||||
|            corrupt outputs in advance.  So rewrite them as well. */ | ||||
|         if (repair) | ||||
|             foreach (PathSet::iterator, i, missing) | ||||
|             foreach (PathSet::iterator, i, missingPaths) | ||||
|                 if (worker.store.isValidPath(*i) && pathExists(*i)) | ||||
|                     redirectedBadOutputs[*i] = addHashRewrite(*i); | ||||
|     } | ||||
|  | @ -2249,6 +2253,8 @@ void DerivationGoal::computeClosure() | |||
|        output paths read-only. */ | ||||
|     foreach (DerivationOutputs::iterator, i, drv.outputs) { | ||||
|         Path path = i->second.path; | ||||
|         if (missingPaths.find(path) == missingPaths.end()) continue; | ||||
| 
 | ||||
|         if (!pathExists(path)) { | ||||
|             throw BuildError( | ||||
|                 format("builder for `%1%' failed to produce output path `%2%'") | ||||
|  | @ -2330,12 +2336,12 @@ void DerivationGoal::computeClosure() | |||
|        paths referenced by each of them.  If there are cycles in the | ||||
|        outputs, this will fail. */ | ||||
|     ValidPathInfos infos; | ||||
|     foreach (DerivationOutputs::iterator, i, drv.outputs) { | ||||
|     foreach (PathSet::iterator, i, missingPaths) { | ||||
|         ValidPathInfo info; | ||||
|         info.path = i->second.path; | ||||
|         info.hash = contentHashes[i->second.path].first; | ||||
|         info.narSize = contentHashes[i->second.path].second; | ||||
|         info.references = allReferences[i->second.path]; | ||||
|         info.path = *i; | ||||
|         info.hash = contentHashes[*i].first; | ||||
|         info.narSize = contentHashes[*i].second; | ||||
|         info.references = allReferences[*i]; | ||||
|         info.deriver = drvPath; | ||||
|         infos.push_back(info); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue