diff options
| -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 | """ |
