aboutsummaryrefslogtreecommitdiff
path: root/src/build-remote/build-remote.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-10-24 13:41:52 +0200
committerEelco Dolstra <edolstra@gmail.com>2017-10-24 14:05:22 +0200
commitfe9d2f974d41a943b5245dbadbff0d0adab42046 (patch)
tree3a3b76b9a176b5f862be3faee1453dab7df06d7e /src/build-remote/build-remote.cc
parent0d59f1ca49c9f7f3b2edaadcf590360ec66a6257 (diff)
Handle log messages from build-remote
This makes the progress indicator show statuses like "connecting to 'root@machine'".
Diffstat (limited to 'src/build-remote/build-remote.cc')
-rw-r--r--src/build-remote/build-remote.cc28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/build-remote/build-remote.cc b/src/build-remote/build-remote.cc
index f023aedb1..dc784f947 100644
--- a/src/build-remote/build-remote.cc
+++ b/src/build-remote/build-remote.cc
@@ -42,6 +42,8 @@ int main (int argc, char * * argv)
return handleExceptions(argv[0], [&]() {
initNix();
+ logger = makeJSONLogger(*logger);
+
/* Ensure we don't get any SSH passphrase or host key popups. */
unsetenv("DISPLAY");
unsetenv("SSH_ASKPASS");
@@ -172,6 +174,8 @@ int main (int argc, char * * argv)
try {
+ Activity act(*logger, lvlTalkative, actUnknown, fmt("connecting to '%s'", bestMachine->storeUri));
+
Store::Params storeParams{{"max-connections", "1"}, {"log-fd", "4"}};
if (bestMachine->sshKey != "")
storeParams["ssh-key"] = bestMachine->sshKey;
@@ -197,21 +201,25 @@ connected:
auto inputs = readStrings<PathSet>(source);
auto outputs = readStrings<PathSet>(source);
- AutoCloseFD uploadLock = openLockFile(currentLoad + "/" + escapeUri(storeUri) + ".upload-lock", true);
+ {
+ Activity act(*logger, lvlTalkative, actUnknown, fmt("waiting for the upload lock to '%s'", storeUri));
- auto old = signal(SIGALRM, handleAlarm);
- alarm(15 * 60);
- if (!lockFile(uploadLock.get(), ltWrite, true))
- printError("somebody is hogging the upload lock for '%s', continuing...");
- alarm(0);
- signal(SIGALRM, old);
- copyPaths(store, ref<Store>(sshStore), inputs, NoRepair, NoCheckSigs);
- uploadLock = -1;
+ AutoCloseFD uploadLock = openLockFile(currentLoad + "/" + escapeUri(storeUri) + ".upload-lock", true);
+
+ auto old = signal(SIGALRM, handleAlarm);
+ alarm(15 * 60);
+ if (!lockFile(uploadLock.get(), ltWrite, true))
+ printError("somebody is hogging the upload lock for '%s', continuing...");
+ alarm(0);
+ signal(SIGALRM, old);
+ copyPaths(store, ref<Store>(sshStore), inputs, NoRepair, NoCheckSigs);
+ uploadLock = -1;
+ }
BasicDerivation drv(readDerivation(drvPath));
drv.inputSrcs = inputs;
- printError("building '%s' on '%s'", drvPath, storeUri);
+ printInfo("building '%s' on '%s'", drvPath, storeUri);
auto result = sshStore->buildDerivation(drvPath, drv);
if (!result.success())