Explorar o código

bitbake: bitbake-worker: Fix regression with unbuffered logs

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>
Jason Wessel %!s(int64=10) %!d(string=hai) anos
pai
achega
5ee122244a
Modificáronse 1 ficheiros con 9 adicións e 0 borrados
  1. 9 0
      bitbake/bin/bitbake-worker

+ 9 - 0
bitbake/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: