summaryrefslogtreecommitdiff
path: root/bitbake/lib/bb/cooker.py
diff options
context:
space:
mode:
authorChris Larson <chris_larson@mentor.com>2010-11-21 11:59:05 -0700
committerRichard Purdie <rpurdie@linux.intel.com>2011-01-04 14:46:44 +0000
commit60226ff35c08c6590fe197e4c5d41d43dc4c3d3b (patch)
treee6270674270a6f487d9f0c091d81d3dd0884e158 /bitbake/lib/bb/cooker.py
parent6cd15a1ea08792618a0bcb04aa33bbd6d53d48f8 (diff)
downloadopenembedded-core-60226ff35c08c6590fe197e4c5d41d43dc4c3d3b.tar.gz
openembedded-core-60226ff35c08c6590fe197e4c5d41d43dc4c3d3b.tar.bz2
openembedded-core-60226ff35c08c6590fe197e4c5d41d43dc4c3d3b.zip
cooker: show progress bar before initializing the cache
This ensures that the time spent loading the cache from disk occurs with the progress bar up. Though the progress bar stays at 0% during this period, I think this is an improvement over the multi-second stall which occurred previously before the progress bar came up. Ideally, we'd integrate cache loading from disk into the progress display, but this is a first step. (Bitbake rev: f6d0a5c219f9deb84f702450d30d868ba6271f77) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r--bitbake/lib/bb/cooker.py29
1 files changed, 16 insertions, 13 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 8a3caeb4cc..e40ec3dceb 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -636,8 +636,6 @@ class BBCooker:
if (task == None):
task = self.configuration.cmd
- self.status = bb.cache.CacheData()
-
(fn, cls) = bb.cache.Cache.virtualfn2realfn(buildfile)
buildfile = self.matchFile(fn)
fn = bb.cache.Cache.realfn2virtual(buildfile, cls)
@@ -982,7 +980,6 @@ class CookerParser(object):
self.filelist = filelist
self.cooker = cooker
self.cfgdata = cooker.configuration.data
- self.bb_cache = bb.cache.Cache(self.cfgdata)
# Accounting statistics
self.parsed = 0
@@ -995,12 +992,13 @@ class CookerParser(object):
self.total = len(filelist)
self.current = 0
+ self.started = False
+ self.bb_cache = None
+ self.task_queue = None
self.result_queue = None
self.fromcache = None
self.progress_chunk = self.total / 100
- self.launch_processes()
-
def launch_processes(self):
self.task_queue = multiprocessing.Queue()
self.result_queue = multiprocessing.Queue()
@@ -1045,13 +1043,6 @@ class CookerParser(object):
if self.error > 0:
raise ParsingErrorsFound()
- def reparse(self, filename):
- infos = self.bb_cache.parse(filename,
- self.cooker.get_file_appends(filename),
- self.cfgdata)
- for vfn, info in infos:
- self.cooker.status.add_from_recipeinfo(vfn, info)
-
def parse_next(self):
if self.current >= self.total:
event = bb.event.ParseCompleted(self.cached, self.parsed,
@@ -1061,9 +1052,15 @@ class CookerParser(object):
bb.event.fire(event, self.cfgdata)
self.shutdown()
return False
- elif self.current == 0:
+ elif not self.started:
+ self.started = True
bb.event.fire(bb.event.ParseStarted(self.total, self.skipped, self.masked),
self.cfgdata)
+ return True
+ elif not self.bb_cache:
+ self.bb_cache = bb.cache.Cache(self.cfgdata)
+ self.launch_processes()
+ return True
try:
if self.result_queue.empty() and self.fromcache:
@@ -1099,3 +1096,9 @@ class CookerParser(object):
self.current += 1
return True
+ def reparse(self, filename):
+ infos = self.bb_cache.parse(filename,
+ self.cooker.get_file_appends(filename),
+ self.cfgdata)
+ for vfn, info in infos:
+ self.cooker.status.add_from_recipeinfo(vfn, info)