diff options
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-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 a437aeef90..9efd1c86f9 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -2496,6 +2496,11 @@ class RunQueueExecute: | |||
2496 | 2496 | ||
2497 | if update_tasks: | 2497 | if update_tasks: |
2498 | self.sqdone = False | 2498 | self.sqdone = False |
2499 | for tid in [t[0] for t in update_tasks]: | ||
2500 | h = pending_hash_index(tid, self.rqdata) | ||
2501 | if h in self.sqdata.hashes and tid != self.sqdata.hashes[h]: | ||
2502 | self.sq_deferred[tid] = self.sqdata.hashes[h] | ||
2503 | bb.note("Deferring %s after %s" % (tid, self.sqdata.hashes[h])) | ||
2499 | update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) | 2504 | update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) |
2500 | 2505 | ||
2501 | for (tid, harddepfail, origvalid) in update_tasks: | 2506 | for (tid, harddepfail, origvalid) in update_tasks: |
@@ -2836,6 +2841,19 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq): | |||
2836 | sqdata.stamppresent = set() | 2841 | sqdata.stamppresent = set() |
2837 | sqdata.valid = set() | 2842 | sqdata.valid = set() |
2838 | 2843 | ||
2844 | sqdata.hashes = {} | ||
2845 | sqrq.sq_deferred = {} | ||
2846 | for mc in sorted(sqdata.multiconfigs): | ||
2847 | for tid in sorted(sqdata.sq_revdeps): | ||
2848 | if mc_from_tid(tid) != mc: | ||
2849 | continue | ||
2850 | h = pending_hash_index(tid, rqdata) | ||
2851 | if h not in sqdata.hashes: | ||
2852 | sqdata.hashes[h] = tid | ||
2853 | else: | ||
2854 | sqrq.sq_deferred[tid] = sqdata.hashes[h] | ||
2855 | bb.note("Deferring %s after %s" % (tid, sqdata.hashes[h])) | ||
2856 | |||
2839 | update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True) | 2857 | update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True) |
2840 | 2858 | ||
2841 | def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True): | 2859 | def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True): |
@@ -2876,32 +2894,20 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s | |||
2876 | 2894 | ||
2877 | sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary) | 2895 | sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary) |
2878 | 2896 | ||
2879 | sqdata.hashes = {} | 2897 | for tid in tids: |
2880 | sqrq.sq_deferred = {} | 2898 | if tid in sqdata.stamppresent: |
2881 | for mc in sorted(sqdata.multiconfigs): | 2899 | continue |
2882 | for tid in sorted(sqdata.sq_revdeps): | 2900 | if tid in sqdata.valid: |
2883 | if mc_from_tid(tid) != mc: | 2901 | continue |
2884 | continue | 2902 | if tid in sqdata.noexec: |
2885 | if tid in sqdata.stamppresent: | 2903 | continue |
2886 | continue | 2904 | if tid in sqrq.scenequeue_covered: |
2887 | if tid in sqdata.valid: | 2905 | continue |
2888 | continue | 2906 | if tid in sqrq.scenequeue_notcovered: |
2889 | if tid in sqdata.noexec: | 2907 | continue |
2890 | continue | 2908 | if tid in sqrq.sq_deferred: |
2891 | if tid in sqrq.scenequeue_notcovered: | 2909 | continue |
2892 | continue | 2910 | sqdata.outrightfail.add(tid) |
2893 | if tid in sqrq.scenequeue_covered: | ||
2894 | continue | ||
2895 | |||
2896 | h = pending_hash_index(tid, rqdata) | ||
2897 | if h not in sqdata.hashes: | ||
2898 | if tid in tids: | ||
2899 | sqdata.outrightfail.add(tid) | ||
2900 | sqdata.hashes[h] = tid | ||
2901 | else: | ||
2902 | sqrq.sq_deferred[tid] = sqdata.hashes[h] | ||
2903 | bb.note("Deferring %s after %s" % (tid, sqdata.hashes[h])) | ||
2904 | |||
2905 | 2911 | ||
2906 | class TaskFailure(Exception): | 2912 | class TaskFailure(Exception): |
2907 | """ | 2913 | """ |