summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2018-04-05 17:27:55 (GMT)
committerGitHub <noreply@github.com>2018-04-05 17:27:55 (GMT)
commit197b010341ef17a62fd7569af6c7b44024537456 (patch)
tree2bacb3d3f6a4062cb4e51ef13a538b8689f1ae27 /src
parentf2bb21376c30cbd91aab3e76acf4ff93f3e73f92 (diff)
parent52c1d0c8f8545231581c4d51cb0a85f50564c415 (diff)
downloadNinja-197b010341ef17a62fd7569af6c7b44024537456.zip
Ninja-197b010341ef17a62fd7569af6c7b44024537456.tar.gz
Ninja-197b010341ef17a62fd7569af6c7b44024537456.tar.bz2
Merge pull request #1405 from nico/showoldest
Fix confusing smart console output from concurrent builds
Diffstat (limited to 'src')
-rw-r--r--src/build.cc13
-rw-r--r--src/build.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/src/build.cc b/src/build.cc
index 0eda16b..c24d6a9 100644
--- a/src/build.cc
+++ b/src/build.cc
@@ -16,6 +16,7 @@
#include <assert.h>
#include <errno.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <functional>
@@ -130,6 +131,18 @@ void BuildStatus::BuildEdgeFinished(Edge* edge,
if (!edge->use_console())
PrintStatus(edge, kEdgeFinished);
+ if (printer_.is_smart_terminal()) {
+ int oldest_start = INT_MAX;
+ Edge* oldest = NULL;
+ for (i = running_edges_.begin(); i != running_edges_.end(); i++) {
+ if (i->second < oldest_start) {
+ oldest_start = i->second;
+ oldest = i->first;
+ }
+ }
+ if (oldest)
+ PrintStatus(oldest, kEdgeRunning);
+ }
// Print the command that is spewing before printing its output.
if (!success) {
diff --git a/src/build.h b/src/build.h
index 9b90e8a..ac7f951 100644
--- a/src/build.h
+++ b/src/build.h
@@ -222,6 +222,7 @@ struct BuildStatus {
enum EdgeStatus {
kEdgeStarted,
+ kEdgeRunning,
kEdgeFinished,
};