[bitbake-devel,15/26] runqueue: Add covered_tasks (or 'collated_deps') to scenequeue data

Submitted by Richard Purdie on July 10, 2019, 11:54 p.m. | Patch ID: 162964

Details

Message ID 20190710235420.23825-15-richard.purdie@linuxfoundation.org
State Master Next
Commit 357ac4509132fb6926971d263948c803973f69b3
Headers show

Commit Message

Richard Purdie July 10, 2019, 11:54 p.m.
Its useful to have a list of all the tasks a given setscene task covers
and we can easily generate this data whilst doing other data processing.

This is used in later changes to runqueue rather than trying to compute it
on the fly which is difficult.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 lib/bb/runqueue.py | 6 ++++++
 1 file changed, 6 insertions(+)

Patch hide | download patch | download mbox

diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 30b13d54a8..1d7706a219 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -2278,6 +2278,7 @@  def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
     sq_revdeps = {}
     sq_revdeps_new = {}
     sq_revdeps_squash = {}
+    sq_collated_deps = {}
 
     # We need to construct a dependency graph for the setscene functions. Intermediate
     # dependencies between the setscene tasks only complicate the code. This code
@@ -2299,6 +2300,7 @@  def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
 
     # Secondly process the chains between setscene tasks.
     for tid in rqdata.runq_setscene_tids:
+        sq_collated_deps[tid] = set()
         #bb.warn("Added endpoint 2 %s" % (tid))
         for dep in rqdata.runtaskentries[tid].depends:
                 if tid in sq_revdeps[dep]:
@@ -2318,6 +2320,9 @@  def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
                 tasks |= task
             if sq_revdeps_new[point]:
                 tasks |= sq_revdeps_new[point]
+            if point not in rqdata.runq_setscene_tids:
+                for t in tasks:
+                    sq_collated_deps[t].add(point)
             sq_revdeps_new[point] = set()
             if point in rqdata.runq_setscene_tids:
                 sq_revdeps_new[point] = tasks
@@ -2430,6 +2435,7 @@  def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
     sqdata.sq_deps = {}
     sqdata.sq_revdeps = sq_revdeps_squash
     sqdata.sq_revdeps2 = copy.deepcopy(sqdata.sq_revdeps)
+    sqdata.sq_covered_tasks = sq_collated_deps
 
     for tid in sqdata.sq_revdeps:
         sqdata.sq_deps[tid] = set()