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 |
