diff mbox series

[v2,6/7] contrib: use grep -E instead of egrep

Message ID e173263bcb24fc77354f1dd6629fd155e7b55788.camel@xry111.site
State New
Headers show
Series Avoid using obsoleted egrep/fgrep | expand

Commit Message

Xi Ruoyao June 27, 2022, 6:12 a.m. UTC
egrep has been deprecated in favor of grep -E for a long time, and the
next grep release (3.8 or 4.0) will print a warning of egrep is used.
Stop using egrep so we won't see the warning.

Some non-POSIX grep implementations does not support -E option, so for
test_summary and warn_summary we prefer grep -E, but fallback to egrep
if grep -E does not work.  For check_GNU_style.sh, I think it is only
used by developers so hard coding grep -E is OK.

contrib/ChangeLog:

	* check_GNU_style.sh: Use grep -E instead of egrep.
	* test_summary: Use grep -E instead of egrep if it works.
	* warn_summary: Likewise.
---
 contrib/check_GNU_style.sh | 10 +++++-----
 contrib/test_summary       | 13 ++++++++++++-
 contrib/warn_summary       | 13 ++++++++++++-
 3 files changed, 29 insertions(+), 7 deletions(-)

Comments

Jonathan Wakely June 27, 2022, 9:02 a.m. UTC | #1
On Mon, 27 Jun 2022 at 07:12, Xi Ruoyao <xry111@xry111.site> wrote:
>
> egrep has been deprecated in favor of grep -E for a long time, and the
> next grep release (3.8 or 4.0) will print a warning of egrep is used.
> Stop using egrep so we won't see the warning.
>
> Some non-POSIX grep implementations does not support -E option, so for
> test_summary and warn_summary we prefer grep -E, but fallback to egrep
> if grep -E does not work.  For check_GNU_style.sh, I think it is only
> used by developers so hard coding grep -E is OK.
>
> contrib/ChangeLog:
>
>         * check_GNU_style.sh: Use grep -E instead of egrep.
>         * test_summary: Use grep -E instead of egrep if it works.
>         * warn_summary: Likewise.
> ---
>  contrib/check_GNU_style.sh | 10 +++++-----
>  contrib/test_summary       | 13 ++++++++++++-
>  contrib/warn_summary       | 13 ++++++++++++-
>  3 files changed, 29 insertions(+), 7 deletions(-)
>
> diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh
> index fb7494661ee..535be65f063 100755
> --- a/contrib/check_GNU_style.sh
> +++ b/contrib/check_GNU_style.sh
> @@ -113,7 +113,7 @@ g (){
>
>      local found=false
>      cat $inp \
> -       | egrep $color -- "$arg" \
> +       | grep -E $color -- "$arg" \
>         > "$tmp" && found=true
>
>      if $found; then
> @@ -130,8 +130,8 @@ ag (){
>
>      local found=false
>      cat $inp \
> -       | egrep $color -- "$arg1" \
> -       | egrep $color -- "$arg2" \
> +       | grep -E $color -- "$arg1" \
> +       | grep -E $color -- "$arg2" \
>         > "$tmp" && found=true
>
>      if $found; then
> @@ -148,8 +148,8 @@ vg (){
>
>      local found=false
>      cat $inp \
> -       | egrep -v -- "$varg" \
> -       | egrep $color -- "$arg" \
> +       | grep -E -v -- "$varg" \
> +       | grep -E $color -- "$arg" \
>         > "$tmp" && found=true
>
>      if $found; then
> diff --git a/contrib/test_summary b/contrib/test_summary
> index 5760b053ec2..f17bf54f8ec 100755
> --- a/contrib/test_summary
> +++ b/contrib/test_summary
> @@ -54,6 +54,17 @@ if test -z "$AWK" ; then
>    done
>  fi
>
> +# Prefer "grep -E" which should work with POSIX-conform grep, but fallback

"POSIX-conforming"

> +# to "egrep" (which is deprecated for a long time) if grep does not support

I'd just say "to deprecate egrep" or "to egrep (which is deprecated)".
There's no need to say anything about how long it's been deprecated.


> +# -E.
> +if test -z "$EGREP" ; then
> +  if echo a | grep -E '(a|b)' > /dev/null 2> /dev/null; then
> +    EGREP="grep -E"
> +  else
> +    EGREP="egrep"
> +  fi
> +fi
> +
>  : ${filesuffix=}; export filesuffix
>  : ${move=true}; export move
>  : ${forcemail=false}; export forcemail
> @@ -77,7 +88,7 @@ for file in $files; do
>      { $anychange ||
>        anychange=`diff $file.sent $file 2>/dev/null |
>         if test ! -f $file.sent ||
> -          egrep '^[<>] (XPASS|FAIL)' >/dev/null; then
> +          $EGREP '^[<>] (XPASS|FAIL)' >/dev/null; then
>             echo true
>         else
>             echo false
> diff --git a/contrib/warn_summary b/contrib/warn_summary
> index d4c8b6cdb19..afa11802ee1 100755
> --- a/contrib/warn_summary
> +++ b/contrib/warn_summary
> @@ -57,7 +57,7 @@ subdirectoryFilter()
>    else
>      if test "$filter" = nosub ; then
>        # Omit all subdirectories.
> -      egrep -v '/gcc/(ch|cp|f|fortran|ada|intl|fixinc)/'
> +      $EGREP -v '/gcc/(ch|cp|f|fortran|ada|intl|fixinc)/'
>      else
>        # Pass through only subdir $filter.
>        grep "/gcc/$filter/"
> @@ -155,6 +155,17 @@ if test -z "$AWK" ; then
>    done
>  fi
>
> +# Prefer "grep -E" which should work with POSIX-conform grep, but fallback
> +# to "egrep" (which is deprecated for a long time) if grep does not support

Ditto.

> +# -E.
> +if test -z "$EGREP" ; then
> +  if echo a | grep -E '(a|b)' > /dev/null 2> /dev/null; then
> +    EGREP="grep -E"
> +  else
> +    EGREP="egrep"
> +  fi
> +fi
> +
>  # Parse command line arguments.
>  while test -n "$1" ; do
>   case "$1" in
> --
> 2.36.1
>
>
diff mbox series

Patch

diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh
index fb7494661ee..535be65f063 100755
--- a/contrib/check_GNU_style.sh
+++ b/contrib/check_GNU_style.sh
@@ -113,7 +113,7 @@  g (){
 
     local found=false
     cat $inp \
-	| egrep $color -- "$arg" \
+	| grep -E $color -- "$arg" \
 	> "$tmp" && found=true
 
     if $found; then
@@ -130,8 +130,8 @@  ag (){
 
     local found=false
     cat $inp \
-	| egrep $color -- "$arg1" \
-	| egrep $color -- "$arg2" \
+	| grep -E $color -- "$arg1" \
+	| grep -E $color -- "$arg2" \
 	> "$tmp" && found=true
 
     if $found; then
@@ -148,8 +148,8 @@  vg (){
 
     local found=false
     cat $inp \
-	| egrep -v -- "$varg" \
-	| egrep $color -- "$arg" \
+	| grep -E -v -- "$varg" \
+	| grep -E $color -- "$arg" \
 	> "$tmp" && found=true
 
     if $found; then
diff --git a/contrib/test_summary b/contrib/test_summary
index 5760b053ec2..f17bf54f8ec 100755
--- a/contrib/test_summary
+++ b/contrib/test_summary
@@ -54,6 +54,17 @@  if test -z "$AWK" ; then
   done
 fi
 
+# Prefer "grep -E" which should work with POSIX-conform grep, but fallback
+# to "egrep" (which is deprecated for a long time) if grep does not support
+# -E.
+if test -z "$EGREP" ; then
+  if echo a | grep -E '(a|b)' > /dev/null 2> /dev/null; then
+    EGREP="grep -E"
+  else
+    EGREP="egrep"
+  fi
+fi
+
 : ${filesuffix=}; export filesuffix
 : ${move=true}; export move
 : ${forcemail=false}; export forcemail
@@ -77,7 +88,7 @@  for file in $files; do
     { $anychange ||
       anychange=`diff $file.sent $file 2>/dev/null |
 	if test ! -f $file.sent ||
-	   egrep '^[<>] (XPASS|FAIL)' >/dev/null; then
+	   $EGREP '^[<>] (XPASS|FAIL)' >/dev/null; then
 	    echo true
 	else
 	    echo false
diff --git a/contrib/warn_summary b/contrib/warn_summary
index d4c8b6cdb19..afa11802ee1 100755
--- a/contrib/warn_summary
+++ b/contrib/warn_summary
@@ -57,7 +57,7 @@  subdirectoryFilter()
   else
     if test "$filter" = nosub ; then
       # Omit all subdirectories.
-      egrep -v '/gcc/(ch|cp|f|fortran|ada|intl|fixinc)/'
+      $EGREP -v '/gcc/(ch|cp|f|fortran|ada|intl|fixinc)/'
     else
       # Pass through only subdir $filter.
       grep "/gcc/$filter/"
@@ -155,6 +155,17 @@  if test -z "$AWK" ; then
   done
 fi
 
+# Prefer "grep -E" which should work with POSIX-conform grep, but fallback
+# to "egrep" (which is deprecated for a long time) if grep does not support
+# -E.
+if test -z "$EGREP" ; then
+  if echo a | grep -E '(a|b)' > /dev/null 2> /dev/null; then
+    EGREP="grep -E"
+  else
+    EGREP="egrep"
+  fi
+fi
+
 # Parse command line arguments.
 while test -n "$1" ; do
  case "$1" in