summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2014-02-13 15:01:25 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-02-13 17:57:20 +0000
commitb60ed2d0fd86a3ae5ce7facbb044677aa7ec2889 (patch)
treef6cdf1a3eb3a0605a78a15f6d30a05780046a3e1
parenta2a20adbfd03ed9f07a3aa38ee2c9a8d962d4bf9 (diff)
downloadpoky-b60ed2d0fd86a3ae5ce7facbb044677aa7ec2889.tar.gz
bitbake: runqueue: Ensure we do run 'masked' setscene tasks if specified as targets
If you specify multiple targets on bitbake's commandline and some of them are setscene tasks which are "masked" by other tasks they may not get run. For example <image>:do_rootfs <kernel>:do_populate_sysroot the rootfs tasks "masks" the populate_sysroot task so bitbake would currently decide not to run it. In this case, we do really want it to be run. The fix is not to skip anything which has been given as an explict target. (Bitbake rev: 0753899d1e855795cc18671357609a86f169b379) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/runqueue.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 11bd936cb2..15064f8142 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1886,10 +1886,18 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1886 if nexttask in self.unskippable: 1886 if nexttask in self.unskippable:
1887 logger.debug(2, "Setscene task %s is unskippable" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask])) 1887 logger.debug(2, "Setscene task %s is unskippable" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask]))
1888 if nexttask not in self.unskippable and len(self.sq_revdeps[nexttask]) > 0 and self.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and self.check_dependencies(nexttask, self.sq_revdeps[nexttask], True): 1888 if nexttask not in self.unskippable and len(self.sq_revdeps[nexttask]) > 0 and self.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and self.check_dependencies(nexttask, self.sq_revdeps[nexttask], True):
1889 logger.debug(2, "Skipping setscene for task %s" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask])) 1889 realtask = self.rqdata.runq_setscene[nexttask]
1890 self.task_skip(nexttask) 1890 fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realtask]]
1891 self.scenequeue_notneeded.add(nexttask) 1891 target = False
1892 return True 1892 for target in self.rqdata.target_pairs:
1893 if target[0] == fn and target[1] == self.rqdata.runq_task[realtask]:
1894 target = True
1895 break
1896 if not target:
1897 logger.debug(2, "Skipping setscene for task %s" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask]))
1898 self.task_skip(nexttask)
1899 self.scenequeue_notneeded.add(nexttask)
1900 return True
1893 task = nexttask 1901 task = nexttask
1894 break 1902 break
1895 if task is not None: 1903 if task is not None: