]> Savannah Git Hosting - gnulib.git/commitdiff
maint.mk: Replace grep with $(GREP)
authorRoman Bolshakov <r.bolshakov@yadro.com>
Wed, 2 Jan 2019 20:08:00 +0000 (14:08 -0600)
committerEric Blake <eblake@redhat.com>
Wed, 2 Jan 2019 20:12:33 +0000 (14:12 -0600)
A project that uses maint.mk can specify regular expressions that are
not supported in system grep. Autoconf can discover an alias for GNU
grep and set it in GREP but it takes no effect for maint.mk

The patch provides an ability to use GNU grep if it was discovered by
autoconf and by calling GNU grep we don't get the messages in syntax-check:
  prohibit_diagnostic_without_format
  grep: empty (sub)expression
  grep: empty (sub)expression
  grep: empty (sub)expression
  grep: empty (sub)expression
  grep: empty (sub)expression
  grep: empty (sub)expression

Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Message-Id: <20181213153453.38123-3-r.bolshakov@yadro.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
modules/maintainer-makefile
top/maint.mk

index 38a651806e41fdac02bd24e9ad79af35965190ae..416f2abec7cefb480dba866099db2f83eca0bbc6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2019-01-02  Roman Bolshakov <r.bolshakov@yadro.com>  (tiny change)
 
+       maintainer-makefile: prefer $(GREP) over grep
+       * modules/maintainer-makefile (configure.ac): Ensure $(GREP) is
+       defined.
+       * top/maint.mk: Use it everywhere.
+
        maintainer-makefile: split long argument lines
        * top/maint.mk: Use xargs to split $(VC_LIST_EXCEPT) usage where
        it would be too long for exec limits on BSD.
index 39b51583cc7a63c49df281fcd658dfb4e9b0bb36..13b8c546a92484acc76cb42dee70f045796ed1e0 100644 (file)
@@ -14,6 +14,7 @@ configure.ac:
 AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER],
   [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])])
 AC_REQUIRE([AC_PROG_SED])
+AC_REQUIRE([AC_PROG_GREP])
 
 Makefile.am:
 EXTRA_DIST += $(top_srcdir)/maint.mk
index 4087490ef3810015ddcec234ad2d07240a0ae296..19757fcf7f2d0b5c82e6917026c84280f925a0e3 100644 (file)
@@ -46,7 +46,7 @@ member-check =                                                                \
 # Do not save the original name or timestamp in the .tar.gz file.
 # Use --rsyncable if available.
 gzip_rsyncable := \
-  $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null \
+  $(shell gzip --help 2>/dev/null|$(GREP) rsyncable >/dev/null \
     && printf %s --rsyncable)
 GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
 
@@ -83,9 +83,9 @@ _sc_excl = \
   $(or $(exclude_file_name_regexp--$@),^$$)
 VC_LIST_EXCEPT = \
   $(VC_LIST) | $(SED) 's|^$(_dot_escaped_srcdir)/||' \
-       | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \
-         else grep -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \
-       | grep -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \
+       | if test -f $(srcdir)/.x-$@; then $(GREP) -vEf $(srcdir)/.x-$@; \
+         else $(GREP) -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \
+       | $(GREP) -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \
        $(_prepend_srcdir_prefix)
 
 ifeq ($(origin prev_version_file), undefined)
@@ -292,39 +292,39 @@ define _sc_search_regexp
                                                                        \
    : Filter by file name;                                              \
    if test -n "$$in_files"; then                                       \
-     files=$$(find $(srcdir) | grep -E "$$in_files"                    \
-              | grep -Ev '$(_sc_excl)');                               \
+     files=$$(find $(srcdir) | $(GREP) -E "$$in_files"                 \
+              | $(GREP) -Ev '$(_sc_excl)');                            \
    else                                                                        \
      files=$$($(VC_LIST_EXCEPT));                                      \
      if test -n "$$in_vc_files"; then                                  \
