diff options
Diffstat (limited to 'bitbake/lib/bb/event.py')
-rw-r--r-- | bitbake/lib/bb/event.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index f3efae9bdf..fb355089a3 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py | |||
@@ -26,6 +26,7 @@ import os, sys | |||
26 | import warnings | 26 | import warnings |
27 | import pickle | 27 | import pickle |
28 | import logging | 28 | import logging |
29 | import atexit | ||
29 | import bb.utils | 30 | import bb.utils |
30 | 31 | ||
31 | # This is the pid for which we should generate the event. This is set when | 32 | # This is the pid for which we should generate the event. This is set when |
@@ -74,7 +75,27 @@ def fire_class_handlers(event, d): | |||
74 | h(event) | 75 | h(event) |
75 | del event.data | 76 | del event.data |
76 | 77 | ||
78 | ui_queue = [] | ||
79 | @atexit.register | ||
80 | def print_ui_queue(): | ||
81 | """If we're exiting before a UI has been spawned, display any queued | ||
82 | LogRecords to the console.""" | ||
83 | logger = logging.getLogger("BitBake") | ||
84 | if not _ui_handlers: | ||
85 | console = logging.StreamHandler(sys.stdout) | ||
86 | console.setFormatter(logging.Formatter("%(levelname)s: %(message)s")) | ||
87 | logger.handlers = [console] | ||
88 | while ui_queue: | ||
89 | event, d = ui_queue.pop() | ||
90 | if isinstance(event, logging.LogRecord): | ||
91 | logger.handle(event) | ||
92 | |||
77 | def fire_ui_handlers(event, d): | 93 | def fire_ui_handlers(event, d): |
94 | if not _ui_handlers: | ||
95 | # No UI handlers registered yet, queue up the messages | ||
96 | ui_queue.append((event, d)) | ||
97 | return | ||
98 | |||
78 | errors = [] | 99 | errors = [] |
79 | for h in _ui_handlers: | 100 | for h in _ui_handlers: |
80 | #print "Sending event %s" % event | 101 | #print "Sending event %s" % event |