* bitbake/runqueue.py: Add BB_SETSCENE_VERIFY_FUNCTION hook
@ 2011-11-21 16:51 Richard Purdie
0 siblings, 0 replies; only message in thread
From: Richard Purdie @ 2011-11-21 16:51 UTC (permalink / raw)
To: bitbake-devel
The OE metadata has cases where it needs to prevent some setscene
functions from running. An example of this is where we know a task
is going to run do_configure (which would clean out do_populate_sysroot)
and hence we don't want do_populate_sysroot_setscene to run.
This change adds in a hook so that the metadata can allow any
such policy decision to filter back up to bitbake.
It removes the existing code which attempted to do this in a generic
way but failed.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 54b1c86..de2cfb9 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -767,6 +767,7 @@ class RunQueue:
self.stamppolicy = bb.data.getVar("BB_STAMP_POLICY", cfgData, True) or "perfile"
self.hashvalidate = bb.data.getVar("BB_HASHCHECK_FUNCTION", cfgData, True) or None
+ self.setsceneverify = bb.data.getVar("BB_SETSCENE_VERIFY_FUNCTION", cfgData, True) or None
self.state = runQueuePrepare
@@ -1220,23 +1221,20 @@ class RunQueueExecuteTasks(RunQueueExecute):
found = True
self.rq.scenequeue_covered.add(task)
- # Detect when the real task needs to be run anyway by looking to see
- # if any of its dependencies within the same package are scheduled
- # to be run.
+ logger.debug(1, 'Skip list (pre setsceneverify) %s', sorted(self.rq.scenequeue_covered))
+
+ # Allow the metadata to elect for setscene tasks to run anyway
covered_remove = set()
- for task in self.rq.scenequeue_covered:
- task_fnid = self.rqdata.runq_fnid[task]
- for dep in self.rqdata.runq_depends[task]:
- if self.rqdata.runq_fnid[dep] == task_fnid:
- if dep not in self.rq.scenequeue_covered:
- covered_remove.add(task)
- break
+ if self.rq.setsceneverify:
+ call = self.rq.setsceneverify + "(covered, tasknames, fnids, fns, d)"
+ locs = { "covered" : self.rq.scenequeue_covered, "tasknames" : self.rqdata.runq_task, "fnids" : self.rqdata.runq_fnid, "fns" : self.rqdata.taskData.fn_index, "d" : self.cooker.configuration.data }
+ covered_remove = bb.utils.better_eval(call, locs)
for task in covered_remove:
fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
taskname = self.rqdata.runq_task[task] + '_setscene'
bb.build.del_stamp(taskname, self.rqdata.dataCache, fn)
- logger.debug(1, 'Not skipping task %s because it will have to be run anyway', task)
+ logger.debug(1, 'Not skipping task %s due to setsceneverify', task)
self.rq.scenequeue_covered.remove(task)
logger.debug(1, 'Full skip list %s', self.rq.scenequeue_covered)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2011-11-21 16:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-21 16:51 bitbake/runqueue.py: Add BB_SETSCENE_VERIFY_FUNCTION hook Richard Purdie
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.