[v2,2/7] fixincludes: use grep instead of egrep/fgrep

Message ID 7fb2f97f1bd0dacf2eab76849412c1dcda42874f.camel@xry111.site
State New
Headers
Series Avoid using obsoleted egrep/fgrep |

Commit Message

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

But, we can't simply replace egrep to grep -E or fgrep to grep -F or the
build will break with some non-GNU grep implementations (lacking -E or
-F support).  autoconf documentation suggests to use AC_PROG_EGREP and
$EGREP or AC_PROG_FGREP and FGREP, but doing so is too complicated for
fixincludes.

So we simply adjust the patterns for a plain grep, instead of relying on
the behavior of grep -E/-F.

Q: Why "[ \t][ \t]*" instead of "[ \t]\\+"?
A: POSIX does not allow escaping + in BRE.

fixincludes/ChangeLog:

	* fixinc.in: Use grep instead of egrep.
	* inclhack.def: Use grep instead of egrep, and adjust an
	regular expression to make it a BRE.
	* genfixes: Use grep instead of egrep, and escape "." in the
	pattern.
	* fixincl.x: Regenerate.
---
 fixincludes/fixinc.in    |  2 +-
 fixincludes/fixincl.x    | 10 +++++-----
 fixincludes/genfixes     |  2 +-
 fixincludes/inclhack.def |  6 +++---
 4 files changed, 10 insertions(+), 10 deletions(-)
  

Comments

Eric Gallager June 27, 2022, 9:54 a.m. UTC | #1
On Mon, Jun 27, 2022 at 2:10 AM Xi Ruoyao via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> egrep/fgrep has been deprecated in favor of grep -E/-F for a long time,
> and the next grep release (3.8 or 4.0) will print a warning if egrep or
> fgrep is used.  Stop using egrep and fgrep so we won't see the warning.
>
> But, we can't simply replace egrep to grep -E or fgrep to grep -F or the
> build will break with some non-GNU grep implementations (lacking -E or
> -F support).  autoconf documentation suggests to use AC_PROG_EGREP and
> $EGREP or AC_PROG_FGREP and FGREP, but doing so is too complicated for
> fixincludes.
>
> So we simply adjust the patterns for a plain grep, instead of relying on
> the behavior of grep -E/-F.
>
> Q: Why "[ \t][ \t]*" instead of "[ \t]\\+"?
> A: POSIX does not allow escaping + in BRE.
>
> fixincludes/ChangeLog:
>
>         * fixinc.in: Use grep instead of egrep.
>         * inclhack.def: Use grep instead of egrep, and adjust an
>         regular expression to make it a BRE.
>         * genfixes: Use grep instead of egrep, and escape "." in the
>         pattern.
>         * fixincl.x: Regenerate.
> ---
>  fixincludes/fixinc.in    |  2 +-
>  fixincludes/fixincl.x    | 10 +++++-----
>  fixincludes/genfixes     |  2 +-
>  fixincludes/inclhack.def |  6 +++---
>  4 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/fixincludes/fixinc.in b/fixincludes/fixinc.in
> index 0bd8027a554..a4cd3d0fbb4 100755
> --- a/fixincludes/fixinc.in
> +++ b/fixincludes/fixinc.in
> @@ -448,7 +448,7 @@ while [ $# != 0 ]; do
>          chmod a+r $3 2>/dev/null
>          if test $VERBOSE -gt 2
>          then echo Copied $2 ; fi
> -        for include in `egrep '^[      ]*#[    ]*include[      ]*"[^/]' $3 |
> +        for include in `grep '^[       ]*#[    ]*include[      ]*"[^/]' $3 |
>               sed -e 's/^[      ]*#[    ]*include[      ]*"\([^"]*\)".*$/\1/'`
>          do
>           dir=`echo $2 | sed -e s'|/[^/]*$||'`
> diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x
> index bad490453b7..c9b4cf504f2 100644
> --- a/fixincludes/fixincl.x
> +++ b/fixincludes/fixincl.x
> @@ -2,11 +2,11 @@
>   *
>   * DO NOT EDIT THIS FILE   (fixincl.x)
>   *
> - * It has been AutoGen-ed  February 27, 2022 at 07:47:03 PM by AutoGen 5.18.16
> + * It has been AutoGen-ed  June 25, 2022 at 12:44:14 PM by AutoGen 5.18.16
>   * From the definitions    inclhack.def
>   * and the template file   fixincl
>   */
> -/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Feb 27 19:47:03 UTC 2022
> +/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Jun 25 12:44:14 CST 2022

So, this is kind of a tangent, but since GCC has migrated from SVN to
git, perhaps it's time to update this comment?

>   *
>   * You must regenerate it.  Use the ./genfixes script.
>   *
> @@ -6547,7 +6547,7 @@ static tTestDesc aMath_Huge_Val_From_Dbl_MaxTests[] = {
>   *  Fix Command Arguments for Math_Huge_Val_From_Dbl_Max
>   */
>  static const char* apzMath_Huge_Val_From_Dbl_MaxPatch[] = { "sh", "-c",
> -    "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h | sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n\
> +    "\tdbl_max_def=`grep 'define[ \t][ \t]*DBL_MAX[ \t][ \t]*.*' float.h | sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n\
>  \tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n\
>  \tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/s@DBL_MAX@'\"$dbl_max_def@\"\n\
>  \telse cat\n\
> @@ -10402,9 +10402,9 @@ tSCC zVxworks_Needs_VxworksSelect0[] =
>  tSCC zVxworks_Needs_VxworksTest0[] =
>         " -r types/vxTypesOld.h";
>  tSCC zVxworks_Needs_VxworksTest1[] =
> -       " -n \"`egrep '#include' $file`\"";
> +       " -n \"`grep '#include' $file`\"";
>  tSCC zVxworks_Needs_VxworksTest2[] =
> -       " -n \"`egrep ULONG $file`\"";
> +       " -n \"`grep ULONG $file`\"";
>
>  #define    VXWORKS_NEEDS_VXWORKS_TEST_CT  4
>  static tTestDesc aVxworks_Needs_VxworksTests[] = {
> diff --git a/fixincludes/genfixes b/fixincludes/genfixes
> index 47aad01289d..3a4c05c832b 100755
> --- a/fixincludes/genfixes
> +++ b/fixincludes/genfixes
> @@ -58,7 +58,7 @@ done
>  AG="autogen $AG"
>  set -e
>
> -if [ -z "`${AG} -v | fgrep ' 5.'`" ]
> +if [ -z "`${AG} -v | grep ' 5\.'`" ]
>  then
>    echo "AutoGen appears to be out of date or not correctly installed."
>    echo "Please download and install from:"
> diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
> index 7605ac89aa2..080bbc010dc 100644
> --- a/fixincludes/inclhack.def
> +++ b/fixincludes/inclhack.def
> @@ -3274,7 +3274,7 @@ fix = {
>       *  If we do, we will replace the one in math.h with that one.
>       */
>
> -    "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h "
> +    "\tdbl_max_def=`grep 'define[ \t][ \t]*DBL_MAX[ \t][ \t]*.*' float.h "
>                     "| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n"
>
>      "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n"
> @@ -5266,8 +5266,8 @@ fix = {
>      hackname = vxworks_needs_vxworks;
>      files    = sys/stat.h;
>      test     = " -r types/vxTypesOld.h";
> -    test     = " -n \"`egrep '#include' $file`\"";
> -    test     = " -n \"`egrep ULONG $file`\"";
> +    test     = " -n \"`grep '#include' $file`\"";
> +    test     = " -n \"`grep ULONG $file`\"";
>      select   = "#[ \t]define[ \t]+__INCstath";
>
>      sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
> --
> 2.36.1
>
>
  

Patch

diff --git a/fixincludes/fixinc.in b/fixincludes/fixinc.in
index 0bd8027a554..a4cd3d0fbb4 100755
--- a/fixincludes/fixinc.in
+++ b/fixincludes/fixinc.in
@@ -448,7 +448,7 @@  while [ $# != 0 ]; do
         chmod a+r $3 2>/dev/null
         if test $VERBOSE -gt 2
         then echo Copied $2 ; fi
-        for include in `egrep '^[ 	]*#[ 	]*include[ 	]*"[^/]' $3 |
+        for include in `grep '^[ 	]*#[ 	]*include[ 	]*"[^/]' $3 |
              sed -e 's/^[ 	]*#[ 	]*include[ 	]*"\([^"]*\)".*$/\1/'`
         do
 	  dir=`echo $2 | sed -e s'|/[^/]*$||'`
diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x
index bad490453b7..c9b4cf504f2 100644
--- a/fixincludes/fixincl.x
+++ b/fixincludes/fixincl.x
@@ -2,11 +2,11 @@ 
  *
  * DO NOT EDIT THIS FILE   (fixincl.x)
  *
- * It has been AutoGen-ed  February 27, 2022 at 07:47:03 PM by AutoGen 5.18.16
+ * It has been AutoGen-ed  June 25, 2022 at 12:44:14 PM by AutoGen 5.18.16
  * From the definitions    inclhack.def
  * and the template file   fixincl
  */
-/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Feb 27 19:47:03 UTC 2022
+/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Jun 25 12:44:14 CST 2022
  *
  * You must regenerate it.  Use the ./genfixes script.
  *
@@ -6547,7 +6547,7 @@  static tTestDesc aMath_Huge_Val_From_Dbl_MaxTests[] = {
  *  Fix Command Arguments for Math_Huge_Val_From_Dbl_Max
  */
 static const char* apzMath_Huge_Val_From_Dbl_MaxPatch[] = { "sh", "-c",
-    "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h | sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n\
+    "\tdbl_max_def=`grep 'define[ \t][ \t]*DBL_MAX[ \t][ \t]*.*' float.h | sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n\
 \tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n\
 \tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/s@DBL_MAX@'\"$dbl_max_def@\"\n\
 \telse cat\n\
@@ -10402,9 +10402,9 @@  tSCC zVxworks_Needs_VxworksSelect0[] =
 tSCC zVxworks_Needs_VxworksTest0[] =
        " -r types/vxTypesOld.h";
 tSCC zVxworks_Needs_VxworksTest1[] =
-       " -n \"`egrep '#include' $file`\"";
+       " -n \"`grep '#include' $file`\"";
 tSCC zVxworks_Needs_VxworksTest2[] =
-       " -n \"`egrep ULONG $file`\"";
+       " -n \"`grep ULONG $file`\"";
 
 #define    VXWORKS_NEEDS_VXWORKS_TEST_CT  4
 static tTestDesc aVxworks_Needs_VxworksTests[] = {
diff --git a/fixincludes/genfixes b/fixincludes/genfixes
index 47aad01289d..3a4c05c832b 100755
--- a/fixincludes/genfixes
+++ b/fixincludes/genfixes
@@ -58,7 +58,7 @@  done
 AG="autogen $AG"
 set -e
 
-if [ -z "`${AG} -v | fgrep ' 5.'`" ]
+if [ -z "`${AG} -v | grep ' 5\.'`" ]
 then
   echo "AutoGen appears to be out of date or not correctly installed."
   echo "Please download and install from:"
diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
index 7605ac89aa2..080bbc010dc 100644
--- a/fixincludes/inclhack.def
+++ b/fixincludes/inclhack.def
@@ -3274,7 +3274,7 @@  fix = {
      *  If we do, we will replace the one in math.h with that one.
      */
 
-    "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h "
+    "\tdbl_max_def=`grep 'define[ \t][ \t]*DBL_MAX[ \t][ \t]*.*' float.h "
                    "| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n"
 
     "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n"
@@ -5266,8 +5266,8 @@  fix = {
     hackname = vxworks_needs_vxworks;
     files    = sys/stat.h;
     test     = " -r types/vxTypesOld.h";
-    test     = " -n \"`egrep '#include' $file`\"";
-    test     = " -n \"`egrep ULONG $file`\"";
+    test     = " -n \"`grep '#include' $file`\"";
+    test     = " -n \"`grep ULONG $file`\"";
     select   = "#[ \t]define[ \t]+__INCstath";
 
     sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"