summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/event.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/event.py')
-rw-r--r--bitbake/lib/bb/event.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index 694b470520..ff89959460 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -118,6 +118,8 @@ def fire_class_handlers(event, d):
118 if _eventfilter: 118 if _eventfilter:
119 if not _eventfilter(name, handler, event, d): 119 if not _eventfilter(name, handler, event, d):
120 continue 120 continue
121 if d and not name in (d.getVar("__BBHANDLERS_MC") or []):
122 continue
121 execute_handler(name, handler, event, d) 123 execute_handler(name, handler, event, d)
122 124
123ui_queue = [] 125ui_queue = []
@@ -227,9 +229,13 @@ def fire_from_worker(event, d):
227 fire_ui_handlers(event, d) 229 fire_ui_handlers(event, d)
228 230
229noop = lambda _: None 231noop = lambda _: None
230def register(name, handler, mask=None, filename=None, lineno=None): 232def register(name, handler, mask=None, filename=None, lineno=None, data=None):
231 """Register an Event handler""" 233 """Register an Event handler"""
232 234
235 if data and data.getVar("BB_CURRENT_MC"):
236 mc = data.getVar("BB_CURRENT_MC")
237 name = '%s%s' % (mc, name)
238
233 # already registered 239 # already registered
234 if name in _handlers: 240 if name in _handlers:
235 return AlreadyRegistered 241 return AlreadyRegistered
@@ -268,10 +274,20 @@ def register(name, handler, mask=None, filename=None, lineno=None):
268 _event_handler_map[m] = {} 274 _event_handler_map[m] = {}
269 _event_handler_map[m][name] = True 275 _event_handler_map[m][name] = True
270 276
277 if data:
278 bbhands_mc = (data.getVar("__BBHANDLERS_MC") or [])
279 bbhands_mc.append(name)
280 data.setVar("__BBHANDLERS_MC", bbhands_mc)
281
271 return Registered 282 return Registered
272 283
273def remove(name, handler): 284def remove(name, handler, data=None):
274 """Remove an Event handler""" 285 """Remove an Event handler"""
286 if data:
287 if data.getVar("BB_CURRENT_MC"):
288 mc = data.getVar("BB_CURRENT_MC")
289 name = '%s%s' % (mc, name)
290
275 _handlers.pop(name) 291 _handlers.pop(name)
276 if name in _catchall_handlers: 292 if name in _catchall_handlers:
277 _catchall_handlers.pop(name) 293 _catchall_handlers.pop(name)
@@ -279,6 +295,12 @@ def remove(name, handler):
279 if name in _event_handler_map[event]: 295 if name in _event_handler_map[event]:
280 _event_handler_map[event].pop(name) 296 _event_handler_map[event].pop(name)
281 297
298 if data:
299 bbhands_mc = (data.getVar("__BBHANDLERS_MC") or [])
300 if name in bbhands_mc:
301 bbhands_mc.remove(name)
302 data.setVar("__BBHANDLERS_MC", bbhands_mc)
303
282def get_handlers(): 304def get_handlers():
283 return _handlers 305 return _handlers
284 306