This patch allows multiple tasks to be passed to bitbake -c. E.g.
$ bitbake foo -c clean,compile

It removes the need to parse all bb files twice as would occur with
$ bitbake foo -c clean; bitbake foo -c compile

Signed-off-by: Graham Gower <[email protected]>
---
 lib/bb/cooker.py |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index ea97c64..0fa449b 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -89,6 +89,7 @@ class BBCooker:
 
         if not self.configuration.cmd:
             self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", 
self.configuration.data, True) or "build"
+        self.configuration.cmd = self.configuration.cmd.split(",")
 
         bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, True)
         if bbpkgs and len(self.configuration.pkgs_to_build) == 0:
@@ -272,7 +273,8 @@ class BBCooker:
         runlist = []
         for k in pkgs_to_build:
             taskdata.add_provider(localdata, self.status, k)
-            runlist.append([k, "do_%s" % task])
+            for t in task:
+                runlist.append([k, "do_%s" % t])
         taskdata.add_unresolved(localdata, self.status)
 
         rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, 
taskdata, runlist)
@@ -654,8 +656,9 @@ class BBCooker:
 
         # Remove stamp for target if force mode active
         if self.configuration.force:
-            logger.verbose("Remove stamp %s, %s", task, fn)
-            bb.build.del_stamp('do_%s' % task, self.status, fn)
+            for t in task:
+                logger.verbose("Remove stamp %s, %s", t, fn)
+                bb.build.del_stamp('do_%s' % t, self.status, fn)
 
         # Setup taskdata structure
         taskdata = bb.taskdata.TaskData(self.configuration.abort)
@@ -665,7 +668,9 @@ class BBCooker:
         bb.event.fire(bb.event.BuildStarted(buildname, [item]), 
self.configuration.event_data)
 
         # Execute the runqueue
-        runlist = [[item, "do_%s" % task]]
+        runlist = []
+        for t in task:
+            runlist.append([item, "do_%s" % t])
 
         rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, 
taskdata, runlist)
 
@@ -735,7 +740,8 @@ class BBCooker:
         runlist = []
         for k in targets:
             taskdata.add_provider(localdata, self.status, k)
-            runlist.append([k, "do_%s" % task])
+            for t in task:
+                runlist.append([k, "do_%s" % t])
         taskdata.add_unresolved(localdata, self.status)
 
         rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, 
taskdata, runlist)
-- 
1.7.1

_______________________________________________
Bitbake-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bitbake-dev

Reply via email to