Message ID | c0fd698323ba80682227dfe913d704e4e67688b4.camel@xry111.site |
---|---|
State | New |
Headers | show |
Series | Stop using obsoleted egrep/fgrep | expand |
On Fri, 24 Jun 2022 at 08:03, Xi Ruoyao via Libstdc++ <libstdc++@gcc.gnu.org> 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. > > libstdc++-v3/ChangeLog: > > * scripts/extract_symvers.in: Use grep -E instead of egrep. > * libstdc++-v3/scripts/run_doxygen: Likewise. This should be just scripts/run_doxygen here. You can use the git gcc-verify alias to check your changelog format. With that fixed it's OK for trunk and gcc-12 and gcc-11 branches, thanks!
On Fri, 2022-06-24 at 11:00 +0100, Jonathan Wakely wrote: > On Fri, 24 Jun 2022 at 08:03, Xi Ruoyao via Libstdc++ > <libstdc++@gcc.gnu.org> 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. > > > > libstdc++-v3/ChangeLog: > > > > * scripts/extract_symvers.in: Use grep -E instead of egrep. > > * libstdc++-v3/scripts/run_doxygen: Likewise. > > This should be just scripts/run_doxygen here. You can use the git > gcc-verify alias to check your changelog format. > > > With that fixed it's OK for trunk and gcc-12 and gcc-11 branches, > thanks! I'll need some rework as Rainer told me "grep -E" may not work on some Solaris systems w/o GNU grep, and the code snippet in extract_symvers.in is exactly for Solaris...
On Fri, 24 Jun 2022 at 12:08, Xi Ruoyao via Libstdc++ <libstdc++@gcc.gnu.org> wrote: > > On Fri, 2022-06-24 at 11:00 +0100, Jonathan Wakely wrote: > > On Fri, 24 Jun 2022 at 08:03, Xi Ruoyao via Libstdc++ > > <libstdc++@gcc.gnu.org> 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. > > > > > > libstdc++-v3/ChangeLog: > > > > > > * scripts/extract_symvers.in: Use grep -E instead of egrep. > > > * libstdc++-v3/scripts/run_doxygen: Likewise. > > > > This should be just scripts/run_doxygen here. You can use the git > > gcc-verify alias to check your changelog format. > > > > > > With that fixed it's OK for trunk and gcc-12 and gcc-11 branches, > > thanks! > > I'll need some rework as Rainer told me "grep -E" may not work on some > Solaris systems w/o GNU grep, and the code snippet in extract_symvers.in > is exactly for Solaris... I checked that, and it's not :-) The egrep uses in extract_symvers.in are for everything *except* SunOS. For Solaris we use the scripts/extract_symvers.pl script instead. Your change might break generation of Doxygen API docs on Solaris, but maybe we can live with that.
On Fri, 24 Jun 2022 at 12:18, Jonathan Wakely <jwakely@redhat.com> wrote: > > On Fri, 24 Jun 2022 at 12:08, Xi Ruoyao via Libstdc++ > <libstdc++@gcc.gnu.org> wrote: > > > > On Fri, 2022-06-24 at 11:00 +0100, Jonathan Wakely wrote: > > > On Fri, 24 Jun 2022 at 08:03, Xi Ruoyao via Libstdc++ > > > <libstdc++@gcc.gnu.org> 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. > > > > > > > > libstdc++-v3/ChangeLog: > > > > > > > > * scripts/extract_symvers.in: Use grep -E instead of egrep. > > > > * libstdc++-v3/scripts/run_doxygen: Likewise. > > > > > > This should be just scripts/run_doxygen here. You can use the git > > > gcc-verify alias to check your changelog format. > > > > > > > > > With that fixed it's OK for trunk and gcc-12 and gcc-11 branches, > > > thanks! > > > > I'll need some rework as Rainer told me "grep -E" may not work on some > > Solaris systems w/o GNU grep, and the code snippet in extract_symvers.in > > is exactly for Solaris... > > I checked that, and it's not :-) > > The egrep uses in extract_symvers.in are for everything *except* > SunOS. For Solaris we use the scripts/extract_symvers.pl script > instead. > > Your change might break generation of Doxygen API docs on Solaris, but > maybe we can live with that. /usr/xpg4/bin/grep supports the -E flag, so I was going to say that it's acceptable to require that version in the PATH when generating the API docs with doxygen. But in fact that script already assumes GNU grep anyway, using egrep --files-without-match and POSIX grep does not support --files-without-match, or the short form of that option, -L. And in fact, neither of the uses of egrep in scripts/run_doxygen actually needs to use extended regular expressions. Plain ol' grep with Basic Regular Expressions will work fine: problematic=`egrep -l '#include <.*h>' [a-z]*.3` problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` There are no ERE special characters here, so itcould just use 'grep' not 'egrep'. And it won't work with Solaris grep anyway.
Hi Jonathan, >> > I'll need some rework as Rainer told me "grep -E" may not work on some >> > Solaris systems w/o GNU grep, and the code snippet in extract_symvers.in >> > is exactly for Solaris... >> >> I checked that, and it's not :-) >> >> The egrep uses in extract_symvers.in are for everything *except* >> SunOS. For Solaris we use the scripts/extract_symvers.pl script >> instead. >> >> Your change might break generation of Doxygen API docs on Solaris, but >> maybe we can live with that. > > /usr/xpg4/bin/grep supports the -E flag, so I was going to say that > it's acceptable to require that version in the PATH when generating > the API docs with doxygen. But in fact that script already assumes GNU indeed: for a niche/developer-only use, the bar of tool requirements can be higher IMO. Besides, /usr/gnu/bin/grep is there, too (or could be; both /usr/xpg4/bin/grep and /usr/gnu/bin/grep live in separate packages that may or may not be installed). I just want to make the entry barries for normal builds as low as possible. Rainer
On Fri, 2022-06-24 at 13:41 +0200, Rainer Orth wrote: > Hi Jonathan, > > > > > I'll need some rework as Rainer told me "grep -E" may not work on some > > > > Solaris systems w/o GNU grep, and the code snippet in extract_symvers.in > > > > is exactly for Solaris... > > > > > > I checked that, and it's not :-) > > > > > > The egrep uses in extract_symvers.in are for everything *except* > > > SunOS. For Solaris we use the scripts/extract_symvers.pl script > > > instead. I misread the case statement :(. > > > Your change might break generation of Doxygen API docs on Solaris, but > > > maybe we can live with that. > > > > /usr/xpg4/bin/grep supports the -E flag, so I was going to say that > > it's acceptable to require that version in the PATH when generating > > the API docs with doxygen. But in fact that script already assumes GNU > > indeed: for a niche/developer-only use, the bar of tool requirements can > be higher IMO. Besides, /usr/gnu/bin/grep is there, too (or could be; > both /usr/xpg4/bin/grep and /usr/gnu/bin/grep live in separate packages > that may or may not be installed). > > I just want to make the entry barries for normal builds as low as > possible. Pushed as r13-1242 with ChangeLog fix, as compatibility-related stuff "resolved" and this does not depend on other patches in the series.
On Fri, 24 Jun 2022 at 13:37, Xi Ruoyao <xry111@xry111.site> wrote: > > On Fri, 2022-06-24 at 13:41 +0200, Rainer Orth wrote: > > Hi Jonathan, > > > > > > > I'll need some rework as Rainer told me "grep -E" may not work on some > > > > > Solaris systems w/o GNU grep, and the code snippet in extract_symvers.in > > > > > is exactly for Solaris... > > > > > > > > I checked that, and it's not :-) > > > > > > > > The egrep uses in extract_symvers.in are for everything *except* > > > > SunOS. For Solaris we use the scripts/extract_symvers.pl script > > > > instead. > > I misread the case statement :(. > > > > > Your change might break generation of Doxygen API docs on Solaris, but > > > > maybe we can live with that. > > > > > > /usr/xpg4/bin/grep supports the -E flag, so I was going to say that > > > it's acceptable to require that version in the PATH when generating > > > the API docs with doxygen. But in fact that script already assumes GNU > > > > indeed: for a niche/developer-only use, the bar of tool requirements can > > be higher IMO. Besides, /usr/gnu/bin/grep is there, too (or could be; > > both /usr/xpg4/bin/grep and /usr/gnu/bin/grep live in separate packages > > that may or may not be installed). > > > > I just want to make the entry barries for normal builds as low as > > possible. > > Pushed as r13-1242 with ChangeLog fix, as compatibility-related stuff > "resolved" and this does not depend on other patches in the series. Great, thanks!
diff --git a/libstdc++-v3/scripts/extract_symvers.in b/libstdc++-v3/scripts/extract_symvers.in index dd9f63d4f16..d8ea62355ae 100755 --- a/libstdc++-v3/scripts/extract_symvers.in +++ b/libstdc++-v3/scripts/extract_symvers.in @@ -54,8 +54,8 @@ SunOS) ${readelf} ${lib} |\ sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\ sed -e 's/ \[<localentry>: [0-9]*\] //' |\ - egrep -v ' (LOCAL|UND) ' |\ - egrep -v ' (_DYNAMIC|_GLOBAL_OFFSET_TABLE_|_PROCEDURE_LINKAGE_TABLE_|_edata|_end|_etext)$' |\ + grep -E -v ' (LOCAL|UND) ' |\ + grep -E -v ' (_DYNAMIC|_GLOBAL_OFFSET_TABLE_|_PROCEDURE_LINKAGE_TABLE_|_edata|_end|_etext)$' |\ sed -e 's/ <processor specific>: / <processor_specific>:_/g' |\ sed -e 's/ <OS specific>: / <OS_specific>:_/g' |\ sed -e 's/ <unknown>: / <unknown>:_/g' |\ diff --git a/libstdc++-v3/scripts/run_doxygen b/libstdc++-v3/scripts/run_doxygen index 86da071d86c..50514c744c9 100644 --- a/libstdc++-v3/scripts/run_doxygen +++ b/libstdc++-v3/scripts/run_doxygen @@ -291,7 +291,7 @@ cxxflags="-Og -g -std=gnu++23" $gxx $cppflags $cxxflags ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader || exit 1 # Doxygen outputs something like "\fC#include <unique_lock\&.h>\fP" and # we want that internal header to be replaced with something like <mutex>. -problematic=`egrep -l '#include <.*h>' [a-z]*.3` +problematic=`grep -E -l '#include <.*h>' [a-z]*.3` for f in $problematic; do # this is also slow, but safe and easy to debug oldh=`sed -n '/fC#include </s/.*<\(.*\)>.*/\1/p' $f` @@ -303,7 +303,7 @@ rm stdheader # Some of the pages for generated modules have text that confuses certain # implementations of man(1), e.g. on GNU/Linux. We need to have another # top-level *roff tag to /stop/ the .SH NAME entry. -problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` +problematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' for f in $problematic; do