mirror of
https://git.yoctoproject.org/poky
synced 2026-09-19 00:49:33 +02:00
bitbake: runqueue: Uniquely namespace the scenequeue functions
In preparation for merging the setscene and normal task execution, uniquely namespace the scenequeue specific functions. For the one shared function, add the "sq_live" variable so we know which functions to send the results to. (Bitbake rev: 2cbe9399902ba67dca566c7344b2247412cf4d5c) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -1452,7 +1452,7 @@ class RunQueue:
|
|||||||
self.rqexe = RunQueueExecuteScenequeue(self)
|
self.rqexe = RunQueueExecuteScenequeue(self)
|
||||||
|
|
||||||
if self.state is runQueueSceneRun:
|
if self.state is runQueueSceneRun:
|
||||||
retval = self.rqexe.execute()
|
retval = self.rqexe.sq_execute()
|
||||||
|
|
||||||
if self.state is runQueueRunInit:
|
if self.state is runQueueRunInit:
|
||||||
if self.cooker.configuration.setsceneonly:
|
if self.cooker.configuration.setsceneonly:
|
||||||
@@ -1734,6 +1734,10 @@ class RunQueueExecute:
|
|||||||
self.number_tasks = int(self.cfgData.getVar("BB_NUMBER_THREADS") or 1)
|
self.number_tasks = int(self.cfgData.getVar("BB_NUMBER_THREADS") or 1)
|
||||||
self.scheduler = self.cfgData.getVar("BB_SCHEDULER") or "speed"
|
self.scheduler = self.cfgData.getVar("BB_SCHEDULER") or "speed"
|
||||||
|
|
||||||
|
self.sq_buildable = set()
|
||||||
|
self.sq_running = set()
|
||||||
|
self.sq_live = set()
|
||||||
|
|
||||||
self.runq_buildable = set()
|
self.runq_buildable = set()
|
||||||
self.runq_running = set()
|
self.runq_running = set()
|
||||||
self.runq_complete = set()
|
self.runq_complete = set()
|
||||||
@@ -1759,10 +1763,17 @@ class RunQueueExecute:
|
|||||||
self.build_stamps2.remove(self.build_stamps[task])
|
self.build_stamps2.remove(self.build_stamps[task])
|
||||||
del self.build_stamps[task]
|
del self.build_stamps[task]
|
||||||
|
|
||||||
if status != 0:
|
if task in self.sq_live:
|
||||||
self.task_fail(task, status)
|
if status != 0:
|
||||||
|
self.sq_task_fail(task, status)
|
||||||
|
else:
|
||||||
|
self.sq_task_complete(task)
|
||||||
|
self.sq_live.remove(task)
|
||||||
else:
|
else:
|
||||||
self.task_complete(task)
|
if status != 0:
|
||||||
|
self.task_fail(task, status)
|
||||||
|
else:
|
||||||
|
self.task_complete(task)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def finish_now(self):
|
def finish_now(self):
|
||||||
@@ -2272,7 +2283,7 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
|
|||||||
|
|
||||||
for tid in sqdata.sq_revdeps:
|
for tid in sqdata.sq_revdeps:
|
||||||
if len(sqdata.sq_revdeps[tid]) == 0:
|
if len(sqdata.sq_revdeps[tid]) == 0:
|
||||||
sqrq.runq_buildable.add(tid)
|
sqrq.sq_buildable.add(tid)
|
||||||
|
|
||||||
rqdata.init_progress_reporter.finish()
|
rqdata.init_progress_reporter.finish()
|
||||||
|
|
||||||
@@ -2292,20 +2303,20 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
|
|||||||
|
|
||||||
if 'noexec' in taskdep and taskname in taskdep['noexec']:
|
if 'noexec' in taskdep and taskname in taskdep['noexec']:
|
||||||
noexec.append(tid)
|
noexec.append(tid)
|
||||||
sqrq.task_skip(tid)
|
sqrq.sq_task_skip(tid)
|
||||||
bb.build.make_stamp(taskname + "_setscene", rqdata.dataCaches[mc], taskfn)
|
bb.build.make_stamp(taskname + "_setscene", rqdata.dataCaches[mc], taskfn)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if rq.check_stamp_task(tid, taskname + "_setscene", cache=stampcache):
|
if rq.check_stamp_task(tid, taskname + "_setscene", cache=stampcache):
|
||||||
logger.debug(2, 'Setscene stamp current for task %s', tid)
|
logger.debug(2, 'Setscene stamp current for task %s', tid)
|
||||||
stamppresent.append(tid)
|
stamppresent.append(tid)
|
||||||
sqrq.task_skip(tid)
|
sqrq.sq_task_skip(tid)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if rq.check_stamp_task(tid, taskname, recurse = True, cache=stampcache):
|
if rq.check_stamp_task(tid, taskname, recurse = True, cache=stampcache):
|
||||||
logger.debug(2, 'Normal stamp current for task %s', tid)
|
logger.debug(2, 'Normal stamp current for task %s', tid)
|
||||||
stamppresent.append(tid)
|
stamppresent.append(tid)
|
||||||
sqrq.task_skip(tid)
|
sqrq.sq_task_skip(tid)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
sq_fn.append(fn)
|
sq_fn.append(fn)
|
||||||
@@ -2367,9 +2378,9 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
continue
|
continue
|
||||||
self.sqdata.sq_revdeps2[dep].remove(task)
|
self.sqdata.sq_revdeps2[dep].remove(task)
|
||||||
if len(self.sqdata.sq_revdeps2[dep]) == 0:
|
if len(self.sqdata.sq_revdeps2[dep]) == 0:
|
||||||
self.runq_buildable.add(dep)
|
self.sq_buildable.add(dep)
|
||||||
|
|
||||||
def task_completeoutright(self, task):
|
def sq_task_completeoutright(self, task):
|
||||||
"""
|
"""
|
||||||
Mark a task as completed
|
Mark a task as completed
|
||||||
Look at the reverse dependencies and mark any task with
|
Look at the reverse dependencies and mark any task with
|
||||||
@@ -2380,7 +2391,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
self.scenequeue_covered.add(task)
|
self.scenequeue_covered.add(task)
|
||||||
self.scenequeue_updatecounters(task)
|
self.scenequeue_updatecounters(task)
|
||||||
|
|
||||||
def check_taskfail(self, task):
|
def sq_check_taskfail(self, task):
|
||||||
if self.rqdata.setscenewhitelist is not None:
|
if self.rqdata.setscenewhitelist is not None:
|
||||||
realtask = task.split('_setscene')[0]
|
realtask = task.split('_setscene')[0]
|
||||||
(mc, fn, taskname, taskfn) = split_tid_mcfn(realtask)
|
(mc, fn, taskname, taskfn) = split_tid_mcfn(realtask)
|
||||||
@@ -2389,34 +2400,34 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
logger.error('Task %s.%s failed' % (pn, taskname + "_setscene"))
|
logger.error('Task %s.%s failed' % (pn, taskname + "_setscene"))
|
||||||
self.rq.state = runQueueCleanUp
|
self.rq.state = runQueueCleanUp
|
||||||
|
|
||||||
def task_complete(self, task):
|
def sq_task_complete(self, task):
|
||||||
self.stats.taskCompleted()
|
self.stats.taskCompleted()
|
||||||
bb.event.fire(sceneQueueTaskCompleted(task, self.stats, self.rq), self.cfgData)
|
bb.event.fire(sceneQueueTaskCompleted(task, self.stats, self.rq), self.cfgData)
|
||||||
self.task_completeoutright(task)
|
self.sq_task_completeoutright(task)
|
||||||
|
|
||||||
def task_fail(self, task, result):
|
def sq_task_fail(self, task, result):
|
||||||
self.stats.taskFailed()
|
self.stats.taskFailed()
|
||||||
bb.event.fire(sceneQueueTaskFailed(task, self.stats, result, self), self.cfgData)
|
bb.event.fire(sceneQueueTaskFailed(task, self.stats, result, self), self.cfgData)
|
||||||
self.scenequeue_notcovered.add(task)
|
self.scenequeue_notcovered.add(task)
|
||||||
self.scenequeue_updatecounters(task, True)
|
self.scenequeue_updatecounters(task, True)
|
||||||
self.check_taskfail(task)
|
self.sq_check_taskfail(task)
|
||||||
|
|
||||||
def task_failoutright(self, task):
|
def sq_task_failoutright(self, task):
|
||||||
self.runq_running.add(task)
|
self.sq_running.add(task)
|
||||||
self.runq_buildable.add(task)
|
self.sq_buildable.add(task)
|
||||||
self.stats.taskSkipped()
|
self.stats.taskSkipped()
|
||||||
self.stats.taskCompleted()
|
self.stats.taskCompleted()
|
||||||
self.scenequeue_notcovered.add(task)
|
self.scenequeue_notcovered.add(task)
|
||||||
self.scenequeue_updatecounters(task, True)
|
self.scenequeue_updatecounters(task, True)
|
||||||
|
|
||||||
def task_skip(self, task):
|
def sq_task_skip(self, task):
|
||||||
self.runq_running.add(task)
|
self.sq_running.add(task)
|
||||||
self.runq_buildable.add(task)
|
self.sq_buildable.add(task)
|
||||||
self.task_completeoutright(task)
|
self.sq_task_completeoutright(task)
|
||||||
self.stats.taskSkipped()
|
self.stats.taskSkipped()
|
||||||
self.stats.taskCompleted()
|
self.stats.taskCompleted()
|
||||||
|
|
||||||
def execute(self):
|
def sq_execute(self):
|
||||||
"""
|
"""
|
||||||
Run the tasks in a queue prepared by prepare_runqueue
|
Run the tasks in a queue prepared by prepare_runqueue
|
||||||
"""
|
"""
|
||||||
@@ -2427,7 +2438,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
if self.can_start_task():
|
if self.can_start_task():
|
||||||
# Find the next setscene to run
|
# Find the next setscene to run
|
||||||
for nexttask in self.rqdata.runq_setscene_tids:
|
for nexttask in self.rqdata.runq_setscene_tids:
|
||||||
if nexttask in self.runq_buildable and nexttask not in self.runq_running and self.sqdata.stamps[nexttask] not in self.build_stamps.values():
|
if nexttask in self.sq_buildable and nexttask not in self.sq_running and self.sqdata.stamps[nexttask] not in self.build_stamps.values():
|
||||||
if nexttask in self.sqdata.unskippable:
|
if nexttask in self.sqdata.unskippable:
|
||||||
logger.debug(2, "Setscene task %s is unskippable" % nexttask)
|
logger.debug(2, "Setscene task %s is unskippable" % nexttask)
|
||||||
if nexttask not in self.sqdata.unskippable and len(self.sqdata.sq_revdeps[nexttask]) > 0 and self.sqdata.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and self.check_dependencies(nexttask, self.sqdata.sq_revdeps[nexttask]):
|
if nexttask not in self.sqdata.unskippable and len(self.sqdata.sq_revdeps[nexttask]) > 0 and self.sqdata.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and self.check_dependencies(nexttask, self.sqdata.sq_revdeps[nexttask]):
|
||||||
@@ -2438,11 +2449,11 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
foundtarget = True
|
foundtarget = True
|
||||||
if not foundtarget:
|
if not foundtarget:
|
||||||
logger.debug(2, "Skipping setscene for task %s" % nexttask)
|
logger.debug(2, "Skipping setscene for task %s" % nexttask)
|
||||||
self.task_skip(nexttask)
|
self.sq_task_skip(nexttask)
|
||||||
self.scenequeue_notneeded.add(nexttask)
|
self.scenequeue_notneeded.add(nexttask)
|
||||||
return True
|
return True
|
||||||
if nexttask in self.sqdata.outrightfail:
|
if nexttask in self.sqdata.outrightfail:
|
||||||
self.task_failoutright(nexttask)
|
self.sq_task_failoutright(nexttask)
|
||||||
return True
|
return True
|
||||||
task = nexttask
|
task = nexttask
|
||||||
break
|
break
|
||||||
@@ -2451,28 +2462,28 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
taskname = taskname + "_setscene"
|
taskname = taskname + "_setscene"
|
||||||
if self.rq.check_stamp_task(task, taskname_from_tid(task), recurse = True, cache=self.stampcache):
|
if self.rq.check_stamp_task(task, taskname_from_tid(task), recurse = True, cache=self.stampcache):
|
||||||
logger.debug(2, 'Stamp for underlying task %s is current, so skipping setscene variant', task)
|
logger.debug(2, 'Stamp for underlying task %s is current, so skipping setscene variant', task)
|
||||||
self.task_failoutright(task)
|
self.sq_task_failoutright(task)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if self.cooker.configuration.force:
|
if self.cooker.configuration.force:
|
||||||
if task in self.rqdata.target_tids:
|
if task in self.rqdata.target_tids:
|
||||||
self.task_failoutright(task)
|
self.sq_task_failoutright(task)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if self.rq.check_stamp_task(task, taskname, cache=self.stampcache):
|
if self.rq.check_stamp_task(task, taskname, cache=self.stampcache):
|
||||||
logger.debug(2, 'Setscene stamp current task %s, so skip it and its dependencies', task)
|
logger.debug(2, 'Setscene stamp current task %s, so skip it and its dependencies', task)
|
||||||
self.task_skip(task)
|
self.sq_task_skip(task)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if self.cooker.configuration.skipsetscene:
|
if self.cooker.configuration.skipsetscene:
|
||||||
logger.debug(2, 'No setscene tasks should be executed. Skipping %s', task)
|
logger.debug(2, 'No setscene tasks should be executed. Skipping %s', task)
|
||||||
self.task_failoutright(task)
|
self.sq_task_failoutright(task)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
startevent = sceneQueueTaskStarted(task, self.stats, self.rq)
|
startevent = sceneQueueTaskStarted(task, self.stats, self.rq)
|
||||||
bb.event.fire(startevent, self.cfgData)
|
bb.event.fire(startevent, self.cfgData)
|
||||||
|
|
||||||
taskdepdata = self.build_taskdepdata(task)
|
taskdepdata = self.sq_build_taskdepdata(task)
|
||||||
|
|
||||||
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
||||||
taskhash = self.rqdata.get_task_hash(task)
|
taskhash = self.rqdata.get_task_hash(task)
|
||||||
@@ -2488,7 +2499,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
|
|
||||||
self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
|
self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
|
||||||
self.build_stamps2.append(self.build_stamps[task])
|
self.build_stamps2.append(self.build_stamps[task])
|
||||||
self.runq_running.add(task)
|
self.sq_running.add(task)
|
||||||
|
self.sq_live.add(task)
|
||||||
self.stats.taskActive()
|
self.stats.taskActive()
|
||||||
if self.can_start_task():
|
if self.can_start_task():
|
||||||
return True
|
return True
|
||||||
@@ -2498,8 +2510,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
return self.rq.active_fds()
|
return self.rq.active_fds()
|
||||||
|
|
||||||
#for tid in self.sqdata.sq_revdeps:
|
#for tid in self.sqdata.sq_revdeps:
|
||||||
# if tid not in self.runq_running:
|
# if tid not in self.sq_running:
|
||||||
# buildable = tid in self.runq_buildable
|
# buildable = tid in self.sq_buildable
|
||||||
# revdeps = self.sqdata.sq_revdeps[tid]
|
# revdeps = self.sqdata.sq_revdeps[tid]
|
||||||
# bb.warn("Found we didn't run %s %s %s" % (tid, buildable, str(revdeps)))
|
# bb.warn("Found we didn't run %s %s %s" % (tid, buildable, str(revdeps)))
|
||||||
|
|
||||||
@@ -2515,11 +2527,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def runqueue_process_waitpid(self, task, status):
|
def sq_build_taskdepdata(self, task):
|
||||||
RunQueueExecute.runqueue_process_waitpid(self, task, status)
|
|
||||||
|
|
||||||
|
|
||||||
def build_taskdepdata(self, task):
|
|
||||||
def getsetscenedeps(tid):
|
def getsetscenedeps(tid):
|
||||||
deps = set()
|
deps = set()
|
||||||
(mc, fn, taskname, _) = split_tid_mcfn(tid)
|
(mc, fn, taskname, _) = split_tid_mcfn(tid)
|
||||||
|
|||||||
Reference in New Issue
Block a user