diff options
author | Shane Wang <shane.wang@intel.com> | 2012-02-23 21:47:16 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-02-23 22:52:17 +0000 |
commit | 8fa33800efa530c765d85a520110285467ff29c2 (patch) | |
tree | 62cdc94429ed5772df63d0f200fdc49ccf0528a0 | |
parent | de77b9752ab2df56d87dc15ed5cd0d2cd5544dc7 (diff) | |
download | ast2050-yocto-poky-8fa33800efa530c765d85a520110285467ff29c2.zip ast2050-yocto-poky-8fa33800efa530c765d85a520110285467ff29c2.tar.gz |
bitbake: change for adding progress bar in Hob2.
The changes include:
- Clean some events in event.py
- Fire essential events for Hob2 to handle with more information.
- knotty changes
(Bitbake rev: 9ede881620c501574f014e600cea6947ea908ac2)
Signed-off-by: Shane Wang <shane.wang@intel.com>
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/cache.py | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/cooker.py | 12 | ||||
-rw-r--r-- | bitbake/lib/bb/event.py | 83 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/knotty.py | 5 |
4 files changed, 73 insertions, 29 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index 3d89435..47e814b 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py @@ -336,7 +336,7 @@ class Cache(object): current_percent = 100 * current_progress / cachesize if current_percent > previous_percent: previous_percent = current_percent - bb.event.fire(bb.event.CacheLoadProgress(current_progress), + bb.event.fire(bb.event.CacheLoadProgress(current_progress, cachesize), self.data) previous_progress += current_progress diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 91fdc96..d645454 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -334,6 +334,7 @@ class BBCooker: """ Prepare a runqueue and taskdata object for iteration over pkgs_to_build """ + bb.event.fire(bb.event.TreeDataPreparationStarted(), self.configuration.data) # Need files parsed self.updateCache() # If we are told to do the None task then query the default task @@ -350,11 +351,14 @@ class BBCooker: taskdata = bb.taskdata.TaskData(False, skiplist=self.skiplist) runlist = [] + current = 0 for k in pkgs_to_build: taskdata.add_provider(localdata, self.status, k) runlist.append([k, "do_%s" % task]) + current += 1 + bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(pkgs_to_build)), self.configuration.data) taskdata.add_unresolved(localdata, self.status) - + bb.event.fire(bb.event.TreeDataPreparationCompleted(len(pkgs_to_build)), self.configuration.data) return runlist, taskdata def generateTaskDepTreeData(self, pkgs_to_build, task): @@ -1100,7 +1104,7 @@ class BBCooker: return False if not retval: - bb.event.fire(bb.event.BuildCompleted(buildname, item, failures), self.configuration.event_data) + bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, item, failures), self.configuration.event_data) self.command.finishAsyncCommand() return False if retval is True: @@ -1140,7 +1144,7 @@ class BBCooker: return False if not retval: - bb.event.fire(bb.event.BuildCompleted(buildname, targets, failures), self.configuration.data) + bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, targets, failures), self.configuration.data) self.command.finishAsyncCommand() return False if retval is True: @@ -1663,7 +1667,7 @@ class CookerParser(object): if parsed: self.parsed += 1 if self.parsed % self.progress_chunk == 0: - bb.event.fire(bb.event.ParseProgress(self.parsed), + bb.event.fire(bb.event.ParseProgress(self.parsed, self.toparse), self.cfgdata) else: self.cached += 1 diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index 10036c0..bbece58 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py @@ -204,6 +204,27 @@ def getName(e): else: return e.__name__ +class OperationStarted(Event): + """An operation has begun""" + def __init__(self, msg = "Operation Started"): + Event.__init__(self) + self.msg = msg + +class OperationCompleted(Event): + """An operation has completed""" + def __init__(self, total, msg = "Operation Completed"): + Event.__init__(self) + self.total = total + self.msg = msg + +class OperationProgress(Event): + """An operation is in progress""" + def __init__(self, current, total, msg = "Operation in Progress"): + Event.__init__(self) + self.current = current + self.total = total + self.msg = msg + ": %s/%s" % (current, total); + class ConfigParsed(Event): """Configuration Parsing Complete""" @@ -276,14 +297,20 @@ class BuildBase(Event): -class BuildStarted(BuildBase): +class BuildStarted(BuildBase, OperationStarted): """bbmake build run started""" + def __init__(self, n, p, failures = 0): + OperationStarted.__init__(self, "Building Started") + BuildBase.__init__(self, n, p, failures) - -class BuildCompleted(BuildBase): +class BuildCompleted(BuildBase, OperationCompleted): """bbmake build run completed""" - - + def __init__(self, total, n, p, failures = 0): + if not failures: + OperationCompleted.__init__(self, total, "Building Succeeded") + else: + OperationCompleted.__init__(self, total, "Building Failed") + BuildBase.__init__(self, n, p, failures) class NoProvider(Event): @@ -329,17 +356,16 @@ class MultipleProviders(Event): """ return self._candidates -class ParseStarted(Event): +class ParseStarted(OperationStarted): """Recipe parsing for the runqueue has begun""" def __init__(self, total): - Event.__init__(self) + OperationStarted.__init__(self, "Recipe parsing Started") self.total = total -class ParseCompleted(Event): +class ParseCompleted(OperationCompleted): """Recipe parsing for the runqueue has completed""" - def __init__(self, cached, parsed, skipped, masked, virtuals, errors, total): - Event.__init__(self) + OperationCompleted.__init__(self, total, "Recipe parsing Completed") self.cached = cached self.parsed = parsed self.skipped = skipped @@ -347,33 +373,44 @@ class ParseCompleted(Event): self.masked = masked self.errors = errors self.sofar = cached + parsed - self.total = total -class ParseProgress(Event): +class ParseProgress(OperationProgress): """Recipe parsing progress""" + def __init__(self, current, total): + OperationProgress.__init__(self, current, total, "Recipe parsing") - def __init__(self, current): - self.current = current -class CacheLoadStarted(Event): +class CacheLoadStarted(OperationStarted): """Loading of the dependency cache has begun""" def __init__(self, total): - Event.__init__(self) + OperationStarted.__init__(self, "Loading cache Started") self.total = total -class CacheLoadProgress(Event): +class CacheLoadProgress(OperationProgress): """Cache loading progress""" - def __init__(self, current): - Event.__init__(self) - self.current = current + def __init__(self, current, total): + OperationProgress.__init__(self, current, total, "Loading cache") -class CacheLoadCompleted(Event): +class CacheLoadCompleted(OperationCompleted): """Cache loading is complete""" def __init__(self, total, num_entries): - Event.__init__(self) - self.total = total + OperationCompleted.__init__(self, total, "Loading cache Completed") self.num_entries = num_entries +class TreeDataPreparationStarted(OperationStarted): + """Tree data preparation started""" + def __init__(self): + OperationStarted.__init__(self, "Preparing tree data Started") + +class TreeDataPreparationProgress(OperationProgress): + """Tree data preparation is in progress""" + def __init__(self, current, total): + OperationProgress.__init__(self, current, total, "Preparing tree data") + +class TreeDataPreparationCompleted(OperationCompleted): + """Tree data preparation completed""" + def __init__(self, total): + OperationCompleted.__init__(self, total, "Preparing tree data Completed") class DepTreeGenerated(Event): """ diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index 158a132..e2e6ac3 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py @@ -263,7 +263,10 @@ def main(server, eventHandler): bb.event.RecipeParsed, bb.event.RecipePreFinalise, bb.runqueue.runQueueEvent, - bb.runqueue.runQueueExitWait)): + bb.runqueue.runQueueExitWait, + bb.event.OperationStarted, + bb.event.OperationCompleted, + bb.event.OperationProgress)): continue logger.error("Unknown event: %s", event) |