mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 13:09:50 +00:00
bitbake: runqueue: Send BB_TASKDEPDATA for setscene tasks
We now have code in OE that needs BB_TASKDEPDATA for setscene tasks. Therefore generate and send this data. In this case its a "pre collapsed" tree but that is fine for the use cases in question. (Bitbake rev: 38b857d086af43af6ea3aa60d3876a2c9b225401) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -2212,14 +2212,16 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
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)
|
||||||
|
|
||||||
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
||||||
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run:
|
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run:
|
||||||
if not self.rq.fakeworker:
|
if not self.rq.fakeworker:
|
||||||
self.rq.start_fakeworker(self)
|
self.rq.start_fakeworker(self)
|
||||||
self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), None)) + b"</runtask>")
|
self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata)) + b"</runtask>")
|
||||||
self.rq.fakeworker[mc].process.stdin.flush()
|
self.rq.fakeworker[mc].process.stdin.flush()
|
||||||
else:
|
else:
|
||||||
self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), None)) + b"</runtask>")
|
self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata)) + b"</runtask>")
|
||||||
self.rq.worker[mc].process.stdin.flush()
|
self.rq.worker[mc].process.stdin.flush()
|
||||||
|
|
||||||
self.runq_running.add(task)
|
self.runq_running.add(task)
|
||||||
@@ -2252,6 +2254,44 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
def runqueue_process_waitpid(self, task, status):
|
def runqueue_process_waitpid(self, task, status):
|
||||||
RunQueueExecute.runqueue_process_waitpid(self, task, status)
|
RunQueueExecute.runqueue_process_waitpid(self, task, status)
|
||||||
|
|
||||||
|
|
||||||
|
def build_taskdepdata(self, task):
|
||||||
|
def getsetscenedeps(tid):
|
||||||
|
deps = set()
|
||||||
|
(mc, fn, taskname, _) = split_tid_mcfn(tid)
|
||||||
|
realtid = fn + ":" + taskname + "_setscene"
|
||||||
|
idepends = self.rqdata.taskData[mc].taskentries[realtid].idepends
|
||||||
|
for (depname, idependtask) in idepends:
|
||||||
|
if depname not in self.rqdata.taskData[mc].build_targets:
|
||||||
|
continue
|
||||||
|
|
||||||
|
depfn = self.rqdata.taskData[mc].build_targets[depname][0]
|
||||||
|
if depfn is None:
|
||||||
|
continue
|
||||||
|
deptid = depfn + ":" + idependtask.replace("_setscene", "")
|
||||||
|
deps.add(deptid)
|
||||||
|
return deps
|
||||||
|
|
||||||
|
taskdepdata = {}
|
||||||
|
next = getsetscenedeps(task)
|
||||||
|
next.add(task)
|
||||||
|
while next:
|
||||||
|
additional = []
|
||||||
|
for revdep in next:
|
||||||
|
(mc, fn, taskname, taskfn) = split_tid_mcfn(revdep)
|
||||||
|
pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn]
|
||||||
|
deps = getsetscenedeps(revdep)
|
||||||
|
provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
|
||||||
|
taskhash = self.rqdata.runtaskentries[revdep].hash
|
||||||
|
taskdepdata[revdep] = [pn, taskname, fn, deps, provides, taskhash]
|
||||||
|
for revdep2 in deps:
|
||||||
|
if revdep2 not in taskdepdata:
|
||||||
|
additional.append(revdep2)
|
||||||
|
next = additional
|
||||||
|
|
||||||
|
#bb.note("Task %s: " % task + str(taskdepdata).replace("], ", "],\n"))
|
||||||
|
return taskdepdata
|
||||||
|
|
||||||
class TaskFailure(Exception):
|
class TaskFailure(Exception):
|
||||||
"""
|
"""
|
||||||
Exception raised when a task in a runqueue fails
|
Exception raised when a task in a runqueue fails
|
||||||
|
|||||||
Reference in New Issue
Block a user