summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-08-05 11:21:18 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-08-08 15:44:47 +0100
commit377a671e07ff8dbd23b68a0693a035e8ad51fdc6 (patch)
tree518a150232d6c435536e3235fd540630da7e6a4b /bitbake
parent35183c1b33255e44801aa6a582a148c7831a4797 (diff)
downloadpoky-377a671e07ff8dbd23b68a0693a035e8ad51fdc6.tar.gz
bitbake: runqueue: Ensure deferred tasks are sorted by multiconfig
We have to prefer one multiconfig over another when deferring tasks, else we'll have cross-linked build trees and nothing will be able to build. In the original population code, we sort like this but we don't after rehashing. Ensure we have the same sorting after rehashing toa void deadlocks. (Bitbake rev: 27228c7f026acb8ae9e1211d0486ffb7338123a2) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/runqueue.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 359b503297..873f384ec4 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2506,11 +2506,14 @@ class RunQueueExecute:
2506 2506
2507 if update_tasks: 2507 if update_tasks:
2508 self.sqdone = False 2508 self.sqdone = False
2509 for tid in [t[0] for t in update_tasks]: 2509 for mc in sorted(self.sqdata.multiconfigs):
2510 h = pending_hash_index(tid, self.rqdata) 2510 for tid in sorted([t[0] for t in update_tasks]):
2511 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]: 2511 if mc_from_tid(tid) != mc:
2512 self.sq_deferred[tid] = self.sqdata.hashes[h] 2512 continue
2513 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h])) 2513 h = pending_hash_index(tid, self.rqdata)
2514 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]:
2515 self.sq_deferred[tid] = self.sqdata.hashes[h]
2516 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h]))
2514 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) 2517 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
2515 2518
2516 for (tid, harddepfail, origvalid) in update_tasks: 2519 for (tid, harddepfail, origvalid) in update_tasks: