PGO build fixes

This commit is contained in:
Martin Stransky 2023-06-27 21:23:28 +02:00
parent 456ad350a8
commit 2606d6a50c
3 changed files with 12 additions and 31 deletions

View File

@ -61,7 +61,9 @@ ExcludeArch: ppc64le
%global system_libvpx 0 %global system_libvpx 0
%global system_jpeg 1 %global system_jpeg 1
%global system_pixman 1 %global system_pixman 1
%global use_bundled_cbindgen 1 # Bundled cbindgen makes build slow.
# Enable only if system cbindgen is not available.
%global use_bundled_cbindgen 0
%if %{debug_build} %if %{debug_build}
%global release_build 0 %global release_build 0
%endif %endif
@ -234,7 +236,6 @@ Patch407: mozilla-1667096.patch
# PGO/LTO patches # PGO/LTO patches
Patch600: pgo.patch Patch600: pgo.patch
Patch602: mozilla-1516803.patch
Patch603: firefox-gcc-always-inline.patch Patch603: firefox-gcc-always-inline.patch
# tentative patch for RUSTFLAGS parsing issue: # tentative patch for RUSTFLAGS parsing issue:
@ -508,7 +509,6 @@ This package contains results of tests executed during build.
%if %{build_with_pgo} %if %{build_with_pgo}
%if !%{build_with_clang} %if !%{build_with_clang}
%patch600 -p1 -b .pgo %patch600 -p1 -b .pgo
%patch602 -p1 -b .1516803
%endif %endif
%endif %endif
%patch603 -p1 -b .inline %patch603 -p1 -b .inline
@ -625,7 +625,8 @@ chmod a-x third_party/rust/ash/src/extensions/nv/*.rs
%build %build
# Disable LTO to work around rhbz#1883904 # Disable LTO to work around rhbz#1883904
%define _lto_cflags %{nil} # Is that already fixed?
# %define _lto_cflags %{nil}
%if 0%{?use_bundled_cbindgen} %if 0%{?use_bundled_cbindgen}
mkdir -p my_rust_vendor mkdir -p my_rust_vendor
@ -643,6 +644,8 @@ EOL
env CARGO_HOME=.cargo cargo install cbindgen env CARGO_HOME=.cargo cargo install cbindgen
export PATH=`pwd`/.cargo/bin:$PATH export PATH=`pwd`/.cargo/bin:$PATH
cd - cd -
%else
export CBINDGEN=/usr/bin/cbindgen
%endif %endif
mkdir %{_buildrootdir}/bin || : mkdir %{_buildrootdir}/bin || :
@ -707,9 +710,13 @@ echo "export NM=\"gcc-nm\"" >> .mozconfig
echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig
%endif %endif
%if 0%{?build_with_pgo} %if 0%{?build_with_pgo}
echo "ac_add_options MOZ_PGO=1" >> .mozconfig
# PGO build doesn't work with ccache # PGO build doesn't work with ccache
export CCACHE_DISABLE=1 export CCACHE_DISABLE=1
export GCOV_PREFIX=`pwd -P`/objdir
export GCOV_PREFIX_STRIP=$(( $(echo `pwd -P`|tr -c -d '/' |wc -c )+2 ))
env | grep GCOV
echo "ac_add_options --enable-lto" >> .mozconfig
echo "ac_add_options MOZ_PGO=1" >> .mozconfig
%endif %endif
# Require 2 GB of RAM per CPU core # Require 2 GB of RAM per CPU core

View File

@ -1,15 +0,0 @@
diff -up firefox-84.0/security/sandbox/linux/moz.build.1516803 firefox-84.0/security/sandbox/linux/moz.build
--- firefox-84.0/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100
+++ firefox-84.0/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100
@@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc")
# gcc lto likes to put the top level asm in syscall.cc in a different partition
# from the function using it which breaks the build. Work around that by
# forcing there to be only one partition.
-for f in CONFIG["OS_CXXFLAGS"]:
- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang":
- LDFLAGS += ["--param lto-partitions=1"]
+if CONFIG['CC_TYPE'] != 'clang':
+ LDFLAGS += ['--param', 'lto-partitions=1']
DEFINES["NS_NO_XPCOM"] = True
DisableStlWrapping()

View File

@ -59,17 +59,6 @@ diff -up firefox-112.0/build/pgo/profileserver.py.pgo firefox-112.0/build/pgo/pr
with TemporaryDirectory() as profilePath: with TemporaryDirectory() as profilePath:
# TODO: refactor this into mozprofile # TODO: refactor this into mozprofile
@@ -213,6 +226,10 @@ if __name__ == "__main__":
print("Firefox exited successfully, but produced a crashreport")
sys.exit(1)
+ print('Copying profile data....')
+ os.system('pwd');
+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;');
+
llvm_profdata = env.get("LLVM_PROFDATA")
if llvm_profdata:
profraw_files = glob.glob("*.profraw")
diff -up firefox-112.0/build/unix/mozconfig.unix.pgo firefox-112.0/build/unix/mozconfig.unix diff -up firefox-112.0/build/unix/mozconfig.unix.pgo firefox-112.0/build/unix/mozconfig.unix
--- firefox-112.0/build/unix/mozconfig.unix.pgo 2023-04-06 21:27:32.537089073 +0200 --- firefox-112.0/build/unix/mozconfig.unix.pgo 2023-04-06 21:27:32.537089073 +0200
+++ firefox-112.0/build/unix/mozconfig.unix 2023-04-06 21:28:54.987949124 +0200 +++ firefox-112.0/build/unix/mozconfig.unix 2023-04-06 21:28:54.987949124 +0200