File suse-check-optional-dependencies.diff of Package rpmlint

Index: FilesCheck.py
===================================================================
--- FilesCheck.py.orig
+++ FilesCheck.py
@@ -908,6 +908,16 @@ class FilesCheck(AbstractCheck.AbstractC
                 if res.group(1) != pkg.name:
                     printError(pkg, 'incoherent-logrotate-file', f)
 
+            deps=[x[0] for x in pkg.requires()+pkg.recommends()+pkg.suggests()]
+            if res and not ('logrotate' in deps) and pkg.name != "logrotate":
+                printError(pkg, 'missing-dependency-to-logrotate', "for logrotate script", f)
+            if f.startswith('/etc/cron.') \
+               and not ('cron' in deps) and pkg.name != "cron":
+                printError(pkg, 'missing-dependency-to-cron', "for cron script", f)
+            if f.startswith('/etc/xinet.d/') \
+               and not ('xinetd' in deps) and pkg.name != "xinetd":
+                printError(pkg, 'missing-dependency-to-xinetd', "for xinet.d script", f)
+
             if link != '':
                 ext = compr_regex.search(link)
                 if ext:
@@ -1730,6 +1740,24 @@ consequences), or other compiler flags w
 extraction not working as expected.  Verify that the binaries are not
 unexpectedly stripped and that the intended compiler flags are used.''',
 
+'missing-dependency-to-cron',
+'''This package installs a file in /etc/cron.*/ but
+doesn't require cron to be installed. as cron is not part of the essential packages,
+your package should explicitely require cron to make sure that your cron job is
+executed. If it is an optional feature of your package, recommend or suggest cron.''',
+
+'missing-dependency-to-logrotate',
+'''This package installs a file in /etc/logrotate.d/ but
+doesn't require logrotate to be installed. Because logrotate is not part of the essential packages,
+your package should explicitely depend on logrotate to make sure that your logrotate
+job is executed. If it is an optional feature of your package, recommend or suggest logrotate.''',
+
+'missing-dependency-to-xinetd',
+'''This package installs a file in /etc/xinetd.d/ but
+doesn't require xinetd to be installed. Because xinetd is not part of the essential packages,
+your package should explicitely depend on logrotate to make sure that your xinetd
+job is executed. If it is an optional feature of your package, recommend or suggest xinetd.''',
+
 'read-error',
 '''This file could not be read.  A reason for this could be that the info about
 it in the rpm header indicates that it is supposed to be a readable normal file