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/portage/eclass_cache.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/portage/eclass_cache.py')
-rw-r--r-- | pym/portage/eclass_cache.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/pym/portage/eclass_cache.py b/pym/portage/eclass_cache.py index 806505757..de20d307c 100644 --- a/pym/portage/eclass_cache.py +++ b/pym/portage/eclass_cache.py @@ -23,6 +23,7 @@ class cache(object): 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(object): 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(object): 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 |