diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-11-26 01:05:35 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-11-26 01:05:35 +0000 |
commit | 148abc1340e37ef2b5ba84ea4df103d20dd78eba (patch) | |
tree | c7521e3ab59224da157e9b6cb283cc2cdeda8610 /pym/_emerge/__init__.py | |
parent | 7ec89d9758aa8a4776498d31159faa54af95316b (diff) | |
download | portage-148abc1340e37ef2b5ba84ea4df103d20dd78eba.tar.gz portage-148abc1340e37ef2b5ba84ea4df103d20dd78eba.tar.bz2 portage-148abc1340e37ef2b5ba84ea4df103d20dd78eba.zip |
Bug #124041 - Make emerge show an informative warning message when one
or more eclasses override eclasses from PORTDIR. The warning can be
permanently disabled by setting PORTAGE_ECLASS_WARNING_ENABLE="0" in
/etc/make.conf.
svn path=/main/trunk/; revision=8668
Diffstat (limited to 'pym/_emerge/__init__.py')
-rw-r--r-- | pym/_emerge/__init__.py | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index de142a414..bfb306634 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -6818,10 +6818,39 @@ def emerge_main(): if "--quiet" not in myopts: portage.deprecated_profile_check() - #Freeze the portdbapi for enhanced performance: - for myroot in trees: - trees[myroot]["porttree"].dbapi.freeze() - del myroot + eclasses_overridden = {} + for mytrees in trees.itervalues(): + mydb = mytrees["porttree"].dbapi + # Freeze the portdbapi for performance (memoize all xmatch results). + mydb.freeze() + eclasses_overridden.update(mydb.eclassdb._master_eclasses_overridden) + del mytrees, mydb + + if eclasses_overridden and \ + settings.get("PORTAGE_ECLASS_WARNING_ENABLE") != "0": + prefix = bad(" * ") + if len(eclasses_overridden) == 1: + writemsg(prefix + "Overlay eclass overrides " + \ + "eclass from PORTDIR:\n", noiselevel=-1) + else: + writemsg(prefix + "Overlay eclasses override " + \ + "eclasses from PORTDIR:\n", noiselevel=-1) + writemsg(prefix + "\n", noiselevel=-1) + for eclass_name in sorted(eclasses_overridden): + writemsg(prefix + " '%s/%s.eclass'\n" % \ + (eclasses_overridden[eclass_name], eclass_name), + noiselevel=-1) + writemsg(prefix + "\n", noiselevel=-1) + msg = "It is best to avoid overridding eclasses from PORTDIR " + \ + "because it will trigger invalidation of cached ebuild metadata " + \ + "that is distributed with the portage tree. If you must " + \ + "override eclasses from PORTDIR then you are advised to run " + \ + "`emerge --regen` after each time that you run `emerge --sync`. " + \ + "Set PORTAGE_ECLASS_WARNING_ENABLE=\"0\" in /etc/make.conf if " + \ + "you would like to disable this warning." + from textwrap import wrap + for line in wrap(msg, 72): + writemsg("%s%s\n" % (prefix, line), noiselevel=-1) if "moo" in myfiles: print """ |