[oe-commits] [bitbake] branch master-next updated: runqueue: Ensure failed harddependencies in scenequeue are accounted for in migrations

git at git.openembedded.org git at git.openembedded.org
Sat Nov 23 13:58:36 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.

The following commit(s) were added to refs/heads/master-next by this push:
     new 0dc61e8  runqueue: Ensure failed harddependencies in scenequeue are accounted for in migrations
0dc61e8 is described below

commit 0dc61e8b9964f7fe41d51b6a481ca7aeaacd8bce
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Sat Nov 23 13:51:06 2019 +0000

    runqueue: Ensure failed harddependencies in scenequeue are accounted for in migrations
    
    Setscene hard dependencies were not being correctly handled during task migration.
    For example, do_package of recipe X might become valid due to hashequiv yet we're
    still rebuilding pseudo-native, a harddep of do_package. This would mean
    it would try to execute that setscene task despite pseudo not being present.
    
    Fix this by ignoring tasks with failed harddependencies. This does mean
    stlightly more rebuilds than is optimal but it avoids build crashes. Ultimately
    the new runqueue model can likely better handle these cases than the older codebase
    could but that is for another more invasive patch.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/runqueue.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 26492e7..485d934 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -2343,7 +2343,12 @@ class RunQueueExecute:
                 self.sq_buildable.remove(tid)
             if tid in self.sq_running:
                 self.sq_running.remove(tid)
-            if self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered):
+            harddepfail = False
+            for t in self.sqdata.sq_harddeps:
+                if tid in self.sqdata.sq_harddeps[t] and t in self.scenequeue_notcovered:
+                    harddepfail = True
+                    break
+            if not harddepfail and self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered):
                 if tid not in self.sq_buildable:
                     self.sq_buildable.add(tid)
             if len(self.sqdata.sq_revdeps[tid]) == 0:
@@ -2374,6 +2379,8 @@ class RunQueueExecute:
             update_scenequeue_data([tid], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
             if tid in self.sqdata.valid and not origvalid:
                 logger.info("Setscene task %s became valid" % tid)
+            if harddepfail:
+                self.sq_task_failoutright(tid)
 
         if changed:
             self.holdoff_need_update = True

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


More information about the Openembedded-commits mailing list