summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShane Wang <shane.wang@intel.com>2012-02-23 21:47:16 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-02-23 22:52:17 +0000
commit8fa33800efa530c765d85a520110285467ff29c2 (patch)
tree62cdc94429ed5772df63d0f200fdc49ccf0528a0
parentde77b9752ab2df56d87dc15ed5cd0d2cd5544dc7 (diff)
downloadast2050-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.py2
-rw-r--r--bitbake/lib/bb/cooker.py12
-rw-r--r--bitbake/lib/bb/event.py83
-rw-r--r--bitbake/lib/bb/ui/knotty.py5
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)
OpenPOWER on IntegriCloud