Index: pym/repoman/checks.py =================================================================== --- pym/repoman/checks.py (revision 12528) +++ pym/repoman/checks.py (revision 12529) @@ -230,6 +230,33 @@ 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 @@ EbuildAssignment, EbuildUselessDodoc, EbuildUselessCdS, EbuildNestedDie, EbuildPatches, EbuildQuotedA, - IUseUndefined, InheritAutotools, + IUseUndefined, ImplicitRuntimeDeps, InheritAutotools, EMakeParallelDisabled, DeprecatedBindnowFlags))) def run_checks(contents, pkg): Index: bin/repoman =================================================================== --- bin/repoman (revision 12528) +++ bin/repoman (revision 12529) @@ -305,6 +305,7 @@ "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 @@ "KEYWORDS.stupid", "KEYWORDS.missing", "IUSE.undefined", +"RDEPEND.implicit", "RDEPEND.suspect", "RESTRICT.invalid", "SRC_URI.mirror", Index: man/repoman.1 =================================================================== --- man/repoman.1 (revision 12528) +++ man/repoman.1 (revision 12529) @@ -168,6 +168,10 @@ .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