repoman: check EXTRA_ECONF/EMAKE, bug #437348
authorZac Medico <zmedico@gentoo.org>
Mon, 8 Oct 2012 14:34:09 +0000 (07:34 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 8 Oct 2012 14:34:09 +0000 (07:34 -0700)
bin/repoman
man/repoman.1
pym/repoman/checks.py

index ff3f8f7659aff98d134cf034a744a4b8ebb3a1d2..8dd85d011e8ee87481bb2166b102a70a7e5de39c 100755 (executable)
@@ -372,7 +372,7 @@ qahelp={
        "metadata.missing":"Missing metadata.xml files",
        "metadata.bad":"Bad metadata.xml files",
        "metadata.warning":"Warnings in metadata.xml files",
-       "portage.internal":"The ebuild uses an internal Portage function",
+       "portage.internal":"The ebuild uses an internal Portage function or variable",
        "virtual.oldstyle":"The ebuild PROVIDEs an old-style virtual (see GLEP 37)",
        "virtual.suspect":"Ebuild contains a package that usually should be pulled via virtual/, not directly.",
        "usage.obsolete":"The ebuild makes use of an obsolete construct",
index 8f8ad65a4270875d8f75ab018c7667f2cf0cddc1..6dd75e87dc82b88bd1e26f4f215f215ab255f519 100644 (file)
@@ -320,7 +320,7 @@ Missing metadata.xml files
 Warnings in metadata.xml files
 .TP
 .B portage.internal
-The ebuild uses an internal Portage function
+The ebuild uses an internal Portage function or variable
 .TP
 .B upstream.workaround
 The ebuild works around an upstream bug, an upstream bug should be filed and
index 7e3d4b87511c18785e9b8d544fc6ea347cb1f50f..b47028ca7e222db62db2db1bf6d32fdf9e6b4371 100644 (file)
@@ -785,6 +785,19 @@ class PortageInternal(LineCheck):
                if m is not None:
                        return ("'%s'" % m.group(2)) + " called on line: %d"
 
+class PortageInternalVariableAssignment(LineCheck):
+
+       repoman_check_name = 'portage.internal'
+       internal_assignment = re.compile(r'\s*(export\s+)?(EXTRA_ECONF|EXTRA_EMAKE)\+?=')
+
+       def check(self, num, line):
+               match = self.internal_assignment.match(line)
+               e = None
+               if match is not None:
+                       e = 'Assignment to variable %s' % match.group(2)
+                       e += ' on line: %d'
+               return e
+
 _constant_checks = tuple(chain((c() for c in (
        EbuildHeader, EbuildWhitespace, EbuildBlankLine, EbuildQuote,
        EbuildAssignment, Eapi3EbuildAssignment, EbuildUselessDodoc,
@@ -796,7 +809,7 @@ _constant_checks = tuple(chain((c() for c in (
        SrcCompileEconf, Eapi3DeprecatedFuncs, NoOffsetWithHelpers,
        Eapi4IncompatibleFuncs, Eapi4GoneVars, BuiltWithUse,
        PreserveOldLib, SandboxAddpredict, PortageInternal,
-       DeprecatedUseq, DeprecatedHasq)),
+       PortageInternalVariableAssignment, DeprecatedUseq, DeprecatedHasq)),
        (InheritEclass(k, **kwargs) for k, kwargs in _eclass_info.items())))
 
 _here_doc_re = re.compile(r'.*\s<<[-]?(\w+)$')