summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-01-19 09:47:36 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2010-01-19 09:47:36 +0000
commit3162f336ed21b2646a82b0b87132656cbb59fc81 (patch)
treeabb56242af3d0a89f6b61e56ab6ea5be49a733d0 /lib
parent19a6dc1fe6e6a0d957710197e4420a3fc2b821f4 (diff)
downloadbitbake-3162f336ed21b2646a82b0b87132656cbb59fc81.tar.gz
event.py: Pass the datastore to the fire command, don't build it into events
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/bb/build.py8
-rw-r--r--lib/bb/command.py16
-rw-r--r--lib/bb/cooker.py22
-rw-r--r--lib/bb/event.py49
-rw-r--r--lib/bb/msg.py16
-rw-r--r--lib/bb/parse/parse_py/BBHandler.py2
-rw-r--r--lib/bb/runqueue.py32
-rw-r--r--lib/bb/taskdata.py14
8 files changed, 73 insertions, 86 deletions
diff --git a/lib/bb/build.py b/lib/bb/build.py
index 65e8118b4..6d80b4b54 100644
--- a/lib/bb/build.py
+++ b/lib/bb/build.py
@@ -55,7 +55,7 @@ class TaskBase(event.Event):
def __init__(self, t, d ):
self._task = t
self._package = bb.data.getVar("PF", d, 1)
- event.Event.__init__(self, d)
+ event.Event.__init__(self)
self._message = "package %s: task %s: %s" % (bb.data.getVar("PF", d, 1), t, bb.event.getName(self)[4:])
def getTask(self):
@@ -286,9 +286,9 @@ def exec_task(task, d):
data.setVar('OVERRIDES', 'task-%s:%s' % (task[3:], old_overrides), localdata)
data.update_data(localdata)
data.expandKeys(localdata)
- event.fire(TaskStarted(task, localdata))
+ event.fire(TaskStarted(task, localdata), localdata)
exec_func(task, localdata)
- event.fire(TaskSucceeded(task, localdata))
+ event.fire(TaskSucceeded(task, localdata), localdata)
except FuncFailed, message:
# Try to extract the optional logfile
try:
@@ -298,7 +298,7 @@ def exec_task(task, d):
msg = message
bb.msg.note(1, bb.msg.domain.Build, "Task failed: %s" % message )
failedevent = TaskFailed(msg, logfile, task, d)
- event.fire(failedevent)
+ event.fire(failedevent, d)
raise EventException("Function failed in task: %s" % message, failedevent)
# make stamp, or cause event and raise exception
diff --git a/lib/bb/command.py b/lib/bb/command.py
index 1a1bf00b3..2bb5365c0 100644
--- a/lib/bb/command.py
+++ b/lib/bb/command.py
@@ -94,9 +94,9 @@ class Command:
def finishAsyncCommand(self, error = None):
if error:
- bb.event.fire(bb.command.CookerCommandFailed(self.cooker.configuration.event_data, error))
+ bb.event.fire(bb.command.CookerCommandFailed(error), self.cooker.configuration.event_data)
else:
- bb.event.fire(bb.command.CookerCommandCompleted(self.cooker.configuration.event_data))
+ bb.event.fire(bb.command.CookerCommandCompleted(), self.cooker.configuration.event_data)
self.currentAsyncCommand = None
@@ -247,24 +247,24 @@ class CookerCommandCompleted(bb.event.Event):
"""
Cooker command completed
"""
- def __init__(self, data):
- bb.event.Event.__init__(self, data)
+ def __init__(self):
+ bb.event.Event.__init__(self)
class CookerCommandFailed(bb.event.Event):
"""
Cooker command completed
"""
- def __init__(self, data, error):
- bb.event.Event.__init__(self, data)
+ def __init__(self, error):
+ bb.event.Event.__init__(self)
self.error = error
class CookerCommandSetExitCode(bb.event.Event):
"""
Set the exit code for a cooker command
"""
- def __init__(self, data, exitcode):
- bb.event.Event.__init__(self, data)
+ def __init__(self, exitcode):
+ bb.event.Event.__init__(self)
self.exitcode = int(exitcode)
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 664847ce6..25131b740 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -245,7 +245,7 @@ class BBCooker:
def compareRevisions(self):
ret = bb.fetch.fetcher_compare_revisons(self.configuration.data)
- bb.event.fire(bb.command.CookerCommandSetExitCode(self.configuration.event_data, ret))
+ bb.event.fire(bb.command.CookerCommandSetExitCode(ret), self.configuration.event_data)
def showEnvironment(self, buildfile = None, pkgs_to_build = []):
"""
@@ -403,7 +403,7 @@ class BBCooker:
Generate an event with the result
"""
depgraph = self.generateDepTreeData(pkgs_to_build, task)
- bb.event.fire(bb.event.DepTreeGenerated(self.configuration.data, depgraph))
+ bb.event.fire(bb.event.DepTreeGenerated(depgraph), self.configuration.data)
def generateDotGraphFiles(self, pkgs_to_build, task):
"""
@@ -544,7 +544,7 @@ class BBCooker:
bb.fetch.fetcher_init(self.configuration.data)
- bb.event.fire(bb.event.ConfigParsed(self.configuration.data))
+ bb.event.fire(bb.event.ConfigParsed(), self.configuration.data)
except IOError, e:
bb.msg.fatal(bb.msg.domain.Parsing, "Error when parsing %s: %s" % (afile, str(e)))
@@ -657,7 +657,7 @@ class BBCooker:
taskdata.add_provider(self.configuration.data, self.status, item)
buildname = bb.data.getVar("BUILDNAME", self.configuration.data)
- bb.event.fire(bb.event.BuildStarted(buildname, [item], self.configuration.event_data))
+ bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.configuration.event_data)
# Execute the runqueue
runlist = [[item, "do_%s" % task]]
@@ -680,7 +680,7 @@ class BBCooker:
retval = False
if not retval:
self.command.finishAsyncCommand()
- bb.event.fire(bb.event.BuildCompleted(buildname, item, self.configuration.event_data, failures))
+ bb.event.fire(bb.event.BuildCompleted(buildname, item, failures), self.configuration.event_data)
return False
return 0.5
@@ -716,14 +716,14 @@ class BBCooker:
retval = False
if not retval:
self.command.finishAsyncCommand()
- bb.event.fire(bb.event.BuildCompleted(buildname, targets, self.configuration.event_data, failures))
+ bb.event.fire(bb.event.BuildCompleted(buildname, targets, failures), self.configuration.event_data)
return None
return 0.5
self.buildSetVars()
buildname = bb.data.getVar("BUILDNAME", self.configuration.data)
- bb.event.fire(bb.event.BuildStarted(buildname, targets, self.configuration.event_data))
+ bb.event.fire(bb.event.BuildStarted(buildname, targets), self.configuration.event_data)
localdata = data.createCopy(self.configuration.data)
bb.data.update_data(localdata)
@@ -904,15 +904,15 @@ class BBCooker:
else:
self.server.serve_forever()
- bb.event.fire(CookerExit(self.configuration.event_data))
+ bb.event.fire(CookerExit(), self.configuration.event_data)
class CookerExit(bb.event.Event):
"""
Notify clients of the Cooker shutdown
"""
- def __init__(self, d):
- bb.event.Event.__init__(self, d)
+ def __init__(self):
+ bb.event.Event.__init__(self)
class CookerParser:
def __init__(self, cooker, filelist, masked):
@@ -962,7 +962,7 @@ class CookerParser:
cooker.bb_cache.remove(f)
raise
finally:
- bb.event.fire(bb.event.ParseProgress(cooker.configuration.event_data, self.cached, self.parsed, self.skipped, self.masked, self.error, self.total))
+ bb.event.fire(bb.event.ParseProgress(self.cached, self.parsed, self.skipped, self.masked, self.error, self.total), cooker.configuration.event_data)
self.pointer += 1
diff --git a/lib/bb/event.py b/lib/bb/event.py
index 86b566feb..ff4f2327f 100644
--- a/lib/bb/event.py
+++ b/lib/bb/event.py
@@ -31,20 +31,10 @@ worker_pid = 0
class Event:
"""Base class for events"""
- type = "Event"
- def __init__(self, d):
- self._data = d
+ def __init__(self):
self.pid = worker_pid
- def getData(self):
- return self._data
-
- def setData(self, data):
- self._data = data
-
- data = property(getData, setData, None, "data property")
-
NotHandled = 0
Handled = 1
@@ -56,21 +46,18 @@ _handlers = {}
_ui_handlers = {}
_ui_handler_seq = 0
-def fire(event):
+def fire(event, d):
"""Fire off an Event"""
for handler in _handlers:
h = _handlers[handler]
+ event.data = d
if type(h).__name__ == "code":
exec(h)
tmpHandler(event)
else:
h(event)
-
- # Remove the event data elements for UI handlers - too much data otherwise
- # They can request data if they need it
- event.data = None
- event._data = None
+ del event.data
errors = []
for h in _ui_handlers:
@@ -128,17 +115,17 @@ class ConfigParsed(Event):
class RecipeParsed(Event):
""" Recipe Parsing Complete """
- def __init__(self, fn, d):
+ def __init__(self, fn):
self.fn = fn
- Event.__init__(self, d)
+ Event.__init__(self)
class StampUpdate(Event):
"""Trigger for any adjustment of the stamp files to happen"""
- def __init__(self, targets, stampfns, d):
+ def __init__(self, targets, stampfns):
self._targets = targets
self._stampfns = stampfns
- Event.__init__(self, d)
+ Event.__init__(self)
def getStampPrefix(self):
return self._stampfns
@@ -169,10 +156,10 @@ class PkgBase(Event):
class BuildBase(Event):
"""Base class for bbmake run events"""
- def __init__(self, n, p, c, failures = 0):
+ def __init__(self, n, p, failures = 0):
self._name = n
self._pkgs = p
- Event.__init__(self, c)
+ Event.__init__(self)
self._failures = failures
def getPkgs(self):
@@ -238,8 +225,8 @@ class RecursiveDep(DepBase):
class NoProvider(Event):
"""No Provider for an Event"""
- def __init__(self, item, data, runtime=False):
- Event.__init__(self, data)
+ def __init__(self, item, runtime=False):
+ Event.__init__(self)
self._item = item
self._runtime = runtime
@@ -252,8 +239,8 @@ class NoProvider(Event):
class MultipleProviders(Event):
"""Multiple Providers"""
- def __init__(self, item, candidates, data, runtime = False):
- Event.__init__(self, data)
+ def __init__(self, item, candidates, runtime = False):
+ Event.__init__(self)
self._item = item
self._candidates = candidates
self._is_runtime = runtime
@@ -281,8 +268,8 @@ class ParseProgress(Event):
Parsing Progress Event
"""
- def __init__(self, d, cached, parsed, skipped, masked, errors, total):
- Event.__init__(self, d)
+ def __init__(self, cached, parsed, skipped, masked, errors, total):
+ Event.__init__(self)
self.cached = cached
self.parsed = parsed
self.skipped = skipped
@@ -296,7 +283,7 @@ class DepTreeGenerated(Event):
Event when a dependency tree has been generated
"""
- def __init__(self, d, depgraph):
- Event.__init__(self, d)
+ def __init__(self, depgraph):
+ Event.__init__(self)
self._depgraph = depgraph
diff --git a/lib/bb/msg.py b/lib/bb/msg.py
index 7990833c2..3fcf7091b 100644
--- a/lib/bb/msg.py
+++ b/lib/bb/msg.py
@@ -47,9 +47,9 @@ domain = bb.utils.Enum(
class MsgBase(bb.event.Event):
"""Base class for messages"""
- def __init__(self, msg, d ):
+ def __init__(self, msg):
self._message = msg
- event.Event.__init__(self, d)
+ event.Event.__init__(self)
class MsgDebug(MsgBase):
"""Debug Message"""
@@ -100,26 +100,26 @@ def debug(level, domain, msg, fn = None):
if not domain:
domain = 'default'
if debug_level[domain] >= level:
- bb.event.fire(MsgDebug(msg, None))
+ bb.event.fire(MsgDebug(msg), None)
def note(level, domain, msg, fn = None):
if not domain:
domain = 'default'
if level == 1 or verbose or debug_level[domain] >= 1:
- bb.event.fire(MsgNote(msg, None))
+ bb.event.fire(MsgNote(msg), None)
def warn(domain, msg, fn = None):
- bb.event.fire(MsgWarn(msg, None))
+ bb.event.fire(MsgWarn(msg), None)
def error(domain, msg, fn = None):
- bb.event.fire(MsgError(msg, None))
+ bb.event.fire(MsgError(msg), None)
print 'ERROR: ' + msg
def fatal(domain, msg, fn = None):
- bb.event.fire(MsgFatal(msg, None))
+ bb.event.fire(MsgFatal(msg), None)
print 'FATAL: ' + msg
sys.exit(1)
def plain(msg, fn = None):
- bb.event.fire(MsgPlain(msg, None))
+ bb.event.fire(MsgPlain(msg), None)
diff --git a/lib/bb/parse/parse_py/BBHandler.py b/lib/bb/parse/parse_py/BBHandler.py
index f0c340956..f34599136 100644
--- a/lib/bb/parse/parse_py/BBHandler.py
+++ b/lib/bb/parse/parse_py/BBHandler.py
@@ -114,7 +114,7 @@ def finalise(fn, d):
tasklist = data.getVar('__BBTASKS', d) or []
bb.build.add_tasks(tasklist, d)
- bb.event.fire(bb.event.RecipeParsed(fn, d))
+ bb.event.fire(bb.event.RecipeParsed(fn), d)
def handle(fn, d, include = 0):
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 8b6e12d18..35732c2db 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -870,7 +870,7 @@ class RunQueue:
self.state = runQueueRunning
- event.fire(bb.event.StampUpdate(self.target_pairs, self.dataCache.stamp, self.cfgData))
+ event.fire(bb.event.StampUpdate(self.target_pairs, self.dataCache.stamp), self.cfgData)
def task_complete(self, task):
"""
@@ -903,7 +903,7 @@ class RunQueue:
self.stats.taskFailed()
fnid = self.runq_fnid[task]
self.failed_fnids.append(fnid)
- bb.event.fire(runQueueTaskFailed(task, self.stats, self, self.cfgData))
+ bb.event.fire(runQueueTaskFailed(task, self.stats, self), self.cfgData)
if self.taskData.abort:
self.state = runQueueCleanup
@@ -944,7 +944,7 @@ class RunQueue:
# events
bb.event.worker_pid = os.getpid()
- bb.event.fire(runQueueTaskStarted(task, self.stats, self, self.cfgData))
+ bb.event.fire(runQueueTaskStarted(task, self.stats, self), self.cfgData)
bb.msg.note(1, bb.msg.domain.RunQueue,
"Running task %d of %d (ID: %s, %s)" % (self.stats.completed + self.stats.active + 1,
self.stats.total,
@@ -981,7 +981,7 @@ class RunQueue:
return
self.task_complete(task)
self.stats.taskCompleted()
- bb.event.fire(runQueueTaskCompleted(task, self.stats, self, self.cfgData))
+ bb.event.fire(runQueueTaskCompleted(task, self.stats, self), self.cfgData)
continue
if len(self.failed_fnids) != 0:
@@ -1013,7 +1013,7 @@ class RunQueue:
self.finish_runqueue_now()
try:
while self.stats.active > 0:
- bb.event.fire(runQueueExitWait(self.stats.active, self.cfgData))
+ bb.event.fire(runQueueExitWait(self.stats.active), self.cfgData)
bb.msg.note(1, bb.msg.domain.RunQueue, "Waiting for %s active tasks to finish" % self.stats.active)
tasknum = 1
for k, v in self.build_pids.iteritems():
@@ -1028,7 +1028,7 @@ class RunQueue:
self.task_fail(task, result[1])
else:
self.stats.taskCompleted()
- bb.event.fire(runQueueTaskCompleted(task, self.stats, self, self.cfgData))
+ bb.event.fire(runQueueTaskCompleted(task, self.stats, self), self.cfgData)
except:
self.finish_runqueue_now()
raise
@@ -1078,43 +1078,43 @@ class runQueueExitWait(bb.event.Event):
Event when waiting for task processes to exit
"""
- def __init__(self, remain, d):
+ def __init__(self, remain):
self.remain = remain
self.message = "Waiting for %s active tasks to finish" % remain
- bb.event.Event.__init__(self, d)
+ bb.event.Event.__init__(self)
class runQueueEvent(bb.event.Event):
"""
Base runQueue event class
"""
- def __init__(self, task, stats, rq, d):
+ def __init__(self, task, stats, rq):
self.taskid = task
self.taskstring = rq.get_user_idstring(task)
self.stats = stats
- bb.event.Event.__init__(self, d)
+ bb.event.Event.__init__(self)
class runQueueTaskStarted(runQueueEvent):
"""
Event notifing a task was started
"""
- def __init__(self, task, stats, rq, d):
- runQueueEvent.__init__(self, task, stats, rq, d)
+ def __init__(self, task, stats, rq):
+ runQueueEvent.__init__(self, task, stats, rq)
self.message = "Running task %s (%d of %d) (%s)" % (task, stats.completed + stats.active + 1, self.stats.total, self.taskstring)
class runQueueTaskFailed(runQueueEvent):
"""
Event notifing a task failed
"""
- def __init__(self, task, stats, rq, d):
- runQueueEvent.__init__(self, task, stats, rq, d)
+ def __init__(self, task, stats, rq):
+ runQueueEvent.__init__(self, task, stats, rq)
self.message = "Task %s failed (%s)" % (task, self.taskstring)
class runQueueTaskCompleted(runQueueEvent):
"""
Event notifing a task completed
"""
- def __init__(self, task, stats, rq, d):
- runQueueEvent.__init__(self, task, stats, rq, d)
+ def __init__(self, task, stats, rq):
+ runQueueEvent.__init__(self, task, stats, rq)
self.message = "Task %s completed (%s)" % (task, self.taskstring)
def check_stamp_fn(fn, taskname, d):
diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py
index 74536a711..e3a60b988 100644
--- a/lib/bb/taskdata.py
+++ b/lib/bb/taskdata.py
@@ -377,7 +377,7 @@ class TaskData:
bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
else:
bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
- bb.event.fire(bb.event.NoProvider(item, cfgData))
+ bb.event.fire(bb.event.NoProvider(item), cfgData)
raise bb.providers.NoProvider(item)
if self.have_build_target(item):
@@ -390,7 +390,7 @@ class TaskData:
if not eligible:
bb.msg.note(2, bb.msg.domain.Provider, "No buildable provider PROVIDES '%s' but '%s' DEPENDS on or otherwise requires it. Enable debugging and see earlier logs to find unbuildable providers." % (item, self.get_dependees_str(item)))
- bb.event.fire(bb.event.NoProvider(item, cfgData))
+ bb.event.fire(bb.event.NoProvider(item), cfgData)
raise bb.providers.NoProvider(item)
if len(eligible) > 1 and foundUnique == False:
@@ -400,7 +400,7 @@ class TaskData:
providers_list.append(dataCache.pkg_fn[fn])
bb.msg.note(1, bb.msg.domain.Provider, "multiple providers are available for %s (%s);" % (item, ", ".join(providers_list)))
bb.msg.note(1, bb.msg.domain.Provider, "consider defining PREFERRED_PROVIDER_%s" % item)
- bb.event.fire(bb.event.MultipleProviders(item, providers_list, cfgData))
+ bb.event.fire(bb.event.MultipleProviders(item, providers_list), cfgData)
self.consider_msgs_cache.append(item)
for fn in eligible:
@@ -430,7 +430,7 @@ class TaskData:
if not all_p:
bb.msg.error(bb.msg.domain.Provider, "'%s' RDEPENDS/RRECOMMENDS or otherwise requires the runtime entity '%s' but it wasn't found in any PACKAGE or RPROVIDES variables" % (self.get_rdependees_str(item), item))
- bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True))
+ bb.event.fire(bb.event.NoProvider(item, runtime=True), cfgData)
raise bb.providers.NoRProvider(item)
eligible, numberPreferred = bb.providers.filterProvidersRunTime(all_p, item, cfgData, dataCache)
@@ -438,7 +438,7 @@ class TaskData:
if not eligible:
bb.msg.error(bb.msg.domain.Provider, "'%s' RDEPENDS/RRECOMMENDS or otherwise requires the runtime entity '%s' but it wasn't found in any PACKAGE or RPROVIDES variables of any buildable targets.\nEnable debugging and see earlier logs to find unbuildable targets." % (self.get_rdependees_str(item), item))
- bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True))
+ bb.event.fire(bb.event.NoProvider(item, runtime=True), cfgData)
raise bb.providers.NoRProvider(item)
if len(eligible) > 1 and numberPreferred == 0:
@@ -448,7 +448,7 @@ class TaskData:
providers_list.append(dataCache.pkg_fn[fn])
bb.msg.note(2, bb.msg.domain.Provider, "multiple providers are available for runtime %s (%s);" % (item, ", ".join(providers_list)))
bb.msg.note(2, bb.msg.domain.Provider, "consider defining a PREFERRED_PROVIDER entry to match runtime %s" % item)
- bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True))
+ bb.event.fire(bb.event.MultipleProviders(item,providers_list, runtime=True), cfgData)
self.consider_msgs_cache.append(item)
if numberPreferred > 1:
@@ -458,7 +458,7 @@ class TaskData:
providers_list.append(dataCache.pkg_fn[fn])
bb.msg.note(2, bb.msg.domain.Provider, "multiple providers are available for runtime %s (top %s entries preferred) (%s);" % (item, numberPreferred, ", ".join(providers_list)))
bb.msg.note(2, bb.msg.domain.Provider, "consider defining only one PREFERRED_PROVIDER entry to match runtime %s" % item)
- bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True))
+ bb.event.fire(bb.event.MultipleProviders(item,providers_list, runtime=True), cfgData)
self.consider_msgs_cache.append(item)
# run through the list until we find one that we can build