commit:     34ace9fe79667dfcfd0ab651cc246c85a7706ae6
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  9 08:17:11 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jan  9 09:45:01 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=34ace9fe

sys-devel/m4: stop downgrading FORTIFY_SOURCE

Closes: https://bugs.gentoo.org/890273
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-devel/m4/files/m4-1.4.19-fortify-source.patch |  49 +++++++++++
 sys-devel/m4/m4-1.4.19-r1.ebuild                  | 101 ++++++++++++++++++++++
 2 files changed, 150 insertions(+)

diff --git a/sys-devel/m4/files/m4-1.4.19-fortify-source.patch 
b/sys-devel/m4/files/m4-1.4.19-fortify-source.patch
new file mode 100644
index 000000000000..69e5405b6f2b
--- /dev/null
+++ b/sys-devel/m4/files/m4-1.4.19-fortify-source.patch
@@ -0,0 +1,49 @@
+https://bugs.gentoo.org/890273
+
+From 960b9b4d0774f78d286932251d6f53f638aefb19 Mon Sep 17 00:00:00 2001
+From: Sam James <[email protected]>
+Date: Mon, 9 Jan 2023 08:00:34 +0000
+Subject: [PATCH] build: Don't add _FORTIFY_SOURCE if already set by
+ user/toolchain
+
+Newer toolchains (GCC 12+ or Clang 9+, glibc-2.34) allow _FORTIFY_SOURCE=3.
+
+The current macro used in configure.ac will forcefully downgrade to F_S=2
+and emit a warning if the user set something else:
+```
+x86_64-pc-linux-gnu-gcc -DEXEEXT=\"\" -I. -I../lib  -DIN_M4_GNULIB_TESTS=1 -I. 
-I. -I.. -I./.. -I../lib -I./../lib   -O2 -pipe -march=native 
-fdiagnostics-color=always -frecord-gcc-switches -Wreturn-type      -ggdb3 
-Werror=implicit-function-declaration -Werror=implicit-int -c -o 
glthread/thread.o glthread/thread.c
+In file included from glthread/thread.c:20:
+../lib/config.h:202: warning: "_FORTIFY_SOURCE" redefined
+  202 |    # define _FORTIFY_SOURCE 2
+      |
+<built-in>: note: this is the location of the previous definition
+```
+
+See: 390d259efe8e1c7e4b6babb4738fef7427416857
+Signed-off-by: Sam James <[email protected]>
+--- a/configure.ac
++++ b/configure.ac
+@@ -133,7 +133,9 @@ if test "$gl_gcc_warnings" = yes; then
+   [/* Enable compile-time and run-time bounds-checking, and some warnings,
+       without upsetting newer glibc. */
+    #if defined __OPTIMIZE__ && __OPTIMIZE__
+-   # define _FORTIFY_SOURCE 2
++   # ifndef _FORTIFY_SOURCE
++   #  define _FORTIFY_SOURCE 2
++   # endif
+    #endif
+   ])
+ fi
+--- a/lib/config.hin
++++ b/lib/config.hin
+@@ -198,7 +198,9 @@
+ /* Enable compile-time and run-time bounds-checking, and some warnings,
+       without upsetting newer glibc. */
+    #if defined __OPTIMIZE__ && __OPTIMIZE__
+-   # define _FORTIFY_SOURCE 2
++   # ifndef _FORTIFY_SOURCE
++   #  define _FORTIFY_SOURCE 2
++   # endif
+    #endif
+   
+ 

diff --git a/sys-devel/m4/m4-1.4.19-r1.ebuild b/sys-devel/m4/m4-1.4.19-r1.ebuild
new file mode 100644
index 000000000000..83b5384aa9a8
--- /dev/null
+++ b/sys-devel/m4/m4-1.4.19-r1.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2023 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/m4.asc
+inherit verify-sig
+
+DESCRIPTION="GNU macro processor"
+HOMEPAGE="https://www.gnu.org/software/m4/m4.html";
+if [[ ${PV} == *_beta* ]] ; then
+       MY_P="${PN}-1.4.18d"
+       SRC_URI="https://alpha.gnu.org/gnu/${PN}/${MY_P}.tar.xz";
+       SRC_URI+=" verify-sig? ( 
https://alpha.gnu.org/gnu/${PN}/${MY_P}.tar.xz.sig )"
+       S="${WORKDIR}/${MY_P}"
+else
+       SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
+       SRC_URI+=" 
https://dev.gentoo.org/~floppym/dist/${P}-test-198-sysval-r1.patch.gz";
+       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="examples nls"
+
+RDEPEND="
+       virtual/libiconv
+       nls? (
+               sys-devel/gettext
+               virtual/libintl
+       )"
+DEPEND="${RDEPEND}"
+# Remember: cannot dep on autoconf since it needs us
+BDEPEND="app-arch/xz-utils
+       nls? ( sys-devel/gettext )
+       verify-sig? ( sec-keys/openpgp-keys-m4 )"
+
+PATCHES=(
+       "${FILESDIR}"/ppc-musl.patch
+       "${FILESDIR}"/loong-fix-build.patch
+       "${FILESDIR}"/${PN}-1.4.19-make-4.4-tests.patch
+       "${WORKDIR}"/${P}-test-198-sysval-r1.patch
+       "${FILESDIR}"/${PN}-1.4.19-fortify-source.patch
+)
+
+src_unpack() {
+       if use verify-sig ; then
+               # Needed for downloaded patch (which is unsigned, which is fine)
+               verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig}
+       fi
+
+       default
+}
+
+src_prepare() {
+       default
+
+       # touch generated files after patching m4, to avoid activating 
maintainer
+       # mode
+       # remove when loong-fix-build.patch is no longer necessary
+       touch ./aclocal.m4 ./lib/config.hin ./configure ./doc/stamp-vti || die
+       find . -name Makefile.in -exec touch {} + || die
+}
+
+src_configure() {
+       local -a myeconfargs=(
+               --enable-changeword
+
+               --with-packager="Gentoo Linux"
+               --with-packager-version="${PVR}"
+               --with-packager-bug-reports="https://bugs.gentoo.org/";
+
+               $(usex nls '' '--disable-nls')
+
+               # Disable automagic dependency over libsigsegv; see bug #278026
+               ac_cv_libsigsegv=no
+       )
+
+       [[ ${USERLAND} != GNU ]] && myeconfargs+=( --program-prefix=g )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_test() {
+       [[ -d /none ]] && die "m4 tests will fail with /none/" #244396
+       emake check
+}
+
+src_install() {
+       default
+
+       # autoconf-2.60 for instance, first checks gm4, then m4.  If we don't 
have
+       # gm4, it might find gm4 from outside the prefix on for instance Darwin
+       use prefix && dosym m4 /usr/bin/gm4
+
+       if use examples ; then
+               dodoc -r examples
+               rm -f "${ED}"/usr/share/doc/${PF}/examples/Makefile*
+       fi
+}

Reply via email to