[bitbake-devel] [PATCH 3/4] event: add a means of filtering events internally

Paul Eggleton paul.eggleton at linux.intel.com
Mon Dec 8 10:50:24 UTC 2014


When using external tinfoil-based utilities, it is useful to be able to
turn off most of the event handlers; for example sstate_eventhandler
doesn't like being sent events for any recipe which has been skipped.

Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
---
 lib/bb/event.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/bb/event.py b/lib/bb/event.py
index 32df779..9645476 100644
--- a/lib/bb/event.py
+++ b/lib/bb/event.py
@@ -67,6 +67,7 @@ _ui_logfilters = {}
 _ui_handler_seq = 0
 _event_handler_map = {}
 _catchall_handlers = {}
+_eventfilter = None
 
 def execute_handler(name, handler, event, d):
     event.data = d
@@ -94,6 +95,9 @@ def fire_class_handlers(event, d):
     evt_hmap = _event_handler_map.get(eid, {})
     for name, handler in _handlers.iteritems():
         if name in _catchall_handlers or name in evt_hmap:
+            if _eventfilter:
+                if not _eventfilter(name, handler, event, d):
+                    continue
             execute_handler(name, handler, event, d)
 
 ui_queue = []
@@ -204,6 +208,10 @@ def remove(name, handler):
     """Remove an Event handler"""
     _handlers.pop(name)
 
+def set_eventfilter(func):
+    global _eventfilter
+    _eventfilter = func
+
 def register_UIHhandler(handler):
     bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1
     _ui_handlers[_ui_handler_seq] = handler
-- 
1.9.3




More information about the bitbake-devel mailing list