Index: InitScriptCheck.py =================================================================== --- InitScriptCheck.py.orig +++ InitScriptCheck.py @@ -52,7 +52,7 @@ class InitScriptCheck(AbstractCheck.Abst return initscript_list = [] - + rclinks = set() # check chkconfig call in %post and %preun postin = pkg[rpm.RPMTAG_POSTIN] or pkg[rpm.RPMTAG_POSTINPROG] @@ -61,6 +61,10 @@ class InitScriptCheck(AbstractCheck.Abst for fname, pkgfile in pkg.files().items(): + if stat.S_ISLNK(pkgfile.mode) and (fname.startswith("/usr/sbin/rc") \ + or fname.startswith("/sbin/rc")): + rclinks.add(fname.partition('/rc')[2]) + if not fname.startswith('/etc/init.d/') and \ not fname.startswith('/etc/rc.d/init.d/'): continue @@ -198,6 +202,12 @@ class InitScriptCheck(AbstractCheck.Abst elif subsys_regex_found and not use_subsys: printError(pkg, 'subsys-unsupported', fname) + for script in initscript_list: + if script.startswith("rc") or script.startswith("boot."): + continue + if not script in rclinks: + printWarning(pkg, 'suse-missing-rclink', script) + goodnames = (pkg.name.lower(), pkg.name.lower() + 'd') if len(initscript_list) == 1 and initscript_list[0] not in goodnames: printWarning(pkg, 'incoherent-init-script-name', initscript_list[0], @@ -220,6 +230,10 @@ a call to chkconfig.''', '''The package contains an init script but doesn't contain a %preun with a call to chkconfig.''', +'suse-missing-rclink', +'''The package contains an init script with the given name but does not +contain the SUSE policy symlink /usr/sbin/rcFOO -> /etc/init.d/FOO''', + 'preun-without-chkconfig', '''The package contains an init script but doesn't call chkconfig in its %preun script.''',