commit:     84808683691a8d1da8cd00fd1259b4d557498486
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Dec  5 01:12:15 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Dec  5 01:13:50 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=84808683

sys-apps/grep: install silent egrep+fgrep by default

GNU grep 3.8+ deprecates egrep and fgrep and installs noisy wrappers
which warn to stderr. This ends up breaking a large amount of scripts,
tooling, and build systems for little real-world gain.

This adds a USE flag (USE=egrep-fgrep) which installs non-noisy wrappers. If
the flag is disabled, the upstream behaviour is used (noisy wrappers which
may one day be removed).

See https://lists.gnu.org/archive/html/bug-grep/2022-10/msg00000.html.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-apps/grep/grep-3.8-r1.ebuild | 100 +++++++++++++++++++++++++++++++++++++++
 sys-apps/grep/metadata.xml       |  12 +++++
 2 files changed, 112 insertions(+)

diff --git a/sys-apps/grep/grep-3.8-r1.ebuild b/sys-apps/grep/grep-3.8-r1.ebuild
new file mode 100644
index 000000000000..383ac1eb28d7
--- /dev/null
+++ b/sys-apps/grep/grep-3.8-r1.ebuild
@@ -0,0 +1,100 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/grep.asc
+inherit flag-o-matic verify-sig
+
+DESCRIPTION="GNU regular expression matcher"
+HOMEPAGE="https://www.gnu.org/software/grep/";
+
+if [[ ${PV} == *_p* ]] ; then
+       # Subscribe to the 'platform-testers' ML to find these.
+       # Useful to test on our especially more niche arches and report issues 
upstream.
+       MY_COMMIT="98-c9ac"
+       MY_P=${PN}-$(ver_cut 1-2).${MY_COMMIT}
+       SRC_URI="https://meyering.net/${PN}/${MY_P}.tar.xz";
+       SRC_URI+=" verify-sig? ( https://meyering.net/${PN}/${MY_P}.tar.xz.sig 
)"
+       S="${WORKDIR}"/${MY_P}
+else
+       SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
+       SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig )"
+       KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc 
~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos 
~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="+egrep-fgrep nls pcre static"
+
+# We lack dev-libs/libsigsegv[static-libs] for now
+REQUIRED_USE="static? ( !sparc )"
+
+LIB_DEPEND="pcre? ( >=dev-libs/libpcre2-7.8-r1[static-libs(+)] )
+       sparc? ( dev-libs/libsigsegv )"
+RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
+       nls? ( virtual/libintl )
+       virtual/libiconv"
+DEPEND="${RDEPEND}
+       static? ( ${LIB_DEPEND} )"
+BDEPEND="virtual/pkgconfig
+       nls? ( sys-devel/gettext )
+       verify-sig? ( sec-keys/openpgp-keys-grep )"
+
+DOCS=( AUTHORS ChangeLog NEWS README THANKS TODO )
+
+src_prepare() {
+       default
+
+       # bug #523898
+       sed -i \
+               -e "s:@SHELL@:${EPREFIX}/bin/sh:g" \
+               -e "s:@grep@:${EPREFIX}/bin/grep:" \
+               src/egrep.sh || die
+}
+
+src_configure() {
+       use static && append-ldflags -static
+
+       # We used to turn this off unconditionally (bug #673524) but we now
+       # allow it for cases where libsigsegv is better for userspace handling
+       # of stack overflows.
+       # In particular, it's necessary for sparc: bug #768135
+       export ac_cv_libsigsegv=$(usex sparc)
+
+       local myeconfargs=(
+               --bindir="${EPREFIX}"/bin
+               $(use_enable nls)
+               $(use_enable pcre perl-regexp)
+       )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_install() {
+       default
+
+       if use egrep-fgrep ; then
+               # Delete the upstream wrapper variants which warn on 
egrep+fgrep use
+               rm "${ED}"/bin/{egrep,fgrep} || die
+
+               into /
+               # Install egrep, fgrep which don't warn.
+               #
+               # We do this by default to avoid breakage in old scripts
+               # and such which don't expect unexpected output on stderr,
+               # we've had examples of builds failing because foo-config
+               # starts returning a warning.
+               #
+               # 
https://lists.gnu.org/archive/html/bug-grep/2022-10/msg00000.html
+               newbin - egrep <<-EOF
+               #!/usr/bin/env sh
+               exec "${EPREFIX}/bin/grep" -E "\$@"
+               EOF
+
+               newbin - fgrep <<-EOF
+               #!/usr/bin/env sh
+               exec "${EPREFIX}/bin/grep" -F "\$@"
+               EOF
+       fi
+}

diff --git a/sys-apps/grep/metadata.xml b/sys-apps/grep/metadata.xml
index 3c76c298887a..89eff5cf9f7e 100644
--- a/sys-apps/grep/metadata.xml
+++ b/sys-apps/grep/metadata.xml
@@ -5,6 +5,18 @@
                <email>[email protected]</email>
                <name>Gentoo Base System</name>
        </maintainer>
+       <use>
+               <flag name="egrep-fgrep">
+                       Install deprecated 'egrep' and 'fgrep' wrappers
+                       for 'grep -E' and 'grep -F' respectively.
+
+                       GNU grep 3.8 onwards warns about their usage by
+                       default, but the versions installed by this flag do not.
+
+                       No deprecation warnings are emitted when this
+                       flag is enabled.
+               </flag>
+       </use>
        <upstream>
                <remote-id type="cpe">cpe:/a:gnu:grep</remote-id>
        </upstream>

Reply via email to