Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 188036 Details for
Bug 265747
sys-apps/portage-2.2_rc29 does not let overlays override eclasses
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
add support for /etc/portage/repos.conf which allows eclass overrides
eclass_overrides.patch (text/plain), 5.82 KB, created by
Zac Medico
on 2009-04-12 00:02:17 UTC
(
hide
)
Description:
add support for /etc/portage/repos.conf which allows eclass overrides
Filename:
MIME Type:
Creator:
Zac Medico
Created:
2009-04-12 00:02:17 UTC
Size:
5.82 KB
patch
obsolete
>Index: pym/portage/dbapi/porttree.py >=================================================================== >--- pym/portage/dbapi/porttree.py (revision 13324) >+++ pym/portage/dbapi/porttree.py (revision 13325) >@@ -173,10 +173,15 @@ > > self._repo_info = {} > eclass_dbs = {porttree_root : self.eclassdb} >+ local_repo_configs = self.mysettings._local_repo_configs >+ default_loc_repo_config = None >+ if local_repo_configs is not None: >+ default_loc_repo_config = local_repo_configs.get('DEFAULT') > for path in self.porttrees: > if path in self._repo_info: > continue > >+ repo_name = self._repository_map.get(path) > layout_filename = os.path.join(path, "metadata/layout.conf") > layout_file = KeyValuePairFileLoader(layout_filename, None, None) > layout_data, layout_errors = layout_file.load() >@@ -200,6 +205,24 @@ > > 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: >+ for other_name in loc_repo_conf.eclass_overrides: >+ other_path = self.treemap.get(other_name) >+ if other_path is None: >+ writemsg_level(("Unavailable repository '%s' " + \ >+ "referenced by eclass-overrides entry in " + \ >+ "'%s'\n") % (other_name, >+ self.mysettings._local_repo_conf_path), >+ level=logging.ERROR, noiselevel=-1) >+ continue >+ porttrees.append(other_path) >+ > eclass_db = None > for porttree in porttrees: > tree_db = eclass_dbs.get(porttree) >@@ -211,8 +234,7 @@ > else: > eclass_db.append(tree_db) > >- self._repo_info[path] = _repo_info(self._repository_map.get(path), >- path, eclass_db) >+ self._repo_info[path] = _repo_info(repo_name, path, eclass_db) > > self.auxdbmodule = self.mysettings.load_best_module("portdbapi.auxdbmodule") > self.auxdb = {} >Index: pym/portage/__init__.py >=================================================================== >--- pym/portage/__init__.py (revision 13324) >+++ pym/portage/__init__.py (revision 13325) >@@ -987,6 +987,13 @@ > regex = regex.replace("\\.\\*", ".*") > return regex > >+class _local_repo_config(object): >+ __slots__ = ('eclass_overrides', 'name',) >+ def __init__(self, name, repo_opts): >+ self.name = name >+ self.eclass_overrides = \ >+ tuple(repo_opts.get('eclass-overrides', '').split()) >+ > class config(object): > """ > This class encompasses the main portage configuration. Data is pulled from >@@ -1180,12 +1187,18 @@ > > self.user_profile_dir = None > self.local_config = local_config >+ self._local_repo_configs = None >+ self._local_repo_conf_path = None > > if clone: > self.incrementals = copy.deepcopy(clone.incrementals) > self.profile_path = copy.deepcopy(clone.profile_path) > self.user_profile_dir = copy.deepcopy(clone.user_profile_dir) > self.local_config = copy.deepcopy(clone.local_config) >+ self._local_repo_configs = \ >+ copy.deepcopy(clone._local_repo_configs) >+ self._local_repo_conf_path = \ >+ copy.deepcopy(clone._local_repo_conf_path) > > self.module_priority = copy.deepcopy(clone.module_priority) > self.modules = copy.deepcopy(clone.modules) >@@ -1628,6 +1641,38 @@ > self._plicensedict[cp] = cp_dict > cp_dict[k] = self.expandLicenseTokens(v) > >+ self._local_repo_configs = {} >+ self._local_repo_conf_path = \ >+ os.path.join(abs_user_config, 'repos.conf') >+ from ConfigParser import SafeConfigParser, ParsingError >+ repo_conf_parser = SafeConfigParser() >+ try: >+ repo_conf_parser.readfp( >+ codecs.open(self._local_repo_conf_path, >+ mode='r', errors='replace')) >+ except EnvironmentError, e: >+ if e.errno != errno.ENOENT: >+ raise >+ del e >+ except ParsingError, e: >+ portage.util.writemsg_level( >+ "!!! Error parsing '%s': %s\n" % \ >+ (self._local_repo_conf_path, e), >+ level=logging.ERROR, noiselevel=-1) >+ del e >+ else: >+ repo_defaults = repo_conf_parser.defaults() >+ if repo_defaults: >+ self._local_repo_configs['DEFAULT'] = \ >+ _local_repo_config('DEFAULT', repo_defaults) >+ for repo_name in repo_conf_parser.sections(): >+ repo_opts = repo_defaults.copy() >+ for opt_name in repo_conf_parser.options(repo_name): >+ repo_opts[opt_name] = \ >+ repo_conf_parser.get(repo_name, opt_name) >+ self._local_repo_configs[repo_name] = \ >+ _local_repo_config(repo_name, repo_opts) >+ > #getting categories from an external file now > categories = [grabfile(os.path.join(x, "categories")) for x in locations] > self.categories = tuple(sorted( >Index: man/portage.5 >=================================================================== >--- man/portage.5 (revision 13324) >+++ man/portage.5 (revision 13325) >@@ -54,6 +54,7 @@ > package.mask > package.unmask > package.use >+repos.conf > .fi > .TP > .BR /etc/portage/profile/ >@@ -546,6 +547,27 @@ > # disable mysql support for QT > x11\-libs/qt \-mysql > .fi >+.TP >+.BR repos.conf >+Specifies \fIsite\-specific\fR repository configuration information. Note that >+configuration settings which are specified here do not apply to tools >+such as \fBrepoman\fR(1) and \fBegencache\fR(1) since their operations >+are inherently \fBnot\fR \fIsite\-specific\fR. Beware that use of >+\fBeclass\-overrides\fR is generally not recommended and that it may trigger >+performance issues under some circumstances (see \fBbug #124041\fR). >+ >+.I Example: >+.nf >+# make all repositories inherit eclasses from the java\-overlay and >+# java\-experimental repositories, with eclasses from java\-experimental >+# taking precedence over those from java\-overlay >+[DEFAULT] >+eclass\-overrides = java\-overlay java\-experimental >+ >+# disable all eclass overrides for ebuilds from the gentoo repository >+[gentoo] >+eclass\-overrides = >+.fi > .RE > .TP > .BR /usr/portage/metadata/
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 265747
: 188036 |
188038