summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwired <wired@gentoo.org>2010-08-15 01:56:40 +0300
committerZac Medico <zmedico@gentoo.org>2010-08-22 11:59:42 -0700
commit6bfbbbefc91069cb4244cf5a5462e6cef3cef3e6 (patch)
treef29a947da6bd1b2a7a8f244d7847155548d152b8
parent2960e0d0fc5ad933ca39e0fc338b56da6de9fe52 (diff)
downloadportage-6bfbbbefc91069cb4244cf5a5462e6cef3cef3e6.tar.gz
portage-6bfbbbefc91069cb4244cf5a5462e6cef3cef3e6.tar.bz2
portage-6bfbbbefc91069cb4244cf5a5462e6cef3cef3e6.zip
repoman: check for deprecated eclasses
compare the inherited eclasses to a list of deprecated eclasses. print QA warnings for each deprecated eclass found and suggest an alternative for those that have one.
-rwxr-xr-xbin/repoman2
-rw-r--r--man/repoman.13
-rw-r--r--pym/repoman/checks.py31
3 files changed, 35 insertions, 1 deletions
diff --git a/bin/repoman b/bin/repoman
index df4232516..3b28bf5be 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -285,6 +285,7 @@ qahelp={
"file.name":"File/dir name must be composed of only the following chars: %s " % allowed_filename_chars,
"file.UTF8":"File is not UTF8 compliant",
"inherit.autotools":"Ebuild inherits autotools but does not call eautomake, eautoconf or eautoreconf",
+ "inherit.deprecated":"Ebuild inherits a deprecated eclass",
"java.eclassesnotused":"With virtual/jdk in DEPEND you must inherit a java eclass",
"KEYWORDS.dropped":"Ebuilds that appear to have dropped KEYWORDS for some arch",
"KEYWORDS.missing":"Ebuilds that have a missing or empty KEYWORDS variable",
@@ -396,6 +397,7 @@ qawarnings = set((
"ebuild.patches",
"file.size",
"inherit.autotools",
+"inherit.deprecated",
"java.eclassesnotused",
"metadata.warning",
"virtual.versioned",
diff --git a/man/repoman.1 b/man/repoman.1
index ad4c74cb3..28216d6e8 100644
--- a/man/repoman.1
+++ b/man/repoman.1
@@ -304,6 +304,9 @@ Files in the files directory must be under 20k
.B inherit.autotools
Ebuild inherits autotools but does not call eautomake, eautoconf or eautoreconf
.TP
+.B inherit.deprecated
+Ebuild inherits a deprecated eclass
+.TP
.B java.eclassesnotused
With virtual/jdk in DEPEND you must inherit a java eclass. Refer to
\fIhttp://www.gentoo.org/proj/en/java/java\-devel.xml\fR for more information.
diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py
index ed3079574..f3ab6e4c2 100644
--- a/pym/repoman/checks.py
+++ b/pym/repoman/checks.py
@@ -360,6 +360,35 @@ class ImplicitRuntimeDeps(LineCheck):
if self._depend and not self._rdepend:
yield 'RDEPEND is not explicitly assigned'
+class InheritDeprecated(LineCheck):
+ """Check if ebuild inherits a deprecated eclass"""
+
+ repoman_check_name = 'inherit.deprecated'
+
+ # deprecated eclass : new eclass (0 if no new eclass)
+ deprecated_classes = {
+ "gems": "ruby-fakegem",
+ "php-pear": "php-pear-r1",
+ "qt3": 0,
+ "qt4": "qt4-r2",
+ "ruby": "ruby-ng",
+ "ruby-gnome2": "ruby-ng-gnome2"
+ }
+
+ def new(self, pkg):
+ self.matched_eclasses = frozenset(self.deprecated_classes.keys()).intersection(pkg.inherited)
+
+ def check(self, num, line):
+ pass
+
+ def end(self):
+ for i in self.matched_eclasses:
+ if self.deprecated_classes[i] == 0:
+ yield i + ": deprecated eclass"
+ else:
+ yield "uses deprecated eclass '"+ i +"'. please migrate to '"+ \
+ self.deprecated_classes[i] +"'"
+
class InheritAutotools(LineCheck):
"""
Make sure appropriate functions are called in
@@ -554,7 +583,7 @@ _constant_checks = tuple((c() for c in (
EbuildAssignment, Eapi3EbuildAssignment, EbuildUselessDodoc,
EbuildUselessCdS, EbuildNestedDie,
EbuildPatches, EbuildQuotedA, EapiDefinition, EprefixifyDefined,
- ImplicitRuntimeDeps, InheritAutotools, IUseUndefined,
+ ImplicitRuntimeDeps, InheritAutotools, InheritDeprecated, IUseUndefined,
EMakeParallelDisabled, EMakeParallelDisabledViaMAKEOPTS, NoAsNeeded,
DeprecatedBindnowFlags, SrcUnpackPatches, WantAutoDefaultValue,
SrcCompileEconf, Eapi3DeprecatedFuncs,