summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/knotty.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-04-26 18:02:27 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-05-01 23:09:08 +0100
commitfcec90de9c2c4abb64780628193f0631c0b296ad (patch)
tree82f0c1c086a3393c6a4e1e7a0bafa8c2e817ebf0 /bitbake/lib/bb/ui/knotty.py
parentb89e99f927d472292abeee7b2ec95d5f8cf25db1 (diff)
downloadpoky-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.py13
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