From 479e9172b3583cedcada90ed193cab156cdc56b5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 12 Sep 2012 12:15:47 -0400 Subject: [PATCH] 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. --- scripts/build-remote.pl.in | 7 ++++--- 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);