diff options
Diffstat (limited to 'pym')
-rw-r--r-- | pym/portage/__init__.py | 14 | ||||
-rw-r--r-- | pym/portage/dbapi/porttree.py | 27 |
2 files changed, 30 insertions, 11 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 8e73e211a..6fea2b82b 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -1001,11 +1001,19 @@ def _lazy_iuse_regex(iuse_implicit): return regex class _local_repo_config(object): - __slots__ = ('eclass_overrides', 'name',) + __slots__ = ('eclass_overrides', 'masters', 'name',) def __init__(self, name, repo_opts): self.name = name - self.eclass_overrides = \ - tuple(repo_opts.get('eclass-overrides', '').split()) + + eclass_overrides = repo_opts.get('eclass-overrides') + if eclass_overrides is not None: + eclass_overrides = tuple(eclass_overrides.split()) + self.eclass_overrides = eclass_overrides + + masters = repo_opts.get('masters') + if masters is not None: + masters = tuple(masters.split()) + self.masters = masters class config(object): """ diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py index a9496c8eb..246a0d6f1 100644 --- a/pym/portage/dbapi/porttree.py +++ b/pym/portage/dbapi/porttree.py @@ -207,11 +207,27 @@ class portdbapi(dbapi): continue repo_name = self._repository_map.get(path) + + loc_repo_conf = None + if local_repo_configs is not None: + if repo_name is not None: + loc_repo_conf = local_repo_configs.get(repo_name) + else: + loc_repo_conf = default_loc_repo_config + layout_filename = os.path.join(path, "metadata/layout.conf") layout_file = KeyValuePairFileLoader(layout_filename, None, None) layout_data, layout_errors = layout_file.load() porttrees = [] - for master_name in layout_data.get('masters', '').split(): + + masters = None + if loc_repo_conf is not None and \ + loc_repo_conf.masters is not None: + masters = loc_repo_conf.masters + else: + masters = layout_data.get('masters', '').split() + + for master_name in masters: master_path = self.treemap.get(master_name) if master_path is None: writemsg_level(("Unavailable repository '%s' " + \ @@ -230,13 +246,8 @@ class portdbapi(dbapi): porttrees.append(path) - if local_repo_configs is not None: - loc_repo_conf = None - if repo_name is not None: - loc_repo_conf = local_repo_configs.get(repo_name) - if loc_repo_conf is None: - loc_repo_conf = default_loc_repo_config - if loc_repo_conf is not None: + if loc_repo_conf is not None and \ + loc_repo_conf.eclass_overrides is not None: for other_name in loc_repo_conf.eclass_overrides: other_path = self.treemap.get(other_name) if other_path is None: |