-       files=$$(echo "$$files" | grep -E "$$in_vc_files");             \
+       files=$$(echo "$$files" | $(GREP) -E "$$in_vc_files");          \
      fi;                                                               \
    fi;                                                                 \
                                                                        \
    : Filter by content;                                                        \
    test -n "$$files"                                                   \
      && test -n "$$containing"                                         \
-     && { files=$$(echo "$$files" | xargs grep -l "$$containing"); }   \
+     && { files=$$(echo "$$files" | xargs $(GREP) -l "$$containing"); }        \
      || :;                                                             \
    test -n "$$files"                                                   \
      && test -n "$$non_containing"                                     \
-     && { files=$$(echo "$$files" | xargs grep -vl "$$non_containing"); } \
+     && { files=$$(echo "$$files" | xargs $(GREP) -vl "$$non_containing"); } \
      || :;                                                             \
                                                                        \
    : Check for the construct;                                          \
    if test -n "$$files"; then                                          \
      if test -n "$$prohibit"; then                                     \
        echo "$$files"
-         | xargs grep $$with_grep_options $(_ignore_case) -nE          \
+         | xargs $(GREP) $$with_grep_options $(_ignore_case) -nE       \
                "$$prohibit" /dev/null                                  \
-         | grep -vE "$${exclude:-^$$}"                                 \
+         | $(GREP) -vE "$${exclude:-^$$}"                              \
          && { msg="$$halt" $(_sc_say_and_exit) }                       \
          || :;                                                         \
      else                                                              \
        echo "$$files"                                                  \
          | xargs                                                       \
-             grep $$with_grep_options $(_ignore_case) -LE "$$require"  \
-         | grep .                                                      \
+             $(GREP) $$with_grep_options $(_ignore_case) -LE "$$require" \
+         | $(GREP) .                                                   \
          && { msg="$$halt" $(_sc_say_and_exit) }                       \
          || :;                                                         \
      fi                                                                        \
@@ -334,7 +334,7 @@ endef
 
 sc_avoid_if_before_free:
        @$(VC_LIST_EXCEPT)                                              \
-         | grep -v useless-if-before-free                              \
+         | $(GREP) -v useless-if-before-free                           \
          | xargs                                                       \
              $(srcdir)/$(_build-aux)/useless-if-before-free            \
              $(useless_free_options)                                   \
@@ -414,8 +414,8 @@ sc_error_exit_success:
 # "WARNING:" should be fully upper-cased, or fully lower-cased
 sc_error_message_warn_fatal:
        @$(VC_LIST_EXCEPT)                                              \
-         | xargs grep -nEA2 '[^rp]error *\(' /dev/null                 \
-         | grep -E '"Warning|"Fatal|"fatal'                            \
+         | xargs $(GREP) -nEA2 '[^rp]error *\(' /dev/null              \
+         | $(GREP) -E '"Warning|"Fatal|"fatal'                         \
          && { echo '$(ME): use FATAL, WARNING or warning' 1>&2;        \
               exit 1; }                                                \
          || :
@@ -423,9 +423,9 @@ sc_error_message_warn_fatal:
 # 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'                \
+         | 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; }                                                \
          || :
@@ -433,8 +433,8 @@ sc_error_message_uppercase:
 # Error messages should not end with a period
 sc_error_message_period:
        @$(VC_LIST_EXCEPT)                                              \
-         | xargs grep -nEA2 '[^rp]error *\(' /dev/null                 \
-         | grep -E '[^."]\."'                                          \
+         | xargs $(GREP) -nEA2 '[^rp]error *\(' /dev/null              \
+         | $(GREP) -E '[^."]\."'                                       \
          && { echo '$(ME): found error message ending in period' 1>&2; \
               exit 1; }                                                \
          || :
@@ -479,8 +479,8 @@ perl_config_h_first_ =                                                      \
 # You must include <config.h> before including any other header file.
 # This can possibly be via a package-specific header, if given by cfg.mk.
 sc_require_config_h_first:
