about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/build-remote.pl.in8
-rw-r--r--src/libstore/build.cc1
2 files changed, 7 insertions, 2 deletions
diff --git a/scripts/build-remote.pl.in b/scripts/build-remote.pl.in
index fe2fbaf899..76afccd350 100755
--- a/scripts/build-remote.pl.in
+++ b/scripts/build-remote.pl.in
@@ -23,8 +23,9 @@ use English '-no_match_vars';
 
 my $loadIncreased = 0;
 
-my ($amWilling, $localSystem, $neededSystem, $drvPath, $mustRun) = @ARGV;
+my ($amWilling, $localSystem, $neededSystem, $drvPath, $mustRun, $maxSilentTime) = @ARGV;
 $mustRun = 0 unless defined $mustRun;
+$maxSilentTime = 0 unless defined $maxSilentTime;
 
 sub sendReply {
     my $reply = shift;
@@ -184,12 +185,15 @@ system("NIX_SSHOPTS=\"$sshOpts\" nix-copy-closure $hostName $maybeSign $drvPath
 
 print "BUILDING...\n";
 
+my $buildFlags = "";
+$buildFlags .= " --max-silent-time $maxSilentTime";
+
 # `-tt' forces allocation of a pseudo-terminal.  This is required to
 # make the remote nix-store process receive a signal when the
 # connection dies.  Without it, the remote process might continue to
 # run indefinitely (that is, until it next tries to write to
 # stdout/stderr).
-system("ssh -tt $sshOpts $hostName 'nix-store -rvvK $drvPath'") == 0
+system("ssh -tt $sshOpts $hostName 'nix-store -rvvK $buildFlags $drvPath'") == 0
     or die "remote build on $hostName failed: $?";
 
 print "REMOTE BUILD DONE: $drvPath on $hostName\n";
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index fbec675987..6a3ba0f1cd 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -1301,6 +1301,7 @@ DerivationGoal::HookReply DerivationGoal::tryBuildHook()
                 drv.platform.c_str(),
                 drvPath.c_str(),
                 (worker.canPostpone() ? (string) "0" : "1").c_str(),
+                (format("%1%") % maxSilentTime).str().c_str(),
                 NULL);
             
             throw SysError(format("executing `%1%'") % buildHook);