diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-09-12 12:15:47 -0400 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-09-12 12:18:14 -0400 |
commit | 479e9172b3583cedcada90ed193cab156cdc56b5 (patch) | |
tree | debd2d7d31ebbfee5e8c6462ada05f53f0424600 | |
parent | 4ba47205c687772cf73a490eac3a489931d4913b (diff) |
Build hook: Pass the timeout to the remote builder
Note that this will only work if the client has a very recent Nix
version (post 15e1b2c223494ecb5efefc3ea0e3b926a6b1d7dc), otherwise the
--option flag will just be ignored.
Fixes #50.
-rwxr-xr-x | scripts/build-remote.pl.in | 7 | ||||
-rw-r--r-- | src/libstore/build.cc | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/scripts/build-remote.pl.in b/scripts/build-remote.pl.in index 631aba680..458d31be9 100755 --- a/scripts/build-remote.pl.in +++ b/scripts/build-remote.pl.in @@ -46,8 +46,7 @@ sub all { $_ || return 0 for @_; 1 } # Initialisation. my $loadIncreased = 0; -my ($localSystem, $maxSilentTime, $printBuildTrace) = @ARGV; -$maxSilentTime = 0 unless defined $maxSilentTime; +my ($localSystem, $maxSilentTime, $printBuildTrace, $buildTimeout) = @ARGV; my $currentLoad = $ENV{"NIX_CURRENT_LOAD"}; my $conf = $ENV{"NIX_REMOTE_SYSTEMS"}; @@ -258,7 +257,9 @@ close UPLOADLOCK; # Perform the build. -my $buildFlags = "--max-silent-time $maxSilentTime --fallback --add-root $rootsDir/\$PPID.out --option verbosity 0"; +my $buildFlags = + "--max-silent-time $maxSilentTime --option build-timeout $buildTimeout " + . "--fallback --add-root $rootsDir/\$PPID.out --option verbosity 0"; # We let the remote side kill its process group when the connection is # closed unexpectedly. This is necessary to ensure that no processes diff --git a/src/libstore/build.cc b/src/libstore/build.cc index e94c6b793..7fc47f3f5 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -690,10 +690,10 @@ HookInstance::HookInstance() if (dup2(builderOut.writeSide, 4) == -1) throw SysError("dupping builder's stdout/stderr"); - /* XXX: Pass `buildTimeout' to the hook? */ execl(buildHook.c_str(), buildHook.c_str(), settings.thisSystem.c_str(), (format("%1%") % settings.maxSilentTime).str().c_str(), (format("%1%") % settings.printBuildTrace).str().c_str(), + (format("%1%") % settings.buildTimeout).str().c_str(), NULL); throw SysError(format("executing `%1%'") % buildHook); |