Fix repair during substitution
This commit is contained in:
		
							parent
							
								
									3be2e71ab3
								
							
						
					
					
						commit
						b66ab6cdbc
					
				
					 3 changed files with 5 additions and 4 deletions
				
			
		|  | @ -3198,7 +3198,8 @@ void SubstitutionGoal::tryToRun() | ||||||
|             /* Wake up the worker loop when we're done. */ |             /* Wake up the worker loop when we're done. */ | ||||||
|             Finally updateStats([this]() { outPipe.writeSide.close(); }); |             Finally updateStats([this]() { outPipe.writeSide.close(); }); | ||||||
| 
 | 
 | ||||||
|             copyStorePath(ref<Store>(sub), ref<Store>(worker.store.shared_from_this()), storePath); |             copyStorePath(ref<Store>(sub), ref<Store>(worker.store.shared_from_this()), | ||||||
|  |                 storePath, repair); | ||||||
| 
 | 
 | ||||||
|             promise.set_value(); |             promise.set_value(); | ||||||
|         } catch (...) { |         } catch (...) { | ||||||
|  |  | ||||||
|  | @ -358,14 +358,14 @@ const Store::Stats & Store::getStats() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void copyStorePath(ref<Store> srcStore, ref<Store> dstStore, | void copyStorePath(ref<Store> srcStore, ref<Store> dstStore, | ||||||
|     const Path & storePath) |     const Path & storePath, bool repair) | ||||||
| { | { | ||||||
|     auto info = srcStore->queryPathInfo(storePath); |     auto info = srcStore->queryPathInfo(storePath); | ||||||
| 
 | 
 | ||||||
|     StringSink sink; |     StringSink sink; | ||||||
|     srcStore->narFromPath({storePath}, sink); |     srcStore->narFromPath({storePath}, sink); | ||||||
| 
 | 
 | ||||||
|     dstStore->addToStore(*info, *sink.s); |     dstStore->addToStore(*info, *sink.s, repair); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -503,7 +503,7 @@ Path computeStorePathForText(const string & name, const string & s, | ||||||
| 
 | 
 | ||||||
| /* Copy a path from one store to another. */ | /* Copy a path from one store to another. */ | ||||||
| void copyStorePath(ref<Store> srcStore, ref<Store> dstStore, | void copyStorePath(ref<Store> srcStore, ref<Store> dstStore, | ||||||
|     const Path & storePath); |     const Path & storePath, bool repair = false); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* Remove the temporary roots file for this process.  Any temporary
 | /* Remove the temporary roots file for this process.  Any temporary
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue