diff options
author | Chris Larson <chris_larson@mentor.com> | 2010-11-21 11:59:05 -0700 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2011-01-04 14:46:44 +0000 |
commit | 60226ff35c08c6590fe197e4c5d41d43dc4c3d3b (patch) | |
tree | e6270674270a6f487d9f0c091d81d3dd0884e158 /bitbake/lib | |
parent | 6cd15a1ea08792618a0bcb04aa33bbd6d53d48f8 (diff) | |
download | openembedded-core-60226ff35c08c6590fe197e4c5d41d43dc4c3d3b.tar.gz openembedded-core-60226ff35c08c6590fe197e4c5d41d43dc4c3d3b.tar.bz2 openembedded-core-60226ff35c08c6590fe197e4c5d41d43dc4c3d3b.tar.xz 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')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 8a3caeb4c..e40ec3dce 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) |