[bitbake-devel] [PATCH] bitbake-worker: Fix regression with unbuffered logs

Jason Wessel jason.wessel at windriver.com
Thu May 21 01:01:02 UTC 2015


I noticed that I was seeing loss of the log files when hitting
control-c while debugging a function in bitbake.  In fact if you
take a recipe and replace its compile function as shown below let
it run for a few seconds and hit control-c, you will see first
hand that log data is not there.

do_compile () {
        while [ 1 ] ; do
                echo -n "Output date: "
                date
                sleep 1
        done
}

It turns out there was a regression introduced by commit:
d0f0e5d9e69 which created the bitbake worker.  Since the bitbake
worker is started in its own process space, it needs the exact
same code added from commit: 88429f018b where the problem was
fixed the first time around.

Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
---
 bin/bitbake-worker | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/bin/bitbake-worker b/bin/bitbake-worker
index 8a24161..96a4d4c 100755
--- a/bin/bitbake-worker
+++ b/bin/bitbake-worker
@@ -24,6 +24,15 @@ if sys.argv[1] == "decafbadbad":
     except:
         import profile
 
+# Unbuffer stdout to avoid log truncation in the event
+# of an unorderly exit as well as to provide timely
+# updates to log files for use with tail
+try:
+    if sys.stdout.name == '<stdout>':
+        sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
+except:
+    pass
+
 logger = logging.getLogger("BitBake")
 
 try:
-- 
1.9.1




More information about the bitbake-devel mailing list