[entropy] add Perl5 bump QA tool

This commit is contained in:
Fabio Erculiani 2011-11-25 10:27:11 +01:00
parent ace3df2945
commit 3a510a4143
1 changed files with 52 additions and 18 deletions

View File

@ -46,12 +46,24 @@ import sys
import os
import entropy.dep
def check_unwanted_deps(pkg_deps):
def write_attention_msg(msg):
sys.stderr.write("\nATTENTION ATTENTION ATTENTION\n")
sys.stderr.write(msg + "\n")
sys.stderr.write("ATTENTION ATTENTION ATTENTION\n\n")
def write_warning_msg(msg):
sys.stderr.write("\nWARNING WARNING WARNING\n")
sys.stderr.write(msg + "\n")
sys.stderr.write("\nWARNING WARNING WARNING\n")
def check_unwanted_deps():
"""
Check against forbidden dependencies, those we consider meta packages,
placeholders just to keep Gentoo compatibility, which, if listed as dep in,
would cause the whole world to be pulled in.
"""
pkg_deps = os.getenv("PKG_DEPS", "")
pkg_deps = pkg_deps.split()
if not pkg_deps:
return 0
@ -69,44 +81,66 @@ def check_unwanted_deps(pkg_deps):
not x.startswith("!"))
for unwanted_dep in unwanted_deps:
if unwanted_dep in pkg_deps_map:
sys.stderr.write("\nATTENTION ATTENTION ATTENTION\n")
sys.stderr.write("%s contains forbidden dependency against %s\n" % (
pkg_atom, pkg_deps_map[unwanted_dep]))
sys.stderr.write("ATTENTION ATTENTION ATTENTION\n\n")
write_attention_msg(
"%s contains forbidden dependency against %s" % (
pkg_atom, pkg_deps_map[unwanted_dep]))
func_rc = 2
for warning_dep in warning_deps:
if warning_dep in pkg_deps_map:
sys.stderr.write("\nATTENTION ATTENTION ATTENTION\n")
sys.stderr.write("%s contains a weirdo dependency against %s\n" % (
pkg_atom, pkg_deps_map[warning_dep]))
sys.stderr.write("ATTENTION ATTENTION ATTENTION\n\n")
write_attention_msg(
"%s contains a weirdo dependency against %s" % (
pkg_atom, pkg_deps_map[warning_dep]))
if func_rc == 0:
func_rc = 1
if pkg_keywords is not None:
keywords = pkg_keywords.split()
if not keywords or ("**" in keywords and len(keywords) == 1):
sys.stderr.write("\nATTENTION ATTENTION ATTENTION\n")
sys.stderr.write("%s is masked by default, keywords: %s\n" % (
write_attention_msg("%s is masked by default, keywords: %s" % (
pkg_atom, pkg_keywords))
sys.stderr.write("ATTENTION ATTENTION ATTENTION\n\n")
if func_rc == 0:
func_rc = 1
return func_rc
def warn_perl5_bump():
"""
Warn in case of bumping dev-lang/perl. Developer should not
forget about running perl-cleaner.
"""
pkg_key = "%s/%s" % (os.getenv("PKG_CATEGORY", ""),
os.getenv("PKG_NAME", ""))
pkg_version = os.getenv("PKG_VERSION", "")
if pkg_key == "dev-lang/perl" and pkg_version.startswith("5"):
perl_dir = "/usr/lib/perl5/vendor_perl"
try:
perl_versions = os.listdir(perl_dir)
except (OSError, IOError):
perl_versions = []
if len(perl_versions) > 1:
write_warning_msg(
"Adding dev-lang/perl but you forgot to run perl-cleaner?\n"
"These are the versions detected in %s:\n"
"%s" % (perl_dir, ", ".join(perl_versions)))
return 1
return 0
if __name__ == "__main__":
pkg_deps = os.getenv("PKG_DEPS")
if pkg_deps is None:
return 0
pkg_deps = pkg_deps.split()
exit_st = 0
rc = check_unwanted_deps(pkg_deps)
rc = check_unwanted_deps()
if rc != 0:
exit_st = rc
rc = warn_perl5_bump()
if rc != 0 and rc > exit_st:
exit_st = rc
# more tests here
raise SystemExit(exit_st)