summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/runqueue.py58
1 files changed, 32 insertions, 26 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index f679813095..5ccf755f1a 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2450,6 +2450,11 @@ class RunQueueExecute:
2450 2450
2451 if update_tasks: 2451 if update_tasks:
2452 self.sqdone = False 2452 self.sqdone = False
2453 for tid in [t[0] for t in update_tasks]:
2454 h = pending_hash_index(tid, self.rqdata)
2455 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]:
2456 self.sq_deferred[tid] = self.sqdata.hashes[h]
2457 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h]))
2453 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) 2458 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
2454 2459
2455 for (tid, harddepfail, origvalid) in update_tasks: 2460 for (tid, harddepfail, origvalid) in update_tasks:
@@ -2793,6 +2798,19 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
2793 sqdata.stamppresent = set() 2798 sqdata.stamppresent = set()
2794 sqdata.valid = set() 2799 sqdata.valid = set()
2795 2800
2801 sqdata.hashes = {}
2802 sqrq.sq_deferred = {}
2803 for mc in sorted(sqdata.multiconfigs):
2804 for tid in sorted(sqdata.sq_revdeps):
2805 if mc_from_tid(tid) != mc:
2806 continue
2807 h = pending_hash_index(tid, rqdata)
2808 if h not in sqdata.hashes:
2809 sqdata.hashes[h] = tid
2810 else:
2811 sqrq.sq_deferred[tid] = sqdata.hashes[h]
2812 bb.note("Deferring %s after %s" % (tid, sqdata.hashes[h]))
2813
2796 update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True) 2814 update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True)
2797 2815
2798 # Compute a list of 'stale' sstate tasks where the current hash does not match the one 2816 # Compute a list of 'stale' sstate tasks where the current hash does not match the one
@@ -2857,32 +2875,20 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s
2857 2875
2858 sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary) 2876 sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary)
2859 2877
2860 sqdata.hashes = {} 2878 for tid in tids:
2861 sqrq.sq_deferred = {} 2879 if tid in sqdata.stamppresent:
2862 for mc in sorted(sqdata.multiconfigs): 2880 continue
2863 for tid in sorted(sqdata.sq_revdeps): 2881 if tid in sqdata.valid:
2864 if mc_from_tid(tid) != mc: 2882 continue
2865 continue 2883 if tid in sqdata.noexec:
2866 if tid in sqdata.stamppresent: 2884 continue
2867 continue 2885 if tid in sqrq.scenequeue_covered:
2868 if tid in sqdata.valid: 2886 continue
2869 continue 2887 if tid in sqrq.scenequeue_notcovered:
2870 if tid in sqdata.noexec: 2888 continue
2871 continue 2889 if tid in sqrq.sq_deferred:
2872 if tid in sqrq.scenequeue_notcovered: 2890 continue
2873 continue 2891 sqdata.outrightfail.add(tid)
2874 if tid in sqrq.scenequeue_covered:
2875 continue
2876
2877 h = pending_hash_index(tid, rqdata)
2878 if h not in sqdata.hashes:
2879 if tid in tids:
2880 sqdata.outrightfail.add(tid)
2881 sqdata.hashes[h] = tid
2882 else:
2883 sqrq.sq_deferred[tid] = sqdata.hashes[h]
2884 bb.note("Deferring %s after %s" % (tid, sqdata.hashes[h]))
2885
2886 2892
2887class TaskFailure(Exception): 2893class TaskFailure(Exception):
2888 """ 2894 """