diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-04-26 18:02:27 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-05-01 23:09:08 +0100 |
commit | fcec90de9c2c4abb64780628193f0631c0b296ad (patch) | |
tree | 82f0c1c086a3393c6a4e1e7a0bafa8c2e817ebf0 /bitbake/lib/bb/ui/knotty.py | |
parent | b89e99f927d472292abeee7b2ec95d5f8cf25db1 (diff) | |
download | poky-fcec90de9c2c4abb64780628193f0631c0b296ad.tar.gz |
bitbake: knotty: Implement console 'keepalive' output
CI systems like jenkins and buildbot will timeout applications which haven't had console output
in some period of time. Add 'keepalive' output to knotty which gives output every 5000s if not
other output was made and tasks are still running. This reduces some problems encountered
with our CI testing.
(Bitbake rev: aa4f31e5741dd98acec73f16f6028e52f4c22d6f)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/ui/knotty.py')
-rw-r--r-- | bitbake/lib/bb/ui/knotty.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index f362c23afc..4567c148c8 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py | |||
@@ -234,6 +234,11 @@ class TerminalFilter(object): | |||
234 | else: | 234 | else: |
235 | return "%ds" % (sec) | 235 | return "%ds" % (sec) |
236 | 236 | ||
237 | def keepAlive(self, t): | ||
238 | if not self.cuu: | ||
239 | print("Bitbake still alive (%ds)" % t) | ||
240 | sys.stdout.flush() | ||
241 | |||
237 | def updateFooter(self): | 242 | def updateFooter(self): |
238 | if not self.cuu: | 243 | if not self.cuu: |
239 | return | 244 | return |
@@ -467,11 +472,17 @@ def main(server, eventHandler, params, tf = TerminalFilter): | |||
467 | warnings = 0 | 472 | warnings = 0 |
468 | taskfailures = [] | 473 | taskfailures = [] |
469 | 474 | ||
475 | printinterval = 5000 | ||
476 | lastprint = time.time() | ||
477 | |||
470 | termfilter = tf(main, helper, console, errconsole, format, params.options.quiet) | 478 | termfilter = tf(main, helper, console, errconsole, format, params.options.quiet) |
471 | atexit.register(termfilter.finish) | 479 | atexit.register(termfilter.finish) |
472 | 480 | ||
473 | while True: | 481 | while True: |
474 | try: | 482 | try: |
483 | if (lastprint + printinterval) <= time.time(): | ||
484 | termfilter.keepAlive(printinterval) | ||
485 | printinterval += 5000 | ||
475 | event = eventHandler.waitEvent(0) | 486 | event = eventHandler.waitEvent(0) |
476 | if event is None: | 487 | if event is None: |
477 | if main.shutdown > 1: | 488 | if main.shutdown > 1: |
@@ -500,6 +511,8 @@ def main(server, eventHandler, params, tf = TerminalFilter): | |||
500 | continue | 511 | continue |
501 | 512 | ||
502 | if isinstance(event, logging.LogRecord): | 513 | if isinstance(event, logging.LogRecord): |
514 | lastprint = time.time() | ||
515 | printinterval = 5000 | ||
503 | if event.levelno >= format.ERROR: | 516 | if event.levelno >= format.ERROR: |
504 | errors = errors + 1 | 517 | errors = errors + 1 |
505 | return_value = 1 | 518 | return_value = 1 |