[oe-commits] [bitbake] 22/25: runqueue: Ensure task dependencies are run correctly

git at git.openembedded.org git at git.openembedded.org
Sat Jan 11 11:07:18 UTC 2020


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

rpurdie pushed a commit to branch 1.44
in repository bitbake.

commit 182b2ae7bab4a943978154be3a65c018aaf21fdc
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Fri Dec 27 20:47:33 2019 +0000

    runqueue: Ensure task dependencies are run correctly
    
    We've seen a number of mystery failures where task B would run despite
    task A, its dependency not having run. An example would be do_compile
    when do_unpack didn't run.
    
    This has been tracked down to this code block. In theory it shouldn't
    trigger however it can and has due to bugs elsewhere. When it does, it
    causes significant weird failures and possible build corruption.
    
    Change the code to abort the build. This avoids any chance of corruption
    and should ensure the issues get reported, putting an end to the weird
    build failures.
    
    There may be some cases where this triggers and it shouldn't, we'll work
    through those as they arise and are identified.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
    (cherry picked from commit 7a92b7f58ab187eddfe550bd6fb687240c7b11bb)
    Signed-off-by: Armin Kuster <akuster808 at gmail.com>
---
 lib/bb/runqueue.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index f827998..56ca252 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -2353,6 +2353,12 @@ class RunQueueExecute:
             if tid in self.tasks_scenequeue_done:
                 self.tasks_scenequeue_done.remove(tid)
             for dep in self.sqdata.sq_covered_tasks[tid]:
+                if dep in self.runq_complete:
+                    bb.error("Task %s marked as completed but now needing to rerun? Aborting build." % dep)
+                    self.failed_tids.append(tid)
+                    self.rq.state = runQueueCleanUp
+                    return
+
                 if dep not in self.runq_complete:
                     if dep in self.tasks_scenequeue_done and dep not in self.sqdata.unskippable:
                         self.tasks_scenequeue_done.remove(dep)

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


More information about the Openembedded-commits mailing list