commit:     2b258b6396f73a8c9065132834b273e2fbdd1556
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 10 02:42:23 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Dec 10 02:43:03 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2b258b63

sys-devel/libtool: add -Werror filtering patch

Needed to make -Werror=odr and such error out at link-time.

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

 .../libtool/files/libtool-2.4.7-werror-lto.patch   |  45 ++++++++
 sys-devel/libtool/libtool-2.4.7-r1.ebuild          | 116 +++++++++++++++++++++
 2 files changed, 161 insertions(+)

diff --git a/sys-devel/libtool/files/libtool-2.4.7-werror-lto.patch 
b/sys-devel/libtool/files/libtool-2.4.7-werror-lto.patch
new file mode 100644
index 000000000000..5a460e006be6
--- /dev/null
+++ b/sys-devel/libtool/files/libtool-2.4.7-werror-lto.patch
@@ -0,0 +1,45 @@
+From d72817b1ee5d7b666bf30b0234e32423252d6ad8 Mon Sep 17 00:00:00 2001
+From: Sam James <[email protected]>
+Date: Sat, 10 Dec 2022 02:00:22 +0000
+Subject: [PATCH] Allow -Werror and -Werror=* through flag filtering
+
+* build-aux/ltmain.in (func_mode_link): allow -Werror and -Werror=* through
+  flat filtering at link time.
+
+  This is needed for detecting likely-runtime problems with LTO using
+  e.g. -Werror=odr or -Werror=lto-type-mismatch.
+
+Bug: https://bugs.gentoo.org/884767
+Signed-off-by: Sam James <[email protected]>
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -5408,10 +5408,11 @@ func_mode_link ()
+       # -fsanitize=*         Clang/GCC memory and address sanitizer
+       # -fuse-ld=*           Linker select flags for GCC
+       # -Wa,*                Pass flags directly to the assembler
++      # -Werror, -Werror=*   Report (specified) warnings as errors
+       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+       
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+       
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+-      -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*)
++      -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*|-Werror|-Werror=*)
+         func_quote_arg pretty "$arg"
+       arg=$func_quote_arg_result
+         func_append compile_command " $arg"
+--- a/build-aux/ltmain.sh
++++ a/build-aux/ltmain.sh
+@@ -5408,10 +5408,11 @@ func_mode_link ()
+       # -fsanitize=*         Clang/GCC memory and address sanitizer
+       # -fuse-ld=*           Linker select flags for GCC
+       # -Wa,*                Pass flags directly to the assembler
++      # -Werror, -Werror=*   Report (specified) warnings as errors
+       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+       
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+       
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+-      -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*)
++      -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*|-Werror|-Werror=*)
+         func_quote_arg pretty "$arg"
+       arg=$func_quote_arg_result
+         func_append compile_command " $arg"
+-- 
+2.38.1

diff --git a/sys-devel/libtool/libtool-2.4.7-r1.ebuild 
b/sys-devel/libtool/libtool-2.4.7-r1.ebuild
new file mode 100644
index 000000000000..aa11623b7011
--- /dev/null
+++ b/sys-devel/libtool/libtool-2.4.7-r1.ebuild
@@ -0,0 +1,116 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# Please bump with dev-libs/libltdl.
+
+# bug #225559
+LIBTOOLIZE="true"
+WANT_LIBTOOL="none"
+inherit autotools prefix
+
+if [[ ${PV} == *9999 ]] ; then
+       EGIT_REPO_URI="https://git.savannah.gnu.org/git/libtool.git";
+       inherit git-r3
+else
+       SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
+       KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 ~x86-winnt"
+fi
+
+DESCRIPTION="A shared library tool for developers"
+HOMEPAGE="https://www.gnu.org/software/libtool/";
+
+LICENSE="GPL-2"
+SLOT="2"
+IUSE="vanilla"
+
+# Pull in libltdl directly until we convert packages to the new dep.
+RDEPEND="
+       sys-devel/gnuconfig
+       >=sys-devel/autoconf-2.69:*
+       >=sys-devel/automake-1.13:*
+       >=dev-libs/libltdl-2.4.7"
+DEPEND="${RDEPEND}"
+[[ ${PV} == *9999 ]] && BDEPEND="sys-apps/help2man"
+
+PATCHES=(
+       # bug #109105
+       "${FILESDIR}"/${PN}-2.4.3-use-linux-version-in-fbsd.patch
+       # bug #581314
+       "${FILESDIR}"/${PN}-2.4.6-ppc64le.patch
+
+       "${FILESDIR}"/${PN}-2.4.6-mint.patch
+       "${FILESDIR}"/${PN}-2.2.6a-darwin-module-bundle.patch
+       "${FILESDIR}"/${PN}-2.4.6-darwin-use-linux-version.patch
+       "${FILESDIR}"/${PN}-2.4.7-werror-lto.patch
+)
+
+src_prepare() {
+       if [[ ${PV} == *9999 ]] ; then
+               eapply "${FILESDIR}"/${PN}-2.4.6-pthread.patch # bug #650876
+               ./bootstrap || die
+       else
+               PATCHES+=(
+                       "${FILESDIR}"/${PN}-2.4.6-pthread_bootstrapped.patch # 
bug #650876
+               )
+       fi
+
+       # WARNING: File build-aux/ltmain.sh is read-only; trying to patch anyway
+       chmod +w build-aux/ltmain.sh || die
+
+       if use vanilla ; then
+               eapply_user
+               return 0
+       else
+               default
+       fi
+
+       if use prefix ; then
+               # seems that libtool has to know about EPREFIX a little bit
+               # better, since it fails to find prefix paths to search libs
+               # from, resulting in some packages building static only, since
+               # libtool is fooled into thinking that libraries are unavailable
+               # (argh...). This could also be fixed by making the gcc wrapper
+               # return the correct result for -print-search-dirs (doesn't
+               # include prefix dirs ...).
+               eapply "${FILESDIR}"/${PN}-2.2.10-eprefix.patch
+               eprefixify m4/libtool.m4
+       fi
+
+       pushd libltdl >/dev/null || die
+       AT_NOELIBTOOLIZE=yes eautoreconf
+       popd >/dev/null || die
+       AT_NOELIBTOOLIZE=yes eautoreconf
+
+       # Make sure timestamps don't trigger a rebuild of man pages. #556512
+       if [[ ${PV} != *9999 ]] ; then
+               touch doc/*.1 || die
+               export HELP2MAN=true
+       fi
+}
+
+src_configure() {
+       # the libtool script uses bash code in it and at configure time, tries
+       # to find a bash shell.  if /bin/sh is bash, it uses that.  this can
+       # cause problems for people who switch /bin/sh on the fly to other
+       # shells, so just force libtool to use /bin/bash all the time.
+       export CONFIG_SHELL="$(type -P bash)"
+
+       # Do not bother hardcoding the full path to sed.
+       # Just rely on $PATH. bug #574550
+       export ac_cv_path_SED="$(basename "$(type -P sed)")"
+
+       [[ ${CHOST} == *-darwin* ]] && local myconf="--program-prefix=g"
+
+       ECONF_SOURCE="${S}" econf ${myconf} --disable-ltdl-install
+}
+
+src_install() {
+       default
+
+       local x
+       while read -d $'\0' -r x ; do
+               ln -sf "${EPREFIX}"/usr/share/gnuconfig/${x##*/} "${x}" || die
+       done < <(find "${ED}" '(' -name config.guess -o -name config.sub ')' 
-print0)
+}

Reply via email to