summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-12-27 20:47:33 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-01-02 16:43:01 +0000
commit7ab33df995f370a2597720245d28616cad203198 (patch)
treec2213467c63463ba440c9bb7ae3132f9c7e6b9a5 /bitbake/lib
parente8ebeeaa1beb02d308bc8430f9b034229e16b062 (diff)
downloadpoky-7ab33df995f370a2597720245d28616cad203198.tar.gz
bitbake: 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. (Bitbake rev: 7a92b7f58ab187eddfe550bd6fb687240c7b11bb) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/runqueue.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index f82799800b..56ca2529ca 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2353,6 +2353,12 @@ class RunQueueExecute:
2353 if tid in self.tasks_scenequeue_done: 2353 if tid in self.tasks_scenequeue_done:
2354 self.tasks_scenequeue_done.remove(tid) 2354 self.tasks_scenequeue_done.remove(tid)
2355 for dep in self.sqdata.sq_covered_tasks[tid]: 2355 for dep in self.sqdata.sq_covered_tasks[tid]:
2356 if dep in self.runq_complete:
2357 bb.error("Task %s marked as completed but now needing to rerun? Aborting build." % dep)
2358 self.failed_tids.append(tid)
2359 self.rq.state = runQueueCleanUp
2360 return
2361
2356 if dep not in self.runq_complete: 2362 if dep not in self.runq_complete:
2357 if dep in self.tasks_scenequeue_done and dep not in self.sqdata.unskippable: 2363 if dep in self.tasks_scenequeue_done and dep not in self.sqdata.unskippable:
2358 self.tasks_scenequeue_done.remove(dep) 2364 self.tasks_scenequeue_done.remove(dep)