summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-04-10 00:08:47 +0300
committerSimon Glass <sjg@chromium.org>2020-04-21 15:33:47 +0300
commit7b33f21804437bedc5cb2b58cff7706a514c0f57 (patch)
treec41527e1f0649b78af384fee6ed7066dadfa0dec /tools
parent95ed0a2dbff502ac40ce0585c6549731c09a8c43 (diff)
downloadu-boot-7b33f21804437bedc5cb2b58cff7706a514c0f57.tar.xz
buildman: Show a summary of the build result
When buildman finishes it leaves the last summary line visible, which shows the number of successful builds, builds with warnings and builds with errors. It is useful also to see how many builds were done in total along with the time taken. Show these on a separate line before buildman finishes. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/buildman/builder.py17
-rw-r--r--tools/buildman/test.py6
2 files changed, 20 insertions, 3 deletions
diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index 73753eb4bc..6819e5b40d 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -192,6 +192,7 @@ class Builder:
_next_delay_update: Next time we plan to display a progress update
(datatime)
_show_unknown: Show unknown boards (those not built) in summary
+ _start_time: Start time for the build
_timestamps: List of timestamps for the completion of the last
last _timestamp_count builds. Each is a datetime object.
_timestamp_count: Number of timestamps to keep in our list.
@@ -281,6 +282,7 @@ class Builder:
self._build_period_us = None
self._complete_delay = None
self._next_delay_update = datetime.now()
+ self._start_time = datetime.now()
self.force_config_on_failure = True
self.force_build_failures = False
self.force_reconfig = False
@@ -1642,4 +1644,19 @@ class Builder:
# Wait until we have processed all output
self.out_queue.join()
Print()
+
+ msg = 'Completed: %d total built' % self.count
+ if self.already_done:
+ msg += ' (%d previously' % self.already_done
+ if self.already_done != self.count:
+ msg += ', %d newly' % (self.count - self.already_done)
+ msg += ')'
+ duration = datetime.now() - self._start_time
+ if duration > timedelta(microseconds=1000000):
+ if duration.microseconds >= 500000:
+ duration = duration + timedelta(seconds=1)
+ duration = duration - timedelta(microseconds=duration.microseconds)
+ msg += ', duration %s' % duration
+ Print(msg)
+
return (self.fail, self.warned)
diff --git a/tools/buildman/test.py b/tools/buildman/test.py
index a495df0303..fb861e16a1 100644
--- a/tools/buildman/test.py
+++ b/tools/buildman/test.py
@@ -205,9 +205,9 @@ class TestBuild(unittest.TestCase):
if line.text.strip():
count += 1
- # We should get two starting messages, then an update for every commit
- # built.
- self.assertEqual(count, len(commits) * len(boards) + 2)
+ # We should get two starting messages, an update for every commit built
+ # and a summary message
+ self.assertEqual(count, len(commits) * len(boards) + 3)
build.SetDisplayOptions(**kwdisplay_args);
build.ShowSummary(self.commits, board_selected)
if echo_lines: