From f76cb63c8c775daa81ecad00b0a3ac6019fbebfe Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Thu, 16 Feb 2012 18:44:13 +0100 Subject: [PATCH] maintcheck: whitelist some false positives Instead of tweaking or dumbing down some of our sources or tests in order not to make them spuriously trigger few maintainer checks, we tweak such checks instead. * syntax-checks.mk (sc_tests_overriding_macros_on_cmdline): Also allow the variable 'exp' to be overridden on the make command line. Whitelist the test 'make-dryrun.test' where appropriate. (sc_mkinstalldirs): When whitelisting the 'mkinstalldirs' occurrence in 'lib/Makefile.am', do not look for the exact line number: it is obviously too fragile. --- syntax-checks.mk | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/syntax-checks.mk b/syntax-checks.mk index 0f011145f..13531bdea 100644 --- a/syntax-checks.mk +++ b/syntax-checks.mk @@ -207,7 +207,7 @@ sc_no_for_variable_in_macro: sc_mkinstalldirs: @if grep -n 'mkinstalldirs' $(ams) \ | grep -F -v '$$(mkinstalldirs)' \ - | grep -v '^\./lib/Makefile.am:37: *mkinstalldirs \\$$'; \ + | grep -v '^\./lib/Makefile.am:[0-9][0-9]*: *mkinstalldirs \\$$'; \ then \ echo "Found incorrect use of mkinstalldirs in the lines above" 1>&2; \ exit 1; \ @@ -458,6 +458,8 @@ sc_tests_tap_plan: ## exception, POSIX says it can't come from the environment. V, DESTDIR, ## DISTCHECK_CONFIGURE_FLAGS and DISABLE_HARD_ERRORS are exceptions, too, ## as package authors are urged not to initialize them anywhere. +## Finally, 'exp' is used by some ad-hoc checks, where we ensure it's +## ok to override it from the command line. sc_tests_overriding_macros_on_cmdline: @if grep -E '\$$MAKE .*(SHELL=.*=|=.*SHELL=)' $(xtests); then \ echo 'Rewrite "$$MAKE foo=bar SHELL=$$SHELL" as "foo=bar $$MAKE -e SHELL=$$SHELL"' 1>&2; \ @@ -465,15 +467,24 @@ sc_tests_overriding_macros_on_cmdline: exit 1; \ fi # The first s/// tries to account for usages like "$MAKE || st=$?". -# DISTCHECK_CONFIGURE_FLAGS is allowed to contain whitespace in its -# definition, hence the more complex last three substitutions below. - @if sed -e 's/ || .*//' -e 's/ && .*//' \ +# 'DISTCHECK_CONFIGURE_FLAGS' and 'exp' are allowed to contain whitespace in +# their definitions, hence the more complex last three substitutions below. +# Also, the 'make-dryrun.test' is whitelisted, since there we need to +# override variables from the command line in order to cover the expected +# code paths. + @tests=`for t in $(xtests); do \ + case $$t in */make-dryrun.test);; *) echo $$t;; esac; \ + done`; \ + if sed -e 's/ || .*//' -e 's/ && .*//' \ -e 's/ DESTDIR=[^ ]*/ /' -e 's/ SHELL=[^ ]*/ /' \ -e 's/ V=[^ ]*/ /' -e 's/ DISABLE_HARD_ERRORS=[^ ]*/ /' \ -e "s/ DISTCHECK_CONFIGURE_FLAGS='[^']*'/ /" \ -e 's/ DISTCHECK_CONFIGURE_FLAGS="[^"]*"/ /' \ -e 's/ DISTCHECK_CONFIGURE_FLAGS=[^ ]/ /' \ - $(xtests) | grep '\$$MAKE .*='; then \ + -e "s/ exp='[^']*'/ /" \ + -e 's/ exp="[^"]*"/ /' \ + -e 's/ exp=[^ ]/ /' \ + $$tests | grep '\$$MAKE .*='; then \ echo 'Rewrite "$$MAKE foo=bar" as "foo=bar $$MAKE -e" in the above lines,' 1>&2; \ echo 'it is more portable.' 1>&2; \ exit 1; \ -- 2.47.2