|
@@ -1437,14 +1437,16 @@ class RunQueueExecuteTasks(RunQueueExecute):
|
|
|
startevent = runQueueTaskStarted(task, self.stats, self.rq)
|
|
|
bb.event.fire(startevent, self.cfgData)
|
|
|
|
|
|
+ taskdepdata = self.build_taskdepdata(task)
|
|
|
+
|
|
|
taskdep = self.rqdata.dataCache.task_deps[fn]
|
|
|
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run:
|
|
|
if not self.rq.fakeworker:
|
|
|
self.rq.start_fakeworker(self)
|
|
|
- self.rq.fakeworker.stdin.write("<runtask>" + pickle.dumps((fn, task, taskname, False, self.cooker.collection.get_file_appends(fn))) + "</runtask>")
|
|
|
+ self.rq.fakeworker.stdin.write("<runtask>" + pickle.dumps((fn, task, taskname, False, self.cooker.collection.get_file_appends(fn), taskdepdata)) + "</runtask>")
|
|
|
self.rq.fakeworker.stdin.flush()
|
|
|
else:
|
|
|
- self.rq.worker.stdin.write("<runtask>" + pickle.dumps((fn, task, taskname, False, self.cooker.collection.get_file_appends(fn))) + "</runtask>")
|
|
|
+ self.rq.worker.stdin.write("<runtask>" + pickle.dumps((fn, task, taskname, False, self.cooker.collection.get_file_appends(fn), taskdepdata)) + "</runtask>")
|
|
|
self.rq.worker.stdin.flush()
|
|
|
|
|
|
self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
|
|
@@ -1474,6 +1476,26 @@ class RunQueueExecuteTasks(RunQueueExecute):
|
|
|
|
|
|
return True
|
|
|
|
|
|
+ def build_taskdepdata(self, task):
|
|
|
+ taskdepdata = {}
|
|
|
+ next = self.rqdata.runq_depends[task]
|
|
|
+ next.add(task)
|
|
|
+ while next:
|
|
|
+ additional = []
|
|
|
+ for revdep in next:
|
|
|
+ fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[revdep]]
|
|
|
+ pn = self.rqdata.dataCache.pkg_fn[fn]
|
|
|
+ taskname = self.rqdata.runq_task[revdep]
|
|
|
+ deps = self.rqdata.runq_depends[revdep]
|
|
|
+ taskdepdata[revdep] = [pn, taskname, fn, deps]
|
|
|
+ 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 RunQueueExecuteScenequeue(RunQueueExecute):
|
|
|
def __init__(self, rq):
|
|
|
RunQueueExecute.__init__(self, rq)
|
|
@@ -1784,10 +1806,10 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|
|
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot']:
|
|
|
if not self.rq.fakeworker:
|
|
|
self.rq.start_fakeworker(self)
|
|
|
- self.rq.fakeworker.stdin.write("<runtask>" + pickle.dumps((fn, realtask, taskname, True, self.cooker.collection.get_file_appends(fn))) + "</runtask>")
|
|
|
+ self.rq.fakeworker.stdin.write("<runtask>" + pickle.dumps((fn, realtask, taskname, True, self.cooker.collection.get_file_appends(fn), None)) + "</runtask>")
|
|
|
self.rq.fakeworker.stdin.flush()
|
|
|
else:
|
|
|
- self.rq.worker.stdin.write("<runtask>" + pickle.dumps((fn, realtask, taskname, True, self.cooker.collection.get_file_appends(fn))) + "</runtask>")
|
|
|
+ self.rq.worker.stdin.write("<runtask>" + pickle.dumps((fn, realtask, taskname, True, self.cooker.collection.get_file_appends(fn), None)) + "</runtask>")
|
|
|
self.rq.worker.stdin.flush()
|
|
|
|
|
|
self.runq_running[task] = 1
|