-       @if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then          \
-         files=$$($(VC_LIST_EXCEPT) | grep '\.c$$') &&                 \
+       @if $(VC_LIST_EXCEPT) | $(GREP) '\.c$$' > /dev/null; then       \
+         files=$$($(VC_LIST_EXCEPT) | $(GREP) '\.c$$') &&              \
          perl -n $(perl_config_h_first_) $$files ||                    \
            { echo '$(ME): the above files include some other header'   \
                'before <config.h>' 1>&2; exit 1; } || :;               \
@@ -498,10 +498,10 @@ sc_prohibit_HAVE_MBRTOWC:
 define _sc_header_without_use
   dummy=; : so we do not need a semicolon before each use;             \
   h_esc=`echo '[<"]'"$$h"'[">]'|$(SED) 's/\./\\\\./g'`;                        \
-  if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then                        \
-    files=$$(grep -l '^# *include '"$$h_esc"                           \
-            $$($(VC_LIST_EXCEPT) | grep '\.c$$')) &&                   \
-    grep -LE "$$re" $$files | grep . &&                                        \
+  if $(VC_LIST_EXCEPT) | $(GREP) '\.c$$' > /dev/null; then             \
+    files=$$($(GREP) -l '^# *include '"$$h_esc"                                \
+            $$($(VC_LIST_EXCEPT) | $(GREP) '\.c$$')) &&                \
+    $(GREP) -LE "$$re" $$files | $(GREP) . &&                          \
       { echo "$(ME): the above files include $$h but don't use it"     \
        1>&2; exit 1; } || :;                                           \
   else :;                                                              \
@@ -755,9 +755,9 @@ 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)'                  \
+         for i in $$($(GREP) -l -F 'srcdir/$(Exit_base)'               \
                $$($(VC_LIST) tests)); do                               \
-           tail -n1 $$i | grep '^Exit .' > /dev/null                   \
+           tail -n1 $$i | $(GREP) '^Exit .' > /dev/null                \
              && : || { die=1; echo $$i; }                              \
          done;                                                         \
          test $$die = 1 &&                                             \
@@ -862,12 +862,12 @@ endef
 # Don't define macros that we already get from gnulib header files.
 sc_prohibit_always-defined_macros:
        @if test -d $(gnulib_dir); then                                 \
-         case $$(echo all: | grep -l -f - Makefile) in Makefile);; *)  \
+         case $$(echo all: | $(GREP) -l -f - Makefile) in Makefile);; *) \
            echo '$(ME): skipping $@: you lack GNU grep' 1>&2; exit 0;; \
          esac;                                                         \
          regex=$$($(def_sym_regex)); export regex;                     \
          $(VC_LIST_EXCEPT)                                             \
-           | xargs sh -c 'echo $$regex | grep -E -f - "$$@"'           \
+           | xargs sh -c 'echo $$regex | $(GREP) -E -f - "$$@"'        \
                dummy /dev/null                                         \
            && { printf '$(ME): define the above'                       \
                        ' via some gnulib .h file\n' 1>&2;              \
@@ -878,7 +878,7 @@ sc_prohibit_always-defined_macros:
 
 # Prohibit checked in backup files.
 sc_prohibit_backup_files:
-       @$(VC_LIST) | grep '~$$' &&                             \
+       @$(VC_LIST) | $(GREP) '~$$' &&                                  \
          { echo '$(ME): found version controlled backup file' 1>&2;    \
            exit 1; } || :
 
@@ -1001,8 +1001,8 @@ ignore_doubled_word_match_RE_ ?= ^$$
 sc_prohibit_doubled_word:
        @$(VC_LIST_EXCEPT)                                              \
          | xargs perl -n -0777 $(prohibit_doubled_word_)               \
-         | grep -vE '$(ignore_doubled_word_match_RE_)'                 \
-         | grep .                                                      \
+         | $(GREP) -vE '$(ignore_doubled_word_match_RE_)'              \
+         | $(GREP) .                                                   \
          && { echo '$(ME): doubled words' 1>&2; exit 1; }              \
          || :
 
@@ -1030,8 +1030,8 @@ 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 .                                                      \
+         | $(GREP) -vE '$(ignore_undesirable_word_sequence_RE_)'       \
+         | $(GREP) .                                                   \
          && { echo '$(ME): undesirable word sequence' >&2; exit 1; }   \
          || :
 
@@ -1066,7 +1066,7 @@ sc_prohibit_test_double_equal:
 # when it contains "ICONV".
 sc_proper_name_utf8_requires_ICONV:
        @progs=$$($(VC_LIST_EXCEPT)                                     \
-                   | xargs grep -l 'proper_name_utf8 ''("');           \
+                   | xargs $(GREP) -l 'proper_name_utf8 ''("');        \
        if test "x$$progs" != x; then                                   \
          fail=0;                                                       \
          for p in $$progs; do                                          \
