From c5a1e0b212d8f5362177427dcad651269cb117b3 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 9 Jun 2008 14:34:05 +0000 Subject: [PATCH] As suggested by Flameeyes, add a new 'inherit.autotools' check which warns when autotools has been inherited but none of the eautomake, eautoconf or eautoreconf functions are called like they are supposed to be. (trunk r10592) svn path=/main/branches/2.1.2/; revision=10614 --- bin/repoman | 22 +++++++++++++++++----- man/repoman.1 | 3 +++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/bin/repoman b/bin/repoman index 0ebe79de2..d1b5627bf 100755 --- a/bin/repoman +++ b/bin/repoman @@ -168,6 +168,7 @@ qahelp={ "file.size":"Files in the files directory must be under 20k", "file.name":"File/dir name must be composed of only the following chars: %s " % allowed_filename_chars, "file.UTF8":"File is not UTF8 compliant", + "inherit.autotools":"Ebuild inherits autotools but does not call eautomake, eautoconf or eautoreconf", "java.eclassesnotused":"With virtual/jdk in DEPEND you must inherit a java eclass", "KEYWORDS.dropped":"Ebuilds that appear to have dropped KEYWORDS for some arch", "KEYWORDS.missing":"Ebuilds that have a missing or empty KEYWORDS variable", @@ -249,6 +250,7 @@ qawarnings=[ "ebuild.badheader", "ebuild.patches", "file.size", +"inherit.autotools", "java.eclassesnotused", "metadata.missing", "metadata.bad", @@ -1109,12 +1111,20 @@ _constant_checks = tuple((c() for c in ( EbuildPatches, EbuildQuotedA))) _iuse_def_re = re.compile(r'^IUSE=.*') +_comment_re = re.compile(r'(^|\s*)#') +_autotools_func_re = re.compile(r'(^|\s)(eautomake|eautoconf|eautoreconf)(\s|$)') -def run_checks(contents): +def run_checks(contents, inherited=None): iuse_def = None + inherit_autotools = inherited and "autotools" in inherited + autotools_func_call = None for num, line in enumerate(contents): - if iuse_def is None: - iuse_def = _iuse_def_re.match(line) + comment = _comment_re.match(line) + if comment is None: + if inherit_autotools and autotools_func_call is None: + autotools_func_call = _autotools_func_re.search(line) + if iuse_def is None: + iuse_def = _iuse_def_re.match(line) for lc in _constant_checks: ignore = lc.ignore_line if not ignore or not ignore.match(line): @@ -1123,6 +1133,8 @@ def run_checks(contents): yield lc.repoman_check_name, e % (num + 1) if iuse_def is None: yield 'ebuild.minorsyn', 'IUSE is not defined' + if inherit_autotools and autotools_func_call is None: + yield 'inherit.autotools', 'no eauto* function called' if mymode == "commit": retval = ("","") @@ -1530,7 +1542,7 @@ for x in scanlist: myaux = ebuild_metadata[y] eapi = myaux["EAPI"] - inherited = myaux["INHERITED"].split() + inherited = frozenset(myaux["INHERITED"].split()) # Test for negative logic and bad words in the RESTRICT var. #for x in myaux[allvars.index("RESTRICT")].split(): @@ -1831,7 +1843,7 @@ for x in scanlist: f = open(full_path, 'rb') try: contents = f.readlines() - for check_name, e in run_checks(contents): + for check_name, e in run_checks(contents, inherited=inherited): stats[check_name] += 1 fails[check_name].append(relative_path + ': %s' % e) finally: diff --git a/man/repoman.1 b/man/repoman.1 index 0f83d6388..0bf5ef344 100644 --- a/man/repoman.1 +++ b/man/repoman.1 @@ -262,6 +262,9 @@ Files in the files directory must be under 20k .B filedir.missing Package lacks a files directory .TP +.B inherit.autotools +Ebuild inherits autotools but does not call eautomake, eautoconf or eautoreconf +.TP .B java.eclassesnotused With virtual/jdk in DEPEND you must inherit a java eclass. Refer to \fIhttp://www.gentoo.org/proj/en/java/java\-devel.xml\fR for more information. -- 2.26.2