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>
This commit is contained in:
Richard Purdie 2014-02-13 15:01:25 +00:00
parent a2a20adbfd
commit b60ed2d0fd
1 changed files with 12 additions and 4 deletions

View File

@ -1886,10 +1886,18 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
if nexttask in self.unskippable:
logger.debug(2, "Setscene task %s is unskippable" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask]))
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):
logger.debug(2, "Skipping setscene for task %s" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask]))
self.task_skip(nexttask)
self.scenequeue_notneeded.add(nexttask)
return True
realtask = self.rqdata.runq_setscene[nexttask]
fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realtask]]
target = False
for target in self.rqdata.target_pairs:
if target[0] == fn and target[1] == self.rqdata.runq_task[realtask]:
target = True
break
if not target:
logger.debug(2, "Skipping setscene for task %s" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask]))
self.task_skip(nexttask)
self.scenequeue_notneeded.add(nexttask)
return True
task = nexttask
break
if task is not None: