[oe-commits] [bitbake] 10/23: runqueue: Fold remains of the scenequeue setup into RunQueueExecute

git at git.openembedded.org git at git.openembedded.org
Thu Jul 11 11:26:14 UTC 2019


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

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

commit 3c5956405d65d90b9e7ca43a48b967ffb64554aa
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Thu Jul 11 00:36:43 2019 +0100

    runqueue: Fold remains of the scenequeue setup into RunQueueExecute
    
    Also move the scheduler init over, apart for the builtable tasks part which need
    to remain called later.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/runqueue.py | 89 ++++++++++++++++++++++++++----------------------------
 1 file changed, 42 insertions(+), 47 deletions(-)

diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 2cfcb33..e1cb140 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -196,6 +196,11 @@ class RunQueueScheduler(object):
         if self.rq.can_start_task():
             return self.next_buildable_task()
 
+    def initbuildable(self):
+        for tid in self.rqdata.runtaskentries:
+            if tid in self.rq.runq_buildable:
+                self.buildable.append(tid)
+
     def newbuildable(self, task):
         self.buildable.append(task)
 
@@ -1451,7 +1456,14 @@ class RunQueue:
             self.start_worker()
             self.rqdata.init_progress_reporter.next_stage()
             self.rqexe = RunQueueExecute(self)
-            start_scenequeue_tasks(self.rqexe)
+
+            # If we don't have any setscene functions, skip execution
+            if len(self.rqdata.runq_setscene_tids) == 0:
+                self.rqdata.init_progress_reporter.finish()
+                self.state = runQueueRunInit
+            else:
+                logger.info('Executing SetScene Tasks')
+                self.state = runQueueSceneRun
 
         if self.state is runQueueSceneRun:
             retval = self.rqexe.sq_execute()
@@ -1461,11 +1473,7 @@ class RunQueue:
                 self.state = runQueueComplete
 
         if self.state is runQueueRunInit:
-            # Just in case we didn't setscene
-            self.rqdata.init_progress_reporter.finish()
             logger.info("Executing RunQueue Tasks")
-            if not self.rqexe:
-                self.rqexe = RunQueueExecute(self)
             start_runqueue_tasks(self.rqexe)
             self.state = runQueueRunning
 
@@ -1690,7 +1698,7 @@ def process_setscene_whitelist(rq, rqdata, stampcache, sched, rqex):
     def check_norun_task(tid, showerror=False):
         (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
         # Ignore covered tasks
-        if tid in rq.scenequeue_covered:
+        if tid in rqex.scenequeue_covered:
             return False
         # Ignore stamped tasks
         if rq.check_stamp_task(tid, taskname, cache=stampcache):
@@ -1765,6 +1773,24 @@ class RunQueueExecute:
         if self.number_tasks <= 0:
              bb.fatal("Invalid BB_NUMBER_THREADS %s" % self.number_tasks)
 
+        self.scenequeue_covered = set()
+        self.scenequeue_notcovered = set()
+        self.scenequeue_notneeded = set()
+
+        if len(self.rqdata.runq_setscene_tids) > 0:
+            self.sqdata = SQData()
+            build_scenequeue_data(self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self)
+
+        schedulers = self.get_schedulers()
+        for scheduler in schedulers:
+            if self.scheduler == scheduler.name:
+                self.sched = scheduler(self, self.rqdata)
+                logger.debug(1, "Using runqueue scheduler '%s'", scheduler.name)
+                break
+        else:
+            bb.fatal("Invalid scheduler '%s'.  Available schedulers: %s" %
+                     (self.scheduler, ", ".join(obj.name for obj in schedulers)))
+
     def runqueue_process_waitpid(self, task, status):
 
         # self.build_stamps[pid] may not exist when use shared work directory.
@@ -1937,7 +1963,7 @@ class RunQueueExecute:
         if task is not None:
             (mc, fn, taskname, taskfn) = split_tid_mcfn(task)
 
-            if task in self.rq.scenequeue_covered:
+            if task in self.scenequeue_covered:
                 logger.debug(2, "Setscene covered task %s", task)
                 self.task_skip(task, "covered")
                 return True
@@ -2194,10 +2220,7 @@ class RunQueueExecute:
         #        revdeps = self.sqdata.sq_revdeps[tid]
         #        bb.warn("Found we didn't run %s %s %s" % (tid, buildable, str(revdeps)))
 
-        self.rq.scenequeue_covered = self.scenequeue_covered
-        self.rq.scenequeue_notcovered = self.scenequeue_notcovered
-
-        logger.debug(1, 'We can skip tasks %s', "\n".join(sorted(self.rq.scenequeue_covered)))
+        logger.debug(1, 'We can skip tasks %s', "\n".join(sorted(self.scenequeue_covered)))
 
         self.rq.state = runQueueRunInit
 
@@ -2490,29 +2513,28 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
                 sqdata.outrightfail.append(tid)
 
 def start_runqueue_tasks(rqexec):
-
         # Mark initial buildable tasks
         for tid in rqexec.rqdata.runtaskentries:
             if len(rqexec.rqdata.runtaskentries[tid].depends) == 0:
                 rqexec.runq_buildable.add(tid)
-            if len(rqexec.rqdata.runtaskentries[tid].revdeps) > 0 and rqexec.rqdata.runtaskentries[tid].revdeps.issubset(rqexec.rq.scenequeue_covered):
-                rqexec.rq.scenequeue_covered.add(tid)
+            if len(rqexec.rqdata.runtaskentries[tid].revdeps) > 0 and rqexec.rqdata.runtaskentries[tid].revdeps.issubset(rqexec.scenequeue_covered):
+                rqexec.scenequeue_covered.add(tid)
 
         found = True
         while found:
             found = False
             for tid in rqexec.rqdata.runtaskentries:
-                if tid in rqexec.rq.scenequeue_covered:
+                if tid in rqexec.scenequeue_covered:
                     continue
                 logger.debug(1, 'Considering %s: %s' % (tid, str(rqexec.rqdata.runtaskentries[tid].revdeps)))
 
-                if len(rqexec.rqdata.runtaskentries[tid].revdeps) > 0 and rqexec.rqdata.runtaskentries[tid].revdeps.issubset(rqexec.rq.scenequeue_covered):
-                    if tid in rqexec.rq.scenequeue_notcovered:
+                if len(rqexec.rqdata.runtaskentries[tid].revdeps) > 0 and rqexec.rqdata.runtaskentries[tid].revdeps.issubset(rqexec.scenequeue_covered):
+                    if tid in rqexec.scenequeue_notcovered:
                         continue
                     found = True
-                    rqexec.rq.scenequeue_covered.add(tid)
+                    rqexec.scenequeue_covered.add(tid)
 
-        logger.debug(1, 'Skip list %s', sorted(rqexec.rq.scenequeue_covered))
+        logger.debug(1, 'Skip list %s', sorted(rqexec.scenequeue_covered))
 
         for task in self.rq.scenequeue_notcovered:
             logger.debug(1, 'Not skipping task %s', task)
@@ -2525,35 +2547,8 @@ def start_runqueue_tasks(rqexec):
                     target_pairs.append((fn, taskname))
 
             event.fire(bb.event.StampUpdate(target_pairs, rqexec.rqdata.dataCaches[mc].stamp), rqexec.cfgData)
+        rqexec.sched.initbuildable()
 
-        schedulers = rqexec.get_schedulers()
-        for scheduler in schedulers:
-            if rqexec.scheduler == scheduler.name:
-                rqexec.sched = scheduler(rqexec, rqexec.rqdata)
-                logger.debug(1, "Using runqueue scheduler '%s'", scheduler.name)
-                break
-        else:
-            bb.fatal("Invalid scheduler '%s'.  Available schedulers: %s" %
-                     (rqexec.scheduler, ", ".join(obj.name for obj in schedulers)))
-
-def start_scenequeue_tasks(rqexec):
-        rqexec.scenequeue_covered = set()
-        rqexec.scenequeue_notcovered = set()
-        rqexec.scenequeue_notneeded = set()
-
-        # If we don't have any setscene functions, skip this step
-        if len(rqexec.rqdata.runq_setscene_tids) == 0:
-            rqexec.rq.scenequeue_covered = set()
-            rqexec.rq.scenequeue_notcovered = set()
-            rqexec.rq.state = runQueueRunInit
-            return
-
-        rqexec.sqdata = SQData()
-        build_scenequeue_data(rqexec.sqdata, rqexec.rqdata, rqexec.rq, rqexec.cooker, rqexec.stampcache, rqexec)
-
-        logger.info('Executing SetScene Tasks')
-
-        rqexec.rq.state = runQueueSceneRun
 
 class TaskFailure(Exception):
     """

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


More information about the Openembedded-commits mailing list