]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake: bitbake-worker: Fix regression with unbuffered logs
authorJason Wessel <jason.wessel@windriver.com>
Thu, 21 May 2015 01:01:02 +0000 (20:01 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 26 May 2015 09:33:06 +0000 (10:33 +0100)
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.

(Bitbake rev: 8d1748f75763b4a66516cc46d5457ee6404b1b68)

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/bin/bitbake-worker

index 8a241612504dc2d703512ee4f3294aa3be4d66c5..96a4d4cdec761206b6d75efdd0804cc28e3ee6f1 100755 (executable)
@@ -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: