diff --git a/conf/intel/entropy/packages/packages.server.qa.exec b/conf/intel/entropy/packages/packages.server.qa.exec index e8a13f9..af832c9 100755 --- a/conf/intel/entropy/packages/packages.server.qa.exec +++ b/conf/intel/entropy/packages/packages.server.qa.exec @@ -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)