Fix 'Read-only file system' when building a derivation
This commit is contained in:
		
							parent
							
								
									32a0a223d5
								
							
						
					
					
						commit
						a32ff2573b
					
				
					 3 changed files with 5 additions and 1 deletions
				
			
		|  | @ -2193,6 +2193,7 @@ void DerivationGoal::startBuilder() | |||
|         userNamespaceSync.create(); | ||||
| 
 | ||||
|         options.allowVfork = false; | ||||
|         options.restoreMountNamespace = false; | ||||
| 
 | ||||
|         Pid helper = startProcess([&]() { | ||||
| 
 | ||||
|  | @ -2259,6 +2260,7 @@ void DerivationGoal::startBuilder() | |||
| #endif | ||||
|     { | ||||
|         options.allowVfork = !buildUser && !drv->isBuiltin(); | ||||
|         options.restoreMountNamespace = false; | ||||
|         pid = startProcess([&]() { | ||||
|             runChild(); | ||||
|         }, options); | ||||
|  |  | |||
|  | @ -936,6 +936,7 @@ pid_t startProcess(std::function<void()> fun, const ProcessOptions & options) | |||
|                 throw SysError("setting death signal"); | ||||
| #endif | ||||
|             restoreAffinity(); | ||||
|             if (options.restoreMountNamespace) | ||||
|                 restoreMountNamespace(); | ||||
|             fun(); | ||||
|         } catch (std::exception & e) { | ||||
|  |  | |||
|  | @ -250,6 +250,7 @@ struct ProcessOptions | |||
|     bool dieWithParent = true; | ||||
|     bool runExitHandlers = false; | ||||
|     bool allowVfork = true; | ||||
|     bool restoreMountNamespace = true; | ||||
| }; | ||||
| 
 | ||||
| pid_t startProcess(std::function<void()> fun, const ProcessOptions & options = ProcessOptions()); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue