summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-05-23 10:50:30 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-05-23 10:57:35 +0100
commit54e35a6cceead9521f8b1dacd48e55064e85c8bd (patch)
treebba12b3a75b88fdd86c8126cf7197142418abd3f /lib
parent6c3281a140125337fc75783973485e16785d05a1 (diff)
downloadbitbake-54e35a6cceead9521f8b1dacd48e55064e85c8bd.tar.gz
cooker/cookerdata/event: Improve class handlers management
Similarly to the execution context changes, establish better lifetime management API of the class event handlers. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/bb/cooker.py4
-rw-r--r--lib/bb/cookerdata.py1
-rw-r--r--lib/bb/event.py11
3 files changed, 13 insertions, 3 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index e8686475b..4c0b56943 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1455,7 +1455,7 @@ class Parser(multiprocessing.Process):
self.init = init
multiprocessing.Process.__init__(self)
self.context = bb.utils.get_context().copy()
- self.handlers = bb.event._handlers.copy()
+ self.handlers = bb.event.get_class_handlers().copy()
def run(self):
if self.init:
@@ -1492,7 +1492,7 @@ class Parser(multiprocessing.Process):
try:
# Reset our environment and handlers to the original settings
bb.utils.set_context(self.context.copy())
- bb.event._handlers = self.handlers.copy()
+ bb.event.set_class_handlers(self.handlers.copy())
return True, bb.cache.Cache.parse(filename, appends, self.cfg, caches_array)
except Exception as exc:
tb = sys.exc_info()[2]
diff --git a/lib/bb/cookerdata.py b/lib/bb/cookerdata.py
index de4331050..2247f8d3b 100644
--- a/lib/bb/cookerdata.py
+++ b/lib/bb/cookerdata.py
@@ -174,6 +174,7 @@ class CookerDataBuilder(object):
self.tracking = params.tracking
bb.utils.set_context(bb.utils.clean_context())
+ bb.event.set_class_handlers(bb.event.clean_class_handlers())
self.data = bb.data.init()
if self.tracking:
self.data.enableTracking()
diff --git a/lib/bb/event.py b/lib/bb/event.py
index 11c063fcc..2826e3554 100644
--- a/lib/bb/event.py
+++ b/lib/bb/event.py
@@ -50,8 +50,17 @@ class Event(object):
Registered = 10
AlreadyRegistered = 14
+def get_class_handlers():
+ return _handlers
+
+def set_class_handlers(h):
+ _handlers = h
+
+def clean_class_handlers():
+ return bb.compat.OrderedDict()
+
# Internal
-_handlers = bb.compat.OrderedDict()
+_handlers = clean_class_handlers()
_ui_handlers = {}
_ui_handler_seq = 0