--- a/pym/portage/repository/config.py +++ a/pym/portage/repository/config.py @@ -78,8 +78,8 @@ class RepoConfig(object): """Stores config of one repository""" __slots__ = ('aliases', 'allow_missing_manifest', 'allow_provide_virtual', - 'cache_formats', 'create_manifest', 'disable_manifest', 'eapi', - 'eclass_db', 'eclass_locations', 'eclass_overrides', + 'cache_formats', 'create_manifest', 'disabled', 'disable_manifest', + 'eapi', 'eclass_db', 'eclass_locations', 'eclass_overrides', 'find_invalid_path_char', 'force', 'format', 'local_config', 'location', 'main_repo', 'manifest_hashes', 'masters', 'missing_repo_name', 'name', 'portage1_profiles', 'portage1_profiles_compat', 'priority', @@ -173,6 +173,11 @@ class RepoConfig(object): location = None self.location = location + disabled = repo_opts.get('disabled') + if disabled is not None: + disabled = disabled.strip().lower() == 'true' + self.disabled = disabled or False + eapi = None missing = True self.name = name @@ -633,7 +638,10 @@ class RepoConfigLoader(object): # Do this before expanding aliases, so that location_map and # treemap consistently map unaliased names whenever available. for repo_name, repo in list(prepos.items()): - if repo.location is None: + if repo.disabled: + del prepos[repo_name] + continue + elif repo.location is None: if repo_name != 'DEFAULT': # Skip this warning for repoman (bug #474578). if settings.local_config and paths: