Bug #285191 - Add back the RDEPEND.implicit warning to detect the cases
authorZac Medico <zmedico@gentoo.org>
Thu, 5 Aug 2010 05:06:59 +0000 (22:06 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 5 Aug 2010 05:06:59 +0000 (22:06 -0700)
where DEPEND is set and RDEPEND is unset in the ebuild, since this
triggers implicit RDEPEND=$DEPEND assignment (prior to EAPI 4) and is
forbidden by the QA team.

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

index fc184e2f1443ba030061810497be0d89538868c7..9f64701b84f47630fed9a84103b513346b3a53a5 100755 (executable)
@@ -328,7 +328,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.implicit":"RDEPEND is unset in the ebuild which triggers implicit RDEPEND=$DEPEND assignment (prior to EAPI 4)",
        "RDEPEND.suspect":"RDEPEND contains a package that usually only belongs in DEPEND.",
        "RESTRICT.invalid":"This ebuild contains invalid RESTRICT values.",
        "digest.assumed":"Existing digest must be assumed correct (Package level only)",
index ce9d0ba50e256ab0666f64057754a84f37ae0a48..ad4c74cb30c9b9cee5046eea0d9a21c66a495f9c 100644 (file)
@@ -210,6 +210,10 @@ Masked ebuilds with RDEPEND settings (matched against *all* ebuilds) in developi
 .B RDEPEND.badtilde
 RDEPEND uses the ~ dep operator with a non-zero revision part, which is useless (the revision is ignored)
 .TP
+.B RDEPEND.implicit
+RDEPEND is unset in the ebuild which triggers implicit RDEPEND=$DEPEND
+assignment (prior to EAPI 4)
+.TP
 .B RDEPEND.suspect
 RDEPEND contains a package that usually only belongs in DEPEND
 .TP
index 5588fa867b4f519cadeb739831d97cc59f4230ff..7e76bf78266555481a0c034d0bf1abafb93acbed 100644 (file)
@@ -324,6 +324,39 @@ class EprefixifyDefined(LineCheck):
                elif self._inherit_prefix_re.search(line) is not None:
                        self._prefix_inherited = True
 
+class ImplicitRuntimeDeps(LineCheck):
+       """
+       Detect the case where DEPEND is set and RDEPEND is unset in the ebuild,
+       since this triggers implicit RDEPEND=$DEPEND assignment (prior to EAPI 4).
+       """
+
+       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_eapi(self, eapi):
+               # Beginning with EAPI 4, there is no
+               # implicit RDEPEND=$DEPEND assignment
+               # to be concerned with.
+               return eapi in ('0', '1', '2', '3')
+
+       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
@@ -512,7 +545,7 @@ _constant_checks = tuple((c() for c in (
        EbuildAssignment, Eapi3EbuildAssignment, EbuildUselessDodoc,
        EbuildUselessCdS, EbuildNestedDie,
        EbuildPatches, EbuildQuotedA, EapiDefinition, EprefixifyDefined,
-       IUseUndefined, InheritAutotools,
+       ImplicitRuntimeDeps, InheritAutotools, IUseUndefined,
        EMakeParallelDisabled, EMakeParallelDisabledViaMAKEOPTS, NoAsNeeded,
        DeprecatedBindnowFlags, SrcUnpackPatches, WantAutoDefaultValue,
        SrcCompileEconf, Eapi3DeprecatedFuncs,