[bitbake-devel] [PATCHv2] Allow bitbake commands starting with do_

Alex Franco alejandro.franco at linux.intel.com
Wed Sep 2 20:11:30 UTC 2015


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]

Signed-off-by: Alex Franco <alejandro.franco at linux.intel.com>
---
 bitbake/lib/bb/cooker.py   | 12 +++++++++---
 bitbake/lib/bb/runqueue.py |  4 +++-
 bitbake/lib/bb/shell.py    |  4 +++-
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 99c4785..a0d7d59 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -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)
 
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 0f99e5a..2b71eed 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -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()
diff --git a/bitbake/lib/bb/shell.py b/bitbake/lib/bb/shell.py
index 1dd8d54..ffc87bb 100644
--- a/bitbake/lib/bb/shell.py
+++ b/bitbake/lib/bb/shell.py
@@ -167,7 +167,9 @@ class BitBakeShellCommands:
                 if len(providers) == 0:
                     raise Providers.NoProvider
 
-                tasks.append([name, "do_%s" % cmd])
+                if not cmd.startswith("do_"):
+                    cmd = "do_%s" % cmd
+                tasks.append([name, cmd])
 
             td.add_unresolved(localdata, cooker.status)
 
-- 
2.5.1




More information about the bitbake-devel mailing list