diff options
author | Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org> | 2020-05-03 21:00:08 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2020-05-03 21:01:11 +0200 |
commit | b4aa565ce155f21bad4f3365268c7e7f3e370f23 (patch) | |
tree | 92e6f9ffbed956ae0c02d96de6f3cc7ced85cb34 /sys-apps/kexec-tools | |
parent | sys-apps/kexec-tools: build multiboot2 for i386 (diff) | |
download | gentoo-b4aa565ce155f21bad4f3365268c7e7f3e370f23.tar.gz gentoo-b4aa565ce155f21bad4f3365268c7e7f3e370f23.tar.bz2 gentoo-b4aa565ce155f21bad4f3365268c7e7f3e370f23.zip |
sys-apps/kexec-tools: respect CFLAGS for purgatory
Only when building purgatory, replace -mfunction-return=thunk and
-mindirect-branch=thunk flags with similar -mfunction-return=thunk-inline
and -mindirect-branch=thunk-inline flags, which are not incompatible
with flags added by build system.
Closes: https://bugs.gentoo.org/646536
Closes: https://bugs.gentoo.org/692930
Signed-off-by: Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'sys-apps/kexec-tools')
-rw-r--r-- | sys-apps/kexec-tools/kexec-tools-2.0.20-r1.ebuild | 24 | ||||
-rw-r--r-- | sys-apps/kexec-tools/kexec-tools-9999.ebuild | 28 |
2 files changed, 46 insertions, 6 deletions
diff --git a/sys-apps/kexec-tools/kexec-tools-2.0.20-r1.ebuild b/sys-apps/kexec-tools/kexec-tools-2.0.20-r1.ebuild index 85f71ffaf47b..3cfa2914c936 100644 --- a/sys-apps/kexec-tools/kexec-tools-2.0.20-r1.ebuild +++ b/sys-apps/kexec-tools/kexec-tools-2.0.20-r1.ebuild @@ -3,7 +3,7 @@ EAPI=7 -inherit flag-o-matic libtool linux-info systemd +inherit libtool linux-info systemd if [[ ${PV} == "9999" ]] ; then inherit git-r3 autotools @@ -46,12 +46,15 @@ pkg_setup() { src_prepare() { default + + # Append PURGATORY_EXTRA_CFLAGS flags set by configure, instead of overriding them completely. + sed -e "/^PURGATORY_EXTRA_CFLAGS =/s/=/+=/" -i Makefile.in || die + if [[ "${PV}" == 9999 ]] ; then eautoreconf else elibtoolize fi - filter-flags '-mindirect-branch=thunk*' } src_configure() { @@ -64,6 +67,23 @@ src_configure() { econf "${myeconfargs[@]}" } +src_compile() { + # Respect CFLAGS for purgatory. + # purgatory/Makefile uses PURGATORY_EXTRA_CFLAGS variable. + # -mfunction-return=thunk and -mindirect-branch=thunk conflict with + # -mcmodel=large which is added by build system. + # Replace them with -mfunction-return=thunk-inline and -mindirect-branch=thunk-inline. + local flag flags=() + for flag in ${CFLAGS}; do + [[ ${flag} == -mfunction-return=thunk ]] && flag="-mfunction-return=thunk-inline" + [[ ${flag} == -mindirect-branch=thunk ]] && flag="-mindirect-branch=thunk-inline" + flags+=("${flag}") + done + local -x PURGATORY_EXTRA_CFLAGS="${flags[*]}" + + default +} + src_install() { default diff --git a/sys-apps/kexec-tools/kexec-tools-9999.ebuild b/sys-apps/kexec-tools/kexec-tools-9999.ebuild index 99c3438156f5..77c5d7c6e590 100644 --- a/sys-apps/kexec-tools/kexec-tools-9999.ebuild +++ b/sys-apps/kexec-tools/kexec-tools-9999.ebuild @@ -1,9 +1,9 @@ -# Copyright 1999-2019 Gentoo Authors +# Copyright 1999-2020 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 -inherit flag-o-matic libtool linux-info systemd +inherit libtool linux-info systemd if [[ ${PV} == "9999" ]] ; then inherit git-r3 autotools @@ -11,7 +11,7 @@ if [[ ${PV} == "9999" ]] ; then else SRC_URI="https://www.kernel.org/pub/linux/utils/kernel/kexec/${P/_/-}.tar.xz" [[ "${PV}" == *_rc* ]] || \ - KEYWORDS="~amd64 ~arm64 ~hppa ~ppc64 ~x86" + KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" fi DESCRIPTION="Load another kernel from the currently executing Linux kernel" @@ -44,12 +44,15 @@ pkg_setup() { src_prepare() { default + + # Append PURGATORY_EXTRA_CFLAGS flags set by configure, instead of overriding them completely. + sed -e "/^PURGATORY_EXTRA_CFLAGS =/s/=/+=/" -i Makefile.in || die + if [[ "${PV}" == 9999 ]] ; then eautoreconf else elibtoolize fi - filter-flags '-mindirect-branch=thunk*' } src_configure() { @@ -62,6 +65,23 @@ src_configure() { econf "${myeconfargs[@]}" } +src_compile() { + # Respect CFLAGS for purgatory. + # purgatory/Makefile uses PURGATORY_EXTRA_CFLAGS variable. + # -mfunction-return=thunk and -mindirect-branch=thunk conflict with + # -mcmodel=large which is added by build system. + # Replace them with -mfunction-return=thunk-inline and -mindirect-branch=thunk-inline. + local flag flags=() + for flag in ${CFLAGS}; do + [[ ${flag} == -mfunction-return=thunk ]] && flag="-mfunction-return=thunk-inline" + [[ ${flag} == -mindirect-branch=thunk ]] && flag="-mindirect-branch=thunk-inline" + flags+=("${flag}") + done + local -x PURGATORY_EXTRA_CFLAGS="${flags[*]}" + + default +} + src_install() { default |