bitbake: cooker/runqueue: Allow bitbake commands starting with do_

The output of "bitbake, -c listtasks pkg" lists tasks with their real names
(starting with "do_"), but then "bitbake -c do_task" fails, as "do_" always
gets unconditionally prepended to task names. This patch handles this error
by checking whether a task starts with "do_" prior to prepending it with it
when the task runlist is being constructed (and a few other corner cases).

[YOCTO #7818]

(Bitbake rev: dd3050ceef37ac556546e940aa596ce96ef6c8df)

Signed-off-by: Alex Franco <alejandro.franco@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alex Franco 2015-09-02 15:11:30 -05:00 committed by Richard Purdie
parent ccc1d9ac0c
commit 7ef2f951d6
2 changed files with 12 additions and 4 deletions

View File

@ -663,7 +663,9 @@ class BBCooker:
ktask = k2[1]
taskdata.add_provider(localdata, self.recipecache, k)
current += 1
runlist.append([k, "do_%s" % ktask])
if not ktask.startswith("do_"):
ktask = "do_%s" % ktask
runlist.append([k, ktask])
bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data)
taskdata.add_unresolved(localdata, self.recipecache)
bb.event.fire(bb.event.TreeDataPreparationCompleted(len(fulltargetlist)), self.data)
@ -1302,7 +1304,9 @@ class BBCooker:
# Invalidate task for target if force mode active
if self.configuration.force:
logger.verbose("Invalidate task %s, %s", task, fn)
bb.parse.siggen.invalidate_task('do_%s' % task, self.recipecache, fn)
if not task.startswith("do_"):
task = "do_%s" % task
bb.parse.siggen.invalidate_task(task, self.recipecache, fn)
# Setup taskdata structure
taskdata = bb.taskdata.TaskData(self.configuration.abort)
@ -1312,7 +1316,9 @@ class BBCooker:
bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.expanded_data)
# Execute the runqueue
runlist = [[item, "do_%s" % task]]
if not task.startswith("do_"):
task = "do_%s" % task
runlist = [[item, task]]
rq = bb.runqueue.RunQueue(self, self.data, self.recipecache, taskdata, runlist)

View File

@ -793,7 +793,9 @@ class RunQueueData:
if self.cooker.configuration.invalidate_stamp:
for (fn, target) in self.target_pairs:
for st in self.cooker.configuration.invalidate_stamp.split(','):
invalidate_task(fn, "do_%s" % st, True)
if not st.startswith("do_"):
st = "do_%s" % st
invalidate_task(fn, st, True)
# Iterate over the task list and call into the siggen code
dealtwith = set()