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>
