diff options
author | Colin Cross <ccross@android.com> | 2016-04-28 19:32:31 (GMT) |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2016-04-28 19:35:01 (GMT) |
commit | f1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc (patch) | |
tree | 0ce7833c1726ff6eaa985fc277b5493716d2e708 /src | |
parent | 644f6b175741469d1a42d218494365a1a401f5d5 (diff) | |
download | Ninja-f1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc.zip Ninja-f1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc.tar.gz Ninja-f1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc.tar.bz2 |
Fix NINJA_STATUS %e on dumb terminals
PR #999 made dumb terminals only output when edges
finish. BuildStatus::overall_rate_ stopwatch is only initialized to the
current time when PrintStatus is called with finished_edges_ == 0, but
on a dumb terminal it will be called for the first time when
finished_edge_ = 1, which results in very long elapsed times:
NINJA_STATUS="[%r processes, %f/%t @ %o/s : %es ] "
[0 processes, 2/2 @ 0.0/s : 1461869902.367s ]
Reset the stopwatches in BuildEdgeFinished before finshed_edges_ is
incremented instead.
Diffstat (limited to 'src')
-rw-r--r-- | src/build.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/build.cc b/src/build.cc index 8c0fbf8..2c39636 100644 --- a/src/build.cc +++ b/src/build.cc @@ -109,6 +109,12 @@ void BuildStatus::BuildEdgeFinished(Edge* edge, int* start_time, int* end_time) { int64_t now = GetTimeMillis(); + + if (finished_edges_ == 0) { + overall_rate_.Restart(); + current_rate_.Restart(); + } + ++finished_edges_; RunningEdgeMap::iterator i = running_edges_.find(edge); @@ -256,10 +262,6 @@ void BuildStatus::PrintStatus(Edge* edge) { if (to_print.empty() || force_full_command) to_print = edge->GetBinding("command"); - if (finished_edges_ == 0) { - overall_rate_.Restart(); - current_rate_.Restart(); - } to_print = FormatProgressStatus(progress_status_format_) + to_print; printer_.Print(to_print, |