summaryrefslogtreecommitdiffstats
path: root/bitbake
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
parentb89e99f927d472292abeee7b2ec95d5f8cf25db1 (diff)
downloadopenembedded-core-contrib-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')
-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):
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