From 8966b43761500e0505333d8c9a3f0f2c3dbe7559 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 23 Sep 2021 11:50:25 +0100 Subject: build: Ensure python stdout/stderr is logged correctly Currently we see things like: Log data follows: | DEBUG: Executing python function do_pythontest_exit | DEBUG: Python function do_pythontest_exit finished | ERROR: 1 | This is python stdout Whilst after the change we see things like: Log data follows: | DEBUG: Executing python function do_pythontest_exit | This is python stdout | DEBUG: Python function do_pythontest_exit finished | ERROR: 1 since the output is now correctly mixed with the log messages. In some cases the logging tests indicate the output is being lost entirely which is bad for debugging and makes things rather confusing. Signed-off-by: Richard Purdie --- lib/bb/build.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/bb/build.py b/lib/bb/build.py index c2479dd16..18586c276 100644 --- a/lib/bb/build.py +++ b/lib/bb/build.py @@ -298,6 +298,10 @@ def exec_func_python(func, d, runfile, cwd=None): comp = utils.better_compile(code, func, "exec_func_python() autogenerated") utils.better_exec(comp, {"d": d}, code, "exec_func_python() autogenerated") finally: + # We want any stdout/stderr to be printed before any other log messages to make debugging + # more accurate. In some cases we seem to lose stdout/stderr entirely in logging tests without this. + sys.stdout.flush() + sys.stderr.flush() bb.debug(2, "Python function %s finished" % func) if cwd and olddir: -- cgit 1.2.3-korg