diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 80d7f6ca6b..cd56a55472 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -2457,6 +2457,9 @@ class RunQueueExecute: | |||
2457 | if dep in self.scenequeue_covered or dep in self.scenequeue_notcovered: | 2457 | if dep in self.scenequeue_covered or dep in self.scenequeue_notcovered: |
2458 | # dependency could be already processed, e.g. noexec setscene task | 2458 | # dependency could be already processed, e.g. noexec setscene task |
2459 | continue | 2459 | continue |
2460 | noexec, stamppresent = check_setscene_stamps(dep, self.rqdata, self.rq, self.stampcache) | ||
2461 | if noexec or stamppresent: | ||
2462 | continue | ||
2460 | logger.debug2("%s was unavailable and is a hard dependency of %s so skipping" % (task, dep)) | 2463 | logger.debug2("%s was unavailable and is a hard dependency of %s so skipping" % (task, dep)) |
2461 | self.sq_task_failoutright(dep) | 2464 | self.sq_task_failoutright(dep) |
2462 | continue | 2465 | continue |
@@ -2795,6 +2798,26 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq): | |||
2795 | event = bb.event.StaleSetSceneTasks(found[mc]) | 2798 | event = bb.event.StaleSetSceneTasks(found[mc]) |
2796 | bb.event.fire(event, cooker.databuilder.mcdata[mc]) | 2799 | bb.event.fire(event, cooker.databuilder.mcdata[mc]) |
2797 | 2800 | ||
2801 | def check_setscene_stamps(tid, rqdata, rq, stampcache, noexecstamp=False): | ||
2802 | |||
2803 | (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) | ||
2804 | |||
2805 | taskdep = rqdata.dataCaches[mc].task_deps[taskfn] | ||
2806 | |||
2807 | if 'noexec' in taskdep and taskname in taskdep['noexec']: | ||
2808 | bb.build.make_stamp(taskname + "_setscene", rqdata.dataCaches[mc], taskfn) | ||
2809 | return True, False | ||
2810 | |||
2811 | if rq.check_stamp_task(tid, taskname + "_setscene", cache=stampcache): | ||
2812 | logger.debug2('Setscene stamp current for task %s', tid) | ||
2813 | return False, True | ||
2814 | |||
2815 | if rq.check_stamp_task(tid, taskname, recurse = True, cache=stampcache): | ||
2816 | logger.debug2('Normal stamp current for task %s', tid) | ||
2817 | return False, True | ||
2818 | |||
2819 | return False, False | ||
2820 | |||
2798 | def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True): | 2821 | def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True): |
2799 | 2822 | ||
2800 | tocheck = set() | 2823 | tocheck = set() |
@@ -2805,24 +2828,14 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s | |||
2805 | if tid in sqdata.valid: | 2828 | if tid in sqdata.valid: |
2806 | sqdata.valid.remove(tid) | 2829 | sqdata.valid.remove(tid) |
2807 | 2830 | ||
2808 | (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) | 2831 | noexec, stamppresent = check_setscene_stamps(tid, rqdata, rq, stampcache, noexecstamp=True) |
2809 | |||
2810 | taskdep = rqdata.dataCaches[mc].task_deps[taskfn] | ||
2811 | 2832 | ||
2812 | if 'noexec' in taskdep and taskname in taskdep['noexec']: | 2833 | if noexec: |
2813 | sqdata.noexec.add(tid) | 2834 | sqdata.noexec.add(tid) |
2814 | sqrq.sq_task_skip(tid) | 2835 | sqrq.sq_task_skip(tid) |
2815 | bb.build.make_stamp(taskname + "_setscene", rqdata.dataCaches[mc], taskfn) | ||
2816 | continue | ||
2817 | |||
2818 | if rq.check_stamp_task(tid, taskname + "_setscene", cache=stampcache): | ||
2819 | logger.debug2('Setscene stamp current for task %s', tid) | ||
2820 | sqdata.stamppresent.add(tid) | ||
2821 | sqrq.sq_task_skip(tid) | ||
2822 | continue | 2836 | continue |
2823 | 2837 | ||
2824 | if rq.check_stamp_task(tid, taskname, recurse = True, cache=stampcache): | 2838 | if stamppresent: |
2825 | logger.debug2('Normal stamp current for task %s', tid) | ||
2826 | sqdata.stamppresent.add(tid) | 2839 | sqdata.stamppresent.add(tid) |
2827 | sqrq.sq_task_skip(tid) | 2840 | sqrq.sq_task_skip(tid) |
2828 | continue | 2841 | continue |