Bug #255358 - Add new RDEPEND.implicit warning to detect the caes where DEPEND v2.2_rc23
authorZac Medico <zmedico@gentoo.org>
Sun, 18 Jan 2009 23:15:47 +0000 (23:15 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 18 Jan 2009 23:15:47 +0000 (23:15 -0000)
is set and RDEPEND is unset in the ebuild, since this triggers implicit
RDEPEND=$DEPEND assignment.

svn path=/main/trunk/; revision=12529

bin/repoman
man/repoman.1
pym/repoman/checks.py

index 05d6d99c2e048a40d1d3e82d59d4069316708ec8..0a8166c65901a1546db9ed60e085e03f266b0793 100755 (executable)
@@ -305,6 +305,7 @@ qahelp={
        "IUSE.undefined":"This ebuild does not define IUSE (style guideline says to define IUSE even when empty)",
        "LICENSE.invalid":"This ebuild is listing a license that doesnt exist in portages license/ dir.",
        "KEYWORDS.invalid":"This ebuild contains KEYWORDS that are not listed in profiles/arch.list or for which no valid profile was found",
+       "RDEPEND.implicit":"RDEPEND is unset in the ebuild which triggers implicit RDEPEND=$DEPEND assignment",
        "RDEPEND.suspect":"RDEPEND contains a package that usually only belongs in DEPEND.",
        "RESTRICT.invalid":"This ebuild contains invalid RESTRICT values.",
        "digestentry.unused":"Some files listed in the Manifest aren't referenced in SRC_URI",
@@ -343,6 +344,7 @@ qawarnings = set((
 "KEYWORDS.stupid",
 "KEYWORDS.missing",
 "IUSE.undefined",
+"RDEPEND.implicit",
 "RDEPEND.suspect",
 "RESTRICT.invalid",
 "SRC_URI.mirror",
index 754214049fd2710e1d1e198510677e4bde3410c1..5b5aec6ff8a7fc6f43ef8fde2a55d4dc27295249 100644 (file)
@@ -168,6 +168,10 @@ Masked ebuilds with RDEPEND settings (matched against *all* ebuilds)
 .B RDEPEND.badmaskedindev
 Masked ebuilds with RDEPEND settings (matched against *all* ebuilds) in developing arch
 .TP
+.B RDEPEND.implicit
+RDEPEND is unset in the ebuild which triggers implicit RDEPEND=$DEPEND
+assignment
+.TP
 .B RDEPEND.suspect
 RDEPEND contains a package that usually only belongs in DEPEND
 .TP
index 7565039f274af031be89299a7336ae4e8034e35a..c9ef91cfc91d9df7a92259d2367e413bbabf2bfa 100644 (file)
@@ -230,6 +230,33 @@ class EbuildQuotedA(LineCheck):
                if match:
                        return "Quoted \"${A}\" on line: %d"
 
+class ImplicitRuntimeDeps(LineCheck):
+       """
+       Detect the case where DEPEND is set and RDEPEND is unset in the ebuild,
+       since this triggers implicit RDEPEND=$DEPEND assignment.
+       """
+
+       repoman_check_name = 'RDEPEND.implicit'
+       _assignment_re = re.compile(r'^\s*(R?DEPEND)=')
+
+       def new(self, pkg):
+               self._rdepend = False
+               self._depend = False
+
+       def check(self, num, line):
+               if not self._rdepend:
+                       m = self._assignment_re.match(line)
+                       if m is None:
+                               pass
+                       elif m.group(1) == "RDEPEND":
+                               self._rdepend = True
+                       elif m.group(1) == "DEPEND":
+                               self._depend = True
+
+       def end(self):
+               if self._depend and not self._rdepend:
+                       yield 'RDEPEND is not explicitly assigned'
+
 class InheritAutotools(LineCheck):
        """
        Make sure appropriate functions are called in
@@ -306,7 +333,7 @@ _constant_checks = tuple((c() for c in (
        EbuildAssignment, EbuildUselessDodoc,
        EbuildUselessCdS, EbuildNestedDie,
        EbuildPatches, EbuildQuotedA,
-       IUseUndefined, InheritAutotools,
+       IUseUndefined, ImplicitRuntimeDeps, InheritAutotools,
        EMakeParallelDisabled, DeprecatedBindnowFlags)))
 
 def run_checks(contents, pkg):