diff options
Diffstat (limited to 'libre/icecat')
-rw-r--r-- | libre/icecat/PKGBUILD | 75 | ||||
-rw-r--r-- | libre/icecat/rust-static-disable-network-test-on-static-libraries.patch | 27 |
2 files changed, 67 insertions, 35 deletions
diff --git a/libre/icecat/PKGBUILD b/libre/icecat/PKGBUILD index bdbe9d576..87a28e744 100644 --- a/libre/icecat/PKGBUILD +++ b/libre/icecat/PKGBUILD @@ -15,14 +15,14 @@ # Contributor: grizzlyuser <grizzlyuser@protonmail.com> -# NOTE: icecat (60.7 < V <= 78.6) are not upstream releases +# NOTE: icecat (60.7 < V <= 78.7) are not upstream releases # upstream releases would normally have '-gnu' appended to $_upstream_ver # this build is based on gnuzilla VCS developement sources -# rev: a43514623e93d4f3fe6d61f5b2f82c5ef29bf518 +# rev: abfe5eebaca3c2787f1a9505669393674493c177 pkgname=icecat -_upstream_ver=78.6.0 # -gnu +_upstream_ver=78.7.0-pre # -gnu pkgver=${_upstream_ver//-/_} pkgrel=1 pkgdesc="GNU IceCat - a libre standalone web browser based on Mozilla Firefox ESR" @@ -34,28 +34,29 @@ makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb autoconf2.13 rust clang llvm jack gtk2 nodejs cbindgen nasm python-setuptools python-psutil) makedepends+=(mozilla-searchplugins jq) -makedepends[15]='cbindgen=0.15.0' # FIXME: FTBS against cbindgen v0.16.0 - # dom/webgpu/ipc/WebGPUParent.cpp:426:29: error: no member named '_0' in 'mozilla::webgpu::ffi::WGPUBufferBinding' - # dom/webgpu/ipc/WebGPUParent.cpp:432:34: error: member reference base type 'mozilla::webgpu::ffi::WGPUTextureViewId' (aka 'unsigned long') is not a structure or union +[[ "${CARCH}" == 'i686' ]] && makedepends=(${makedepends[*]/llvm/llvm10}) # FIXME: i686 configure fails with LLVM11 + # rustup: error while loading shared libraries: libLLVM-10.so optdepends=('networkmanager: Location detection via available WiFi networks' 'libnotify: Notification integration' 'pulseaudio: Audio support' 'speech-dispatcher: Text-to-Speech' 'hunspell-en_US: Spell checking, American English') options=(!emptydirs !makeflags !strip) -source=(https://repo.parabola.nu/other/${pkgname}/${pkgname}-${_upstream_ver}-pre.tar.bz2{,.sig} +source=(https://repo.parabola.nu/other/${pkgname}/${pkgname}-${_upstream_ver}.tar.bz2{,.sig} 0001-Use-remoting-name-for-GDK-application-names.patch rust-1.48_icecat-78.6.0.patch ${pkgname}.desktop) source+=(searchplugins_list.json libre.patch) -sha256sums=('edcbdf85d74408420427d2959e1709327fbe7a2ce6810045df4aeb3a70f14555' +source_i686=('rust-static-disable-network-test-on-static-libraries.patch') +sha256sums=('e62ed45c31c62a67609313cb3eb03f809130a691f884962b010cce164782b129' 'SKIP' '3bb7463471fb43b2163a705a79a13a3003d70fff4bbe44f467807ca056de9a75' 'd90faa59dc59f457c5770b3cc1ee4caa5b255e754ab9ab3993af894992c007e4' 'f9f954fd06739e70a72ccf4774cfa71f349a4b133ec8f5dea0a3bcca2cf7321d' '3edb4add450f94c579f2df7c16ac4d9bd9f5c6acf3fbd8a05ce24c21c317257d' '28029afa3201e1be8138be06f741c59d64869edf0c9e90dbb05cfa6b5fff4ecd') +sha256sums_i686=('068efe37a99561490e6ec7b70a3cd4dd84e89e6bdf19f04a475d06c78fd28920') validpgpkeys=('318C679D94F17700CC847DE646A70073E4E50D4E' # Ruben Rodriguez '3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40') # bill-auger @@ -63,7 +64,7 @@ validpgpkeys=('318C679D94F17700CC847DE646A70073E4E50D4E' # Ruben Rodriguez # PGO requires networking _should_skip_pgo_armv7h=1 # disable for armv7h - always _should_skip_pgo_i686=1 # disable for i686 - always -_should_skip_pgo_x86_64=1 # disable for x86_64 - libremakepkg +_should_skip_pgo_x86_64=0 # disable for x86_64 - libremakepkg eval "_should_skip_pgo=\$_should_skip_pgo_${CARCH}" @@ -90,7 +91,7 @@ _check_build_config() { if (( ${#antifeatures[@]} )) then echo "Some anti-features are not disabled in build configuration files, aborting:" for key in ${antifeatures[@]} ; do echo " - ${key} is enabled" ; done ; - # FIXME: - .datareporting is enabled +# FIXME: - .datareporting is enabled # return 1 fi @@ -149,16 +150,16 @@ END ## [ARCH-SPECIFIC CONFIG] ## - # TODO: this per-arch handling is yet to be re-worked for armv7h and i686 case "${CARCH}" in armv*) -# sed -i '/--enable-linker=gold/d' .mozconfig -# sed -i '/--enable-rust-simd/d' .mozconfig +# TODO: re-work for armv7h +# sed -i '/--enable-linker=gold/d' ../mozconfig +# sed -i '/--enable-rust-simd/d' ../mozconfig # # # https://bugzilla.mozilla.org/show_bug.cgi?id=1463035 # patch -Np1 -i "$srcdir"/mozilla-1463035.patch # -# cat >> .mozconfig <<END +# cat >> ../mozconfig <<END #ac_add_options --enable-optimize="-g -O2 -fno-schedule-insns" #ac_add_options --disable-elf-hack #ac_add_options --disable-webrtc @@ -166,7 +167,14 @@ END #END ;; i686) -# sed -i '/--enable-linker=gold/d' .mozconfig +# sed -i '/--enable-linker=gold/d' ../mozconfig + sed -i '/--enable-rust-simd/d' ../mozconfig + + # test failure in rust code (complaining about network functions) when PGO is used, + # TEST-UNEXPECTED-FAIL | check_networking | libgkrust.a | Identified 7 networking function(s) being imported in the rust static library (accept,connect,getsockname,getsockopt,listen,recv,send) + # see https://bugzilla.mozilla.org/show_bug.cgi?id=1565757 + echo "applying rust-static-disable-network-test-on-static-libraries.patch" + patch -Np0 -i ../rust-static-disable-network-test-on-static-libraries.patch ;; x86_64) ;; @@ -223,6 +231,8 @@ END build() { cd "$srcdir/$pkgname-${pkgver%_*}" + ## build env ## + export MOZ_NOSPAM=1 export MOZBUILD_STATE_PATH="$srcdir/mozbuild" export MACH_USE_SYSTEM_PYTHON=1 @@ -230,48 +240,40 @@ build() { # LTO needs more open files ulimit -n 4096 + # clang-{9,10,11} -> error: unknown argument: '-fvar-tracking-assignments' + CFLAGS="${CFLAGS/-fvar-tracking-assignments/}" + CXXFLAGS="${CXXFLAGS/-fvar-tracking-assignments/}" + ## [ARCH-SPECIFIC BUILD ENV] ## - # TODO: this per-arch handling is yet to be re-worked for armv7h and i686 case "${CARCH}" in armv*) - # clang-{9,10,11} -> error: unknown argument: '-fvar-tracking-assignments' -# CFLAGS="${CFLAGS/-fvar-tracking-assignments/}" -# CXXFLAGS="${CXXFLAGS/-fvar-tracking-assignments/}" -# +# TODO: re-work for armv7h # export RUSTFLAGS+=" -Cdebuginfo=0 -Clto=off" # export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" -# export CFLAGS -# export CXXFLAGS ;; i686) # -fno-plt with cross-LTO -> LLVM ERROR: Function Import: link error -# CFLAGS="${CFLAGS/-fno-plt/}" -# CXXFLAGS="${CXXFLAGS/-fno-plt/}" + CFLAGS="${CFLAGS/-fno-plt/}" + CXXFLAGS="${CXXFLAGS/-fno-plt/}" -# export RUSTFLAGS+=" -Cdebuginfo=0 -Clto=off" -# export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" -# export CFLAGS -# export CXXFLAGS + export RUSTFLAGS+=" -Cdebuginfo=0 -Clto=off" + export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" ;; x86_64) - # clang-{9,10,11} -> error: unknown argument: '-fvar-tracking-assignments' - CFLAGS="${CFLAGS/-fvar-tracking-assignments/}" - CXXFLAGS="${CXXFLAGS/-fvar-tracking-assignments/}" - # TODO: this may only be needed for v78 # -fno-plt with cross-LTO causes obscure LLVM errors # LLVM ERROR: Function Import: link error CFLAGS="${CFLAGS/-fno-plt/}" CXXFLAGS="${CXXFLAGS/-fno-plt/}" - export CFLAGS - export CXXFLAGS ;; *) echo "no [ARCH-SPECIFIC BUILD ENV] for arch: ${CARCH}" ; return 1 ; ;; esac + export CFLAGS + export CXXFLAGS ## [ARCH-SPECIFIC BUILD CONFIG] ## @@ -282,7 +284,7 @@ build() { ;; i686) # avoid excessive debug symbols in rust leading to out-of-memory situations -# sed -i "s/debug_info = '\''2'\''/debug_info = '\''0'\''/" build/moz.configure/toolchain.configure + sed -i "s/debug_info = '\''2'\''/debug_info = '\''0'\''/" build/moz.configure/toolchain.configure ;; x86_64) ;; @@ -290,6 +292,9 @@ build() { ;; esac + + ## PGO build ## + if (( $_should_skip_pgo )) then # skipping "3-tier PGO" "instrumented browser", to avoid OOM problems; diff --git a/libre/icecat/rust-static-disable-network-test-on-static-libraries.patch b/libre/icecat/rust-static-disable-network-test-on-static-libraries.patch new file mode 100644 index 000000000..08915653a --- /dev/null +++ b/libre/icecat/rust-static-disable-network-test-on-static-libraries.patch @@ -0,0 +1,27 @@ +--- config/makefiles/rust.mk ++++ config/makefiles/rust.mk +@@ -304,15 +304,15 @@ + # the chance of proxy bypasses originating from rust code. + # The check only works when rust code is built with -Clto. + # Sanitizers and sancov also fail because compiler-rt hooks network functions. +-ifndef MOZ_PROFILE_GENERATE +-ifeq ($(OS_ARCH), Linux) +-ifeq (,$(rustflags_sancov)$(MOZ_ASAN)$(MOZ_TSAN)$(MOZ_UBSAN)) +-ifneq (,$(filter -Clto,$(cargo_rustc_flags))) +- $(call py_action,check_binary,--target --networking $@) +-endif +-endif +-endif +-endif ++#ifndef MOZ_PROFILE_GENERATE ++#ifeq ($(OS_ARCH), Linux) ++#ifeq (,$(rustflags_sancov)$(MOZ_ASAN)$(MOZ_TSAN)$(MOZ_UBSAN)) ++#ifneq (,$(filter -Clto,$(cargo_rustc_flags))) ++# $(call py_action,check_binary,--target --networking $@) ++#endif ++#endif ++#endif ++#endif + + force-cargo-library-check: + $(call CARGO_CHECK) --lib $(cargo_target_flag) $(rust_features_flag) |