aboutsummaryrefslogtreecommitdiffstats
path: root/community/firefox
diff options
context:
space:
mode:
Diffstat (limited to 'community/firefox')
-rw-r--r--community/firefox/APKBUILD678
-rw-r--r--community/firefox/allow-custom-rust-vendor.patch564
-rw-r--r--community/firefox/avoid-redefinition.patch15
-rw-r--r--community/firefox/disable-moz-stackwalk.patch32
-rw-r--r--community/firefox/disable-neon-in-aom.patch41
-rw-r--r--community/firefox/distribution.ini8
-rw-r--r--community/firefox/fd6847c9416f9eebde636e21d794d25d1be8791d.patch37
-rw-r--r--community/firefox/firefox-safe.desktop11
-rw-r--r--community/firefox/firefox.desktop373
-rw-r--r--community/firefox/fix-fortify-system-wrappers.patch18
-rw-r--r--community/firefox/fix-tools.patch18
-rw-r--r--community/firefox/fix-webrtc-glibcisms.patch24
-rw-r--r--community/firefox/force-can-use-pack-relative-relocs.patch11
-rw-r--r--community/firefox/icu74.patch38
-rw-r--r--community/firefox/lfs64.patch35
-rw-r--r--community/firefox/mallinfo.patch20
-rw-r--r--community/firefox/mozilla-location.keys1
-rw-r--r--community/firefox/no-ccache-stats.patch13
-rw-r--r--community/firefox/ppc-musttail.patch30
-rw-r--r--community/firefox/python-deps.patch10
-rw-r--r--community/firefox/riscv64-no-lto.patch16
-rw-r--r--community/firefox/rust-lto-thin.patch12
-rw-r--r--community/firefox/sandbox-sched_setscheduler.patch23
-rw-r--r--community/firefox/sqlite-ppc.patch39
-rw-r--r--community/firefox/vendor-prefs.js19
25 files changed, 1118 insertions, 968 deletions
diff --git a/community/firefox/APKBUILD b/community/firefox/APKBUILD
index d473981f571..99acba5fbb8 100644
--- a/community/firefox/APKBUILD
+++ b/community/firefox/APKBUILD
@@ -1,37 +1,43 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Maintainer: Rasmus Thomsen <oss@cogitri.dev>
+# Contributor: Rasmus Thomsen <oss@cogitri.dev>
+# Maintainer: Patrycja Rosa <alpine@ptrcnull.me>
pkgname=firefox
-pkgver=84.0.2
-# Date of release, YY-MM-DD for metainfo file (see package())
-_releasedate=2021-01-06
+pkgver=125.0.1
+_releasedate=2024-04-02
pkgrel=0
pkgdesc="Firefox web browser"
url="https://www.firefox.com/"
-# Limited on:
-# s390x, mips, mips64: limited by rust and cargo
-# s390x: limited by pipewire
-# armhf: build failure on armhf due to wasm
-# ppc64le: Rust SIGSEGVs when compiling gkrust
-# armv7: Needs Rust nightly for WASM
-arch="all !s390x !armhf !mips !mips64 !ppc64le !armv7"
+# s390x blocked by lld
+# armhf: https://bugzilla.mozilla.org/show_bug.cgi?id=1680495
+# riscv64: vpx symbol is missing #15412
+arch="x86_64 armv7 aarch64 x86 ppc64le"
license="GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND MPL-2.0"
+# ffmpeg 6 -> 112
+depends="
+ ffmpeg-libavcodec
+ mesa-egl
+ mesa-gl
+ pciutils-libs
+ "
+_llvmver=17
makedepends="
alsa-lib-dev
- autoconf2.13
automake
bsd-compat-headers
cargo
- cbindgen>=0.14.1
- clang-dev
+ cbindgen
+ clang$_llvmver
+ clang$_llvmver-libclang
+ compiler-rt
+ dbus
dbus-glib-dev
- ffmpeg-dev
- gtk+2.0-dev
+ gettext
gtk+3.0-dev
hunspell-dev
- icu-dev>=64.2
+ icu-dev
libevent-dev
- libidl-dev
+ libffi-dev
libjpeg-turbo-dev
libnotify-dev
libogg-dev
@@ -39,58 +45,307 @@ makedepends="
libtool
libvorbis-dev
libvpx-dev
- libxt-dev
+ libwebp-dev
libxcomposite-dev
- llvm-dev
+ libxt-dev
+ lld
+ llvm$_llvmver-dev
+ m4
mesa-dev
+ mesa-dri-gallium
nasm
nodejs
nspr-dev
- nss-dev>=3.44.1
- nss-static
+ nss-dev
+ patchelf
+ pciutils
+ pipewire-dev
+ pulseaudio-dev
+ py3-zstandard
python3
+ scudo-malloc
sed
+ wasi-sdk
wireless-tools-dev
- yasm
+ xvfb-run
zip
- libffi-dev
- libwebp-dev
- pipewire-dev
- gettext
- pulseaudio-dev
"
-
-source="https://ftp.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
- stab.h
-
- fix-fortify-system-wrappers.patch
- fix-tools.patch
- mallinfo.patch
-
+subpackages="$pkgname-intl"
+case "$CARCH" in
+riscv64) ;;
+*) subpackages="$subpackages $pkgname-dbg" ;;
+esac
+source="$pkgname-$pkgver.tar.xz::https://ftp.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
disable-moz-stackwalk.patch
+ fix-fortify-system-wrappers.patch
fix-rust-target.patch
fix-webrtc-glibcisms.patch
- fd6847c9416f9eebde636e21d794d25d1be8791d.patch
- allow-custom-rust-vendor.patch
-
- firefox.desktop
- firefox-safe.desktop
- disable-neon-in-aom.patch
+ force-can-use-pack-relative-relocs.patch
+ icu74.patch
+ lfs64.patch
+ no-ccache-stats.patch
+ ppc-musttail.patch
+ python-deps.patch
+ rust-lto-thin.patch
+ riscv64-no-lto.patch
sandbox-fork.patch
- sandbox-sched_setscheduler.patch
sandbox-largefile.patch
+ sandbox-sched_setscheduler.patch
+ sqlite-ppc.patch
- avoid-redefinition.patch
- "
+ stab.h
-subpackages="$pkgname-npapi"
+ firefox.desktop
+ distribution.ini
+ mozilla-location.keys
+ vendor-prefs.js
+ "
+# tests are hard to run
+options="!check"
_mozappdir=/usr/lib/firefox
# help our shared-object scanner to find the libs
ldpath="$_mozappdir"
+sonameprefix="$pkgname:"
# secfixes:
+# 119.0-r0:
+# - CVE-2023-5721
+# - CVE-2023-5722
+# - CVE-2023-5723
+# - CVE-2023-5724
+# - CVE-2023-5725
+# - CVE-2023-5726
+# - CVE-2023-5727
+# - CVE-2023-5728
+# - CVE-2023-5729
+# - CVE-2023-5730
+# - CVE-2023-5731
+# 103.0-r0:
+# - CVE-2022-2505
+# - CVE-2022-36314
+# - CVE-2022-36315
+# - CVE-2022-36316
+# - CVE-2022-36317
+# - CVE-2022-36318
+# - CVE-2022-36319
+# - CVE-2022-36320
+# 102.0-r0:
+# - CVE-2022-2200
+# - CVE-2022-34468
+# - CVE-2022-34469
+# - CVE-2022-34470
+# - CVE-2022-34471
+# - CVE-2022-34472
+# - CVE-2022-34473
+# - CVE-2022-34474
+# - CVE-2022-34475
+# - CVE-2022-34476
+# - CVE-2022-34477
+# - CVE-2022-34478
+# - CVE-2022-34479
+# - CVE-2022-34480
+# - CVE-2022-34481
+# - CVE-2022-34482
+# - CVE-2022-34483
+# - CVE-2022-34484
+# - CVE-2022-34485
+# 101.0-r0:
+# - CVE-2022-1919
+# - CVE-2022-31736
+# - CVE-2022-31737
+# - CVE-2022-31738
+# - CVE-2022-31739
+# - CVE-2022-31740
+# - CVE-2022-31741
+# - CVE-2022-31742
+# - CVE-2022-31743
+# - CVE-2022-31744
+# - CVE-2022-31745
+# - CVE-2022-31747
+# - CVE-2022-31748
+# 100.0.2-r0:
+# - CVE-2022-1529
+# - CVE-2022-1802
+# 100.0-r0:
+# - CVE-2022-29909
+# - CVE-2022-29910
+# - CVE-2022-29911
+# - CVE-2022-29912
+# - CVE-2022-29914
+# - CVE-2022-29915
+# - CVE-2022-29916
+# - CVE-2022-29917
+# - CVE-2022-29918
+# 99.0-r0:
+# - CVE-2022-1097
+# - CVE-2022-24713
+# - CVE-2022-28281
+# - CVE-2022-28282
+# - CVE-2022-28283
+# - CVE-2022-28284
+# - CVE-2022-28285
+# - CVE-2022-28286
+# - CVE-2022-28287
+# - CVE-2022-28288
+# - CVE-2022-28289
+# 98.0-r0:
+# - CVE-2022-0843
+# - CVE-2022-26381
+# - CVE-2022-26382
+# - CVE-2022-26383
+# - CVE-2022-26384
+# - CVE-2022-26385
+# - CVE-2022-26387
+# 97.0.2-r0:
+# - CVE-2022-26485
+# - CVE-2022-26486
+# 97.0-r0:
+# - CVE-2021-4140
+# - CVE-2022-0511
+# - CVE-2022-22736
+# - CVE-2022-22737
+# - CVE-2022-22738
+# - CVE-2022-22739
+# - CVE-2022-22740
+# - CVE-2022-22741
+# - CVE-2022-22742
+# - CVE-2022-22743
+# - CVE-2022-22744
+# - CVE-2022-22745
+# - CVE-2022-22746
+# - CVE-2022-22747
+# - CVE-2022-22748
+# - CVE-2022-22749
+# - CVE-2022-22750
+# - CVE-2022-22751
+# - CVE-2022-22752
+# - CVE-2022-22753
+# - CVE-2022-22754
+# - CVE-2022-22755
+# - CVE-2022-22756
+# - CVE-2022-22757
+# - CVE-2022-22758
+# - CVE-2022-22759
+# - CVE-2022-22760
+# - CVE-2022-22761
+# - CVE-2022-22762
+# - CVE-2022-22764
+# 95.0-r0:
+# - CVE-2021-43536
+# - CVE-2021-43537
+# - CVE-2021-43538
+# - CVE-2021-43539
+# - CVE-2021-43540
+# - CVE-2021-43541
+# - CVE-2021-43542
+# - CVE-2021-43543
+# - CVE-2021-43544
+# - CVE-2021-43545
+# - CVE-2021-43546
+# 94.0-r0:
+# - CVE-2021-38503
+# - CVE-2021-38504
+# - CVE-2021-38505
+# - CVE-2021-38506
+# - CVE-2021-38507
+# - CVE-2021-38508
+# - CVE-2021-38509
+# - CVE-2021-38510
+# 93.0-r0:
+# - CVE-2021-32810
+# - CVE-2021-38496
+# - CVE-2021-38497
+# - CVE-2021-38498
+# - CVE-2021-38499
+# - CVE-2021-38500
+# - CVE-2021-38501
+# 92.0.1-r0:
+# - CVE-2021-29980
+# - CVE-2021-29981
+# - CVE-2021-29982
+# - CVE-2021-29983
+# - CVE-2021-29984
+# - CVE-2021-29985
+# - CVE-2021-29986
+# - CVE-2021-29987
+# - CVE-2021-29988
+# - CVE-2021-29989
+# - CVE-2021-29990
+# - CVE-2021-29991
+# - CVE-2021-29993
+# - CVE-2021-38491
+# - CVE-2021-38492
+# - CVE-2021-38493
+# - CVE-2021-38494
+# 90.0-r0:
+# - CVE-2021-29970
+# - CVE-2021-29972
+# - CVE-2021-29974
+# - CVE-2021-29975
+# - CVE-2021-29976
+# - CVE-2021-29977
+# - CVE-2021-30547
+# 89.0-r0:
+# - CVE-2021-29959
+# - CVE-2021-29960
+# - CVE-2021-29961
+# - CVE-2021-29962
+# - CVE-2021-29963
+# - CVE-2021-29965
+# - CVE-2021-29966
+# - CVE-2021-29967
+# 88.0.1-r0:
+# - CVE-2021-29952
+# 88.0-r0:
+# - CVE-2021-23994
+# - CVE-2021-23995
+# - CVE-2021-23996
+# - CVE-2021-23997
+# - CVE-2021-23998
+# - CVE-2021-23999
+# - CVE-2021-24000
+# - CVE-2021-24001
+# - CVE-2021-24002
+# - CVE-2021-29944
+# - CVE-2021-29945
+# - CVE-2021-29946
+# - CVE-2021-29947
+# 87.0-r0:
+# - CVE-2021-23968
+# - CVE-2021-23969
+# - CVE-2021-23970
+# - CVE-2021-23971
+# - CVE-2021-23972
+# - CVE-2021-23973
+# - CVE-2021-23974
+# - CVE-2021-23975
+# - CVE-2021-23976
+# - CVE-2021-23977
+# - CVE-2021-23978
+# - CVE-2021-23979
+# - CVE-2021-23981
+# - CVE-2021-23982
+# - CVE-2021-23983
+# - CVE-2021-23984
+# - CVE-2021-23985
+# - CVE-2021-23986
+# - CVE-2021-23987
+# - CVE-2021-23988
+# 85.0-r0:
+# - CVE-2021-23954
+# - CVE-2021-23955
+# - CVE-2021-23956
+# - CVE-2021-23957
+# - CVE-2021-23958
+# - CVE-2021-23959
+# - CVE-2021-23960
+# - CVE-2021-23961
+# - CVE-2021-23962
+# - CVE-2021-23963
+# - CVE-2021-23964
+# - CVE-2021-23965
# 84.0.2-r0:
# - CVE-2020-16044
# 84.0.1-r0:
@@ -262,160 +517,261 @@ prepare() {
default_prepare
cp "$srcdir"/stab.h toolkit/crashreporter/google-breakpad/src/
+ export CFLAGS="${CFLAGS/-fstack-clash-protection/} -g0 -O2"
+ export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection/} -g0 -O2 -Wno-deprecated-builtins -Wno-deprecated-declarations"
+
_clear_vendor_checksums audio_thread_priority
- _clear_vendor_checksums target-lexicon-0.9.0
+
+ base64 -d "$srcdir"/mozilla-location.keys > "$builddir"/mozilla-api-key
+
+ cat > base-mozconfig <<-EOF
+ # disable unwanted things
+ ac_add_options --disable-bootstrap
+ ac_add_options --disable-cargo-incremental
+ ac_add_options --disable-debug
+ ac_add_options --disable-debug-symbols
+ ac_add_options --disable-install-strip
+ ac_add_options --disable-jemalloc
+ ac_add_options --disable-strip
+ ac_add_options --disable-tests
+ ac_add_options --disable-updater
+
+ # features
+ ac_add_options --enable-alsa
+ ac_add_options --enable-dbus
+ ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
+ ac_add_options --enable-ffmpeg
+ ac_add_options --enable-hardening
+ ac_add_options --enable-linker=lld
+ ac_add_options --enable-necko-wifi
+ ac_add_options --enable-official-branding
+ ac_add_options --enable-optimize="$CFLAGS"
+ ac_add_options --enable-pulseaudio
+ ac_add_options --enable-release
+ ac_add_options --enable-update-channel=release
+
+ # system libs
+ ac_add_options --enable-system-pixman
+ ac_add_options --with-system-ffi
+ ac_add_options --with-system-icu
+ ac_add_options --with-system-jpeg
+ ac_add_options --with-system-libevent
+ ac_add_options --with-system-libvpx
+ ac_add_options --with-system-nspr
+ ac_add_options --with-system-nss
+ ac_add_options --with-system-png
+ ac_add_options --with-system-webp
+ ac_add_options --with-system-zlib
+
+ # misc
+ ac_add_options --allow-addon-sideload
+ ac_add_options --prefix=/usr
+ ac_add_options --with-distribution-id=org.alpinelinux
+ ac_add_options --with-libclang-path=/usr/lib
+ ac_add_options --with-unsigned-addon-scopes=app,system
+ ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
+ ac_add_options --host=$CHOST
+ ac_add_options --target=$CTARGET
+
+ # objdir
+ mk_add_options MOZ_OBJDIR="$builddir/obj"
+
+ mk_add_options RUSTFLAGS="$RUSTFLAGS"
+
+ # keys
+ # these are for alpine linux use only
+ ac_add_options --with-mozilla-api-keyfile="$builddir/mozilla-api-key"
+ EOF
+
+ case "$CARCH" in
+ x86|armv7)
+ # x86: https://github.com/rust-lang/libc/issues/3476
+ # armv7: error: unknown type name 'fpregset_t'
+ echo "ac_add_options --disable-crashreporter" >> base-mozconfig
+ ;;
+ esac
}
build() {
- mkdir -p "$builddir"/objdir
- cd "$builddir"/objdir
+ export MOZ_BUILD_DATE="$(date ${SOURCE_DATE_EPOCH:+ -d@${SOURCE_DATE_EPOCH}} "+%Y%m%d%H%M%S")"
+
+ # for lto
+ ulimit -n 4096
+
+ # can't be set here and fail
+ unset RUSTFLAGS
+
+ local thinlto_jobs=${JOBS:-1}
+ local link_threads=${JOBS:-1}
+
+ case "$CARCH" in
+ # on this platform, lld seems to not utilise >1 threads for thinlto for some reason.
+ # at the same time, having more than 8 also crashes lld for firefox buildsystems (why?).
+ aarch64)
+ if [ $thinlto_jobs -gt 8 ]; then
+ thinlto_jobs=8
+ fi
+ ;;
+ esac
+
+ case "$CARCH" in
+ arm*|x86)
+ link_threads=1
+ ;;
+ esac
+
+ export LDFLAGS="$LDFLAGS -Wl,--thinlto-jobs=$thinlto_jobs -Wl,--threads=$link_threads"
export SHELL=/bin/sh
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1
export USE_SHORT_LIBNAME=1
- export MACH_USE_SYSTEM_PYTHON=1
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
+ export MOZ_APP_REMOTINGNAME=firefox
+ export MOZBUILD_STATE_PATH="$srcdir"/mozbuild
+ # disable desktop notifications
+ export MOZ_NOSPAM=1
# Find our triplet JSON
export RUST_TARGET="$CTARGET"
+ # has to be same version or older than lld
+ export CC="clang-$_llvmver"
+ export CXX="clang++-$_llvmver"
+
# set rpath so linker finds the libs
export LDFLAGS="$LDFLAGS -Wl,-rpath,$_mozappdir"
- case "$CARCH" in
- arm*|x86*)
- # disable-elf-hack: exists only on arm, x86, x86_64
- _arch_config="--disable-elf-hack"
- ;;
- esac
+ # let firefox do this itself.
+ unset CARGO_PROFILE_RELEASE_OPT_LEVEL
+ unset CARGO_PROFILE_RELEASE_LTO
- # FF doesn't have SIMD available on these arches.
case "$CARCH" in
- armhf|armv7)
- _rust_simd="--disable-rust-simd"
- _low_mem_flags="--disable-debug-symbols --disable-debug"
- export RUSTFLAGS="$RUSTFLAGS -C debuginfo=0"
- ;;
- x86)
- _low_mem_flags="--disable-debug-symbols --disable-debug"
- export RUSTFLAGS="$RUSTFLAGS -C debuginfo=0"
- ;;
- *) _rust_simd="--enable-rust-simd" ;;
- esac
+ aarch64|x86_64|ppc64le)
+ msg "building instrumented firefox"
+ cat > .mozconfig base-mozconfig - <<-EOF
+ ac_add_options --enable-profile-generate=cross
+ EOF
+ ./mach build
+ ./mach package
- ../mach configure \
- --prefix=/usr \
- $_arch_config \
- $_low_mem_flags \
- $_rust_simd \
- \
- --disable-crashreporter \
- --disable-gold \
- --disable-install-strip \
- --disable-jemalloc \
- --disable-profiling \
- --disable-strip \
- --disable-tests \
- --disable-updater \
- \
- --enable-alsa \
- --enable-cdp \
- --enable-dbus \
- --enable-default-toolkit=cairo-gtk3-wayland \
- --enable-ffmpeg \
- --enable-hardening \
- --enable-necko-wifi \
- --enable-official-branding \
- --enable-optimize="$CFLAGS -O2" \
- --enable-pulseaudio \
- --enable-smoosh \
- --enable-system-ffi \
- --enable-system-pixman \
- \
- --with-system-ffi \
- --with-system-icu \
- --with-system-jpeg \
- --with-system-libevent \
- --with-system-libvpx \
- --with-system-nspr \
- --with-system-nss \
- --with-system-pixman \
- --with-system-png \
- --with-system-webp \
- --with-system-zlib \
- --with-clang-path=/usr/bin/clang \
- --with-libclang-path=/usr/lib
- ../mach build
-}
+ msg "profiling firefox"
-package() {
- cd "$builddir"/objdir
+ LLVM_PROFDATA=llvm-profdata \
+ JARLOG_FILE="$PWD"/jarlog \
+ GDK_BACKEND=x11 \
+ LD_LIBRARY_PATH="$PWD"/obj/dist/firefox \
+ XDG_RUNTIME_DIR="$(mktemp -d "$builddir/pgo-runtime-XXXXXX")" \
+ MOZ_ENABLE_WAYLAND=0 \
+ xvfb-run -a -s "-screen 0 1920x1080x24 -nolisten local" \
+ dbus-run-session -- \
+ ./mach python build/pgo/profileserver.py
+
+ test -s merged.profdata
+ test -s jarlog
- DESTDIR="$pkgdir" MOZ_MAKE_FLAGS="$MAKEOPTS" ../mach install
+ ./mach clobber
- install -m755 -d "$pkgdir"/usr/share/applications
- install -m755 -d "$pkgdir"/usr/share/pixmaps
+ msg "building optimised firefox"
+ cat > .mozconfig base-mozconfig - <<-EOF
+ ac_add_options --enable-lto=cross
+ ac_add_options --enable-profile-use=cross
+ ac_add_options --with-pgo-profile-path="$PWD"/merged.profdata
+ ac_add_options --with-pgo-jarlog="$PWD"/jarlog
+ EOF
+ ./mach build
+ ;;
+ armv7|x86|riscv64)
+ # others: no pgo here as it uses too much memory/broken on riscv
+ msg "building regular firefox"
+ cat > .mozconfig base-mozconfig - <<-EOF
+ ac_add_options --disable-profiling
+ EOF
+ ./mach build
+ ;;
+ *)
+ msg "implement build for $CARCH"
+ exit 1
+ esac
+}
+
+package() {
+ DESTDIR="$pkgdir" ./mach install
local _png
- for _png in ../browser/branding/official/default*.png; do
+ for _png in ./browser/branding/official/default*.png; do
local i=${_png%.png}
i=${i##*/default}
- install -D -m644 "$_png" "$pkgdir"/usr/share/icons/hicolor/"$i"x"$i"/apps/firefox.png
+ install -d "$pkgdir"/usr/share/icons/hicolor/"$i"x"$i"/apps/
+ ln -s "$_mozappdir"/browser/chrome/icons/default/default"$i".png \
+ "$pkgdir"/usr/share/icons/hicolor/"$i"x"$i"/apps/firefox.png
done
- install -m644 "$builddir"/browser/branding/official/default48.png \
- "$pkgdir"/usr/share/pixmaps/firefox.png
- install -m644 "$srcdir"/firefox.desktop "$pkgdir"/usr/share/applications/org.mozilla.firefox.desktop
- install -m644 "$srcdir"/firefox-safe.desktop "$pkgdir"/usr/share/applications/org.mozilla.firefox-safe.desktop
-
- # Add StartupWMClass=firefox on the .desktop files so Desktop Environments
- # correctly associate the window with their icon, the correct fix is to have
- # firefox sets its own AppID but this will work for the meantime
- # See: https://bugzilla.mozilla.org/show_bug.cgi?id=1607399
- echo "StartupWMClass=firefox" >> "$pkgdir"/usr/share/applications/org.mozilla.firefox.desktop
- echo "StartupWMClass=firefox" >> "$pkgdir"/usr/share/applications/org.mozilla.firefox-safe.desktop
+ case "$CARCH" in
+ x86|arm*) ;;
+ *) patchelf --add-needed libscudo.so "$pkgdir"/usr/lib/firefox/firefox ;;
+ esac
- # install our vendor prefs
- install -d "$pkgdir"/$_mozappdir/browser/defaults/preferences
+ install -Dm644 browser/branding/official/content/about-logo.png \
+ "$pkgdir"/usr/share/icons/hicolor/192x192/apps/$pkgname.png
+ install -Dm644 browser/branding/official/content/about-logo@2x.png \
+ "$pkgdir"/usr/share/icons/hicolor/384x384/apps/$pkgname.png
+ install -Dm644 browser/branding/official/content/about-logo.svg \
+ "$pkgdir"/usr/share/icons/hicolor/scalable/apps/$pkgname.svg
- cat >> "$pkgdir"/$_mozappdir/browser/defaults/preferences/firefox-branding.js <<- EOF
- // Use LANG environment variable to choose locale
- pref("intl.locale.requested", "");
+ install -Dm644 "$srcdir"/firefox.desktop \
+ "$pkgdir"/usr/share/applications/firefox.desktop
- // Disable default browser checking.
- pref("browser.shell.checkDefaultBrowser", false);
+ install -Dm644 "$srcdir"/distribution.ini \
+ "$pkgdir"/$_mozappdir/distribution/distribution.ini
- // Don't disable our bundled extensions in the application directory
- pref("extensions.autoDisableScopes", 11);
- pref("extensions.shownSelectionUI", true);
- EOF
+ # install our vendor prefs
+ install -Dm644 "$srcdir"/vendor-prefs.js \
+ "$pkgdir"/$_mozappdir/browser/defaults/preferences/vendor.js
# Generate appdata file
- mkdir "$pkgdir"/usr/share/metainfo/
+ mkdir -p "$pkgdir"/usr/share/metainfo/
export VERSION="$pkgver"
export DATE="$_releasedate"
- cat "$builddir"/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in | envsubst > "$pkgdir"/usr/share/metainfo/org.mozilla.firefox.appdata.xml
+ envsubst < "$builddir"/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in > "$pkgdir"/usr/share/metainfo/org.mozilla.firefox.appdata.xml
+
+ # Replace duplicate binary with wrapper
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
+ install -Dm755 /dev/stdin "$pkgdir"/usr/bin/firefox <<- EOF
+ #!/bin/sh
+ exec $_mozappdir/firefox "\$@"
+ EOF
+ rm "$pkgdir"/$_mozappdir/firefox-bin
+ ln -sfv /usr/bin/firefox "$pkgdir"/$_mozappdir/firefox-bin
}
-npapi() {
- pkgdesc="$pkgdesc: GTK+ 2 support for NPAPI plugins"
- install_if="adobe-flashplayer"
- amove usr/lib/firefox/gtk2
+intl() {
+ pkgdesc="$pkgname - International ICU data"
+ depends="icu-data-full"
+ install_if="$pkgname=$pkgver-r$pkgrel icu"
+ mkdir -p "$subpkgdir"
}
-sha512sums="3fd4c9a5ec2409f23507b38c809e71a35aa674779dc5a7a2e3ff82841e0b65ead29d38ac4d5b17f7108479ed7338b3d2b40cbcfa9c51e01696634166d92edf99 firefox-84.0.2.source.tar.xz
-0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h
-2f4f15974d52de4bb273b62a332d13620945d284bbc6fe6bd0a1f58ff7388443bc1d3bf9c82cc31a8527aad92b0cd3a1bc41d0af5e1800e0dcbd7033e58ffd71 fix-fortify-system-wrappers.patch
-4510fb92653d0fdcfbc6d30e18087c0d22d4acd5eb53be7d0a333abe087a9e0bf9e58e56bafe96e1e1b28ebd1fd33b8926dbb70c221007e335b33d1468755c66 fix-tools.patch
-a4a3e062661bda64d502d426c480ac9645345860118de9df9ffe6e0597738c70c11e5cdef2d4fd12c5e2ee30a09310159230524655a419a4f7e4eeeb0f3c06b0 mallinfo.patch
-454ea3263cabce099accbdc47aaf83be26a19f8b5a4568c01a7ef0384601cf8315efd86cd917f9c8bf419c2c845db89a905f3ff9a8eb0c8e41042e93aa96a85c disable-moz-stackwalk.patch
+sha512sums="
+6f2f336de8b0ec9cb19ba20c909407b7b88c0319ee3b2f1f3429133516b0c45b4c7846f287985a0cdb9f34acc7d5378ed14fb48e26bef113c8ac360501a30c4d firefox-125.0.1.tar.xz
+eb49b791280a8d765e6b056816ad6d7ec20a3b13723ebe648a8ecd2c086a5bc83277a3b4c127a470e7bb7105cfa4ed7611c19ac683545140190cafaa880ad515 disable-moz-stackwalk.patch
+19eea840aa9c1c21e7bd1f832ec078989fe6f08fca40baa271be7e74f1cffeb5ab8d3218a93e664b8d90a41506dede524e2a5174cd47580866109bc6711ea969 fix-fortify-system-wrappers.patch
cd68b89e29e5f6379fbd5679db27b9a5ef70ea65e51c0d0a8137e1f1fd210e35a8cfb047798e9549bc7275606d7ec5c8d8af1335d29da4699db7acd8bc7ff556 fix-rust-target.patch
-47c2c2428c3598a42f6241705179642b3378a86ace39c8c3cbef4954e6d220b42e6c76f3d71731d65f67ce2c8597259122ac44bbd45e20993bb8bc70c0c8a010 fix-webrtc-glibcisms.patch
-60845dcb034b2c4459c30f7d5f25c8176cf42df794e2cc0e86c3e2abb6541c24b962f3a16ca70a288d4d6f377b68d00b2904b22463108559612053d835d9bff1 fd6847c9416f9eebde636e21d794d25d1be8791d.patch
-4e584621145cf8add069c6dac18e805b3274a1ee402d84e924df2341f7d3c5be261a93ef51283bacbd606f47fbdc628c4323ecc31efc5b403b8d224b18dc278f allow-custom-rust-vendor.patch
-f3b7c3e804ce04731012a46cb9e9a6b0769e3772aef9c0a4a8c7520b030fdf6cd703d5e9ff49275f14b7d738fe82a0a4fde3bc3219dff7225d5db0e274987454 firefox.desktop
-5dcb6288d0444a8a471d669bbaf61cdb1433663eff38b72ee5e980843f5fc07d0d60c91627a2c1159215d0ad77ae3f115dcc5fdfe87e64ca704b641aceaa44ed firefox-safe.desktop
-f963fcdba7307a0b1712dfb95ceba4ab49f449f60e550bb69d15d50272e6df9add90862251ee561e4ea5fd171a2703552ffa7aade92996f5f0b3e577f1544a6d disable-neon-in-aom.patch
+305c874fdea3096e9c4c6aa6520ac64bb1c347c4b59db8360096646593fe684c3b5377874d91cecd33d56d1410b4714fbdea2b514923723ecbeff79d51265d9b fix-webrtc-glibcisms.patch
+b7a2beef126569d71242198f2503bb6a32acd1ea89080ef7bed6ba0f0d10819282c2c346c6f729d81cd90e328e607b88acaac8785ed057cc8cb562e315890334 force-can-use-pack-relative-relocs.patch
+afabea91b328c5a68eaa20f9099ac7b2d0e7f2423e816b05ed168bdd326a5684fa02de08bf05c6033e9b888f02775d1b0443a00329b7a632ee399122a391c13a icu74.patch
+5fa9382c692e4bd6a2634308f24a6526fd12a60a2563d2090056d43a60505df3ec9881bbf54562e69394467529b3b0dc45955afca46ed329af03cea074fff070 lfs64.patch
+c0437a6753f3f350968fa12d250efdfe1bea77baf0e4c06b072b5cc9e78c774dbf4506bc536337030d349fb3ba4460097b75b0c7c5b8fb2d39d8b0a392948936 no-ccache-stats.patch
+2d8dff86212d6d2a904cbb5a5a1d6c17b89adc929fc6a3f4c6cb669f5e83ecddff5a799225319ba445a187b04d111251af75dd3ce8a039164bc14d2a432a2a04 ppc-musttail.patch
+4de65266f5fc1c5bf1d7cd00a0e4728a1ec96b7680b5ea72d6e9ed463b7a0bba11792b3411d25ef1e26f62408eb7f8b06dc62209dbb0454c779d8858d8d59725 python-deps.patch
+1c6918dd6655d3a1251bfd4af2e1c561cbb00d540a883b4c1ebf7f5de530d754d9ac07b4b5f56cdab6c511d25c8910ec94043f5733e97501a67abffe1bafaeb1 rust-lto-thin.patch
+b12dbff6513ac8c231d91c257a9accecc034d9ea9c31d99ca0454334ccf80fe7b50d6a356182dc46a9f25064366ea9a177f463cb2544b1cf5368ee6bd71bc095 riscv64-no-lto.patch
2518f2fc75b5db30058e0735f47d60fdf1e7adfaeee4b33fb2afb1bd9a616ce943fd88f4404d0802d4083703f4acf1d5ad42377218d025bc768807fbaf7e1609 sandbox-fork.patch
-db26757b2ebf9f567962e32294b4ae48b3a5d0378a7589dfe650fe3a179ff58befbab5082981c68e1c25fb9e56b2db1e4e510d4bca17c3e3aedbf9a2f21806eb sandbox-sched_setscheduler.patch
b7d0a6126bdf6c0569f80aabf5b37ed2c7a35712eb8a0404a2d85381552f5555d4f97d213ea26cec6a45dc2785f22439376ed5f8e78b4fd664ef0223307b333e sandbox-largefile.patch
-b1cb2db3122634f66d2bae7066e76f2dcd455c464e021db4de3b0a08314df95cb667846081682db549dd2af8a00831cabe44a2420c66cdfb5e3b5fa7e6bd21d3 avoid-redefinition.patch"
+f8c3555ef6207933cbffbf4fc101a9b4c0d2990c0063162f0f0bde70ef0b46f86bfac42e7110695183424a87948de593f3927b2d8509ede3e4fc7bd8a1fad1ce sandbox-sched_setscheduler.patch
+67bc0be3da973e6859256bf9be4df7100837430e6076fc0bd623f504c35e02e6c191e9c5a3a1d202e5ad4d89f874f254a09e164e39c7bfd97bbc8d4c8d0632a5 sqlite-ppc.patch
+0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h
+333b9df0c8a7693601245dac13522c9e90632f490b2fe1b852bf85fbd033c111a82fec3cfc302cfdea62d591c51042ae69c2c33a5668afacca11ea1f215188bc firefox.desktop
+9869ef092609af4caed6aa27f3de6ac49b91ef993ccbfd8a2080465def442d3b02745fbe3c71d362f07c3075d46f388a023c0ad8ebb5f6ffd37e601d997b74f7 distribution.ini
+382510375b1a2fa79be0ab79e3391a021ae2c022429ffbaa7e7a69166f99bb56d01e59a1b10688592a29238f21c9d6977672bd77f9fae439b66bdfe0c55ddb15 mozilla-location.keys
+0423804a3c7c075de128b624110c58994ec8e10819fc09b74fdb4cd5aa6c0365cdafc77770af42f4ce856ad2e8e325a918344c57fb015a680b7e54555b94c6ed vendor-prefs.js
+"
diff --git a/community/firefox/allow-custom-rust-vendor.patch b/community/firefox/allow-custom-rust-vendor.patch
deleted file mode 100644
index 218650f4111..00000000000
--- a/community/firefox/allow-custom-rust-vendor.patch
+++ /dev/null
@@ -1,564 +0,0 @@
-From a5a3db2d32ff1d359aef5ec586b91164570c1685 Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Tue, 5 Nov 2019 09:56:15 -0800
-Subject: [PATCH 1/7] Support custom vendor strings.
-
-Add support for custom vendors, as in "x86_64-gentoo-linux-musl".
-
-Fixes #33.
----
- src/targets.rs | 108 ++++++++++++++++++++++++++++++++++++++++++++++++-
- src/triple.rs | 4 --
- 2 files changed, 106 insertions(+), 6 deletions(-)
-
-diff --git a/src/targets.rs b/src/targets.rs
-index 6ae570e..90b2736 100644
---- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-@@ -1,6 +1,8 @@
- // This file defines all the identifier enums and target-aware logic.
-
- use crate::triple::{Endianness, PointerWidth, Triple};
-+use alloc::boxed::Box;
-+use alloc::string::String;
- use core::fmt;
- use core::str::FromStr;
-
-@@ -292,7 +294,7 @@ impl Aarch64Architecture {
-
- /// The "vendor" field, which in practice is little more than an arbitrary
- /// modifier.
--#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
-+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
- #[allow(missing_docs)]
- pub enum Vendor {
- Unknown,
-@@ -306,6 +308,15 @@ pub enum Vendor {
- Sun,
- Uwp,
- Wrs,
-+
-+ /// A custom vendor. "Custom" in this context means that the vendor is
-+ /// not specifically recognized by upstream Autotools, LLVM, Rust, or other
-+ /// relevant authorities on triple naming. It's useful for people building
-+ /// and using locally patched toolchains.
-+ ///
-+ /// Outside of such patched environments, users of `target-lexicon` should
-+ /// treat `Custom` the same as `Unknown` and ignore the string.
-+ Custom(Box<String>),
- }
-
- /// The "operating system" field, which sometimes implies an environment, and
-@@ -717,6 +728,7 @@ impl fmt::Display for Vendor {
- Vendor::Sun => "sun",
- Vendor::Uwp => "uwp",
- Vendor::Wrs => "wrs",
-+ Vendor::Custom(ref name) => name,
- };
- f.write_str(s)
- }
-@@ -738,7 +750,46 @@ impl FromStr for Vendor {
- "sun" => Vendor::Sun,
- "uwp" => Vendor::Uwp,
- "wrs" => Vendor::Wrs,
-- _ => return Err(()),
-+ custom => {
-+ use alloc::borrow::ToOwned;
-+
-+ // A custom vendor. Since triple syntax is so loosely defined,
-+ // be as conservative as we can to avoid potential ambiguities.
-+ // We err on the side of being too strict here, as we can
-+ // always relax it if needed.
-+
-+ // Don't allow empty string names.
-+ if custom.is_empty() {
-+ return Err(());
-+ }
-+
-+ // Don't allow any other recognized name as a custom vendor,
-+ // since vendors can be omitted in some contexts.
-+ if Architecture::from_str(custom).is_ok()
-+ || OperatingSystem::from_str(custom).is_ok()
-+ || Environment::from_str(custom).is_ok()
-+ || BinaryFormat::from_str(custom).is_ok()
-+ {
-+ return Err(());
-+ }
-+
-+ // Require the first character to be an ascii lowercase.
-+ if !custom.chars().nth(0).unwrap().is_ascii_lowercase() {
-+ return Err(());
-+ }
-+
-+ // Restrict the set of characters permitted in a custom vendor.
-+ if custom
-+ .find(|c: char| {
-+ !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
-+ })
-+ .is_some()
-+ {
-+ return Err(());
-+ }
-+
-+ Vendor::Custom(Box::new(custom.to_owned()))
-+ }
- })
- }
- }
-@@ -1120,4 +1171,57 @@ mod tests {
- assert_eq!(t.environment, Environment::Eabihf);
- assert_eq!(t.binary_format, BinaryFormat::Elf);
- }
-+
-+ #[test]
-+ fn custom_vendors() {
-+ assert!(Triple::from_str("x86_64--linux").is_err());
-+ assert!(Triple::from_str("x86_64-42-linux").is_err());
-+ assert!(Triple::from_str("x86_64-__customvendor__-linux").is_err());
-+ assert!(Triple::from_str("x86_64-^-linux").is_err());
-+ assert!(Triple::from_str("x86_64- -linux").is_err());
-+ assert!(Triple::from_str("x86_64-CustomVendor-linux").is_err());
-+ assert!(Triple::from_str("x86_64-linux-linux").is_err());
-+ assert!(Triple::from_str("x86_64-x86_64-linux").is_err());
-+ assert!(Triple::from_str("x86_64-elf-linux").is_err());
-+ assert!(Triple::from_str("x86_64-gnu-linux").is_err());
-+ assert!(Triple::from_str("x86_64-linux-customvendor").is_err());
-+ assert!(Triple::from_str("customvendor").is_err());
-+ assert!(Triple::from_str("customvendor-x86_64").is_err());
-+ assert!(Triple::from_str("x86_64-").is_err());
-+ assert!(Triple::from_str("x86_64--").is_err());
-+
-+ let t = Triple::from_str("x86_64-customvendor-linux")
-+ .expect("can't parse target with custom vendor");
-+ assert_eq!(t.architecture, Architecture::X86_64);
-+ assert_eq!(
-+ t.vendor,
-+ Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
-+ );
-+ assert_eq!(t.operating_system, OperatingSystem::Linux);
-+ assert_eq!(t.environment, Environment::Unknown);
-+ assert_eq!(t.binary_format, BinaryFormat::Elf);
-+ assert_eq!(t.to_string(), "x86_64-customvendor-linux");
-+
-+ let t = Triple::from_str("x86_64-customvendor")
-+ .expect("can't parse target with custom vendor");
-+ assert_eq!(t.architecture, Architecture::X86_64);
-+ assert_eq!(
-+ t.vendor,
-+ Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
-+ );
-+ assert_eq!(t.operating_system, OperatingSystem::Unknown);
-+ assert_eq!(t.environment, Environment::Unknown);
-+ assert_eq!(t.binary_format, BinaryFormat::Unknown);
-+
-+ assert_eq!(
-+ Triple::from_str("unknown-foo"),
-+ Ok(Triple {
-+ architecture: Architecture::Unknown,
-+ vendor: Vendor::Custom(Box::new(String::from_str("foo").unwrap())),
-+ operating_system: OperatingSystem::Unknown,
-+ environment: Environment::Unknown,
-+ binary_format: BinaryFormat::Unknown,
-+ })
-+ );
-+ }
- }
-diff --git a/src/triple.rs b/src/triple.rs
-index 36dcd9a..1abda26 100644
---- a/third_party/rust/target-lexicon.0.9.0/src/triple.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/src/triple.rs
-@@ -322,10 +322,6 @@ mod tests {
- Triple::from_str("foo"),
- Err(ParseError::UnrecognizedArchitecture("foo".to_owned()))
- );
-- assert_eq!(
-- Triple::from_str("unknown-foo"),
-- Err(ParseError::UnrecognizedVendor("foo".to_owned()))
-- );
- assert_eq!(
- Triple::from_str("unknown-unknown-foo"),
- Err(ParseError::UnrecognizedOperatingSystem("foo".to_owned()))
-
-From 6f90d7274dce4e7f9bb120f6b36cf26881bde9a7 Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Tue, 5 Nov 2019 10:33:56 -0800
-Subject: [PATCH 2/7] Add more tests.
-
----
- src/targets.rs | 30 ++++++++++++++++++++++++++++--
- 1 file changed, 28 insertions(+), 2 deletions(-)
-
-diff --git a/src/targets.rs b/src/targets.rs
-index 90b2736..7d1f069 100644
---- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-@@ -1174,6 +1174,7 @@ mod tests {
-
- #[test]
- fn custom_vendors() {
-+ // Test various invalid cases.
- assert!(Triple::from_str("x86_64--linux").is_err());
- assert!(Triple::from_str("x86_64-42-linux").is_err());
- assert!(Triple::from_str("x86_64-__customvendor__-linux").is_err());
-@@ -1190,6 +1191,31 @@ mod tests {
- assert!(Triple::from_str("x86_64-").is_err());
- assert!(Triple::from_str("x86_64--").is_err());
-
-+ // Test various Unicode things.
-+ assert!(
-+ Triple::from_str("x86_64-𝓬𝓾𝓼𝓽𝓸𝓶𝓿𝓮𝓷𝓭𝓸𝓻-linux").is_err(),
-+ "unicode font hazard"
-+ );
-+ assert!(
-+ Triple::from_str("x86_64-ćúśtőḿvéńdőŕ-linux").is_err(),
-+ "diacritical mark stripping hazard"
-+ );
-+ assert!(
-+ Triple::from_str("x86_64-customvendοr-linux").is_err(),
-+ "homoglyph hazard"
-+ );
-+ assert!(Triple::from_str("x86_64-customvendor-linux").is_ok());
-+ assert!(
-+ Triple::from_str("x86_64-ffi-linux").is_err(),
-+ "normalization hazard"
-+ );
-+ assert!(Triple::from_str("x86_64-ffi-linux").is_ok());
-+ assert!(
-+ Triple::from_str("x86_64-custom‍vendor-linux").is_err(),
-+ "zero-width character hazard"
-+ );
-+
-+ // Test some valid cases.
- let t = Triple::from_str("x86_64-customvendor-linux")
- .expect("can't parse target with custom vendor");
- assert_eq!(t.architecture, Architecture::X86_64);
-@@ -1202,8 +1228,8 @@ mod tests {
- assert_eq!(t.binary_format, BinaryFormat::Elf);
- assert_eq!(t.to_string(), "x86_64-customvendor-linux");
-
-- let t = Triple::from_str("x86_64-customvendor")
-- .expect("can't parse target with custom vendor");
-+ let t =
-+ Triple::from_str("x86_64-customvendor").expect("can't parse target with custom vendor");
- assert_eq!(t.architecture, Architecture::X86_64);
- assert_eq!(
- t.vendor,
-
-From c0e318b3c1be2d1965579f07dd563fb9cc0c4eb1 Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Tue, 5 Nov 2019 12:56:31 -0800
-Subject: [PATCH 3/7] Use `.chars().any(...)` instead of
- `.find(...).is_some()`.
-
----
- src/targets.rs | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/src/targets.rs b/src/targets.rs
-index 7d1f069..1078dd3 100644
---- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-+++ b/third_party/rust/target-lexicon/src-0.9.0/targets.rs
-@@ -779,12 +779,9 @@ impl FromStr for Vendor {
- }
-
- // Restrict the set of characters permitted in a custom vendor.
-- if custom
-- .find(|c: char| {
-- !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
-- })
-- .is_some()
-- {
-+ if custom.chars().any(|c: char| {
-+ !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
-+ }) {
- return Err(());
- }
-
-
-From f319950528654c772193d9eb3bf40bc8df35fcae Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Thu, 7 Nov 2019 15:15:48 -0800
-Subject: [PATCH 4/7] Fix build.rs to generate the correct code to build
- Vendors.
-
----
- build.rs | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/build.rs b/build.rs
-index a0ba3b7..446f9e7 100644
---- a/third_party/rust/target-lexicon-0.9.0/build.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/build.rs
-@@ -32,6 +32,7 @@ mod parse_error {
- }
- }
-
-+use self::targets::Vendor;
- use self::triple::Triple;
-
- fn main() {
-@@ -60,7 +61,7 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
- " architecture: Architecture::{:?},",
- triple.architecture
- )?;
-- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?;
-+ writeln!(out, " vendor: {},", vendor_display(&triple.vendor))?;
- writeln!(
- out,
- " operating_system: OperatingSystem::{:?},",
-@@ -90,7 +91,7 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
- writeln!(out, "impl Vendor {{")?;
- writeln!(out, " /// Return the vendor for the current host.")?;
- writeln!(out, " pub const fn host() -> Self {{")?;
-- writeln!(out, " Vendor::{:?}", triple.vendor)?;
-+ writeln!(out, " {}", vendor_display(&triple.vendor))?;
- writeln!(out, " }}")?;
- writeln!(out, "}}")?;
- writeln!(out)?;
-@@ -160,3 +161,12 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
-
- Ok(())
- }
-+
-+fn vendor_display(vendor: &Vendor) -> String {
-+ match vendor {
-+ Vendor::Custom(custom) => {
-+ format!("Vendor::Custom(Box::new(String::from_str({:?})))", custom)
-+ }
-+ known => format!("Vendor::{:?}", known),
-+ }
-+}
-
-From e558f6934535be3b8ccc9a99a33e861cb7431dfe Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Fri, 8 Nov 2019 12:10:34 -0800
-Subject: [PATCH 5/7] Fix custom vendors in `const fn` contexts.
-
----
- build.rs | 15 +++++++++++----
- src/lib.rs | 4 ++--
- src/targets.rs | 51 ++++++++++++++++++++++++++++++++++++++++++--------
- 3 files changed, 56 insertions(+), 14 deletions(-)
-
-diff --git a/build.rs b/build.rs
-index 446f9e7..e88206e 100644
---- a/third_party/rust/target-lexicon-0.9.0/build.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/build.rs
-@@ -53,6 +53,8 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
- writeln!(out, "use crate::Aarch64Architecture::*;")?;
- writeln!(out, "#[allow(unused_imports)]")?;
- writeln!(out, "use crate::ArmArchitecture::*;")?;
-+ writeln!(out, "#[allow(unused_imports)]")?;
-+ writeln!(out, "use crate::CustomVendor;")?;
- writeln!(out)?;
- writeln!(out, "/// The `Triple` of the current host.")?;
- writeln!(out, "pub const HOST: Triple = Triple {{")?;
-@@ -139,7 +141,11 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
- " architecture: Architecture::{:?},",
- triple.architecture
- )?;
-- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?;
-+ writeln!(
-+ out,
-+ " vendor: {},",
-+ vendor_display(&triple.vendor)
-+ )?;
- writeln!(
- out,
- " operating_system: OperatingSystem::{:?},",
-@@ -164,9 +170,10 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
-
- fn vendor_display(vendor: &Vendor) -> String {
- match vendor {
-- Vendor::Custom(custom) => {
-- format!("Vendor::Custom(Box::new(String::from_str({:?})))", custom)
-- }
-+ Vendor::Custom(custom) => format!(
-+ "Vendor::Custom(CustomVendor::Static({:?}))",
-+ custom.as_str()
-+ ),
- known => format!("Vendor::{:?}", known),
- }
- }
-diff --git a/src/lib.rs b/src/lib.rs
-index 8d6da8d..70f6488 100644
---- a/third_party/rust/target-lexicon-0.9.0/src/lib.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/src/lib.rs
-@@ -28,7 +28,7 @@ mod triple;
- pub use self::host::HOST;
- pub use self::parse_error::ParseError;
- pub use self::targets::{
-- Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, Environment, OperatingSystem,
-- Vendor,
-+ Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, CustomVendor, Environment,
-+ OperatingSystem, Vendor,
- };
- pub use self::triple::{CallingConvention, Endianness, PointerWidth, Triple};
-diff --git a/src/targets.rs b/src/targets.rs
-index 1078dd3..7152020 100644
---- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-@@ -4,6 +4,7 @@ use crate::triple::{Endianness, PointerWidth, Triple};
- use alloc::boxed::Box;
- use alloc::string::String;
- use core::fmt;
-+use core::hash::{Hash, Hasher};
- use core::str::FromStr;
-
- /// The "architecture" field, which in some cases also specifies a specific
-@@ -292,6 +293,39 @@ impl Aarch64Architecture {
- }
- }
-
-+/// A string for a `Vendor::Custom` that can either be used in `const`
-+/// contexts or hold dynamic strings.
-+#[derive(Clone, Debug, Eq)]
-+pub enum CustomVendor {
-+ /// An owned `String`. This supports the general case.
-+ Owned(Box<String>),
-+ /// A static `str`, so that `CustomVendor` can be constructed in `const`
-+ /// contexts.
-+ Static(&'static str),
-+}
-+
-+impl CustomVendor {
-+ /// Extracts a string slice.
-+ pub fn as_str(&self) -> &str {
-+ match self {
-+ CustomVendor::Owned(s) => s,
-+ CustomVendor::Static(s) => s,
-+ }
-+ }
-+}
-+
-+impl PartialEq for CustomVendor {
-+ fn eq(&self, other: &Self) -> bool {
-+ self.as_str() == other.as_str()
-+ }
-+}
-+
-+impl Hash for CustomVendor {
-+ fn hash<H: Hasher>(&self, state: &mut H) {
-+ self.as_str().hash(state)
-+ }
-+}
-+
- /// The "vendor" field, which in practice is little more than an arbitrary
- /// modifier.
- #[derive(Clone, Debug, PartialEq, Eq, Hash)]
-@@ -316,7 +350,7 @@ pub enum Vendor {
- ///
- /// Outside of such patched environments, users of `target-lexicon` should
- /// treat `Custom` the same as `Unknown` and ignore the string.
-- Custom(Box<String>),
-+ Custom(CustomVendor),
- }
-
- /// The "operating system" field, which sometimes implies an environment, and
-@@ -728,7 +762,7 @@ impl fmt::Display for Vendor {
- Vendor::Sun => "sun",
- Vendor::Uwp => "uwp",
- Vendor::Wrs => "wrs",
-- Vendor::Custom(ref name) => name,
-+ Vendor::Custom(ref name) => name.as_str(),
- };
- f.write_str(s)
- }
-@@ -779,13 +813,14 @@ impl FromStr for Vendor {
- }
-
- // Restrict the set of characters permitted in a custom vendor.
-- if custom.chars().any(|c: char| {
-+ fn is_prohibited_char(c: char) -> bool {
- !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
-- }) {
-+ }
-+ if custom.chars().any(is_prohibited_char) {
- return Err(());
- }
-
-- Vendor::Custom(Box::new(custom.to_owned()))
-+ Vendor::Custom(CustomVendor::Owned(Box::new(custom.to_owned())))
- }
- })
- }
-@@ -1218,7 +1253,7 @@ mod tests {
- assert_eq!(t.architecture, Architecture::X86_64);
- assert_eq!(
- t.vendor,
-- Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
-+ Vendor::Custom(CustomVendor::Static("customvendor"))
- );
- assert_eq!(t.operating_system, OperatingSystem::Linux);
- assert_eq!(t.environment, Environment::Unknown);
-@@ -1230,7 +1265,7 @@ mod tests {
- assert_eq!(t.architecture, Architecture::X86_64);
- assert_eq!(
- t.vendor,
-- Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
-+ Vendor::Custom(CustomVendor::Static("customvendor"))
- );
- assert_eq!(t.operating_system, OperatingSystem::Unknown);
- assert_eq!(t.environment, Environment::Unknown);
-@@ -1240,7 +1275,7 @@ mod tests {
- Triple::from_str("unknown-foo"),
- Ok(Triple {
- architecture: Architecture::Unknown,
-- vendor: Vendor::Custom(Box::new(String::from_str("foo").unwrap())),
-+ vendor: Vendor::Custom(CustomVendor::Static("foo")),
- operating_system: OperatingSystem::Unknown,
- environment: Environment::Unknown,
- binary_format: BinaryFormat::Unknown,
-
-From bc4b444133b8a5e56602f7c77c10ef3f1e7a7c78 Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Mon, 18 Nov 2019 13:45:58 -0800
-Subject: [PATCH 6/7] Add a testcase with a BOM too, just in case.
-
----
- src/targets.rs | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/targets.rs b/src/targets.rs
-index 7152020..9a4d990 100644
---- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-@@ -1246,6 +1246,10 @@ mod tests {
- Triple::from_str("x86_64-custom‍vendor-linux").is_err(),
- "zero-width character hazard"
- );
-+ assert!(
-+ Triple::from_str("x86_64-customvendor-linux").is_err(),
-+ "BOM hazard"
-+ );
-
- // Test some valid cases.
- let t = Triple::from_str("x86_64-customvendor-linux")
-
-From 721fbbe1c9cfd3adc9aaf011c62d6a36078f4133 Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Mon, 18 Nov 2019 20:56:40 -0800
-Subject: [PATCH 7/7] Use an anonymous function instead of just a local
- function.
-
----
- src/targets.rs | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/src/targets.rs b/src/targets.rs
-index 9a4d990..eb5a088 100644
---- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
-@@ -813,10 +813,9 @@ impl FromStr for Vendor {
- }
-
- // Restrict the set of characters permitted in a custom vendor.
-- fn is_prohibited_char(c: char) -> bool {
-+ if custom.chars().any(|c: char| {
- !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
-- }
-- if custom.chars().any(is_prohibited_char) {
-+ }) {
- return Err(());
- }
-
diff --git a/community/firefox/avoid-redefinition.patch b/community/firefox/avoid-redefinition.patch
deleted file mode 100644
index af11c50384a..00000000000
--- a/community/firefox/avoid-redefinition.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Author: Rasmus Thomsen <oss@cogitri.dev>
-Reason: FF is mixing userspace net headers (net/if.h) and kernelspace ones
-(linux/if.h), leading to redefinitions. We need to include net/if.h before
-linux/if.h because linux/if.h has redifinition guards whereas net/if.h doesnt
-Upstream: No
---- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c.orig 2020-07-28 19:24:32.359751046 +0200
-+++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c 2020-07-28 19:24:37.856343751 +0200
-@@ -31,6 +31,7 @@
- */
-
- #if defined(LINUX)
-+#include <net/if.h>
- #include "addrs-netlink.h"
- #include <csi_platform.h>
- #include <assert.h>
diff --git a/community/firefox/disable-moz-stackwalk.patch b/community/firefox/disable-moz-stackwalk.patch
index b6bc756d2be..54990d799fc 100644
--- a/community/firefox/disable-moz-stackwalk.patch
+++ b/community/firefox/disable-moz-stackwalk.patch
@@ -1,18 +1,28 @@
+upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1882329
diff --git a/mozglue/misc/StackWalk.cpp b/mozglue/misc/StackWalk.cpp
-index 7d62921..adcfa44 100644
+index 2fefc5b..57c56e6 100644
--- a/mozglue/misc/StackWalk.cpp
+++ b/mozglue/misc/StackWalk.cpp
-@@ -33,13 +33,7 @@ using namespace mozilla;
- # define MOZ_STACKWALK_SUPPORTS_MACOSX 0
- #endif
+@@ -46,5 +46,12 @@ using namespace mozilla;
--#if (defined(linux) && \
-- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
++#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
++# define HAVE___LIBC_STACK_END 1
++#else
++# define HAVE___LIBC_STACK_END 0
++#endif
++
+ #if (defined(linux) && \
+ ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
- defined(HAVE__UNWIND_BACKTRACE)))
--# define MOZ_STACKWALK_SUPPORTS_LINUX 1
++ defined(HAVE__UNWIND_BACKTRACE)) && \
++ (HAVE___LIBC_STACK_END || ANDROID))
+ # define MOZ_STACKWALK_SUPPORTS_LINUX 1
+@@ -54,8 +61,2 @@ using namespace mozilla;
+
+-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
+-# define HAVE___LIBC_STACK_END 1
-#else
- # define MOZ_STACKWALK_SUPPORTS_LINUX 0
+-# define HAVE___LIBC_STACK_END 0
-#endif
-
- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
- # define HAVE___LIBC_STACK_END 1
+-
+ #if HAVE___LIBC_STACK_END
diff --git a/community/firefox/disable-neon-in-aom.patch b/community/firefox/disable-neon-in-aom.patch
deleted file mode 100644
index 01be79c047b..00000000000
--- a/community/firefox/disable-neon-in-aom.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Firefox (75) and AOM itself fail to build with NEON enabled. As such
-we should disable it for now.
-
-In file included from /home/buildozer/aports/community/firefox/src/firefox-75.0/third_party/aom/aom_dsp/arm/blend_a64_mask_neon.c:12:
-/home/buildozer/aports/community/firefox/src/firefox-75.0/third_party/aom/av1/common/arm/mem_neon.h: In function 'load_u8_8x8':
-/usr/lib/gcc/armv7-alpine-linux-musleabihf/9.3.0/include/arm_neon.h:10303:1: error: inlining failed in call to always_inline 'vld1_u8': target specific option mismatch
-10303 | vld1_u8 (const uint8_t * __a)
- | ^~~~~~~
---- a/media/libaom/moz.build 2020-04-09 08:20:14.608439591 +0200
-+++ b/media/libaom/moz.build 2020-04-09 08:20:21.801745246 +0200
-@@ -42,30 +42,6 @@
- ASFLAGS += [ '-I%s/media/libaom/config/linux/ia32/' % TOPSRCDIR ]
- LOCAL_INCLUDES += [ '/media/libaom/config/linux/ia32/' ]
- EXPORTS.aom += [ 'config/linux/ia32/config/aom_config.h' ]
--elif CONFIG['CPU_ARCH'] == 'arm':
-- EXPORTS.aom += files['ARM_EXPORTS']
-- ASFLAGS += [
-- '-I%s/media/libaom/config/linux/arm/' % TOPSRCDIR,
-- '-I%s/libaom' % OBJDIR,
-- ]
-- LOCAL_INCLUDES += [ '/media/libaom/config/linux/arm/' ]
-- EXPORTS.aom += [ 'config/linux/arm/config/aom_config.h' ]
--
-- SOURCES += files['ARM_SOURCES']
--
-- for f in SOURCES:
-- if f.endswith('neon.c'):
-- SOURCES[f].flags += CONFIG['VPX_ASFLAGS']
--
-- if CONFIG['OS_TARGET'] == 'Android':
-- # For cpu-features.h
-- LOCAL_INCLUDES += [
-- '%%%s/sources/android/cpufeatures' % CONFIG['ANDROID_NDK'],
-- ]
-- if CONFIG['CC_TYPE'] == 'clang':
-- ASFLAGS += [
-- '-no-integrated-as',
-- ]
- else:
- # Generic C-only configuration
- EXPORTS.aom += files['GENERIC_EXPORTS']
diff --git a/community/firefox/distribution.ini b/community/firefox/distribution.ini
new file mode 100644
index 00000000000..d8e6642d2d0
--- /dev/null
+++ b/community/firefox/distribution.ini
@@ -0,0 +1,8 @@
+[Global]
+id=alpinelinux
+version=1.0
+about=Mozilla Firefox for Alpine Linux
+
+[Preferences]
+app.distributor=alpinelinux
+app.distributor.channel=firefox
diff --git a/community/firefox/fd6847c9416f9eebde636e21d794d25d1be8791d.patch b/community/firefox/fd6847c9416f9eebde636e21d794d25d1be8791d.patch
deleted file mode 100644
index 1af68d93c62..00000000000
--- a/community/firefox/fd6847c9416f9eebde636e21d794d25d1be8791d.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-See https://bugzilla.mozilla.org/show_bug.cgi?id=1539739
-
-From fd6847c9416f9eebde636e21d794d25d1be8791d Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Sat, 1 Jun 2019 09:06:01 +0900
-Subject: [PATCH] Bug 1526653 - Include struct definitions for user_vfp and
- user_vfp_exc.
-
----
- js/src/wasm/WasmSignalHandlers.cpp | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
-index 636537f8478..383c380f04c 100644
---- a/js/src/wasm/WasmSignalHandlers.cpp
-+++ b/js/src/wasm/WasmSignalHandlers.cpp
-@@ -248,7 +248,16 @@ using mozilla::DebugOnly;
- #endif
-
- #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
--# include <sys/user.h>
-+struct user_vfp {
-+ unsigned long long fpregs[32];
-+ unsigned long fpscr;
-+};
-+
-+struct user_vfp_exc {
-+ unsigned long fpexc;
-+ unsigned long fpinst;
-+ unsigned long fpinst2;
-+};
- #endif
-
- #if defined(ANDROID)
---
-2.20.1
-
diff --git a/community/firefox/firefox-safe.desktop b/community/firefox/firefox-safe.desktop
deleted file mode 100644
index 1538fc67485..00000000000
--- a/community/firefox/firefox-safe.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Exec=firefox -safe-mode %u
-Icon=firefox
-Type=Application
-Terminal=false
-MultipleArgs=false
-Name=Firefox - Safe Mode
-GenericName=Web Browser - Safe Mode
-StartupNotify=false
-Categories=Network;WebBrowser;
diff --git a/community/firefox/firefox.desktop b/community/firefox/firefox.desktop
index d048ce46c32..d6898e9e435 100644
--- a/community/firefox/firefox.desktop
+++ b/community/firefox/firefox.desktop
@@ -1,81 +1,340 @@
[Desktop Entry]
-Exec=firefox %u
-Icon=firefox
-Type=Application
-Terminal=false
+Version=1.0
Name=Firefox
-Name[bn]=ফায়ারফক্স3
-Name[eo]=Fajrovulpo3
-Name[fi]=Firefox3
-Name[pa]=ਫਾਇਰਫੋਕਸ3
-Name[tg]=Рӯбоҳи оташин3
GenericName=Web Browser
-GenericName[af]=Web Blaaier
GenericName[ar]=متصفح ويب
-GenericName[az]=Veb Səyyahı
-GenericName[bg]=Браузър
-GenericName[bn]=ওয়েব ব্রাউজার
-GenericName[br]=Furcher ar Gwiad
-GenericName[bs]=WWW Preglednik
-GenericName[ca]=Fullejador web
-GenericName[cs]=WWW prohlížeč
-GenericName[cy]=Porydd Gwe
-GenericName[da]=Browser
-GenericName[de]=Web-Browser
-GenericName[el]=Περιηγητής Ιστού
-GenericName[eo]=TTT-legilo
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
GenericName[es]=Navegador web
-GenericName[et]=Veebilehitseja
-GenericName[eu]=Web arakatzailea
-GenericName[fa]=مرورگر وب
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
GenericName[fi]=WWW-selain
-GenericName[fo]=Alnótsfar
-GenericName[fr]=Navigateur web
+GenericName[fr]=Navigateur Web
GenericName[gl]=Navegador Web
GenericName[he]=דפדפן אינטרנט
-GenericName[hi]=वेब ब्राउज़र
GenericName[hr]=Web preglednik
GenericName[hu]=Webböngésző
-GenericName[is]=Vafri
-GenericName[it]=Browser Web
-GenericName[ja]=ウェブブラウザ
+GenericName[it]=Browser web
+GenericName[ja]=ウェブ・ブラウザ
GenericName[ko]=웹 브라우저
-GenericName[lo]=ເວັບບຣາວເຊີ
-GenericName[lt]=Žiniatinklio naršyklė
-GenericName[lv]=Web Pārlūks
-GenericName[mk]=Прелистувач на Интернет
-GenericName[mn]=Веб-Хөтөч
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
GenericName[nb]=Nettleser
-GenericName[nds]=Nettkieker
GenericName[nl]=Webbrowser
GenericName[nn]=Nettlesar
-GenericName[nso]=Seinyakisi sa Web
-GenericName[pa]=ਵੈਬ ਝਲਕਾਰਾ
+GenericName[no]=Nettleser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador Web
-GenericName[ro]=Navigator de web
+GenericName[ro]=Navigator Internet
GenericName[ru]=Веб-браузер
-GenericName[se]=Fierpmádatlogan
-GenericName[sk]=Webový prehliadač
+GenericName[sk]=Internetový prehliadač
GenericName[sl]=Spletni brskalnik
-GenericName[sr]=Веб претраживач
-GenericName[sr@Latn]=Veb pretraživač
-GenericName[ss]=Ibrawuza yeWeb
GenericName[sv]=Webbläsare
-GenericName[ta]=வலை உலாவி
-GenericName[tg]=Тафсиргари вэб
-GenericName[th]=เว็บบราวเซอร์
GenericName[tr]=Web Tarayıcı
-GenericName[uk]=Навігатор Тенет
-GenericName[uz]=Веб-браузер
-GenericName[ven]=Buronza ya Webu
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
GenericName[vi]=Trình duyệt Web
-GenericName[wa]=Betchteu waibe
-GenericName[xh]=Umkhangeli zincwadi we Web
-GenericName[zh_CN]=网页浏览器
-GenericName[zh_TW]=網頁瀏覽器
-GenericName[zu]=Umcingi we-Web
-MimeType=text/html;
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Comment=Browse the World Wide Web
+Comment[ar]=تصفح الشبكة العنكبوتية العالمية
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per el web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+Keywords=Internet;WWW;Browser;Web;Explorer
+Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب
+Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador
+Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer
+Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer
+Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet
+Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen
+Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ
+Keywords[es]=Explorador;Internet;WWW
+Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa
+Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur
+Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
+Keywords[hr]=Internet;WWW;preglednik;Web
+Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer
+Keywords[it]=Internet;WWW;Browser;Web;Navigatore
+Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk
+Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ
+Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside
+Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online
+Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис
+Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer
+Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet
+Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara
+Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд
+Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web
+Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站;
+Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐
+Exec=firefox %u
+Icon=firefox
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json;
StartupNotify=true
+StartupWMClass=firefox
Categories=Network;WebBrowser;
+Actions=new-window;new-private-window;
+
+[Desktop Action new-window]
+Name=New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn_BD]=নতুন উইন্ডো (N)
+Name[bn_IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en_GB]=New Window
+Name[en_US]=New Window
+Name[en_ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es_AR]=Nueva ventana
+Name[es_CL]=Nueva ventana
+Name[es_ES]=Nueva ventana
+Name[es_MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy_NL]=Nij finster
+Name[ga_IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu_IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi_IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy_AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja_JP-mac]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួចថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb_NO]=Nytt vindu
+Name[ne_NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn_NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv_SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+Exec=firefox --new-window %u
+
+[Desktop Action new-private-window]
+Name=New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en_GB]=New Private Window
+Name[en_US]=New Private Window
+Name[en_ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu_IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja_JP-mac]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួចឯកជនថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو
+Name[lij]=Nêuvo barcón privòu
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb_NO]=Nytt privat vindu
+Name[ne_NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建隐私浏览窗口
+Name[zh_TW]=新增隱私視窗
+Exec=firefox --private-window %u
diff --git a/community/firefox/fix-fortify-system-wrappers.patch b/community/firefox/fix-fortify-system-wrappers.patch
index 17cf7e303da..a1a89c6520b 100644
--- a/community/firefox/fix-fortify-system-wrappers.patch
+++ b/community/firefox/fix-fortify-system-wrappers.patch
@@ -1,13 +1,11 @@
The wrapper features.h gets pulled in by system headers causing thigns to
break. We work around it by simply not wrap features.h
---- ./config/system-headers.mozbuild.orig
-+++ ./config/system-headers.mozbuild
-@@ -229,7 +229,6 @@
- 'execinfo.h',
- 'extras.h',
- 'fcntl.h',
-- 'features.h',
- 'fenv.h',
- 'ffi.h',
- 'fibdef.h',
+diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
+index 07d48e7..d2ce2b2 100644
+--- a/config/system-headers.mozbuild
++++ b/config/system-headers.mozbuild
+@@ -227,3 +227,2 @@ system_headers = [
+ "fcntl.h",
+- "features.h",
+ "fenv.h",
diff --git a/community/firefox/fix-tools.patch b/community/firefox/fix-tools.patch
deleted file mode 100644
index 245d694bd38..00000000000
--- a/community/firefox/fix-tools.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/core/platform-linux-android.cpp
-index 19d0a5c56d..b64b543066 100644
---- a/tools/profiler/core/platform-linux-android.cpp
-+++ b/tools/profiler/core/platform-linux-android.cpp
-@@ -506,8 +506,10 @@ static void PlatformInit(PSLockRef aLock) {}
- ucontext_t sSyncUContext;
-
- void Registers::SyncPopulate() {
-- if (!getcontext(&sSyncUContext)) {
-- PopulateRegsFromContext(*this, &sSyncUContext);
-- }
-+ #if defined(__GLIBC__)
-+ if (!getcontext(&sSyncUContext)) {
-+ PopulateRegsFromContext(*this, &sSyncUContext);
-+ }
-+ #endif
- }
- #endif
diff --git a/community/firefox/fix-webrtc-glibcisms.patch b/community/firefox/fix-webrtc-glibcisms.patch
index 7533d94b91e..4f9043b58e1 100644
--- a/community/firefox/fix-webrtc-glibcisms.patch
+++ b/community/firefox/fix-webrtc-glibcisms.patch
@@ -1,20 +1,20 @@
---- ./third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c.orig 2018-05-09 23:48:44.677389171 +0200
-+++ ./third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c 2018-05-09 23:48:56.254373557 +0200
-@@ -14,7 +14,7 @@
- #ifndef __GLIBC_PREREQ
- #define __GLIBC_PREREQ(a, b) 0
+--- a/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
++++ b/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
+@@ -18,7 +18,7 @@
+ #define WEBRTC_GLIBC_PREREQ(a, b) 0
#endif
--#if __GLIBC_PREREQ(2, 16)
-+#if !__GLIBC__ || __GLIBC_PREREQ(2, 16)
+
+-#if WEBRTC_GLIBC_PREREQ(2, 16)
++#if !__GLIBC__ || WEBRTC_GLIBC_PREREQ(2, 16)
#include <sys/auxv.h>
#else
- #include <fcntl.h>
-@@ -32,7 +32,7 @@
+ #include <errno.h>
+@@ -40,7 +40,7 @@
int architecture = 0;
- unsigned long hwcap = 0;
+ uint64_t hwcap = 0;
const char* platform = NULL;
--#if __GLIBC_PREREQ(2, 16)
-+#if !__GLIBC__ || __GLIBC_PREREQ(2, 16)
+-#if WEBRTC_GLIBC_PREREQ(2, 16)
++#if !__GLIBC__ || WEBRTC_GLIBC_PREREQ(2, 16)
hwcap = getauxval(AT_HWCAP);
platform = (const char*)getauxval(AT_PLATFORM);
#else
diff --git a/community/firefox/force-can-use-pack-relative-relocs.patch b/community/firefox/force-can-use-pack-relative-relocs.patch
new file mode 100644
index 00000000000..b1161080d8d
--- /dev/null
+++ b/community/firefox/force-can-use-pack-relative-relocs.patch
@@ -0,0 +1,11 @@
+--- a/toolkit/moz.configure
++++ b/toolkit/moz.configure
+@@ -1517,7 +1517,7 @@ with only_when("--enable-compile-environ
+ # packed relative relocations rather than elfhack.
+ if android_version:
+ return android_version >= 30
+- return have_arc4random
++ return have_arc4random or True
+
+ @depends(
+ c_compiler,
diff --git a/community/firefox/icu74.patch b/community/firefox/icu74.patch
new file mode 100644
index 00000000000..46c94451b53
--- /dev/null
+++ b/community/firefox/icu74.patch
@@ -0,0 +1,38 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1862601
+
+# HG changeset patch
+# User André Bargull <andre.bargull@gmail.com>
+# Date 1697435923 -7200
+# Node ID d5f3b0c4f08a426ce00a153c04e177eecb6820e2
+# Parent c63994f8259efdf6e745c960aa9e1409d5477049
+Bug xxx - Part 12: Add new line break classes. r?
+
+diff --git a/intl/lwbrk/LineBreaker.cpp b/intl/lwbrk/LineBreaker.cpp
+--- a/intl/lwbrk/LineBreaker.cpp
++++ b/intl/lwbrk/LineBreaker.cpp
+@@ -443,17 +443,23 @@ static int8_t GetClass(uint32_t u, LineB
+ /* JT = 34, [JT] */ CLASS_CHARACTER,
+ /* JV = 35, [JV] */ CLASS_CHARACTER,
+ /* CLOSE_PARENTHESIS = 36, [CP] */ CLASS_CLOSE_LIKE_CHARACTER,
+ /* CONDITIONAL_JAPANESE_STARTER = 37, [CJ] */ CLASS_CLOSE,
+ /* HEBREW_LETTER = 38, [HL] */ CLASS_CHARACTER,
+ /* REGIONAL_INDICATOR = 39, [RI] */ CLASS_CHARACTER,
+ /* E_BASE = 40, [EB] */ CLASS_BREAKABLE,
+ /* E_MODIFIER = 41, [EM] */ CLASS_CHARACTER,
+- /* ZWJ = 42, [ZWJ]*/ CLASS_CHARACTER};
++ /* ZWJ = 42, [ZWJ]*/ CLASS_CHARACTER,
++ /* AKSARA = 43, [AK] */ CLASS_CHARACTER,
++ /* AKSARA_PREBASE = 44, [AP] */ CLASS_CHARACTER,
++ /* AKSARA_START = 45, [AS] */ CLASS_CHARACTER,
++ /* VIRAMA_FINAL = 46, [VF] */ CLASS_CHARACTER,
++ /* VIRAMA = 47, [VI] */ CLASS_CHARACTER,
++ };
+
+ static_assert(U_LB_COUNT == mozilla::ArrayLength(sUnicodeLineBreakToClass),
+ "Gecko vs ICU LineBreak class mismatch");
+
+ auto cls = GetLineBreakClass(u);
+ MOZ_ASSERT(cls < mozilla::ArrayLength(sUnicodeLineBreakToClass));
+
+ // Overrides based on rules for the different line-break values given in
+
diff --git a/community/firefox/lfs64.patch b/community/firefox/lfs64.patch
new file mode 100644
index 00000000000..bae8b5d16d2
--- /dev/null
+++ b/community/firefox/lfs64.patch
@@ -0,0 +1,35 @@
+force stat() instead of stat64() on 32-bit
+--
+--- a/xpcom/io/nsLocalFileUnix.h
++++ b/xpcom/io/nsLocalFileUnix.h
+@@ -21,7 +21,7 @@
+
+ // stat64 and lstat64 are deprecated on OS X. Normal stat and lstat are
+ // 64-bit by default on OS X 10.6+.
+-#if defined(HAVE_STAT64) && defined(HAVE_LSTAT64) && !defined(XP_DARWIN)
++#if 0 && defined(HAVE_STAT64) && defined(HAVE_LSTAT64) && !defined(XP_DARWIN)
+ # if defined(AIX)
+ # if defined STAT
+ # undef STAT
+--- a/mozglue/baseprofiler/core/shared-libraries-linux.cc
++++ b/mozglue/baseprofiler/core/shared-libraries-linux.cc
+@@ -178,7 +178,7 @@
+ return false;
+ }
+
+-#if defined(__x86_64__) || defined(__aarch64__) || \
++#if 1 || defined(__x86_64__) || defined(__aarch64__) || \
+ (defined(__mips__) && _MIPS_SIM == _ABI64) || \
+ !(defined(GP_OS_linux) || defined(GP_OS_android))
+
+--- a/security/sandbox/linux/broker/SandboxBrokerUtils.h
++++ b/security/sandbox/linux/broker/SandboxBrokerUtils.h
+@@ -15,7 +15,7 @@
+ // calls. We'll intercept those and handle them in the stat functions
+ // but must be sure to use the right structure layout.
+
+-#if defined(__NR_stat64) || defined(__NR_fstatat64)
++#if 0 && (defined(__NR_stat64) || defined(__NR_fstatat64) )
+ typedef struct stat64 statstruct;
+ # define statsyscall stat64
+ # define lstatsyscall lstat64
diff --git a/community/firefox/mallinfo.patch b/community/firefox/mallinfo.patch
deleted file mode 100644
index 7916a200ca2..00000000000
--- a/community/firefox/mallinfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp
-index 865e1b5430..9a00dafecb 100644
---- a/xpcom/base/nsMemoryReporterManager.cpp
-+++ b/xpcom/base/nsMemoryReporterManager.cpp
-@@ -124,6 +124,7 @@ static MOZ_MUST_USE nsresult ResidentUniqueDistinguishedAmount(int64_t* aN) {
- return GetProcSelfSmapsPrivate(aN);
- }
-
-+#ifdef __GLIBC__
- # ifdef HAVE_MALLINFO
- # define HAVE_SYSTEM_HEAP_REPORTER 1
- static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) {
-@@ -143,6 +144,7 @@ static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) {
- return NS_OK;
- }
- # endif
-+#endif
-
- #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
- defined(__OpenBSD__) || defined(__FreeBSD_kernel__)
diff --git a/community/firefox/mozilla-location.keys b/community/firefox/mozilla-location.keys
new file mode 100644
index 00000000000..8a3262d9674
--- /dev/null
+++ b/community/firefox/mozilla-location.keys
@@ -0,0 +1 @@
+NjhhZGJjMDEtMDM3OC00Zjc0LTk0N2UtMzBiYzA5NjlhMDc3Cg==
diff --git a/community/firefox/no-ccache-stats.patch b/community/firefox/no-ccache-stats.patch
new file mode 100644
index 00000000000..4d557a01504
--- /dev/null
+++ b/community/firefox/no-ccache-stats.patch
@@ -0,0 +1,13 @@
+prevents a call to ccache
+diff --git a/python/mozbuild/mozbuild/controller/building.py b/python/mozbuild/mozbuild/controller/building.py
+index bf7009a..011c012 100644
+--- a/python/mozbuild/mozbuild/controller/building.py
++++ b/python/mozbuild/mozbuild/controller/building.py
+@@ -570,6 +570,7 @@ class BuildMonitor(MozbuildObject):
+ )
+
+ def ccache_stats(self, ccache=None):
++ return None
+ ccache_stats = None
+
+ if ccache is None:
diff --git a/community/firefox/ppc-musttail.patch b/community/firefox/ppc-musttail.patch
new file mode 100644
index 00000000000..ebe06c0ebe8
--- /dev/null
+++ b/community/firefox/ppc-musttail.patch
@@ -0,0 +1,30 @@
+Patch-Source: https://github.com/chimera-linux/cports/blob/506127954653ccebf9b82df1452cce4ed0dae3b1/contrib/thunderbird/patches/ppc-musttail.patch
+--
+commit 5e66655e1456c9d26637ceaed3f4533b537322c4
+Author: Daniel Kolesa <daniel@octaforge.org>
+Date: Sat May 13 23:00:04 2023 +0200
+
+ disable musttail on ppc
+
+ 41:38.04 LLVM ERROR: failed to perform tail call elimination on a call site marked musttail
+ 41:38.04 PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
+ 41:38.04 Stack dump:
+ 41:38.04 0. Running pass 'Function Pass Manager' on module '/builddir/thunderbird-114.0_beta1/obj-powerpc64le-unknown-linux-musl/toolkit/library/build/../../../gfx/skia/SkOpts.o'.
+ 41:38.04 1. Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@_ZN8portableL15init_lane_masksEPNS_6ParamsEP21SkRasterPipelineStageffff'
+ 41:38.95 clang-16: error: unable to execute command: Aborted
+
+ To be investigated later.
+
+diff --git a/gfx/skia/skia/src/core/SkRasterPipeline.h b/gfx/skia/skia/src/core/SkRasterPipeline.h
+index 766bb0c..88c6cb2 100644
+--- a/gfx/skia/skia/src/core/SkRasterPipeline.h
++++ b/gfx/skia/skia/src/core/SkRasterPipeline.h
+@@ -24,7 +24,7 @@ enum SkColorType : int;
+ struct SkImageInfo;
+ struct skcms_TransferFunction;
+
+-#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32)
++#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && !defined(__powerpc__)
+ #define SK_HAS_MUSTTAIL 1
+ #else
+ #define SK_HAS_MUSTTAIL 0
diff --git a/community/firefox/python-deps.patch b/community/firefox/python-deps.patch
new file mode 100644
index 00000000000..7884095f02a
--- /dev/null
+++ b/community/firefox/python-deps.patch
@@ -0,0 +1,10 @@
+diff --git a/python/sites/mach.txt b/python/sites/mach.txt
+index 8945d44..8746f70 100644
+--- a/python/sites/mach.txt
++++ b/python/sites/mach.txt
+@@ -98,3 +98,3 @@ pypi-optional:glean-sdk==55.0.0:telemetry will not be collected
+ # support down to the oldest locally-installed version (5.4.2).
+-pypi-optional:psutil>=5.4.2,<=5.9.4:telemetry will be missing some data
+-pypi-optional:zstandard>=0.11.1,<=0.22.0:zstd archives will not be possible to extract
++pypi-optional:psutil>=5.4.2,<=5.10.0:telemetry will be missing some data
++pypi-optional:zstandard>=0.11.1,<=0.24.0:zstd archives will not be possible to extract
diff --git a/community/firefox/riscv64-no-lto.patch b/community/firefox/riscv64-no-lto.patch
new file mode 100644
index 00000000000..90c9b5def1a
--- /dev/null
+++ b/community/firefox/riscv64-no-lto.patch
@@ -0,0 +1,16 @@
+--- a/config/makefiles/rust.mk
++++ b/config/makefiles/rust.mk
+@@ -91,11 +91,13 @@
+ ifndef rustflags_sancov
+ # Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
+ ifndef MOZ_CODE_COVERAGE
++ifeq (,$(findstring riscv64,$(RUST_TARGET)))
+ ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
+ cargo_rustc_flags += -Clto=thin
+ endif
+ # We need -Cembed-bitcode=yes for all crates when using -Clto.
+ RUSTFLAGS += -Cembed-bitcode=yes
++endif
+ endif
+ endif
+ endif
diff --git a/community/firefox/rust-lto-thin.patch b/community/firefox/rust-lto-thin.patch
new file mode 100644
index 00000000000..788fceab39f
--- /dev/null
+++ b/community/firefox/rust-lto-thin.patch
@@ -0,0 +1,12 @@
+set rust crate lto to thin to not use fatlto for gkrust which fails sometimes
+--- a/config/makefiles/rust.mk
++++ b/config/makefiles/rust.mk
+@@ -92,7 +92,7 @@
+ # Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
+ ifndef MOZ_CODE_COVERAGE
+ ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
+-cargo_rustc_flags += -Clto$(if $(filter full,$(MOZ_LTO_RUST_CROSS)),=fat)
++cargo_rustc_flags += -Clto=thin
+ endif
+ # We need -Cembed-bitcode=yes for all crates when using -Clto.
+ RUSTFLAGS += -Cembed-bitcode=yes
diff --git a/community/firefox/sandbox-sched_setscheduler.patch b/community/firefox/sandbox-sched_setscheduler.patch
index 1db645aebbd..ffdf12678bc 100644
--- a/community/firefox/sandbox-sched_setscheduler.patch
+++ b/community/firefox/sandbox-sched_setscheduler.patch
@@ -1,23 +1,24 @@
upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1657849
diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp
-index 27da4e7..5a607a4 100644
+index ed958bc..9824433 100644
--- a/security/sandbox/linux/SandboxFilter.cpp
+++ b/security/sandbox/linux/SandboxFilter.cpp
-@@ -1455,6 +1455,7 @@ class GMPSandboxPolicy : public SandboxPolicyCommon {
- return Trap(OpenTrap, mFiles);
-
- case __NR_brk:
-+ case __NR_sched_setscheduler:
- // Because Firefox on glibc resorts to the fallback implementation
- // mentioned in bug 1576006, we must explicitly allow the get*id()
- // functions in order to use NSS in the clearkey CDM.
-@@ -1467,8 +1468,7 @@ class GMPSandboxPolicy : public SandboxPolicyCommon {
+@@ -1751,6 +1751,6 @@ class GMPSandboxPolicy : public SandboxPolicyCommon {
case __NR_sched_get_priority_max:
++ case __NR_sched_setscheduler:
return Allow();
case __NR_sched_getparam:
- case __NR_sched_getscheduler:
- case __NR_sched_setscheduler: {
+ case __NR_sched_getscheduler: {
Arg<pid_t> pid(0);
- return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr));
+@@ -1926,3 +1926,2 @@ class RDDSandboxPolicy final : public SandboxPolicyCommon {
+ case __NR_sched_getscheduler:
+- case __NR_sched_setscheduler:
+ case __NR_sched_getattr:
+@@ -1932,2 +1931,5 @@ class RDDSandboxPolicy final : public SandboxPolicyCommon {
}
++ // sched_setscheduler gets special treatment here (bug 1657849):
++ case __NR_sched_setscheduler:
++ return Allow();
+
diff --git a/community/firefox/sqlite-ppc.patch b/community/firefox/sqlite-ppc.patch
new file mode 100644
index 00000000000..30d80281f71
--- /dev/null
+++ b/community/firefox/sqlite-ppc.patch
@@ -0,0 +1,39 @@
+Patch-Source: https://github.com/chimera-linux/cports/blob/0b7b1b1/contrib/firefox/patches/sqlite-ppc.patch
+From 67157b1aa7da0a146b7d2d5abb9237eea1f434ec Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Fri, 23 Sep 2022 02:38:29 +0200
+Subject: [PATCH] fix sqlite3 on ppc with clang
+
+The __ppc__ macro is always defined on clang but not gcc, which
+results in sqlite mistakenly thinking that ppc64le with clang
+is big endian.
+
+Also disable some inline assembly stuff on ppc that is never used
+with gcc and probably was never tested with modern machines.
+
+rebased 2024-01-24 by @ptrcnull:
+upstream removed the __ppc__ check,
+adding a __LITTLE_ENDIAN__ check to match what they do
+---
+ third_party/sqlite3/src/sqlite3.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/third_party/sqlite3/src/sqlite3.c b/third_party/sqlite3/src/sqlite3.c
+index 9443127..8593d8a 100644
+--- a/third_party/sqlite3/src/sqlite3.c
++++ b/third_party/sqlite3/src/sqlite3.c
+@@ -14874,2 +14874,4 @@ typedef INT16_TYPE LogEst;
+ # define SQLITE_BYTEORDER 4321
++# elif defined(__LITTLE_ENDIAN__) && __LITTLE_ENDIAN__==1
++# define SQLITE_BYTEORDER 1234
+ # elif defined(i386) || defined(__i386__) || defined(_M_IX86) || \
+@@ -36340,3 +36342,3 @@ SQLITE_PRIVATE int sqlite3VListNameToNum(VList *pIn, const char *zName, int nNam
+
+-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
++#elif 0
+
+@@ -207002,2 +207004,4 @@ struct RtreeMatchArg {
+ # define SQLITE_BYTEORDER 4321
++# elif defined(__LITTLE_ENDIAN__) && __LITTLE_ENDIAN__==1
++# define SQLITE_BYTEORDER 1234
+ # elif defined(i386) || defined(__i386__) || defined(_M_IX86) || \
diff --git a/community/firefox/vendor-prefs.js b/community/firefox/vendor-prefs.js
new file mode 100644
index 00000000000..b98a03c166d
--- /dev/null
+++ b/community/firefox/vendor-prefs.js
@@ -0,0 +1,19 @@
+// Use LANG environment variable to choose locale
+pref("intl.locale.requested", "");
+
+// Use system-provided dictionaries
+pref("spellchecker.dictionary_path", "/usr/share/hunspell");
+
+// Disable default browser checking.
+pref("browser.shell.checkDefaultBrowser", false);
+
+// Don't disable our bundled extensions in the application directory
+pref("extensions.autoDisableScopes", 11);
+pref("extensions.shownSelectionUI", true);
+
+// Disable sponsored tiles from "Mozilla Tiles Service"
+pref("browser.topsites.contile.enabled", false);
+
+// Disable Widevine CDM support (doesn't work on musl anyway)
+pref("media.gmp-widevinecdm.visible", false);
+pref("media.gmp-widevinecdm.enabled", false);