diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 58 |
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 | ||
2880 | class TaskFailure(Exception): | 2886 | class TaskFailure(Exception): |
2881 | """ | 2887 | """ |