summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Jolly <kangie@gentoo.org>2024-11-09 21:29:09 +1000
committerMatt Jolly <kangie@gentoo.org>2024-11-09 21:57:50 +1000
commitbcec88143087b45ba26f219efa76021e5acac391 (patch)
tree81b94c16893b5a8239350e6c1d7d197aea7693e0 /www-client/firefox
parentkde-misc/kio-gdrive-common: Cleanup KF5-compat remnants (diff)
downloadgentoo-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.ebuild44
-rw-r--r--www-client/firefox/firefox-132.0-r1.ebuild11
-rw-r--r--www-client/firefox/firefox-132.0.1-r1.ebuild11
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