mirror of
https://github.com/NixOS/nix
synced 2025-06-27 08:31:16 +02:00
* 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