diff options
| -rw-r--r-- | meta/lib/oe/package_manager.py | 105 |
1 files changed, 53 insertions, 52 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py index af14d5ad7f..2faf4224b3 100644 --- a/meta/lib/oe/package_manager.py +++ b/meta/lib/oe/package_manager.py | |||
| @@ -35,14 +35,64 @@ class Indexer(object): | |||
| 35 | 35 | ||
| 36 | 36 | ||
| 37 | class RpmIndexer(Indexer): | 37 | class RpmIndexer(Indexer): |
| 38 | def get_ml_prefix_and_os_list(self, arch_var=None, os_var=None): | ||
| 39 | package_archs = { | ||
| 40 | 'default': [], | ||
| 41 | } | ||
| 42 | |||
| 43 | target_os = { | ||
| 44 | 'default': "", | ||
| 45 | } | ||
| 46 | |||
| 47 | if arch_var is not None and os_var is not None: | ||
| 48 | package_archs['default'] = self.d.getVar(arch_var, True).split() | ||
| 49 | package_archs['default'].reverse() | ||
| 50 | target_os['default'] = self.d.getVar(os_var, True).strip() | ||
| 51 | else: | ||
| 52 | package_archs['default'] = self.d.getVar("PACKAGE_ARCHS", True).split() | ||
| 53 | # arch order is reversed. This ensures the -best- match is | ||
| 54 | # listed first! | ||
| 55 | package_archs['default'].reverse() | ||
| 56 | target_os['default'] = self.d.getVar("TARGET_OS", True).strip() | ||
| 57 | multilibs = self.d.getVar('MULTILIBS', True) or "" | ||
| 58 | for ext in multilibs.split(): | ||
| 59 | eext = ext.split(':') | ||
| 60 | if len(eext) > 1 and eext[0] == 'multilib': | ||
| 61 | localdata = bb.data.createCopy(self.d) | ||
| 62 | default_tune_key = "DEFAULTTUNE_virtclass-multilib-" + eext[1] | ||
| 63 | default_tune = localdata.getVar(default_tune_key, False) | ||
| 64 | if default_tune: | ||
| 65 | localdata.setVar("DEFAULTTUNE", default_tune) | ||
| 66 | bb.data.update_data(localdata) | ||
| 67 | package_archs[eext[1]] = localdata.getVar('PACKAGE_ARCHS', | ||
| 68 | True).split() | ||
| 69 | package_archs[eext[1]].reverse() | ||
| 70 | target_os[eext[1]] = localdata.getVar("TARGET_OS", | ||
| 71 | True).strip() | ||
| 72 | |||
| 73 | ml_prefix_list = dict() | ||
| 74 | for mlib in package_archs: | ||
| 75 | if mlib == 'default': | ||
| 76 | ml_prefix_list[mlib] = package_archs[mlib] | ||
| 77 | else: | ||
| 78 | ml_prefix_list[mlib] = list() | ||
| 79 | for arch in package_archs[mlib]: | ||
| 80 | if arch in ['all', 'noarch', 'any']: | ||
| 81 | ml_prefix_list[mlib].append(arch) | ||
| 82 | else: | ||
| 83 | ml_prefix_list[mlib].append(mlib + "_" + arch) | ||
| 84 | |||
| 85 | return (ml_prefix_list, target_os) | ||
| 86 | |||
| 38 | def write_index(self): | 87 | def write_index(self): |
| 39 | sdk_pkg_archs = (self.d.getVar('SDK_PACKAGE_ARCHS', True) or "").replace('-', '_').split() | 88 | sdk_pkg_archs = (self.d.getVar('SDK_PACKAGE_ARCHS', True) or "").replace('-', '_').split() |
| 40 | mlb_prefix_list = (self.d.getVar('MULTILIB_PREFIX_LIST', True) or "").replace('-', '_').split() | ||
| 41 | all_mlb_pkg_archs = (self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS', True) or "").replace('-', '_').split() | 89 | all_mlb_pkg_archs = (self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS', True) or "").replace('-', '_').split() |
| 42 | 90 | ||
| 91 | mlb_prefix_list = self.get_ml_prefix_and_os_list()[0] | ||
| 92 | |||
| 43 | archs = set() | 93 | archs = set() |
| 44 | for item in mlb_prefix_list: | 94 | for item in mlb_prefix_list: |
| 45 | archs = archs.union(set(item.split(':')[1:])) | 95 | archs = archs.union(set(i.replace('-', '_') for i in mlb_prefix_list[item])) |
| 46 | 96 | ||
| 47 | if len(archs) == 0: | 97 | if len(archs) == 0: |
| 48 | archs = archs.union(set(all_mlb_pkg_archs)) | 98 | archs = archs.union(set(all_mlb_pkg_archs)) |
| @@ -303,56 +353,7 @@ class RpmPM(PackageManager): | |||
| 303 | 353 | ||
| 304 | self.indexer = RpmIndexer(self.d, self.deploy_dir) | 354 | self.indexer = RpmIndexer(self.d, self.deploy_dir) |
| 305 | 355 | ||
| 306 | self.ml_prefix_list, self.ml_os_list = self._get_prefix_and_os_list(arch_var, os_var) | 356 | self.ml_prefix_list, self.ml_os_list = self.indexer.get_ml_prefix_and_os_list(arch_var, os_var) |
| 307 | |||
| 308 | def _get_prefix_and_os_list(self, arch_var, os_var): | ||
| 309 | package_archs = { | ||
| 310 | 'default': [], | ||
| 311 | } | ||
| 312 | |||
| 313 | target_os = { | ||
| 314 | 'default': "", | ||
| 315 | } | ||
| 316 | |||
| 317 | if arch_var is not None and os_var is not None: | ||
| 318 | package_archs['default'] = self.d.getVar(arch_var, True).split() | ||
| 319 | package_archs['default'].reverse() | ||
| 320 | target_os['default'] = self.d.getVar(os_var, True).strip() | ||
| 321 | else: | ||
| 322 | package_archs['default'] = self.d.getVar("PACKAGE_ARCHS", True).split() | ||
| 323 | # arch order is reversed. This ensures the -best- match is | ||
| 324 | # listed first! | ||
| 325 | package_archs['default'].reverse() | ||
| 326 | target_os['default'] = self.d.getVar("TARGET_OS", True).strip() | ||
| 327 | multilibs = self.d.getVar('MULTILIBS', True) or "" | ||
| 328 | for ext in multilibs.split(): | ||
| 329 | eext = ext.split(':') | ||
| 330 | if len(eext) > 1 and eext[0] == 'multilib': | ||
| 331 | localdata = bb.data.createCopy(self.d) | ||
| 332 | default_tune_key = "DEFAULTTUNE_virtclass-multilib-" + eext[1] | ||
| 333 | default_tune = localdata.getVar(default_tune_key, False) | ||
| 334 | if default_tune: | ||
| 335 | localdata.setVar("DEFAULTTUNE", default_tune) | ||
| 336 | bb.data.update_data(localdata) | ||
| 337 | package_archs[eext[1]] = localdata.getVar('PACKAGE_ARCHS', | ||
| 338 | True).split() | ||
| 339 | package_archs[eext[1]].reverse() | ||
| 340 | target_os[eext[1]] = localdata.getVar("TARGET_OS", | ||
| 341 | True).strip() | ||
| 342 | |||
| 343 | ml_prefix_list = dict() | ||
| 344 | for mlib in package_archs: | ||
| 345 | if mlib == 'default': | ||
| 346 | ml_prefix_list[mlib] = package_archs[mlib] | ||
| 347 | else: | ||
| 348 | ml_prefix_list[mlib] = list() | ||
| 349 | for arch in package_archs[mlib]: | ||
| 350 | if arch in ['all', 'noarch', 'any']: | ||
| 351 | ml_prefix_list[mlib].append(arch) | ||
| 352 | else: | ||
| 353 | ml_prefix_list[mlib].append(mlib + "_" + arch) | ||
| 354 | |||
| 355 | return (ml_prefix_list, target_os) | ||
| 356 | 357 | ||
| 357 | ''' | 358 | ''' |
| 358 | Create configs for rpm and smart, and multilib is supported | 359 | Create configs for rpm and smart, and multilib is supported |
