[oe-commits] [bitbake] 03/04: runqueue: Optimize recrdepends handling

git at git.openembedded.org git at git.openembedded.org
Mon Jan 29 14:39:12 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository bitbake.

commit 4ad281224e92b5f94e3a9c17e8898ec8f1086cdc
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Fri Jan 26 11:50:55 2018 +0000

    runqueue: Optimize recrdepends handling
    
    We can optimise the loops slightly so we only process given substrings
    once rather than many times. This means expanding out add_resolved_dependencies.
    
    Also add a function which allows replacement of the task element of a
    task id, reducing the amount of string handling we're doing in a performance
    critical loop.
    
    Its also clear that later code adds to the tasks depends so we don't need
    to add .depends() to extradeps at the start.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/runqueue.py | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 5f53fe7..bbfe9ee 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -74,6 +74,9 @@ def build_tid(mc, fn, taskname):
         return "multiconfig:" + mc + ":" + fn + ":" + taskname
     return fn + ":" + taskname
 
+def tid_replacetask(tid, taskname):
+    return tid.rsplit(":", 1)[0] + ":" + taskname
+
 class RunQueueStats:
     """
     Holds statistics on the tasks handled by the associated runQueue
@@ -581,12 +584,6 @@ class RunQueueData:
                     if t in taskData[mc].taskentries:
                         depends.add(t)
 
-        def add_resolved_dependencies(mc, fn, tasknames, depends):
-            for taskname in tasknames:
-                tid = build_tid(mc, fn, taskname)
-                if tid in self.runtaskentries:
-                    depends.add(tid)
-
         for mc in taskData:
             for tid in taskData[mc].taskentries:
 
@@ -689,16 +686,22 @@ class RunQueueData:
             extradeps = {}
 
             for taskcounter, tid in enumerate(recursivetasks):
-                extradeps[tid] = set(self.runtaskentries[tid].depends)
+                extradeps[tid] = set()
 
                 tasknames = recursivetasks[tid]
                 seendeps = set()
+                seenbasedeps = set()
 
                 def generate_recdeps(t):
                     newdeps = set()
-                    (mc, fn, taskname, _) = split_tid_mcfn(t)
-                    add_resolved_dependencies(mc, fn, tasknames, newdeps)
-                    extradeps[tid].update(newdeps)
+                    basetid = fn_from_tid(t)
+                    if basetid not in seenbasedeps:
+                        for taskname in tasknames:
+                            newtid = tid_replacetask(t, taskname)
+                            if newtid in self.runtaskentries and newtid not in seendeps:
+                                newdeps.add(newtid)
+                                extradeps[tid].add(newtid)
+                        seenbasedeps.add(basetid)
                     seendeps.add(t)
                     newdeps.add(t)
                     for i in newdeps:

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list