about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-12-08T15·44+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-12-08T15·44+0000
commit9dbfe242e3bdbfc7728a36c8a2b9fbbea2c8ed68 (patch)
treedc27874c617eabfa591ac32eca387de7e82835ae /scripts
parentd3fe6ab024df7764f4de2a9dcf88e2daa981f786 (diff)
* Kill a build if it has gone for more than a certain number of
  seconds without producing output on stdout or stderr (NIX-65).  This
  timeout can be specified using the `--max-silent-time' option or the
  `build-max-silent-time' configuration setting.  The default is
  infinity (0).

* Fix a tricky race condition: if we kill the build user before the
  child has done its setuid() to the build user uid, then it won't be
  killed, and we'll potentially lock up in pid.wait().  So also send a
  conventional kill to the child.

Diffstat (limited to 'scripts')
-rw-r--r--scripts/nix-build.in6
1 files changed, 6 insertions, 0 deletions
diff --git a/scripts/nix-build.in b/scripts/nix-build.in
index f32b2eb35aa4..08201f85761d 100644
--- a/scripts/nix-build.in
+++ b/scripts/nix-build.in
@@ -83,6 +83,12 @@ EOF
         $n += 2;
     }
 
+    elsif ($arg eq "--max-jobs" or $arg eq "-j" or $arg eq "--max-silent-time") {
+        $n++;
+        die "$0: `$arg' requires an argument\n" unless $n < scalar @ARGV;
+        push @buildArgs, ($arg, $ARGV[$n]);
+    }
+
     elsif (substr($arg, 0, 1) eq "-") {
         push @buildArgs, $arg;
     }