@@ -1075,7 +1075,7 @@ sc_proper_name_utf8_requires_ICONV:
              -ne 'exit !(/^LDADD =(.+?[^\\]\n)/ms && $$1 =~ /ICONV/)'  \
              $$dir/Makefile.am && continue;                            \
            base=$$(basename "$$p" .c);                                 \
-           grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
+           $(GREP) "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null      \
              || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \
          done;                                                         \
          test $$fail = 1 &&                                            \
@@ -1136,12 +1136,12 @@ sc_makefile_at_at_check:
           -e ' && !/(\w+)\s+=.*\@\1\@$$/'                              \
           -e ''$(_makefile_at_at_check_exceptions)                     \
          -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}'    \
-           $$($(VC_LIST_EXCEPT) | grep -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \
+           $$($(VC_LIST_EXCEPT) | $(GREP) -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \
          && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
 
 news-check: NEWS
        $(AM_V_GEN)if $(SED) -n $(news-check-lines-spec)p $<            \
-           | grep -E $(news-check-regexp) >/dev/null; then             \
+           | $(GREP) -E $(news-check-regexp) >/dev/null; then          \
          :;                                                            \
        else                                                            \
          echo 'NEWS: $$(news-check-regexp) failed to match' 1>&2;      \
@@ -1186,11 +1186,11 @@ generated_files ?= $(srcdir)/lib/*.[ch]
 _gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$)
 sc_po_check:
        @if test -f $(po_file); then                                    \
-         grep -E -v '^(#|$$)' $(po_file)                               \
-           | grep -v '^src/false\.c$$' | sort > $@-1;                  \
+         $(GREP) -E -v '^(#|$$)' $(po_file)                            \
+           | $(GREP) -v '^src/false\.c$$' | sort > $@-1;               \
          { $(VC_LIST_EXCEPT); echo $(generated_files); }               \
            | xargs perl $(perl_translatable_files_list_)               \
-           | xargs grep -E -l '$(_gl_translatable_string_re)'          \
+           | xargs $(GREP) -E -l '$(_gl_translatable_string_re)'       \
            | $(SED) 's|^$(_dot_escaped_srcdir)/||'                     \
            | sort -u > $@-2;                                           \
          diff -u -L $(po_file) -L $(po_file) $@-1 $@-2                 \
@@ -1256,17 +1256,17 @@ _hv_regex_weak ?= ^ *\. .*/init\.sh"
 _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             \
+         $(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         \
+         $(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));           \
+         good=$$($(GREP) -E '$(_hv_regex_strong)' $(_hv_file));        \
          $(VC_LIST_EXCEPT)                                             \
