summaryrefslogtreecommitdiffstats
path: root/pym/eclass_cache.py
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 /pym/eclass_cache.py
parent6d2262f9ddb7ddba632a95df450b47e76129f75f (diff)
downloadportage-efec767fb9c4ba15ae76fb9872c9f254be91d562.tar.gz
portage-efec767fb9c4ba15ae76fb9872c9f254be91d562.tar.bz2
portage-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 'pym/eclass_cache.py')
-rw-r--r--pym/eclass_cache.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/pym/eclass_cache.py b/pym/eclass_cache.py
index ede081d9c..b8d849368 100644
--- a/pym/eclass_cache.py
+++ b/pym/eclass_cache.py
@@ -23,6 +23,7 @@ class cache:
self.porttrees = [self.porttree_root]+overlays
self.porttrees = tuple(map(normalize_path, self.porttrees))
self._master_eclass_root = os.path.join(self.porttrees[0],"eclass")
+ self._master_eclasses_overridden = {}
self.update_eclasses()
def close_caches(self):
@@ -41,6 +42,7 @@ class cache:
def update_eclasses(self):
self.eclasses = {}
self._eclass_locations = {}
+ master_eclasses = {}
eclass_len = len(".eclass")
ignored_listdir_errnos = (errno.ENOENT, errno.ENOTDIR)
for x in [normalize_path(os.path.join(y,"eclass")) for y in self.porttrees]:
@@ -63,7 +65,13 @@ class cache:
ys=y[:-eclass_len]
self.eclasses[ys] = (x, long(mtime))
self._eclass_locations[ys] = x
-
+ if x == self._master_eclass_root:
+ master_eclasses[ys] = mtime
+ else:
+ master_mtime = master_eclasses.get(ys)
+ if master_mtime and master_mtime != mtime:
+ self._master_eclasses_overridden[ys] = x
+
def is_eclass_data_valid(self, ec_dict):
if not isinstance(ec_dict, dict):
return False