about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-10-24T12·24+0200
committerEelco Dolstra <edolstra@gmail.com>2017-10-24T12·24+0200
commitbe220702a75427b80258a92d1ed8c4573c1478fa (patch)
treefa1535bf1b682db5f9a508f0cb393f8f235b16f0
parentf8624762aca7df05cfb405f5e79065d61b1a8d4b (diff)
Progress indicator: Show on what machine we're building
E.g.

  $ nix build nixpkgs.hello --builders 'root@wendy'
  [1/0/1 built] building hello-2.10 on ssh://root@wendy: checking for minix/config.h... no
-rw-r--r--src/build-remote/build-remote.cc2
-rw-r--r--src/libstore/build.cc10
-rw-r--r--src/nix/progress-bar.cc3
3 files changed, 11 insertions, 4 deletions
diff --git a/src/build-remote/build-remote.cc b/src/build-remote/build-remote.cc
index 92ae99e168..d2fac09f84 100644
--- a/src/build-remote/build-remote.cc
+++ b/src/build-remote/build-remote.cc
@@ -196,7 +196,7 @@ int main (int argc, char * * argv)
         }
 
 connected:
-        std::cerr << "# accept\n";
+        std::cerr << "# accept\n" << storeUri << "\n";
 
         auto inputs = readStrings<PathSet>(source);
         auto outputs = readStrings<PathSet>(source);
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 6e3d0a3ebb..dcc48bef77 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -852,6 +852,9 @@ private:
 
     std::map<ActivityId, Activity> builderActivities;
 
+    /* The remote machine on which we're building. */
+    std::string machineName;
+
 public:
     DerivationGoal(const Path & drvPath, const StringSet & wantedOutputs,
         Worker & worker, BuildMode buildMode = bmNormal);
@@ -1400,7 +1403,8 @@ void DerivationGoal::tryToBuild()
 
     auto started = [&]() {
         act = std::make_unique<Activity>(*logger, lvlInfo, actBuild,
-            fmt("building '%s'", drvPath), Logger::Fields{drvPath});
+            fmt("building '%s'", drvPath),
+            Logger::Fields{drvPath, hook ? machineName : ""});
         mcRunningBuilds = std::make_unique<MaintainCount<uint64_t>>(worker.runningBuilds);
         worker.updateProgress();
     };
@@ -1691,10 +1695,10 @@ HookReply DerivationGoal::tryBuildHook()
             throw;
     }
 
-    printMsg(lvlTalkative, format("using hook to build path(s) %1%") % showPaths(missingPaths));
-
     hook = std::move(worker.hook);
 
+    machineName = readLine(hook->fromHook.readSide.get());
+
     /* Tell the hook all the inputs that have to be copied to the
        remote system. */
     hook->sink << inputPaths;
diff --git a/src/nix/progress-bar.cc b/src/nix/progress-bar.cc
index 76138b2cce..a33ea34238 100644
--- a/src/nix/progress-bar.cc
+++ b/src/nix/progress-bar.cc
@@ -156,6 +156,9 @@ public:
             if (hasSuffix(name, ".drv"))
                 name.resize(name.size() - 4);
             i->s = fmt("building " ANSI_BOLD "%s" ANSI_NORMAL, name);
+            auto machineName = getS(fields, 1);
+            if (machineName != "")
+                i->s += fmt(" on " ANSI_BOLD "%s" ANSI_NORMAL, machineName);
         }
 
         if (type == actSubstitute) {