summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r--bitbake/lib/bb/runqueue.py36
1 files changed, 20 insertions, 16 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index bcaaf70abd..2c1714da9d 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2508,17 +2508,6 @@ class RunQueueExecute:
2508 self.sq_buildable.remove(tid) 2508 self.sq_buildable.remove(tid)
2509 if tid in self.sq_running: 2509 if tid in self.sq_running:
2510 self.sq_running.remove(tid) 2510 self.sq_running.remove(tid)
2511 harddepfail = False
2512 for t in self.sqdata.sq_harddeps:
2513 if tid in self.sqdata.sq_harddeps[t] and t in self.scenequeue_notcovered:
2514 harddepfail = True
2515 break
2516 if not harddepfail and self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered):
2517 if tid not in self.sq_buildable:
2518 self.sq_buildable.add(tid)
2519 if not self.sqdata.sq_revdeps[tid]:
2520 self.sq_buildable.add(tid)
2521
2522 if tid in self.sqdata.outrightfail: 2511 if tid in self.sqdata.outrightfail:
2523 self.sqdata.outrightfail.remove(tid) 2512 self.sqdata.outrightfail.remove(tid)
2524 if tid in self.scenequeue_notcovered: 2513 if tid in self.scenequeue_notcovered:
@@ -2537,21 +2526,36 @@ class RunQueueExecute:
2537 if tid in self.build_stamps: 2526 if tid in self.build_stamps:
2538 del self.build_stamps[tid] 2527 del self.build_stamps[tid]
2539 2528
2540 update_tasks.append((tid, harddepfail, tid in self.sqdata.valid)) 2529 update_tasks.append(tid)
2530
2531 update_tasks2 = []
2532 for tid in update_tasks:
2533 harddepfail = False
2534 for t in self.sqdata.sq_harddeps:
2535 if tid in self.sqdata.sq_harddeps[t] and t in self.scenequeue_notcovered:
2536 harddepfail = True
2537 break
2538 if not harddepfail and self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered):
2539 if tid not in self.sq_buildable:
2540 self.sq_buildable.add(tid)
2541 if not self.sqdata.sq_revdeps[tid]:
2542 self.sq_buildable.add(tid)
2543
2544 update_tasks2.append((tid, harddepfail, tid in self.sqdata.valid))
2541 2545
2542 if update_tasks: 2546 if update_tasks2:
2543 self.sqdone = False 2547 self.sqdone = False
2544 for mc in sorted(self.sqdata.multiconfigs): 2548 for mc in sorted(self.sqdata.multiconfigs):
2545 for tid in sorted([t[0] for t in update_tasks]): 2549 for tid in sorted([t[0] for t in update_tasks2]):
2546 if mc_from_tid(tid) != mc: 2550 if mc_from_tid(tid) != mc:
2547 continue 2551 continue
2548 h = pending_hash_index(tid, self.rqdata) 2552 h = pending_hash_index(tid, self.rqdata)
2549 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]: 2553 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]:
2550 self.sq_deferred[tid] = self.sqdata.hashes[h] 2554 self.sq_deferred[tid] = self.sqdata.hashes[h]
2551 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h])) 2555 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h]))
2552 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) 2556 update_scenequeue_data([t[0] for t in update_tasks2], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
2553 2557
2554 for (tid, harddepfail, origvalid) in update_tasks: 2558 for (tid, harddepfail, origvalid) in update_tasks2:
2555 if tid in self.sqdata.valid and not origvalid: 2559 if tid in self.sqdata.valid and not origvalid:
2556 hashequiv_logger.verbose("Setscene task %s became valid" % tid) 2560 hashequiv_logger.verbose("Setscene task %s became valid" % tid)
2557 if harddepfail: 2561 if harddepfail: