diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-04-05 17:27:55 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-05 17:27:55 (GMT) |
commit | 197b010341ef17a62fd7569af6c7b44024537456 (patch) | |
tree | 2bacb3d3f6a4062cb4e51ef13a538b8689f1ae27 /src | |
parent | f2bb21376c30cbd91aab3e76acf4ff93f3e73f92 (diff) | |
parent | 52c1d0c8f8545231581c4d51cb0a85f50564c415 (diff) | |
download | Ninja-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.cc | 13 | ||||
-rw-r--r-- | src/build.h | 1 |
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, }; |