]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake: bitbake: Unbuffer stdout for log files
authorJason Wessel <jason.wessel@windriver.com>
Mon, 17 Sep 2012 22:43:31 +0000 (17:43 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 24 Sep 2012 14:35:32 +0000 (15:35 +0100)
It is possible to lose critical log data when python exits in an
unorderly fashion via segmentation fault or certain types of crashes.
This is because the buffer characteristics are inherited from the top
level stdout, which should be set to unbuffered, for the purpose of
all the forked children.

This pushes the buffering to the OS, instead of having python managing
the buffers in its stream handler class.

This change is also to provide the ability to tail logs written from
processes in "real time" because they would be written in an orderly
fashion depending upon the OS characteristics for the file I/O.

(Bitbake rev: c6a367bc3224adafca698a4ffc5414ad83842c16)

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

index 8c46024258820b9760435b8d9218716ac6ed9dd3..37c10451dc9de81c8ec4a789b13fd57281f0cfb0 100755 (executable)
@@ -43,6 +43,14 @@ from bb import server
 __version__ = "1.15.3"
 logger = logging.getLogger("BitBake")
 
+# 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
 
 class BBConfiguration(object):
     """