From: Richard Purdie Date: Fri, 26 Apr 2019 17:02:27 +0000 (+0100) Subject: bitbake: knotty: Implement console 'keepalive' output X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fcec90de9c2c4abb64780628193f0631c0b296ad;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git 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 --- diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index f362c23afc5..4567c148c8d 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py @@ -234,6 +234,11 @@ class TerminalFilter(object): else: return "%ds" % (sec) + def keepAlive(self, t): + if not self.cuu: + print("Bitbake still alive (%ds)" % t) + sys.stdout.flush() + def updateFooter(self): if not self.cuu: return @@ -467,11 +472,17 @@ def main(server, eventHandler, params, tf = TerminalFilter): warnings = 0 taskfailures = [] + printinterval = 5000 + lastprint = time.time() + termfilter = tf(main, helper, console, errconsole, format, params.options.quiet) atexit.register(termfilter.finish) while True: try: + if (lastprint + printinterval) <= time.time(): + termfilter.keepAlive(printinterval) + printinterval += 5000 event = eventHandler.waitEvent(0) if event is None: if main.shutdown > 1: @@ -500,6 +511,8 @@ def main(server, eventHandler, params, tf = TerminalFilter): continue if isinstance(event, logging.LogRecord): + lastprint = time.time() + printinterval = 5000 if event.levelno >= format.ERROR: errors = errors + 1 return_value = 1