* True parallel builds. Nix can now run as many build jobs in
parallel as possible (similar to GNU Make's `-j' switch). This is useful on SMP systems, but it is especially useful for doing builds on multiple machines. The idea is that a large derivation is initiated on one master machine, which then distributes sub-derivations to any number of slave machines. This should not happen synchronously or in lock-step, so the master must be capable of dealing with multiple parallel build jobs. We now have the infrastructure to support this. TODO: substitutes are currently broken.
This commit is contained in:
		
							parent
							
								
									aea436503e
								
							
						
					
					
						commit
						c8d3882cdc
					
				
					 12 changed files with 696 additions and 309 deletions
				
			
		|  | @ -15,9 +15,15 @@ extern "C" { | |||
| #include "config.h" | ||||
| 
 | ||||
| 
 | ||||
| volatile sig_atomic_t blockInt = 0; | ||||
| 
 | ||||
| 
 | ||||
| void sigintHandler(int signo) | ||||
| { | ||||
|     _isInterrupted = 1; | ||||
|     if (!blockInt) { | ||||
|         _isInterrupted = 1; | ||||
|         blockInt = 1; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -150,7 +156,17 @@ int main(int argc, char * * argv) | |||
| #endif | ||||
| 
 | ||||
|     try { | ||||
|         initAndRun(argc, argv); | ||||
|         try { | ||||
|             initAndRun(argc, argv); | ||||
|         } catch (...) { | ||||
|             /* Subtle: we have to make sure that any `interrupted'
 | ||||
|                condition is discharged before we reach printMsg() | ||||
|                below, since otherwise it will throw an (uncaught) | ||||
|                exception. */ | ||||
|             blockInt = 1; /* ignore further SIGINTs */ | ||||
|             _isInterrupted = 0; | ||||
|             throw; | ||||
|         } | ||||
|     } catch (UsageError & e) { | ||||
|         printMsg(lvlError,  | ||||
|             format( | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue