summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-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 6c41fe6d43..25e012125c 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2443,6 +2443,11 @@ class RunQueueExecute:
2443 2443
2444 if update_tasks: 2444 if update_tasks:
2445 self.sqdone = False 2445 self.sqdone = False
2446 for tid in [t[0] for t in update_tasks]:
2447 h = pending_hash_index(tid, self.rqdata)
2448 if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]:
2449 self.sq_deferred[tid] = self.sqdata.hashes[h]
2450 bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h]))
2446 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) 2451 update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
2447 2452
2448 for (tid, harddepfail, origvalid) in update_tasks: 2453 for (tid, harddepfail, origvalid) in update_tasks:
@@ -2786,6 +2791,19 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
2786 sqdata.stamppresent = set() 2791 sqdata.stamppresent = set()
2787 sqdata.valid = set() 2792 sqdata.valid = set()
2788 2793
2794 sqdata.hashes = {}
2795 sqrq.sq_deferred = {}
2796 for mc in sorted(sqdata.multiconfigs):
2797 for tid in sorted(sqdata.sq_revdeps):
2798 if mc_from_tid(tid) != mc:
2799 continue
2800 h = pending_hash_index(tid, rqdata)
2801 if h not in sqdata.hashes:
2802 sqdata.hashes[h] = tid
2803 else:
2804 sqrq.sq_deferred[tid] = sqdata.hashes[h]
2805 bb.note("Deferring %s after %s" % (tid, sqdata.hashes[h]))
2806
2789 update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True) 2807 update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True)
2790 2808
2791 # Compute a list of 'stale' sstate tasks where the current hash does not match the one 2809 # Compute a list of 'stale' sstate tasks where the current hash does not match the one
@@ -2850,32 +2868,20 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s
2850 2868
2851 sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary) 2869 sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary)
2852 2870
2853 sqdata.hashes = {} 2871 for tid in tids:
2854 sqrq.sq_deferred = {} 2872 if tid in sqdata.stamppresent:
2855 for mc in sorted(sqdata.multiconfigs): 2873 continue
2856 for tid in sorted(sqdata.sq_revdeps): 2874 if tid in sqdata.valid:
2857 if mc_from_tid(tid) != mc: 2875 continue
2858 continue 2876 if tid in sqdata.noexec:
2859 if tid in sqdata.stamppresent: 2877 continue
2860 continue 2878 if tid in sqrq.scenequeue_covered:
2861 if tid in sqdata.valid: 2879 continue
2862 continue 2880 if tid in sqrq.scenequeue_notcovered:
2863 if tid in sqdata.noexec: 2881 continue
2864 continue 2882 if tid in sqrq.sq_deferred:
2865 if tid in sqrq.scenequeue_notcovered: 2883 continue
2866 continue 2884 sqdata.outrightfail.add(tid)
2867 if tid in sqrq.scenequeue_covered:
2868 continue
2869
2870 h = pending_hash_index(tid, rqdata)
2871 if h not in sqdata.hashes:
2872 if tid in tids:
2873 sqdata.outrightfail.add(tid)
2874 sqdata.hashes[h] = tid
2875 else:
2876 sqrq.sq_deferred[tid] = sqdata.hashes[h]
2877 bb.note("Deferring %s after %s" % (tid, sqdata.hashes[h]))
2878
2879 2885
2880class TaskFailure(Exception): 2886class TaskFailure(Exception):
2881 """ 2887 """