From 1b4217b99506ad26666b53a4d4d1d9a4a9bec06b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Wed, 2 Oct 2019 17:44:04 +0100 Subject: [PATCH] build: delete all syntax check rules we're skipping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we've marked rules as skipped, there's no sense keeping them in the maint.mk file. Reviewed-by: Michal Privoznik Signed-off-by: Daniel P. Berrangé --- build-aux/cfg.mk | 38 ------- build-aux/maint.mk | 245 --------------------------------------------- 2 files changed, 283 deletions(-) diff --git a/build-aux/cfg.mk b/build-aux/cfg.mk index 3add2b7e94..2252f4a939 100644 --- a/build-aux/cfg.mk +++ b/build-aux/cfg.mk @@ -31,44 +31,6 @@ generated_files = \ # We haven't converted all scripts to using gnulib's init.sh yet. _test_script_regex = \<\(init\|test-lib\)\.sh\> -# Tests not to run as part of "make distcheck". -local-checks-to-skip = \ - changelog-check \ - makefile-check \ - makefile_path_separator_check \ - patch-check \ - sc_GPL_version \ - sc_always_defined_macros \ - sc_cast_of_alloca_return_value \ - sc_cross_check_PATH_usage_in_tests \ - sc_dd_max_sym_length \ - sc_error_exit_success \ - sc_file_system \ - sc_immutable_NEWS \ - sc_makefile_path_separator_check \ - sc_obsolete_symbols \ - sc_prohibit_S_IS_definition \ - sc_prohibit_atoi_atof \ - sc_prohibit_gnu_make_extensions \ - sc_prohibit_hash_without_use \ - sc_prohibit_jm_in_m4 \ - sc_prohibit_quote_without_use \ - sc_prohibit_quotearg_without_use \ - sc_prohibit_stat_st_blocks \ - sc_prohibit_undesirable_word_seq \ - sc_root_tests \ - sc_space_tab \ - sc_sun_os_names \ - sc_system_h_headers \ - sc_texinfo_acronym \ - sc_tight_scope \ - sc_two_space_separator_in_usage \ - sc_error_message_uppercase \ - sc_program_name \ - sc_require_test_exit_idiom \ - sc_makefile_check \ - sc_useless_cpp_parens - # Most developers don't run 'make distcheck'. We want the official # dist to be secure, but don't want to penalize other developers # using a distro that has not yet picked up the automake fix. diff --git a/build-aux/maint.mk b/build-aux/maint.mk index 9467815711..45ef6f03c2 100644 --- a/build-aux/maint.mk +++ b/build-aux/maint.mk @@ -285,24 +285,6 @@ sc_cast_of_x_alloc_return_value: halt="don't cast x*alloc return value" \ $(_sc_search_regexp) -sc_cast_of_alloca_return_value: - @prohibit='\*\) *alloca\>' \ - halt="don't cast alloca return value" \ - $(_sc_search_regexp) - -sc_space_tab: - @prohibit='[ ] ' \ - halt='found SPACE-TAB sequence; remove the SPACE' \ - $(_sc_search_regexp) - -# Don't use *scanf or the old ato* functions in "real" code. -# They provide no error checking mechanism. -# Instead, use strto* functions. -sc_prohibit_atoi_atof: - @prohibit='\<([fs]?scanf|ato([filq]|ll)) *\(' \ - halt='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q' \ - $(_sc_search_regexp) - # Use STREQ rather than comparing strcmp == 0, or != 0. sp_ = strcmp *\(.+\) sc_prohibit_strcmp: @@ -335,51 +317,6 @@ sc_prohibit_magic_number_exit: halt='use EXIT_* values rather than magic number' \ $(_sc_search_regexp) -# Check that we don't use $< in non-implicit Makefile rules. -# -# To find the Makefiles, trace AC_CONFIG_FILES. Using VC_LIST would -# miss the Makefiles that are not under VC control (e.g., symlinks -# installed for gettext). "Parsing" (recursive) uses of SUBDIRS seems -# too delicate. -# -# Use GNU Make's --print-data-base to normalize the rules into some -# easy to parse format: they are separated by two \n. Look for the -# "section" about non-pattern rules (marked with "# Files") inside -# which there are still the POSIX Make like implicit rules (".c.o"). -sc_prohibit_gnu_make_extensions_awk_ = \ - BEGIN { \ - RS = "\n\n"; \ - in_rules = 0; \ - } \ - /^\# Files/ { \ - in_rules = 1; \ - } \ - /\$$/dev/null 2>&1; then \ - (cd $(srcdir) && autoconf --trace AC_CONFIG_FILES:'$$1') | \ - tr ' ' '\n' | \ - $(SED) -ne '/Makefile/{s/\.in$$//;p;}' | \ - while read m; do \ - $(MAKE) -qp -f $$m .DUMMY-TARGET 2>/dev/null | \ - $(AWK) -v file=$$m -e '$($@_awk_)' || exit 1; \ - done; \ - fi - -# Using EXIT_SUCCESS as the first argument to error is misleading, -# since when that parameter is 0, error does not exit. Use '0' instead. -sc_error_exit_success: - @prohibit='error *\(EXIT_SUCCESS,' \ - in_vc_files='\.[chly]$$' \ - halt='found error (EXIT_SUCCESS' \ - $(_sc_search_regexp) - # "FATAL:" should be fully upper-cased in error messages # "WARNING:" should be fully upper-cased, or fully lower-cased sc_error_message_warn_fatal: @@ -390,16 +327,6 @@ sc_error_message_warn_fatal: exit 1; } \ || : -# Error messages should not start with a capital letter -sc_error_message_uppercase: - @$(VC_LIST_EXCEPT) \ - | xargs $(GREP) -nEA2 '[^rp]error *\(' /dev/null \ - | $(GREP) -E '"[A-Z]' \ - | $(GREP) -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' \ - && { echo '$(ME): found capitalized error message' 1>&2; \ - exit 1; } \ - || : - # Error messages should not end with a period sc_error_message_period: @$(VC_LIST_EXCEPT) \ @@ -409,13 +336,6 @@ sc_error_message_period: exit 1; } \ || : -sc_file_system: - @prohibit=file''system \ - exclude='/proc/filesystems' \ - ignore_case=1 \ - halt='found use of "file''system"; spell it "file system"' \ - $(_sc_search_regexp) - # Don't use cpp tests of this symbol. All code assumes config.h is included. sc_prohibit_have_config_h: @prohibit='^# *if.*HAVE''_CONFIG_H' \ @@ -490,15 +410,6 @@ sc_prohibit_close_stream_without_use: sc_prohibit_getopt_without_use: @h='getopt.h' re='\ -sc_prohibit_hash_without_use: - @h='hash.h' \ - re='$(_hash_fn)|$(_hash_struct)'\ - $(_sc_header_without_use) - sc_prohibit_cloexec_without_use: @h='cloexec.h' re='\<(set_cloexec_flag|dup_cloexec) *\(' \ $(_sc_header_without_use) @@ -694,13 +594,6 @@ sc_prohibit_verify_without_use: sc_prohibit_xfreopen_without_use: @h='xfreopen.h' re='\' \ - halt='do not use HAVE''_FCNTL_H or O'_NDELAY \ - $(_sc_search_regexp) - -# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ - # Each nonempty ChangeLog line must start with a year number, or a TAB. sc_changelog: @prohibit='^[^12 ]' \ @@ -717,39 +610,12 @@ sc_bindtextdomain: halt='the above files do not call bindtextdomain' \ $(_sc_search_regexp) -# Require that the final line of each test-lib.sh-using test be this one: -# Exit $fail -# Note: this test requires GNU grep's --label= option. -Exit_witness_file ?= tests/test-lib.sh -Exit_base := $(notdir $(Exit_witness_file)) -sc_require_test_exit_idiom: - @if test -f $(srcdir)/$(Exit_witness_file); then \ - die=0; \ - for i in $$($(GREP) -l -F 'srcdir/$(Exit_base)' \ - $$($(VC_LIST) tests)); do \ - tail -n1 $$i | $(GREP) '^Exit .' > /dev/null \ - && : || { die=1; echo $$i; } \ - done; \ - test $$die = 1 && \ - { echo 1>&2 '$(ME): the final line in each of the above is not:'; \ - echo 1>&2 'Exit something'; \ - exit 1; } || :; \ - fi - sc_trailing_blank: @prohibit='[ ]$$' \ halt='found trailing blank(s)' \ exclude='^Binary file .* matches$$' \ $(_sc_search_regexp) -# Match lines like the following, but where there is only one space -# between the options and the description: -# -D, --all-repeated[=delimit-method] print all duplicate lines\n -longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)? -sc_two_space_separator_in_usage: - @prohibit='^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \ - halt='help2man requires at least two spaces between an option and its description'\ - $(_sc_search_regexp) # A regexp matching function names like "error" that may be used # to emit translatable messages. @@ -763,13 +629,6 @@ sc_unmarked_diagnostics: halt='found unmarked diagnostic(s)' \ $(_sc_search_regexp) -# Avoid useless parentheses like those in this example: -# #if defined (SYMBOL) || defined (SYM2) -sc_useless_cpp_parens: - @prohibit='^# *if .*defined *\(' \ - halt='found useless parentheses in cpp directive' \ - $(_sc_search_regexp) - # List headers for which HAVE_HEADER_H is always true, assuming you are # using the appropriate gnulib module. CAUTION: for each "unnecessary" # #if HAVE_HEADER_H that you remove, be sure that your project explicitly @@ -852,12 +711,6 @@ sc_prohibit_backup_files: { echo '$(ME): found version controlled backup file' 1>&2; \ exit 1; } || : -# Require the latest GPL. -sc_GPL_version: - @prohibit='either ''version [^3]' \ - halt='GPL vN, N!=3' \ - $(_sc_search_regexp) - # Require the latest GFDL. Two regexp, since some .texi files end up # line wrapping between 'Free Documentation License,' and 'Version'. _GFDL_regexp = (Free ''Documentation.*Version 1\.[^3]|Version 1\.[^3] or any) @@ -866,15 +719,6 @@ sc_GFDL_version: halt='GFDL vN, N!=3' \ $(_sc_search_regexp) -# Don't use Texinfo's @acronym{}. -# https://lists.gnu.org/r/bug-gnulib/2010-03/msg00321.html -texinfo_suffix_re_ ?= \.(txi|texi(nfo)?)$$ -sc_texinfo_acronym: - @prohibit='@acronym\{' \ - in_vc_files='$(texinfo_suffix_re_)' \ - halt='found use of Texinfo @acronym{}' \ - $(_sc_search_regexp) - cvs_keywords = \ Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State @@ -928,20 +772,6 @@ sc_prohibit_empty_lines_at_EOF: exit 1; } \ || : -# Make sure we don't use st_blocks. Use ST_NBLOCKS instead. -# This is a bit of a kludge, since it prevents use of the string -# even in comments, but for now it does the job with no false positives. -sc_prohibit_stat_st_blocks: - @prohibit='[.>]st_blocks' \ - halt='do not use st_blocks; use ST_NBLOCKS' \ - $(_sc_search_regexp) - -# Make sure we don't define any S_IS* macros in src/*.c files. -# They're already defined via gnulib's sys/stat.h replacement. -sc_prohibit_S_IS_definition: - @prohibit='^ *# *define *S_IS' \ - halt='do not define S_IS* macros; include ' \ - $(_sc_search_regexp) # Perl block to convert a match to FILE_NAME:LINENO:TEST, # that is shared by two definitions below. @@ -976,35 +806,6 @@ sc_prohibit_doubled_word: && { echo '$(ME): doubled words' 1>&2; exit 1; } \ || : -# A regular expression matching undesirable combinations of words like -# "can not"; this matches them even when the two words appear on different -# lines, but not when there is an intervening delimiter like "#" or "*". -# Similarly undesirable, "See @xref{...}", since an @xref should start -# a sentence. Explicitly prohibit any prefix of "see" or "also". -# Also prohibit a prefix matching "\w+ +". -# @pxref gets the same see/also treatment and should be parenthesized; -# presume it must *not* start a sentence. -# POSIX spells it "timestamp" rather than "time\s+stamp", so we do, too. -bad_xref_re_ ?= (?:[\w,:;] +|(?:see|also)\s+)\@xref\{ -bad_pxref_re_ ?= (?:[.!?]|(?:see|also))\s+\@pxref\{ -prohibit_undesirable_word_seq_RE_ ?= \ - /(?:\bcan\s+not\b|\btime\s+stamps?\b|$(bad_xref_re_)|$(bad_pxref_re_))/gims -prohibit_undesirable_word_seq_ = \ - -e 'while ($(prohibit_undesirable_word_seq_RE_))' \ - $(perl_filename_lineno_text_) -# Define this to a regular expression that matches -# any filename:dd:match lines you want to ignore. -# The default is to ignore no matches. -ignore_undesirable_word_sequence_RE_ ?= ^$$ - -sc_prohibit_undesirable_word_seq: - @$(VC_LIST_EXCEPT) \ - | xargs perl -n -0777 $(prohibit_undesirable_word_seq_) \ - | $(GREP) -vE '$(ignore_undesirable_word_sequence_RE_)' \ - | $(GREP) . \ - && { echo '$(ME): undesirable word sequence' >&2; exit 1; } \ - || : - # Except for shell files and for loops, double semicolon is probably a mistake sc_prohibit_double_semicolon: @prohibit='; *;[ {} \]*(/[/*]|$$)' \ @@ -1074,13 +875,6 @@ NEWS_hash = \ | md5sum - \ | $(SED) 's/ .*//') -# Ensure that we don't accidentally insert an entry into an old NEWS block. -sc_immutable_NEWS: - @if test -f $(srcdir)/NEWS; then \ - test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : || \ - { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \ - fi - # Update the hash stored above. Do this after each release and # for any corrections to old entries. update-NEWS-hash: NEWS @@ -1159,16 +953,6 @@ sc_po_check: rm -f $@-1 $@-2; \ fi -# Sometimes it is useful to change the PATH environment variable -# in Makefiles. When doing so, it's better not to use the Unix-centric -# path separator of ':', but rather the automake-provided '$(PATH_SEPARATOR)'. -msg = 'Do not use ":" above; use $$(PATH_SEPARATOR) instead' -sc_makefile_path_separator_check: - @prohibit='PATH[=].*:' \ - in_vc_files='akefile|\.mk$$' \ - halt=$(msg) \ - $(_sc_search_regexp) - # Check that 'make alpha' will not fail at the end of the process, # i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release) # and is read-only. @@ -1204,35 +988,6 @@ sc_copyright_check: halt='out of date copyright in $(texi); update it' \ $(_sc_search_regexp) -# If tests/help-version exists and seems to be new enough, assume that its -# use of init.sh and path_prepend_ is correct, and ensure that every other -# use of init.sh is identical. -# This is useful because help-version cross-checks prog --version -# with $(VERSION), which verifies that its path_prepend_ invocation -# sets PATH correctly. This is an inexpensive way to ensure that -# the other init.sh-using tests also get it right. -_hv_file ?= $(srcdir)/tests/help-version -_hv_regex_weak ?= ^ *\. .*/init\.sh" -# Fix syntax-highlighters " -_hv_regex_strong ?= ^ *\. "\$${srcdir=\.}/init\.sh" -sc_cross_check_PATH_usage_in_tests: - @if test -f $(_hv_file); then \ - $(GREP) -l 'VERSION mismatch' $(_hv_file) >/dev/null \ - || { echo "$@: skipped: no such file: $(_hv_file)" 1>&2; \ - exit 0; }; \ - $(GREP) -lE '$(_hv_regex_strong)' $(_hv_file) >/dev/null \ - || { echo "$@: $(_hv_file) lacks conforming use of init.sh" 1>&2; \ - exit 1; }; \ - good=$$($(GREP) -E '$(_hv_regex_strong)' $(_hv_file)); \ - $(VC_LIST_EXCEPT) \ - | xargs $(GREP) -lE '$(_hv_regex_weak)' \ - | xargs $(GREP) -LFx "$$good" \ - | $(GREP) . \ - && { printf "$(ME): the above files use" \ - " path_prepend_ inconsistently\n" 1>&2; \ - exit 1; } \ - || :; \ - fi # BRE regex of file contents to identify a test script. _test_script_regex ?= \