diff options
Diffstat (limited to 'bitbake/lib/bb/event.py')
-rw-r--r-- | bitbake/lib/bb/event.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index 4761c86880..a12adbc937 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py | |||
@@ -19,7 +19,6 @@ import sys | |||
19 | import threading | 19 | import threading |
20 | import traceback | 20 | import traceback |
21 | 21 | ||
22 | import bb.exceptions | ||
23 | import bb.utils | 22 | import bb.utils |
24 | 23 | ||
25 | # This is the pid for which we should generate the event. This is set when | 24 | # This is the pid for which we should generate the event. This is set when |
@@ -195,7 +194,12 @@ def fire_ui_handlers(event, d): | |||
195 | ui_queue.append(event) | 194 | ui_queue.append(event) |
196 | return | 195 | return |
197 | 196 | ||
198 | with bb.utils.lock_timeout(_thread_lock): | 197 | with bb.utils.lock_timeout_nocheck(_thread_lock) as lock: |
198 | if not lock: | ||
199 | # If we can't get the lock, we may be recursively called, queue and return | ||
200 | ui_queue.append(event) | ||
201 | return | ||
202 | |||
199 | errors = [] | 203 | errors = [] |
200 | for h in _ui_handlers: | 204 | for h in _ui_handlers: |
201 | #print "Sending event %s" % event | 205 | #print "Sending event %s" % event |
@@ -214,6 +218,9 @@ def fire_ui_handlers(event, d): | |||
214 | for h in errors: | 218 | for h in errors: |
215 | del _ui_handlers[h] | 219 | del _ui_handlers[h] |
216 | 220 | ||
221 | while ui_queue: | ||
222 | fire_ui_handlers(ui_queue.pop(), d) | ||
223 | |||
217 | def fire(event, d): | 224 | def fire(event, d): |
218 | """Fire off an Event""" | 225 | """Fire off an Event""" |
219 | 226 | ||
@@ -759,13 +766,7 @@ class LogHandler(logging.Handler): | |||
759 | 766 | ||
760 | def emit(self, record): | 767 | def emit(self, record): |
761 | if record.exc_info: | 768 | if record.exc_info: |
762 | etype, value, tb = record.exc_info | 769 | record.bb_exc_formatted = traceback.format_exception(*record.exc_info) |
763 | if hasattr(tb, 'tb_next'): | ||
764 | tb = list(bb.exceptions.extract_traceback(tb, context=3)) | ||
765 | # Need to turn the value into something the logging system can pickle | ||
766 | record.bb_exc_info = (etype, value, tb) | ||
767 | record.bb_exc_formatted = bb.exceptions.format_exception(etype, value, tb, limit=5) | ||
768 | value = str(value) | ||
769 | record.exc_info = None | 770 | record.exc_info = None |
770 | fire(record, None) | 771 | fire(record, None) |
771 | 772 | ||