diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2006-09-09 23:29:36 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2006-09-09 23:29:36 +0000 |
commit | db9333b8c21fc361a4a49c6409d68b04bbaa8f86 (patch) | |
tree | 7e9d1c8eef70e4faca4859fc50a0717ffb2f5662 /bin | |
parent | 2a0e2b7924f32e0fff7a7371be805700b646525f (diff) | |
download | bitbake-db9333b8c21fc361a4a49c6409d68b04bbaa8f86.tar.gz |
Turn BBParsingStatus into CacheData and move to cache.py
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/bitbake | 144 |
1 files changed, 2 insertions, 142 deletions
diff --git a/bin/bitbake b/bin/bitbake index 3ab8d7e3b..ecd640012 100755 --- a/bin/bitbake +++ b/bin/bitbake @@ -34,145 +34,6 @@ parsespin = itertools.cycle( r'|/-\\' ) __version__ = "1.7.0" #============================================================================# -# BBParsingStatus -#============================================================================# -class BBParsingStatus: - """ - The initial idea for this status class is to use the data when it is - already loaded instead of loading it from various place over and over - again. - """ - - def __init__(self): - """ - Direct cache variables - """ - self.providers = {} - self.rproviders = {} - self.packages = {} - self.packages_dynamic = {} - self.possible_world = [] - self.pkg_pn = {} - self.pkg_fn = {} - self.pkg_pvpr = {} - self.pkg_dp = {} - self.pn_provides = {} - self.all_depends = Set() - self.build_all = {} - self.deps = {} - self.rundeps = {} - self.runrecs = {} - self.task_queues = {} - self.task_deps = {} - self.stamp = {} - self.preferred = {} - - """ - Indirect Cache variables - """ - self.ignored_dependencies = [] - self.world_target = Set() - self.bbfile_priority = {} - self.bbfile_config_priorities = [] - - - def handle_bb_data(self, file_name, bb_cache, cached): - """ - We will fill the dictionaries with the stuff we - need for building the tree more fast - """ - - pn = bb_cache.getVar('PN', file_name, True) - pv = bb_cache.getVar('PV', file_name, True) - pr = bb_cache.getVar('PR', file_name, True) - dp = int(bb_cache.getVar('DEFAULT_PREFERENCE', file_name, True) or "0") - provides = Set([pn] + (bb_cache.getVar("PROVIDES", file_name, True) or "").split()) - depends = (bb_cache.getVar("DEPENDS", file_name, True) or "").split() - packages = (bb_cache.getVar('PACKAGES', file_name, True) or "").split() - packages_dynamic = (bb_cache.getVar('PACKAGES_DYNAMIC', file_name, True) or "").split() - rprovides = (bb_cache.getVar("RPROVIDES", file_name, True) or "").split() - - self.task_queues[file_name] = bb_cache.getVar("_task_graph", file_name, True) - self.task_deps[file_name] = bb_cache.getVar("_task_deps", file_name, True) - - # build PackageName to FileName lookup table - if pn not in self.pkg_pn: - self.pkg_pn[pn] = [] - self.pkg_pn[pn].append(file_name) - - self.build_all[file_name] = int(bb_cache.getVar('BUILD_ALL_DEPS', file_name, True) or "0") - self.stamp[file_name] = bb_cache.getVar('STAMP', file_name, True) - - # build FileName to PackageName lookup table - self.pkg_fn[file_name] = pn - self.pkg_pvpr[file_name] = (pv,pr) - self.pkg_dp[file_name] = dp - - # Build forward and reverse provider hashes - # Forward: virtual -> [filenames] - # Reverse: PN -> [virtuals] - if pn not in self.pn_provides: - self.pn_provides[pn] = Set() - self.pn_provides[pn] |= provides - - for provide in provides: - if provide not in self.providers: - self.providers[provide] = [] - self.providers[provide].append(file_name) - - self.deps[file_name] = Set() - for dep in depends: - self.all_depends.add(dep) - self.deps[file_name].add(dep) - - # Build reverse hash for PACKAGES, so runtime dependencies - # can be be resolved (RDEPENDS, RRECOMMENDS etc.) - for package in packages: - if not package in self.packages: - self.packages[package] = [] - self.packages[package].append(file_name) - rprovides += (bb_cache.getVar("RPROVIDES_%s" % package, file_name, 1) or "").split() - - for package in packages_dynamic: - if not package in self.packages_dynamic: - self.packages_dynamic[package] = [] - self.packages_dynamic[package].append(file_name) - - for rprovide in rprovides: - if not rprovide in self.rproviders: - self.rproviders[rprovide] = [] - self.rproviders[rprovide].append(file_name) - - # Build hash of runtime depends and rececommends - - def add_dep(deplist, deps): - for dep in deps: - if not dep in deplist: - deplist[dep] = "" - - if not file_name in self.rundeps: - self.rundeps[file_name] = {} - if not file_name in self.runrecs: - self.runrecs[file_name] = {} - - for package in packages + [pn]: - if not package in self.rundeps[file_name]: - self.rundeps[file_name][package] = {} - if not package in self.runrecs[file_name]: - self.runrecs[file_name][package] = {} - - add_dep(self.rundeps[file_name][package], bb.utils.explode_deps(bb_cache.getVar('RDEPENDS', file_name, True) or "")) - add_dep(self.runrecs[file_name][package], bb.utils.explode_deps(bb_cache.getVar('RRECOMMENDS', file_name, True) or "")) - add_dep(self.rundeps[file_name][package], bb.utils.explode_deps(bb_cache.getVar("RDEPENDS_%s" % package, file_name, True) or "")) - add_dep(self.runrecs[file_name][package], bb.utils.explode_deps(bb_cache.getVar("RRECOMMENDS_%s" % package, file_name, True) or "")) - - # Collect files we may need for possible world-dep - # calculations - if not bb_cache.getVar('BROKEN', file_name, True) and not bb_cache.getVar('EXCLUDE_FROM_WORLD', file_name, True): - self.possible_world.append(file_name) - - -#============================================================================# # BBStatistics #============================================================================# class BBStatistics: @@ -215,7 +76,6 @@ class BBCooker: Manages one bitbake build run """ - ParsingStatus = BBParsingStatus # make it visible from the shell Statistics = BBStatistics # make it visible from the shell def __init__( self ): @@ -581,7 +441,7 @@ class BBCooker: def myProgressCallback( self, x, y, f, bb_cache, from_cache ): # feed the status with new input - self.status.handle_bb_data(f, bb_cache, from_cache) + bb_cache.handle_data(f, self.status) if os.isatty(sys.stdout.fileno()): sys.stdout.write("\rNOTE: Handling BitBake files: %s (%04d/%04d) [%2d %%]" % ( parsespin.next(), x, y, x*100/y ) ) @@ -723,7 +583,7 @@ class BBCooker: sys.exit( self.stats.show() ) # initialise the parsing status now we know we will need deps - self.status = BBParsingStatus() + self.status = bb.cache.CacheData() ignore = bb.data.getVar("ASSUME_PROVIDED", self.configuration.data, 1) or "" self.status.ignored_dependencies = Set( ignore.split() ) |