summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-11-26 01:16:16 +0000
committerZac Medico <zmedico@gentoo.org>2007-11-26 01:16:16 +0000
commitefec767fb9c4ba15ae76fb9872c9f254be91d562 (patch)
tree028826139bc67dc3097af8c469e0be8e4fd2420a /bin/emerge
parentFilter _RC_GET_KV_CACHE from the saved environment. (trunk r8666) (diff)
downloadportage-multirepo-efec767fb9c4ba15ae76fb9872c9f254be91d562.tar.gz
portage-multirepo-efec767fb9c4ba15ae76fb9872c9f254be91d562.tar.bz2
portage-multirepo-efec767fb9c4ba15ae76fb9872c9f254be91d562.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. (trunk r8668) svn path=/main/branches/2.1.2/; revision=8669
Diffstat (limited to 'bin/emerge')
-rwxr-xr-xbin/emerge37
1 files changed, 33 insertions, 4 deletions
diff --git a/bin/emerge b/bin/emerge
index a527c26c..49204d9b 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -6313,10 +6313,39 @@ def emerge_main():
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 """