repoman: add check for using offset vars with helpers
authorFabian Groffen <grobian@gentoo.org>
Sun, 30 Jan 2011 20:52:50 +0000 (21:52 +0100)
committerZac Medico <zmedico@gentoo.org>
Wed, 2 Feb 2011 23:20:42 +0000 (15:20 -0800)
New check: NoOffsetWithHelpers.  Checks whether helper functions, such as
dodir and insinto, are used with offset variables either referring to
the installation image (D, ED), the alternate root location (ROOT,
EROOT), or the offset prefix (EPREFIX).

bin/repoman
pym/repoman/checks.py
pym/repoman/errors.py

index dd2b774e84a1408283caf5a8d963d57b760db8b5..c049e70d19d425b2ee2ffa1db1721332fc43ea1e 100755 (executable)
@@ -340,6 +340,7 @@ qahelp={
        "ebuild.nesteddie":"Placing 'die' inside ( ) prints an error, but doesn't stop the ebuild.",
        "variable.invalidchar":"A variable contains an invalid character that is not part of the ASCII character set",
        "variable.readonly":"Assigning a readonly variable",
+       "variable.usedwithhelpers":"Ebuild uses D, ROOT, ED, EROOT or EPREFIX with helpers",
        "LIVEVCS.stable":"This ebuild is a live checkout from a VCS but has stable keywords.",
        "LIVEVCS.unmasked":"This ebuild is a live checkout from a VCS but has keywords and is not masked in the global package.mask.",
        "IUSE.invalid":"This ebuild has a variable in IUSE that is not in the use.desc or its metadata.xml file",
index baa7a3812b24fe4cfe8dd9435c16e481860c68c9..d00e6d59da41c7c02b3a59c6d7ddf26d6ce7d094 100644 (file)
@@ -1,5 +1,5 @@
 # repoman: Checks
-# Copyright 2007, 2010 Gentoo Foundation
+# Copyright 2007, 2011 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 """This module contains functions used in Repoman to ascertain the quality
@@ -327,6 +327,15 @@ class EprefixifyDefined(LineCheck):
                elif self._inherit_prefix_re.search(line) is not None:
                        self._prefix_inherited = True
 
+class NoOffsetWithHelpers(LineCheck):
+       """ Check that the image location, the alternate root offset, and the
+       offset prefix (D, ROOT, ED, EROOT and EPREFIX) are not used with
+       helpers """
+
+       repoman_check_name = 'variable.usedwithhelpers'
+       re = re.compile(r'.*\b(dodir|dohard|exeinto|insinto|into)\s+"?\$\{?(D|ROOT|ED|EROOT|EPREFIX)\}?.*')
+       error = errors.EPREFIX_WITH_HELPERS
+
 class ImplicitRuntimeDeps(LineCheck):
        """
        Detect the case where DEPEND is set and RDEPEND is unset in the ebuild,
@@ -622,7 +631,7 @@ _constant_checks = tuple((c() for c in (
        ImplicitRuntimeDeps, InheritAutotools, InheritDeprecated, IUseUndefined,
        EMakeParallelDisabled, EMakeParallelDisabledViaMAKEOPTS, NoAsNeeded,
        DeprecatedBindnowFlags, SrcUnpackPatches, WantAutoDefaultValue,
-       SrcCompileEconf, Eapi3DeprecatedFuncs,
+       SrcCompileEconf, Eapi3DeprecatedFuncs, NoOffsetWithHelpers,
        Eapi4IncompatibleFuncs, Eapi4GoneVars, BuiltWithUse,
        PreserveOldLib, SandboxAddpredict)))
 
index 5ad6be31fcfbae44b429477ec32aff6cf6292b68..a19e8c5c032d6c57f1f57a0400e62ec691da7433 100644 (file)
@@ -1,5 +1,5 @@
 # repoman: Error Messages
-# Copyright 2007-2010 Gentoo Foundation
+# Copyright 2007-2011 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 COPYRIGHT_ERROR = 'Invalid Gentoo Copyright on line: %d'
@@ -20,4 +20,5 @@ NO_AS_NEEDED = 'Upstream asneeded linking bug (no-as-needed on line: %d)'
 PRESERVE_OLD_LIB = 'Upstream ABI change workaround on line: %d'
 BUILT_WITH_USE = 'built_with_use on line: %d'
 EPREFIXIFY_MISSING_INHERIT = "prefix.eclass is not inherited, but eprefixify is used on line: %d"
+NO_OFFSET_WITH_HELPERS = "Helper function is used with D, ROOT, ED, EROOT or EPREFIX on line :%d"
 SANDBOX_ADDPREDICT = 'Ebuild calls addpredict on line: %d'