diff options
-rw-r--r-- | bitbake/lib/bb/tinfoil.py | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/bitbake/lib/bb/tinfoil.py b/bitbake/lib/bb/tinfoil.py index 0bd7836323..9560eb5b49 100644 --- a/bitbake/lib/bb/tinfoil.py +++ b/bitbake/lib/bb/tinfoil.py | |||
@@ -127,12 +127,13 @@ class TinfoilCookerAdapter: | |||
127 | 127 | ||
128 | class TinfoilRecipeCacheAdapter: | 128 | class TinfoilRecipeCacheAdapter: |
129 | """ cooker.recipecache adapter """ | 129 | """ cooker.recipecache adapter """ |
130 | def __init__(self, tinfoil): | 130 | def __init__(self, tinfoil, mc=''): |
131 | self.tinfoil = tinfoil | 131 | self.tinfoil = tinfoil |
132 | self.mc = mc | ||
132 | self._cache = {} | 133 | self._cache = {} |
133 | 134 | ||
134 | def get_pkg_pn_fn(self): | 135 | def get_pkg_pn_fn(self): |
135 | pkg_pn = defaultdict(list, self.tinfoil.run_command('getRecipes') or []) | 136 | pkg_pn = defaultdict(list, self.tinfoil.run_command('getRecipes', self.mc) or []) |
136 | pkg_fn = {} | 137 | pkg_fn = {} |
137 | for pn, fnlist in pkg_pn.items(): | 138 | for pn, fnlist in pkg_pn.items(): |
138 | for fn in fnlist: | 139 | for fn in fnlist: |
@@ -151,27 +152,27 @@ class TinfoilCookerAdapter: | |||
151 | self.get_pkg_pn_fn() | 152 | self.get_pkg_pn_fn() |
152 | return self._cache[name] | 153 | return self._cache[name] |
153 | elif name == 'deps': | 154 | elif name == 'deps': |
154 | attrvalue = defaultdict(list, self.tinfoil.run_command('getRecipeDepends') or []) | 155 | attrvalue = defaultdict(list, self.tinfoil.run_command('getRecipeDepends', self.mc) or []) |
155 | elif name == 'rundeps': | 156 | elif name == 'rundeps': |
156 | attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeDepends') or []) | 157 | attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeDepends', self.mc) or []) |
157 | elif name == 'runrecs': | 158 | elif name == 'runrecs': |
158 | attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeRecommends') or []) | 159 | attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeRecommends', self.mc) or []) |
159 | elif name == 'pkg_pepvpr': | 160 | elif name == 'pkg_pepvpr': |
160 | attrvalue = self.tinfoil.run_command('getRecipeVersions') or {} | 161 | attrvalue = self.tinfoil.run_command('getRecipeVersions', self.mc) or {} |
161 | elif name == 'inherits': | 162 | elif name == 'inherits': |
162 | attrvalue = self.tinfoil.run_command('getRecipeInherits') or {} | 163 | attrvalue = self.tinfoil.run_command('getRecipeInherits', self.mc) or {} |
163 | elif name == 'bbfile_priority': | 164 | elif name == 'bbfile_priority': |
164 | attrvalue = self.tinfoil.run_command('getBbFilePriority') or {} | 165 | attrvalue = self.tinfoil.run_command('getBbFilePriority', self.mc) or {} |
165 | elif name == 'pkg_dp': | 166 | elif name == 'pkg_dp': |
166 | attrvalue = self.tinfoil.run_command('getDefaultPreference') or {} | 167 | attrvalue = self.tinfoil.run_command('getDefaultPreference', self.mc) or {} |
167 | elif name == 'fn_provides': | 168 | elif name == 'fn_provides': |
168 | attrvalue = self.tinfoil.run_command('getRecipeProvides') or {} | 169 | attrvalue = self.tinfoil.run_command('getRecipeProvides', self.mc) or {} |
169 | elif name == 'packages': | 170 | elif name == 'packages': |
170 | attrvalue = self.tinfoil.run_command('getRecipePackages') or {} | 171 | attrvalue = self.tinfoil.run_command('getRecipePackages', self.mc) or {} |
171 | elif name == 'packages_dynamic': | 172 | elif name == 'packages_dynamic': |
172 | attrvalue = self.tinfoil.run_command('getRecipePackagesDynamic') or {} | 173 | attrvalue = self.tinfoil.run_command('getRecipePackagesDynamic', self.mc) or {} |
173 | elif name == 'rproviders': | 174 | elif name == 'rproviders': |
174 | attrvalue = self.tinfoil.run_command('getRProviders') or {} | 175 | attrvalue = self.tinfoil.run_command('getRProviders', self.mc) or {} |
175 | else: | 176 | else: |
176 | raise AttributeError("%s instance has no attribute '%s'" % (self.__class__.__name__, name)) | 177 | raise AttributeError("%s instance has no attribute '%s'" % (self.__class__.__name__, name)) |
177 | 178 | ||
@@ -182,8 +183,9 @@ class TinfoilCookerAdapter: | |||
182 | self.tinfoil = tinfoil | 183 | self.tinfoil = tinfoil |
183 | self.collection = self.TinfoilCookerCollectionAdapter(tinfoil) | 184 | self.collection = self.TinfoilCookerCollectionAdapter(tinfoil) |
184 | self.recipecaches = {} | 185 | self.recipecaches = {} |
185 | # FIXME all machines | ||
186 | self.recipecaches[''] = self.TinfoilRecipeCacheAdapter(tinfoil) | 186 | self.recipecaches[''] = self.TinfoilRecipeCacheAdapter(tinfoil) |
187 | for mc in (tinfoil.config_data.getVar('BBMULTICONFIG') or '').split(): | ||
188 | self.recipecaches[mc] = self.TinfoilRecipeCacheAdapter(tinfoil, mc) | ||
187 | self._cache = {} | 189 | self._cache = {} |
188 | def __getattr__(self, name): | 190 | def __getattr__(self, name): |
189 | # Grab these only when they are requested since they aren't always used | 191 | # Grab these only when they are requested since they aren't always used |
@@ -501,11 +503,11 @@ class Tinfoil: | |||
501 | """ | 503 | """ |
502 | return OrderedDict(self.run_command('getSkippedRecipes')) | 504 | return OrderedDict(self.run_command('getSkippedRecipes')) |
503 | 505 | ||
504 | def get_all_providers(self): | 506 | def get_all_providers(self, mc=''): |
505 | return defaultdict(list, self.run_command('allProviders')) | 507 | return defaultdict(list, self.run_command('allProviders', mc)) |
506 | 508 | ||
507 | def find_providers(self): | 509 | def find_providers(self, mc=''): |
508 | return self.run_command('findProviders') | 510 | return self.run_command('findProviders', mc) |
509 | 511 | ||
510 | def find_best_provider(self, pn): | 512 | def find_best_provider(self, pn): |
511 | return self.run_command('findBestProvider', pn) | 513 | return self.run_command('findBestProvider', pn) |