-           | xargs grep -lE '$(_hv_regex_weak)'                        \
-           | xargs grep -LFx "$$good"                                  \
-           | grep .                                                    \
+           | 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; }                                              \
@@ -1463,7 +1463,7 @@ check: $(gl_public_submodule_commit)
 ALL_RECURSIVE_TARGETS += alpha beta stable
 alpha beta stable: $(local-check) writable-files $(submodule-checks)
        $(AM_V_GEN)test $@ = stable                                     \
-         && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$'         \
+         && { echo $(VERSION) | $(GREP) -E '^[0-9]+(\.[0-9]+)+$$'      \
               || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
          || :
        $(AM_V_at)$(MAKE) vc-diff-check
@@ -1561,7 +1561,7 @@ refresh-gnulib-patches:
               -e 'END{defined $$d and print $$d}' bootstrap.conf);     \
          test -n "$$t" && gl=$$t;                                      \
        fi;                                                             \
-       for diff in $$(cd $$gl; git ls-files | grep '\.diff$$'); do     \
+       for diff in $$(cd $$gl; git ls-files | $(GREP) '\.diff$$'); do  \
          b=$$(printf %s "$$diff"|$(SED) 's/\.diff$$//');               \
          VERSION_CONTROL=none                                          \
            patch "$(gnulib_dir)/$$b" "$$gl/$$diff" || exit 1;          \
@@ -1604,7 +1604,7 @@ update-copyright-env ?=
 # in the file .x-update-copyright.
 .PHONY: update-copyright
 update-copyright:
-       $(AM_V_GEN)grep -l -w Copyright                                  \
+       $(AM_V_GEN)$(GREP) -l -w Copyright                               \
          $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
          | $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@
 
@@ -1618,9 +1618,9 @@ _gl_TS_dir ?= src
 ALL_RECURSIVE_TARGETS += sc_tight_scope
 sc_tight_scope: tight-scope.mk
        @fail=0;                                                        \
-       if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk        \
+       if ! $(GREP) '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk     \
                > /dev/null                                             \
-          && ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
+          && ! $(GREP) -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
                > /dev/null 2>&1; then                                  \
            echo '$(ME): skipping $@';                                  \
        else                                                            \
@@ -1692,12 +1692,12 @@ _gl_tight_scope: $(bin_PROGRAMS)
        hdr=`for f in $(_gl_TS_headers); do                             \
               test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`;   \
        ( printf '%s\n' '__.*' $(_gl_TS_unmarked_extern_functions);     \
-         grep -h -A1 '^extern .*[^;]$$' $$src                          \
-           | grep -vE '^(extern |--|#)' | $(SED) 's/ .*//; /^$$/d';    \
+         $(GREP) -h -A1 '^extern .*[^;]$$' $$src                       \
+           | $(GREP) -vE '^(extern |--|#)' | $(SED) 's/ .*//; /^$$/d'; \
          perl -lne                                                     \
             '$(_gl_TS_function_match) and print $$1' $$hdr;            \
        ) | sort -u | $(SED) "$$sed_wrap" > $$t;                        \
-       nm -g $(_gl_TS_obj_files)|$(SED) -n 's/.* T //p'|grep -Ev -f $$t \
+       nm -g $(_gl_TS_obj_files)|$(SED) -n 's/.* T //p'|$(GREP) -Ev -f $$t \
          && { echo the above functions should have static scope >&2;   \
               exit 1; } || : ;                                         \
        ( printf '%s\n' '__.*' main $(_gl_TS_unmarked_extern_vars);     \
@@ -1705,7 +1705,7 @@ _gl_tight_scope: $(bin_PROGRAMS)
                $$hdr $(_gl_TS_other_headers)                           \
        ) | sort -u | $(SED) "$$sed_wrap" > $$t;                        \
        nm -g $(_gl_TS_obj_files) | $(SED) -n 's/.* [BCDGRS] //p'       \
-            | sort -u | grep -Ev -f $$t                                        \
+            | sort -u | $(GREP) -Ev -f $$t                             \
          && { echo the above variables should have static scope >&2;   \
               exit 1; } || :
 # TS-end