1
0
Fork 0
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:
Eelco Dolstra 2004-05-11 18:05:44 +00:00
parent aea436503e
commit c8d3882cdc
12 changed files with 696 additions and 309 deletions

View file

@ -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(