diff options
author | Matt Jolly <kangie@gentoo.org> | 2024-11-09 21:29:09 +1000 |
---|---|---|
committer | Matt Jolly <kangie@gentoo.org> | 2024-11-09 21:57:50 +1000 |
commit | bcec88143087b45ba26f219efa76021e5acac391 (patch) | |
tree | 81b94c16893b5a8239350e6c1d7d197aea7693e0 /www-client/firefox | |
parent | kde-misc/kio-gdrive-common: Cleanup KF5-compat remnants (diff) | |
download | gentoo-bcec88143087b45ba26f219efa76021e5acac391.tar.gz gentoo-bcec88143087b45ba26f219efa76021e5acac391.tar.bz2 gentoo-bcec88143087b45ba26f219efa76021e5acac391.zip |
www-client/firefox: LTO Updates
Force LTO with USE=pgo
LTO now comes from CFLAGS, meaning that the REQUIRED_USE
previously enforcing this was removed in favour of
`eerror`. Instead we will force LTO even if it's not detected
from CFLAGS if PGO is in use.
Drop USE=lto on 128 to bring it into line with 132.
Signed-off-by: Matt Jolly <kangie@gentoo.org>
Diffstat (limited to 'www-client/firefox')
-rw-r--r-- | www-client/firefox/firefox-128.4.0-r1.ebuild | 44 | ||||
-rw-r--r-- | www-client/firefox/firefox-132.0-r1.ebuild | 11 | ||||
-rw-r--r-- | www-client/firefox/firefox-132.0.1-r1.ebuild | 11 |
3 files changed, 41 insertions, 25 deletions
diff --git a/www-client/firefox/firefox-128.4.0-r1.ebuild b/www-client/firefox/firefox-128.4.0-r1.ebuild index 1c04269f3aa9..3dbba65f6d4b 100644 --- a/www-client/firefox/firefox-128.4.0-r1.ebuild +++ b/www-client/firefox/firefox-128.4.0-r1.ebuild @@ -64,7 +64,7 @@ S="${WORKDIR}/${PN}-${PV%_*}" LICENSE="MPL-2.0 GPL-2 LGPL-2.1" KEYWORDS="amd64 ~arm64 ~ppc64 ~riscv ~x86" -IUSE="clang dbus debug eme-free hardened hwaccel jack +jumbo-build libproxy lto openh264 pgo" +IUSE="clang dbus debug eme-free hardened hwaccel jack +jumbo-build libproxy openh264 pgo" IUSE+=" pulseaudio selinux sndio +system-av1 +system-harfbuzz +system-icu +system-jpeg" IUSE+=" +system-libevent +system-libvpx system-png +system-webp +telemetry wayland wifi +X" @@ -73,7 +73,6 @@ IUSE+=" +gmp-autoupdate gnome-shell" REQUIRED_USE="|| ( X wayland ) debug? ( !system-av1 ) - pgo? ( lto ) wayland? ( dbus ) wifi? ( dbus )" @@ -441,7 +440,7 @@ pkg_pretend() { fi # Ensure we have enough disk space to compile - if use pgo || use lto || use debug ; then + if use pgo || tc-is-lto || use debug ; then CHECKREQS_DISK_BUILD="13500M" else CHECKREQS_DISK_BUILD="6600M" @@ -452,15 +451,34 @@ pkg_pretend() { } pkg_setup() { + + # Get LTO from environment; export after this phase for use in src_configure (etc) + use_lto=no + if [[ ${MERGE_TYPE} != binary ]] ; then + + if tc-is-lto; then + use_lto=yes + # LTO is handled via configure + # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC, + # bmo#1516758, bgo#942288 + filter-lto + filter-flags -Werror=lto-type-mismatch -Werror=odr + fi + if use pgo ; then + if [[ ${use_lto} == "no" ]]; then + elog "Building ${PN} with USE=pgo requires LTO, however this was not detected in your environment." + elog "Forcing LTO, however it is recommended to enable LTO explicitly." + use_lto=yes + fi if ! has userpriv ${FEATURES} ; then eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" fi fi # Ensure we have enough disk space to compile - if use pgo || use lto || use debug ; then + if use pgo || [[ ${use_lto} == "yes" ]] || use debug ; then CHECKREQS_DISK_BUILD="13500M" else CHECKREQS_DISK_BUILD="6400M" @@ -471,7 +489,7 @@ pkg_setup() { llvm-r1_pkg_setup rust_pkg_setup - if use clang && use lto && tc-ld-is-lld ; then + if use clang && [[ ${use_lto} == "yes" ]] && tc-ld-is-lld ; then local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" @@ -485,7 +503,7 @@ pkg_setup() { eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" - eerror " - Build ${CATEGORY}/${PN} without USE=lto" + eerror " - Build ${CATEGORY}/${PN} without lto" eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " eerror " llvm/clang/lld/rust chain depending on your @world updates)" die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" @@ -546,6 +564,8 @@ pkg_setup() { export LC_ALL=C fi + export use_lto + CONFIG_CHECK="~SECCOMP" WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to play DRM-protected content." linux-info_pkg_setup @@ -569,7 +589,7 @@ src_unpack() { } src_prepare() { - if use lto; then + if [[ ${use_lto} == "yes" ]]; then rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die fi @@ -899,13 +919,7 @@ src_configure() { mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only fi - # LTO is handled via configure. - # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC, - # bmo#1516758, bgo#942288 - filter-lto - filter-flags -Werror=lto-type-mismatch -Werror=odr - - if use lto ; then + if [[ ${use_lto} == "yes" ]]; then if use clang ; then # Upstream only supports lld or mold when using clang. if tc-ld-is-mold ; then @@ -1080,7 +1094,7 @@ src_configure() { src_compile() { local virtx_cmd= - if tc-ld-is-mold && use lto; then + if tc-ld-is-mold && [[ ${use_lto} == "yes" ]]; then # increase ulimit with mold+lto, bugs #892641, #907485 if ! ulimit -n 16384 1>/dev/null 2>&1 ; then ewarn "Unable to modify ulimits - building with mold+lto might fail due to low ulimit -n resources." diff --git a/www-client/firefox/firefox-132.0-r1.ebuild b/www-client/firefox/firefox-132.0-r1.ebuild index 858c6586a808..42cdfb7c9604 100644 --- a/www-client/firefox/firefox-132.0-r1.ebuild +++ b/www-client/firefox/firefox-132.0-r1.ebuild @@ -472,9 +472,10 @@ pkg_setup() { fi if use pgo ; then - if [[ ${use_lto} == "no" ]]; then - eerror "Building ${PN} with USE=pgo requires LTO!" - die "Please fix your CFLAGS/CXXFLAGS." + if [[ ${use_lto} == "no" ]] ; then + elog "Building ${PN} with USE=pgo requires LTO, however this was not detected in your environment." + elog "Forcing LTO, however it is recommended to enable LTO explicitly." + use_lto=yes fi if ! has userpriv ${FEATURES} ; then eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" @@ -583,7 +584,7 @@ src_unpack() { } src_prepare() { - if [[ ${use_lto} = "yes" ]]; then + if [[ ${use_lto} == "yes" ]]; then rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die fi @@ -902,7 +903,7 @@ src_configure() { mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only fi - if [[ ${use_lto} = "yes" ]] ; then + if [[ ${use_lto} == "yes" ]] ; then if use clang ; then # Upstream only supports lld or mold when using clang. if tc-ld-is-mold ; then diff --git a/www-client/firefox/firefox-132.0.1-r1.ebuild b/www-client/firefox/firefox-132.0.1-r1.ebuild index c767c09e4a2a..56c448010e00 100644 --- a/www-client/firefox/firefox-132.0.1-r1.ebuild +++ b/www-client/firefox/firefox-132.0.1-r1.ebuild @@ -470,9 +470,10 @@ pkg_setup() { fi if use pgo ; then - if [[ ${use_lto} == "no" ]]; then - eerror "Building ${PN} with USE=pgo requires LTO!" - die "Please fix your CFLAGS/CXXFLAGS." + if [[ ${use_lto} == "no" ]] ; then + elog "Building ${PN} with USE=pgo requires LTO, however this was not detected in your environment." + elog "Forcing LTO, however it is recommended to enable LTO explicitly." + use_lto=yes fi if ! has userpriv ${FEATURES} ; then eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" @@ -581,7 +582,7 @@ src_unpack() { } src_prepare() { - if [[ ${use_lto} = "yes" ]]; then + if [[ ${use_lto} == "yes" ]]; then rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die fi @@ -900,7 +901,7 @@ src_configure() { mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only fi - if [[ ${use_lto} = "yes" ]] ; then + if [[ ${use_lto} == "yes" ]] ; then if use clang ; then # Upstream only supports lld or mold when using clang. if tc-ld-is-mold ; then |