summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-16 20:40:14 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-16 20:40:14 +0000
commit3819b77c816310361237b209e9dfb785f4b80710 (patch)
tree53c917d86c176eedc93afc80674a226dc4ecf049 /pym
parent9ff41ae9181778b7b67b8f2271b5724f240d4098 (diff)
downloadportage-3819b77c816310361237b209e9dfb785f4b80710.tar.gz
portage-3819b77c816310361237b209e9dfb785f4b80710.tar.bz2
portage-3819b77c816310361237b209e9dfb785f4b80710.zip
Add support in repos.conf to override the "masters" setting from layout.conf.
svn path=/main/trunk/; revision=13350
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/__init__.py14
-rw-r--r--pym/portage/dbapi/porttree.py27
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: