summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r--bitbake/lib/bb/runqueue.py39
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
2801def 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
2798def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True): 2821def 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