summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 48e25401ba..ba75660555 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2489,17 +2489,6 @@ class RunQueueExecute:
2489 self.sq_buildable.remove(tid) 2489 self.sq_buildable.remove(tid)
2490 if tid in self.sq_running: 2490 if tid in self.sq_running:
2491 self.sq_running.remove(tid) 2491 self.sq_running.remove(tid)
2492 harddepfail = False
2493 for t in self.sqdata.sq_harddeps:
2494 if tid in self.sqdata.sq_harddeps[t] and t in self.scenequeue_notcovered:
2495 harddepfail = True
2496 break
2497 if not harddepfail and self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered):
2498 if tid not in self.sq_buildable:
2499 self.sq_buildable.add(tid)
2500 if not self.sqdata.sq_revdeps[tid]:
2501 self.sq_buildable.add(tid)
2502
2503 if tid in self.sqdata.outrightfail: 2492 if tid in self.sqdata.outrightfail:
2504 self.sqdata.outrightfail.remove(tid) 2493 self.sqdata.outrightfail.remove(tid)
2505 if tid in self.scenequeue_notcovered: 2494 if tid in self.scenequeue_notcovered:
@@ -2518,21 +2507,36 @@ class RunQueueExecute:
2518 if tid in self.build_stamps: 2507 if tid in self.build_stamps:
2519 del self.build_stamps[tid] 2508 del self.build_stamps[tid]
2520 2509
2521 update_tasks.append((tid, harddepfail, tid in self.sqdata.valid)) 2510 update_tasks.append(tid)
2511
2512 update_tasks2 = []
2513 for tid in update_tasks:
2514 harddepfail = False
2515 for t in self.sqdata.sq_harddeps:
2516 if tid in self.sqdata.sq_harddeps[t] and t in self.scenequeue_notcovered:
2517 harddepfail = True
2518 break
2519 if not harddepfail and self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered):
2520 if tid not in self.sq_buildable:
2521 self.sq_buildable.add(tid)
2522 if not self.sqdata.sq_revdeps[tid]:
2523 self.sq_buildable.add(tid)
2524
2525 update_tasks2.append((tid, harddepfail, tid in self.sqdata.valid))
2522 2526
2523 if update_tasks: 2527 if update_tasks2:
2524 self.sqdone = False 2528 self.sqdone = False
2525 for mc in sorted(self.sqdata.multiconfigs): 2529 for mc in sorted(self.sqdata.multiconfigs):
2526 for tid in sorted([t[0] for t in update_tasks]): 2530 for tid in sorted([t[0] for t in update_tasks2]):
2527 if mc_from_tid(tid) != mc: 2531 if mc_from_tid(tid) != mc:
2528 continue 2532 continue
2529 h = pending_hash_index(tid, self.rqdata) 2533 h = pending_hash_index(tid, self.rqdata)
2530 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]: 2534 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]:
2531 self.sq_deferred[tid] = self.sqdata.hashes[h] 2535 self.sq_deferred[tid] = self.sqdata.hashes[h]
2532 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h])) 2536 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h]))
2533 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) 2537 update_scenequeue_data([t[0] for t in update_tasks2], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
2534 2538
2535 for (tid, harddepfail, origvalid) in update_tasks: 2539 for (tid, harddepfail, origvalid) in update_tasks2:
2536 if tid in self.sqdata.valid and not origvalid: 2540 if tid in self.sqdata.valid and not origvalid:
2537 hashequiv_logger.verbose("Setscene task %s became valid" % tid) 2541 hashequiv_logger.verbose("Setscene task %s became valid" % tid)
2538 if harddepfail: 2542 if harddepfail: