summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--user/firefox-esr/APKBUILD155
-rw-r--r--user/firefox-esr/disable-gecko-profiler.patch14
-rw-r--r--user/firefox-esr/fix-bug-1261392.patch25
-rw-r--r--user/firefox-esr/gcc89074.patch24
-rw-r--r--user/firefox-esr/jpeg-link.patch30
-rw-r--r--user/firefox-esr/mozconfig3
-rw-r--r--user/firefox-esr/newer-cbindgen.patch17
-rw-r--r--user/firefox-esr/rust-32bit.patch50
-rw-r--r--user/firefox-esr/seccomp-musl.patch49
-rw-r--r--user/firefox-esr/seccomp-time64.patch112
-rw-r--r--user/firefox-esr/skia-sucks1.patch84
-rw-r--r--user/firefox-esr/skia-sucks2.patch44
-rw-r--r--user/firefox-esr/skia-unified.patch (renamed from user/firefox-esr/skia-sucks3.patch)39
-rw-r--r--user/firefox-esr/webrender.patch54
-rw-r--r--user/firefox-esr/webrtc-broken.patch30
15 files changed, 205 insertions, 525 deletions
diff --git a/user/firefox-esr/APKBUILD b/user/firefox-esr/APKBUILD
index 2796e3e36..41b1166b9 100644
--- a/user/firefox-esr/APKBUILD
+++ b/user/firefox-esr/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Molly Miller <adelie@m-squa.red>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=firefox-esr
-pkgver=68.10.0
+pkgver=91.13.0
pkgrel=0
pkgdesc="Firefox web browser (extended support release)"
url="https://www.mozilla.org/firefox/"
@@ -14,8 +14,8 @@ depends=""
# system-libs
# actual deps
makedepends="
- autoconf2.13 cargo cbindgen clang llvm8-dev node ncurses-dev
- perl rust rust-std cmd:which
+ autoconf2.13 cargo cbindgen clang llvm14-dev node ncurses-dev
+ perl python3 rust rust-std cmd:which
ncurses-dev openssl-dev
@@ -27,28 +27,23 @@ makedepends="
libxrender-dev libxt-dev nasm nss-static sqlite-dev
startup-notification-dev unzip yasm zip gtk+2.0-dev
"
-_py2ver="2.7.16"
_ffxver="$pkgver"'esr'
source="https://ftp.mozilla.org/pub/firefox/releases/$_ffxver/source/firefox-$_ffxver.source.tar.xz
- https://www.python.org/ftp/python/$_py2ver/Python-$_py2ver.tar.xz
mozconfig
bad-google-code.patch
- disable-gecko-profiler.patch
fix-mutex-build.patch
fix-seccomp-bpf.patch
+ gcc89074.patch
jpeg-link.patch
mozilla-build-arm.patch
+ newer-cbindgen.patch
ppc32-fix.patch
rust-32bit.patch
- seccomp-musl.patch
- seccomp-time64.patch
shut-up-warning.patch
- skia-sucks1.patch
- skia-sucks2.patch
- skia-sucks3.patch
+ skia-unified.patch
stackwalk-x86-ppc.patch
- webrtc-broken.patch
+ webrender.patch
firefox.desktop
firefox-safe.desktop
@@ -60,110 +55,6 @@ ldpath="$_mozappdir"
# secfixes: firefox-esr
# 68.0.2-r0:
# - CVE-2019-11733
-# 68.1.0-r0:
-# - CVE-2019-9812
-# - CVE-2019-11735
-# - CVE-2019-11736
-# - CVE-2019-11738
-# - CVE-2019-11740
-# - CVE-2019-11742
-# - CVE-2019-11743
-# - CVE-2019-11744
-# - CVE-2019-11746
-# - CVE-2019-11747
-# - CVE-2019-11748
-# - CVE-2019-11749
-# - CVE-2019-11750
-# - CVE-2019-11751
-# - CVE-2019-11752
-# - CVE-2019-11753
-# 68.2.0-r0:
-# - CVE-2019-15903
-# - CVE-2019-11757
-# - CVE-2019-11758
-# - CVE-2019-11759
-# - CVE-2019-11760
-# - CVE-2019-11761
-# - CVE-2019-11762
-# - CVE-2019-11763
-# - CVE-2019-11764
-# 68.3.0-r0:
-# - CVE-2019-11745
-# - CVE-2019-13722
-# - CVE-2019-17005
-# - CVE-2019-17008
-# - CVE-2019-17009
-# - CVE-2019-17010
-# - CVE-2019-17011
-# - CVE-2019-17012
-# 68.4.1-r0:
-# - CVE-2019-17016
-# - CVE-2019-17017
-# - CVE-2019-17022
-# - CVE-2019-17024
-# - CVE-2019-17026
-# 68.5.0-r0:
-# - CVE-2020-6796
-# - CVE-2020-6797
-# - CVE-2020-6798
-# - CVE-2020-6799
-# 68.6.0-r0:
-# - CVE-2019-20503
-# - CVE-2020-6805
-# - CVE-2020-6806
-# - CVE-2020-6807
-# - CVE-2020-6811
-# - CVE-2020-6812
-# - CVE-2020-6814
-# 68.7.0-r0:
-# - CVE-2020-6819
-# - CVE-2020-6820
-# - CVE-2020-6821
-# - CVE-2020-6822
-# - CVE-2020-6825
-# 68.8.0-r0:
-# - CVE-2020-6831
-# - CVE-2020-12387
-# - CVE-2020-12392
-# - CVE-2020-12395
-# 68.9.0-r0:
-# - CVE-2020-12399
-# - CVE-2020-12405
-# - CVE-2020-12406
-# - CVE-2020-12410
-# 68.10.0-r0:
-# - CVE-2020-12417
-# - CVE-2020-12418
-# - CVE-2020-12419
-# - CVE-2020-12420
-# - CVE-2020-12421
-
-unpack() {
- default_unpack
- [ -z $SKIP_PYTHON ] || return 0
-
- msg "Killing all remaining hope for humanity and building Python 2..."
- cd "$srcdir/Python-$_py2ver"
- [ -d ../python ] && rm -r ../python
-
- # 19:39 <+solar> just make the firefox build process build its own py2 copy
- # 20:03 <calvin> TheWilfox: there's always violence
-
- sed -e 's/é/e/g' /etc/os-release > "$srcdir"/os-release
- export UNIXCONFDIR="$srcdir"
-
- ./configure --prefix="$srcdir/python" --with-ensurepip=install
- make -j $JOBS
- # 6 tests failed:
- # test__locale test_os test_posix test_re test_strptime test_time
- # make test
- make -j $JOBS install
-
- # firefox's bundled pipenv and pip aren't new enough to support
- # configurable UNIXCONFDIR
- export PATH="$srcdir/python/bin:$PATH"
- pip2 install virtualenv pipenv
-}
prepare() {
default_prepare
@@ -178,18 +69,12 @@ prepare() {
echo "ac_add_options --disable-elf-hack" >> "$builddir"/mozconfig
;;
ppc)
- echo "ac_add_options --disable-webrtc" >> "$builddir"/mozconfig;
export LDFLAGS="$LDFLAGS -latomic"
;;
s390x)
echo "ac_add_options --disable-startupcache" >> "$builddir"/mozconfig
;;
esac
-
- rm "$builddir"/third_party/python/virtualenv/virtualenv_support/pip*.whl
- rm "$builddir"/third_party/python/virtualenv/virtualenv_support/setuptools*.whl
- cp "$srcdir/Python-$_py2ver"/Lib/ensurepip/_bundled/*.whl \
- "$builddir/third_party/python/virtualenv/virtualenv_support"
}
build() {
@@ -197,6 +82,7 @@ build() {
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1
export USE_SHORT_LIBNAME=1
+ export MACH_USE_SYSTEM_PYTHON=1
# gcc 6
export CXXFLAGS="-fno-delete-null-pointer-checks -fno-schedule-insns2"
@@ -205,18 +91,19 @@ build() {
export UNIXCONFDIR="$srcdir"
- export PATH="$srcdir/python/bin:$PATH"
./mach build
}
run() {
cd "$builddir"/obj-$CHOST/dist/bin
export LD_LIBRARY_PATH=.
+ export PROFILE_DIR="$builddir"/obj-$CHOST/tmp/profile-default
+ [ -d $PROFILE_DIR ] || ./firefox -no-remote -CreateProfile "Test $PROFILE_DIR"
./firefox -no-remote -profile "$builddir"/obj-$CHOST/tmp/profile-default
}
package() {
- export PATH="$srcdir/python/bin:$PATH"
+ export MACH_USE_SYSTEM_PYTHON=1
DESTDIR="$pkgdir" ./mach install
install -m755 -d ${pkgdir}/usr/share/applications
@@ -252,24 +139,20 @@ package() {
EOF
}
-sha512sums="c5c1833560364851e7cf8ea51659bc4fb60239b960125cdb20fe31f742d757ffdaef8f314f800dc91214ee8e358033dc2af971c08bbba474ef6158b101881653 firefox-68.10.0esr.source.tar.xz
-16e814e8dcffc707b595ca2919bd2fa3db0d15794c63d977364652c4a5b92e90e72b8c9e1cc83b5020398bd90a1b397dbdd7cb931c49f1aa4af6ef95414b43e0 Python-2.7.16.tar.xz
-f82758d279cd12a1b30a9b36ac3c265cfb137df3db7ae185f2c538504e46fa70ace1b051fce847356851062b5cc9cd741a6d33d54f8cd103aa0c8272cb19ccc4 mozconfig
+sha512sums="38b4cc52de21e76d6061e6ba175e1cbfd888a16070aa951f5a44283f2db9d7e94f2504621f0da78feac6e71491a6d0e7038f63dd0ae112dcad700eb02e9aa516 firefox-91.13.0esr.source.tar.xz
+86168a5e5b8aa3ea7cc0d40174baa97595c82b8e599937155fbd7761e7df7220980c74f75e96c34e5f660423e42ad67761f57b2923389be363253868bac033a9 mozconfig
ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53f94c76e722ba0bab73e28d83ec12d3e672554712e6b08613 bad-google-code.patch
-9c14041f0295682b8dbeb6d5b58a2f9dc0a2dc8bef995a0f7e30fa0b17c51aa0f6748f80fb8584169db7687e2eeb404dff68a09158ae56a5f24eef30685dd2b3 disable-gecko-profiler.patch
c0b2bf43206c2a5154e560ef30189a1062ae856861b39f52ce69002390ff9972d43e387bfd2bf8d2ab3cac621987bc042c8c0a8b4cf90ae05717ca7705271880 fix-mutex-build.patch
70863b985427b9653ce5e28d6064f078fb6d4ccf43dd1b68e72f97f44868fc0ce063161c39a4e77a0a1a207b7365d5dc7a7ca5e68c726825eba814f2b93e2f5d fix-seccomp-bpf.patch
-de8e3b15cd7dffb0eca5a729434986e5916234914cdc5fdcdbbc67d8bb439a535ed932293518dd74c3be07555ed60c9541d6758cd2f69d27c22965f7a076e4e3 jpeg-link.patch
+6eb7fb134760f5d232710c56f18f14de4f533e41e269531edd01f5650f6d641513e34a8d2294af5ad6fd184736f674c734efb4cc003636a75e14a8fdba2fe3b0 gcc89074.patch
+240d6c9290a20e2c9ccfa2d15c9a636fc1b09b62f09285eb688974d888390da2a84271f14c397570b58ccdcf29b99370f7183cc0dbbbe581bf6e7d7ee8dcabd2 jpeg-link.patch
e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch
+eb158bf2e4b9d513ae36f3c977a3b110ea8c4801c3c94841bc3ad4cdca3bdfc96d4a662e5a2e662fe7a01b0f1af097280097b16f5d0e83d29b4a7e6cbb8c7396 newer-cbindgen.patch
06a3f4ee6d3726adf3460952fcbaaf24bb15ef8d15b3357fdd1766c7a62b00bd53a1e943b5df7f4e1a69f4fae0d44b64fae1e027d7812499c77894975969ea10 ppc32-fix.patch
-7c615703dc9b8427eeadd13bc9beda02e1c3d986cac1167feaf48fdfdcc15b7456460d4d58f301054cf459242ee75bbcd76bf67e26c2a443bc5655975d24ca1b rust-32bit.patch
-efc77a320850e10e8b99e6fb5d3dd28a3044e287fd87efbdf95807de26a6885235b2d994743cb374345d91a0353abd70a5790b829e37b717b77605e24d4f7f98 seccomp-musl.patch
-4b20dfa3ef3d470af069a274c53ea35c67d2d123f1b543ee243e7038ed94f5a1a6121f1f67713a9442e246b979c042f11efc7a6c32d0b8d3fd2c448dd1258733 seccomp-time64.patch
+153f955169e1489d49867be90f68e8a4722cad8edb3a9d1ddb6161e34399e1b4e9e82dc8d72aaba1d5f585bca7c4852433e8ecb068be1583df7155c7cce0223b rust-32bit.patch
39ddb15d1453a8412275c36fc8db3befc69dffd4a362e932d280fb7fd1190db595a2af9b468ee49e0714f5e9df6e48eb5794122a64fa9f30d689de8693acbb15 shut-up-warning.patch
-e751ffab263f03d4c74feebc617e3af115b1b53cf54fe16c3acc585eec67773f37aa8de4c19599fa6478179b01439025112ef2b759aa9923c9900e7081cb65a9 skia-sucks1.patch
-9152bd3e6dc446337e6a2ed602279c620aedecc796ba28e777854c4f41fcf3067f9ebd086a4b63a6b76c2e69ec599ac6435b8eeda4f7488b1c45f69113facba4 skia-sucks2.patch
-7a1fa27e060b2f025eaebbd39fb5c62960b62450241437e6d057d58cef9faf1cd1a85efe3b6a37b865d686ff18e90605ebea3089b26243f2d14876c2107106a6 skia-sucks3.patch
+961fa1c856e97e4d08da4682f520ecf23075571a532a781c5e14dbec4915130b02a8199caf6602013ea904d347c4f06d086b0fe84a3850dd6910d351232da599 skia-unified.patch
452b47b825294779f98ed46bc1065dad76b79ff453521ef049934a120f349c84a1c863b16af1828fe053059823da9690ec917c055ae02dcc5c80c54cad732448 stackwalk-x86-ppc.patch
-be68f1387aa6677875a67106e2d6a9db470c934c943056d3b53391a63034235108e41945c53957db427d9cdc59f0aa2f9e6f2f8cd862e090e512a3ab9cbcc9a8 webrtc-broken.patch
+b7c1ac21cd03b7cdc887e005ed970cf13ff95643c7651decf1e6d42094cda6a0464dc2ba3cded3827f6d0f3682c2c9b081a7667f386133aa6e3072d0464e72e8 webrender.patch
f3b7c3e804ce04731012a46cb9e9a6b0769e3772aef9c0a4a8c7520b030fdf6cd703d5e9ff49275f14b7d738fe82a0a4fde3bc3219dff7225d5db0e274987454 firefox.desktop
5dcb6288d0444a8a471d669bbaf61cdb1433663eff38b72ee5e980843f5fc07d0d60c91627a2c1159215d0ad77ae3f115dcc5fdfe87e64ca704b641aceaa44ed firefox-safe.desktop"
diff --git a/user/firefox-esr/disable-gecko-profiler.patch b/user/firefox-esr/disable-gecko-profiler.patch
deleted file mode 100644
index 160ac6097..000000000
--- a/user/firefox-esr/disable-gecko-profiler.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -uwr firefox-67.0-old/toolkit/moz.configure firefox-67.0/toolkit/moz.configure
---- firefox-67.0-old/toolkit/moz.configure 2019-05-22 10:35:06.170036401 +0000
-+++ firefox-67.0/toolkit/moz.configure 2019-05-22 10:36:21.680036609 +0000
-@@ -70,10 +70,6 @@
- if value:
- return True
-
--set_config('MOZ_GECKO_PROFILER', gecko_profiler_define)
--set_define('MOZ_GECKO_PROFILER', gecko_profiler_define)
--
--
- # Whether code to parse ELF binaries should be compiled for the Gecko profiler
- # (for symbol table dumping).
- @depends(gecko_profiler, target)
diff --git a/user/firefox-esr/fix-bug-1261392.patch b/user/firefox-esr/fix-bug-1261392.patch
deleted file mode 100644
index fa40914d6..000000000
--- a/user/firefox-esr/fix-bug-1261392.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- a/tools/profiler/core/platform.h 2017-05-27 11:44:06.733119794 +0000
-+++ b/tools/profiler/core/platform.h 2017-05-27 11:46:16.004253520 +0000
-@@ -54,10 +54,11 @@
- #include <vector>
- #include "StackTop.h"
-
--// We need a definition of gettid(), but old glibc versions don't provide a
--// wrapper for it.
--#if defined(__GLIBC__)
-+// We need a definition of gettid(), but Linux libc implementations don't
-+// provide a wrapper for it (except for Bionic)
-+#if defined(__linux__)
- # include <unistd.h>
-+#if !defined(__BIONIC__)
- # include <sys/syscall.h>
- # define gettid() static_cast<pid_t>(syscall(SYS_gettid))
-+#endif
-@@ -71,6 +72,7 @@
- return (pid_t) syscall(SYS_thread_selfid);
- }
- #endif
-+#endif
-
- #ifdef XP_WIN
- #include <windows.h>
diff --git a/user/firefox-esr/gcc89074.patch b/user/firefox-esr/gcc89074.patch
new file mode 100644
index 000000000..e9713193c
--- /dev/null
+++ b/user/firefox-esr/gcc89074.patch
@@ -0,0 +1,24 @@
+Upstream-URL: https://bugzilla.mozilla.org/show_bug.cgi?id=1688122
+Upstream-URL: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89074
+
+Valid code, but only used for debugging. GCC 12 fixed this.
+Moz upstream not interested.
+
+--- firefox-91.13.0/dom/base/nsTreeSanitizer.cpp.old 2022-08-15 13:04:32.000000000 -0500
++++ firefox-91.13.0/dom/base/nsTreeSanitizer.cpp 2022-11-19 00:42:15.892580023 -0600
+@@ -632,15 +632,6 @@
+ constexpr const nsStaticAtom* const kURLAttributesSVG[] = {nsGkAtoms::href,
+ nullptr};
+
+-static_assert(AllOf(std::begin(kURLAttributesSVG), std::end(kURLAttributesSVG),
+- [](auto aURLAttributeSVG) {
+- return AnyOf(std::begin(kAttributesSVG),
+- std::end(kAttributesSVG),
+- [&](auto aAttributeSVG) {
+- return aAttributeSVG == aURLAttributeSVG;
+- });
+- }));
+-
+ const nsStaticAtom* const kElementsMathML[] = {
+ nsGkAtoms::abs_, // abs
+ nsGkAtoms::_and, // and
diff --git a/user/firefox-esr/jpeg-link.patch b/user/firefox-esr/jpeg-link.patch
index 8f27e72e4..a04d924d4 100644
--- a/user/firefox-esr/jpeg-link.patch
+++ b/user/firefox-esr/jpeg-link.patch
@@ -1,15 +1,25 @@
---- firefox-68.2.0/toolkit/moz.configure.old 2019-11-11 16:33:48.441920266 +0000
-+++ firefox-68.2.0/toolkit/moz.configure 2019-11-11 16:41:36.221754664 +0000
-@@ -1482,9 +1482,9 @@
+--- firefox-91.13.0/toolkit/moz.configure.old 2022-08-15 13:05:59.000000000 -0500
++++ firefox-91.13.0/toolkit/moz.configure 2022-11-15 01:26:57.874201494 -0600
+@@ -1758,14 +1758,14 @@
)
- with only_when('--with-system-jpeg'):
-- check_symbol('jpeg_destroy_compress', flags=jpeg_flags.ldflags,
-- onerror=lambda: die('--with-system-jpeg requested but symbol '
-- 'jpeg_destroy_compress not found.'))
-+ #check_symbol('jpeg_destroy_compress', flags=jpeg_flags.ldflags,
-+ # onerror=lambda: die('--with-system-jpeg requested but symbol '
-+ # 'jpeg_destroy_compress not found.'))
+ with only_when("--with-system-jpeg"):
+- check_symbol(
+- "jpeg_destroy_compress",
+- flags=jpeg_flags.ldflags,
+- onerror=lambda: die(
+- "--with-system-jpeg requested but symbol "
+- "jpeg_destroy_compress not found."
+- ),
+- )
++ #check_symbol(
++ # "jpeg_destroy_compress",
++ # flags=jpeg_flags.ldflags,
++ # onerror=lambda: die(
++ # "--with-system-jpeg requested but symbol "
++ # "jpeg_destroy_compress not found."
++ # ),
++ #)
c_compiler.try_compile(
includes=[
diff --git a/user/firefox-esr/mozconfig b/user/firefox-esr/mozconfig
index 55e1a95ce..ed1f42dbb 100644
--- a/user/firefox-esr/mozconfig
+++ b/user/firefox-esr/mozconfig
@@ -7,15 +7,14 @@ ac_add_options --disable-profiling
ac_add_options --disable-strip
ac_add_options --disable-tests
ac_add_options --disable-updater
+ac_add_options --disable-webrtc
ac_add_options --enable-alsa
ac_add_options --enable-application=browser
ac_add_options --enable-dbus
ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-official-branding
ac_add_options --enable-pulseaudio
-ac_add_options --enable-startup-notification
ac_add_options --enable-system-ffi
-ac_add_options --with-system-bz2
ac_add_options --with-system-icu
ac_add_options --with-system-jpeg
ac_add_options --with-system-libevent
diff --git a/user/firefox-esr/newer-cbindgen.patch b/user/firefox-esr/newer-cbindgen.patch
new file mode 100644
index 000000000..9829237ee
--- /dev/null
+++ b/user/firefox-esr/newer-cbindgen.patch
@@ -0,0 +1,17 @@
+Description: Remove an extra constant definition that is now being
+ generated by newer versions of cbindgen (0.24), and causing
+ build failures because it is defined in several places.
+Author: Olivier Tilloy <olivier.tilloy@canonical.com>
+Upstream-URL: https://bugzilla.mozilla.org/show_bug.cgi?id=1773259
+
+--- a/gfx/webrender_bindings/webrender_ffi.h
++++ b/gfx/webrender_bindings/webrender_ffi.h
+@@ -77,8 +77,6 @@ struct WrPipelineInfo;
+ struct WrPipelineIdAndEpoch;
+ using WrPipelineIdEpochs = nsTArray<WrPipelineIdAndEpoch>;
+
+-const uint64_t ROOT_CLIP_CHAIN = ~0;
+-
+ } // namespace wr
+ } // namespace mozilla
+
diff --git a/user/firefox-esr/rust-32bit.patch b/user/firefox-esr/rust-32bit.patch
index f9281cb7a..cff36e90b 100644
--- a/user/firefox-esr/rust-32bit.patch
+++ b/user/firefox-esr/rust-32bit.patch
@@ -1,20 +1,32 @@
---- firefox-68.1.0/config/makefiles/rust.mk.old 2019-08-26 16:52:20.000000000 +0000
-+++ firefox-68.1.0/config/makefiles/rust.mk 2019-10-03 21:17:55.062373830 +0000
-@@ -47,7 +47,7 @@
- ifndef DEVELOPER_OPTIONS
- ifndef MOZ_DEBUG_RUST
- # Enable link-time optimization for release builds.
--cargo_rustc_flags += -C lto
-+# OOMs on 32-bit machines: cargo_rustc_flags += -C lto
- endif
- endif
+--- firefox-91.13.0/config/makefiles/rust.mk.old 2022-08-15 13:04:32.000000000 -0500
++++ firefox-91.13.0/config/makefiles/rust.mk 2022-11-15 01:35:10.150096648 -0600
+@@ -64,19 +64,19 @@
+ # These flags are passed via `cargo rustc` and only apply to the final rustc
+ # invocation (i.e., only the top-level crate, not its dependencies).
+ cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
+-ifndef DEVELOPER_OPTIONS
+-ifndef MOZ_DEBUG_RUST
++#ifndef DEVELOPER_OPTIONS
++#ifndef MOZ_DEBUG_RUST
+ # Enable link-time optimization for release builds, but not when linking
+ # gkrust_gtest. And not when doing cross-language LTO.
+-ifndef MOZ_LTO_RUST_CROSS
+-ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
+-cargo_rustc_flags += -Clto
+-endif
++#ifndef MOZ_LTO_RUST_CROSS
++#ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
++#cargo_rustc_flags += -Clto
++#endif
+ # We need -Cembed-bitcode=yes for all crates when using -Clto.
+-RUSTFLAGS += -Cembed-bitcode=yes
+-endif
+-endif
+-endif
++#RUSTFLAGS += -Cembed-bitcode=yes
++#endif
++#endif
++#endif
-@@ -246,7 +246,7 @@
- ifndef DEVELOPER_OPTIONS
- ifndef MOZ_DEBUG_RUST
- ifeq ($(OS_ARCH), Linux)
-- $(call py_action,check_binary,--target --networking $@)
-+# Fails because we disable LTO: $(call py_action,check_binary,--target --networking $@)
- endif
- endif
- endif
+ ifdef CARGO_INCREMENTAL
+ export CARGO_INCREMENTAL
diff --git a/user/firefox-esr/seccomp-musl.patch b/user/firefox-esr/seccomp-musl.patch
deleted file mode 100644
index edd4a3024..000000000
--- a/user/firefox-esr/seccomp-musl.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Backport of https://hg.mozilla.org/mozilla-central/rev/a0be746532f437055e4190cc8db802ad1239405e
-
-diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp
---- a/security/sandbox/linux/SandboxFilter.cpp
-+++ b/security/sandbox/linux/SandboxFilter.cpp
-@@ -419,16 +419,20 @@ class SandboxPolicyCommon : public Sandb
- case __NR_faccessat:
- return Trap(AccessAtTrap, mBroker);
- CASES_FOR_stat:
- return Trap(StatTrap, mBroker);
- CASES_FOR_lstat:
- return Trap(LStatTrap, mBroker);
- CASES_FOR_fstatat:
- return Trap(StatAtTrap, mBroker);
-+ // Used by new libc and Rust's stdlib, if available.
-+ // We don't have broker support yet so claim it does not exist.
-+ case __NR_statx:
-+ return Error(ENOSYS);
- case __NR_chmod:
- return Trap(ChmodTrap, mBroker);
- case __NR_link:
- return Trap(LinkTrap, mBroker);
- case __NR_mkdir:
- return Trap(MkdirTrap, mBroker);
- case __NR_symlink:
- return Trap(SymlinkTrap, mBroker);
-@@ -538,16 +542,20 @@ class SandboxPolicyCommon : public Sandb
- .ElseIf(advice == MADV_HUGEPAGE, Allow())
- .ElseIf(advice == MADV_NOHUGEPAGE, Allow())
- #ifdef MOZ_ASAN
- .ElseIf(advice == MADV_DONTDUMP, Allow())
- #endif
- .Else(InvalidSyscall());
- }
-
-+ // musl libc will set this up in pthreads support.
-+ case __NR_membarrier:
-+ return Allow();
-+
- // Signal handling
- #if defined(ANDROID) || defined(MOZ_ASAN)
- case __NR_sigaltstack:
- #endif
- CASES_FOR_sigreturn:
- CASES_FOR_sigprocmask:
- CASES_FOR_sigaction:
- return Allow();
-
-
diff --git a/user/firefox-esr/seccomp-time64.patch b/user/firefox-esr/seccomp-time64.patch
deleted file mode 100644
index 72cc28b5d..000000000
--- a/user/firefox-esr/seccomp-time64.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-This drops the use of the chromium sandbox syscall headers which were
-defining syscall numbers if they were undefined. This masked the time64
-issue initially since while musl renamed several of the time32 syscall
-numbers to catch breakage like this, these headers were silently
-bringing them back. I did this by comparing the syscall numbers provided
-by the chromium and musl headers and redefining the generic names to
-their time64 counterparts.
-
-For gettimeofday and settimeofday there does not appear to be a time64
-counterpart so I have defined them as the time32 versions. For
-settimeofday this should not matter (the seccomp filter will block this
-by virture of not being on the whitelist - no content process needs to
-set the time anyway).
-
-It is not possible to entirely block the usage of time32 syscalls
-because musl uses them internally when it can or in fallback paths.
-
-I did not check the MIPS headers since we don't currently ship a MIPS
-port, so in the future those includes should be examined and dropped
-too...
-
---- firefox-68.8.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_syscalls.h 2020-04-29 16:49:45.000000000 -0500
-+++ firefox-68.8.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_syscalls.h 2020-05-20 03:09:47.369457646 -0500
-@@ -8,18 +8,7 @@
-
- #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
- #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
--
--#if defined(__x86_64__)
--#include "sandbox/linux/system_headers/x86_64_linux_syscalls.h"
--#endif
--
--#if defined(__i386__)
--#include "sandbox/linux/system_headers/x86_32_linux_syscalls.h"
--#endif
--
--#if defined(__arm__) && defined(__ARM_EABI__)
--#include "sandbox/linux/system_headers/arm_linux_syscalls.h"
--#endif
-+#include <sys/syscall.h>
-
- #if defined(__mips__) && (_MIPS_SIM == _ABIO32)
- #include "sandbox/linux/system_headers/mips_linux_syscalls.h"
-@@ -33,5 +22,36 @@
- #include "sandbox/linux/system_headers/arm64_linux_syscalls.h"
- #endif
-
-+#if !defined(__NR_clock_getres) && defined(__NR_clock_getres_time64)
-+#define __NR_clock_getres __NR_clock_getres_time64
-+#endif
-+#if !defined(__NR_clock_gettime) && defined(__NR_clock_gettime64)
-+#define __NR_clock_gettime __NR_clock_gettime64
-+#endif
-+#if !defined(__NR_clock_nanosleep) && defined(__NR_clock_nanosleep_time64)
-+#define __NR_clock_nanosleep __NR_clock_nanosleep_time64
-+#endif
-+#if !defined(__NR_clock_settime) && defined(__NR_clock_settime64)
-+#define __NR_clock_settime __NR_clock_settime64
-+#endif
-+#if !defined(__NR_gettimeofday) && defined(__NR_gettimeofday_time32)
-+#define __NR_gettimeofday __NR_gettimeofday_time32
-+#endif
-+#if !defined(__NR_settimeofday) && defined(__NR_settimeofday_time32)
-+#define __NR_settimeofday __NR_settimeofday_time32
-+#endif
-+#if !defined(__NR_timer_gettime) && defined(__NR_timer_gettime64)
-+#define __NR_timer_gettime __NR_timer_gettime64
-+#endif
-+#if !defined(__NR_timer_settime) && defined(__NR_timer_settime64)
-+#define __NR_timer_settime __NR_timer_settime64
-+#endif
-+#if !defined(__NR_timerfd_gettime) && defined(__NR_timerfd_gettime64)
-+#define __NR_timerfd_gettime __NR_timerfd_gettime64
-+#endif
-+#if !defined(__NR_timerfd_settime) && defined(__NR_timerfd_settime64)
-+#define __NR_timerfd_settime __NR_timerfd_settime64
-+#endif
-+
- #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
-
---- firefox-68.8.0/security/sandbox/linux/SandboxFilter.cpp 2020-04-29 16:49:45.000000000 -0500
-+++ firefox-68.8.0/security/sandbox/linux/SandboxFilter.cpp 2020-05-19 23:33:27.829642593 -0500
-@@ -478,6 +478,9 @@ class SandboxPolicyCommon : public Sandb
-
- // Thread synchronization
- case __NR_futex:
-+#ifdef __NR_futex_time64
-+ case __NR_futex_time64:
-+#endif
- // FIXME: This could be more restrictive....
- return Allow();
-
-@@ -488,6 +491,9 @@ class SandboxPolicyCommon : public Sandb
- case __NR_epoll_pwait:
- case __NR_epoll_ctl:
- case __NR_ppoll:
-+#ifdef __NR_ppoll_time64
-+ case __NR_ppoll_time64:
-+#endif
- case __NR_poll:
- return Allow();
-
-@@ -1017,6 +1023,9 @@ class ContentSandboxPolicy : public Sand
-
- CASES_FOR_select:
- case __NR_pselect6:
-+#ifdef __NR_pselect6_time64
-+ case __NR_pselect6_time64:
-+#endif
- return Allow();
-
- CASES_FOR_getdents:
diff --git a/user/firefox-esr/skia-sucks1.patch b/user/firefox-esr/skia-sucks1.patch
deleted file mode 100644
index a02c3b775..000000000
--- a/user/firefox-esr/skia-sucks1.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-# HG changeset patch
-# Parent 548d0a2f3a22bfac32ec0c3921c6c969c8bf32a9
-
-diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
---- a/gfx/2d/ConvolutionFilter.cpp Mon Jul 22 16:57:54 2019 +0200
-+++ b/gfx/2d/ConvolutionFilter.cpp Thu Jul 25 14:27:59 2019 +0200
-@@ -35,9 +35,38 @@
- return true;
- }
-
-+static void ByteSwapArray(uint8_t *u8Array, int32_t size) {
-+ uint32_t *array = reinterpret_cast<uint32_t*>(u8Array);
-+ for (int pxl = 0; pxl < size; ++pxl) {
-+ // Use an endian swap to move the bytes, i.e. BGRA -> ARGB.
-+ uint32_t rgba = array[pxl];
-+ array[pxl] = NativeEndian::swapToLittleEndian(rgba);
-+ }
-+}
-+
- void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst,
- bool aHasAlpha) {
-+#ifdef MOZ_BIG_ENDIAN
-+ int outputSize = mFilter->numValues();
-+
-+ // Input size isn't handed in, so we have to calculate it quickly
-+ int inputSize = 0;
-+ for (int xx = 0; xx < outputSize; ++xx) {
-+ // Get the filter that determines the current output pixel.
-+ int filterOffset, filterLength;
-+ mFilter->FilterForValue(xx, &filterOffset, &filterLength);
-+ inputSize = std::max(inputSize, filterOffset + filterLength);
-+ }
-+
-+ ByteSwapArray((uint8_t*)aSrc, inputSize);
-+#endif
-+
- SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha);
-+
-+#ifdef MOZ_BIG_ENDIAN
-+ ByteSwapArray((uint8_t*)aSrc, inputSize);
-+ ByteSwapArray(aDst, outputSize);
-+#endif
- }
-
- void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst,
-@@ -49,8 +78,26 @@
- int32_t filterLength;
- auto filterValues =
- mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength);
-+
-+#ifdef MOZ_BIG_ENDIAN
-+ for (int filterY = 0; filterY < filterLength; filterY++) {
-+ // Skia only knows LE, so we have to swizzle the input
-+ ByteSwapArray(aSrc[filterY], aRowSize);
-+ }
-+#endif
-+
- SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst,
- aHasAlpha);
-+
-+#ifdef MOZ_BIG_ENDIAN
-+ // After skia is finished, we swizzle back to BE, in case
-+ // the input is used again somewhere else
-+ for (int filterY = 0; filterY < filterLength; filterY++) {
-+ ByteSwapArray(aSrc[filterY], aRowSize);
-+ }
-+ // The destination array as well
-+ ByteSwapArray(aDst, aRowSize);
-+#endif
- }
-
- /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
-diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h
---- a/gfx/skia/skia/include/core/SkPreConfig.h Mon Jul 22 16:57:54 2019 +0200
-+++ b/gfx/skia/skia/include/core/SkPreConfig.h Thu Jul 25 14:27:59 2019 +0200
-@@ -73,7 +73,7 @@
- defined(__ppc__) || defined(__hppa) || \
- defined(__PPC__) || defined(__PPC64__) || \
- defined(_MIPSEB) || defined(__ARMEB__) || \
-- defined(__s390__) || \
-+ defined(__s390__) || defined(__s390x__) || \
- (defined(__sh__) && defined(__BIG_ENDIAN__)) || \
- (defined(__ia64) && defined(__BIG_ENDIAN__))
- #define SK_CPU_BENDIAN
diff --git a/user/firefox-esr/skia-sucks2.patch b/user/firefox-esr/skia-sucks2.patch
deleted file mode 100644
index 1a498f871..000000000
--- a/user/firefox-esr/skia-sucks2.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-# HG changeset patch
-# Parent aecb4600e5da17443b224c79eee178c1d8e155e3
-For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
-right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
-
-diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h
---- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200
-+++ b/gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200
-@@ -238,7 +238,18 @@
- AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
- AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
-
-+ // On Big endian the commented out variant doesn't work,
-+ // and honestly, I have no idea why it exists in the first place.
-+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
-+ // which gets a 64-bit integer, and FromBits returns 32-bit,
-+ // cutting off the wrong half again.
-+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
-+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system)
-+#ifdef SK_CPU_BENDIAN
-+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
-+#else
- AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
-+#endif
- AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
- AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
-
-diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h
---- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200
-+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200
-@@ -203,7 +203,13 @@
- // ~~~>
- // a = 1*aa + d(1-1*aa) = aa + d(1-aa)
- // c = 0*aa + d(1-1*aa) = d(1-aa)
-+
-+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
-+#ifdef SK_CPU_BENDIAN
-+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
-+#else
- return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
-+#endif
- + d.approxMulDiv255(aa.inv());
- };
- while (h --> 0) {
diff --git a/user/firefox-esr/skia-sucks3.patch b/user/firefox-esr/skia-unified.patch
index 9d2ffc410..77bc56299 100644
--- a/user/firefox-esr/skia-sucks3.patch
+++ b/user/firefox-esr/skia-unified.patch
@@ -1,3 +1,42 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1344659
+
+--- firefox-102.1.0/gfx/2d/Types.h
++++ firefox-102.1.0/gfx/2d/Types.h
+@@ -91,15 +91,8 @@ UNKNOWN,
+ // The following values are endian-independent synonyms. The _UINT32 suffix
+ // indicates that the name reflects the layout when viewed as a uint32_t
+ // value.
+-#if MOZ_LITTLE_ENDIAN()
+ A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB
+ X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB
+-#elif MOZ_BIG_ENDIAN()
+- A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB
+- X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB
+-#else
+-# error "bad endianness"
+-#endif
+
+ // The following values are OS and endian-independent synonyms.
+ //
+
+
+https://bugzilla.mozilla.org/show_bug.cgi?id=1325259
+
+--- firefox-102.1.0/gfx/2d/DrawTargetSkia.cpp
++++ firefox-102.1.0/gfx/2d/DrawTargetSkia.cpp
+@@ -154,8 +154,12 @@ }
+ return surfaceBounds.Intersect(bounds);
+ }
+
++#if __sparc
++static const int kARGBAlphaOffset = 0;
++#else
+ static const int kARGBAlphaOffset =
+ SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
++#endif
+
+ static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
+ const int32_t aStride, SurfaceFormat aFormat) {
# HG changeset patch
# Parent 46ea866ca3acb8bb5e1709ceb799b9c94f591dec
Problem description: Tab-titles that are too long to fit into a tab get faded out.
diff --git a/user/firefox-esr/webrender.patch b/user/firefox-esr/webrender.patch
new file mode 100644
index 000000000..a2457e576
--- /dev/null
+++ b/user/firefox-esr/webrender.patch
@@ -0,0 +1,54 @@
+# HG changeset patch
+# User Petr Sumbera <petr.sumbera@oracle.com>
+# Date 1648114576 25200
+# Thu Mar 24 02:36:16 2022 -0700
+# Node ID 903e5f164c0ed424492eec6f388c03cbbcf99913
+# Parent 20d81e68da033746bf81acbb08490f16679853da
+Bug 1716707 [s390x] Software WebRender does not support big endian
+
+diff -r 20d81e68da03 -r 903e5f164c0e gfx/webrender_bindings/RenderCompositorSWGL.cpp
+--- a/gfx/webrender_bindings/RenderCompositorSWGL.cpp Thu Mar 24 06:57:58 2022 +0000
++++ b/gfx/webrender_bindings/RenderCompositorSWGL.cpp Thu Mar 24 02:36:16 2022 -0700
+@@ -7,6 +7,7 @@
+ #include "RenderCompositorSWGL.h"
+
+ #include "mozilla/gfx/Logging.h"
++#include "mozilla/gfx/Swizzle.h"
+ #include "mozilla/widget/CompositorWidget.h"
+
+ #ifdef MOZ_WIDGET_GTK
+@@ -235,6 +237,13 @@
+ }
+ mDT->Flush();
+
++#if MOZ_BIG_ENDIAN()
++ // One swizzle to rule them all.
++ gfx::SwizzleData(mMappedData, mMappedStride, gfx::SurfaceFormat::B8G8R8A8,
++ mMappedData, mMappedStride, gfx::SurfaceFormat::A8R8G8B8,
++ mDT->GetSize());
++#endif
++
+ // Done with the DT. Hand it back to the widget and clear out any trace of it.
+ mWidget->EndRemoteDrawingInRegion(mDT, mDirtyRegion);
+ mDirtyRegion.SetEmpty();
+diff -r 20d81e68da03 -r 903e5f164c0e image/imgFrame.cpp
+--- a/image/imgFrame.cpp Thu Mar 24 06:57:58 2022 +0000
++++ b/image/imgFrame.cpp Thu Mar 24 02:36:16 2022 -0700
+@@ -372,6 +372,17 @@
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+
++#if MOZ_BIG_ENDIAN()
++ if (aBackend == gfx::BackendType::SKIA && canUseDataSurface) {
++ // SKIA is lying about what format it returns on big endian
++ for (int ii=0; ii < mRawSurface->GetSize().Height()*mRawSurface->Stride() / 4; ++ii) {
++ uint32_t *vals = (uint32_t*)(mRawSurface->GetData());
++ uint32_t val = ((vals[ii] << 8) & 0xFF00FF00 ) | ((vals[ii] >> 8) & 0xFF00FF );
++ vals[ii] = (val << 16) | (val >> 16);
++ }
++ }
++#endif
++
+ if (!canUseDataSurface) {
+ // We used an offscreen surface, which is an "optimized" surface from
+ // imgFrame's perspective.
diff --git a/user/firefox-esr/webrtc-broken.patch b/user/firefox-esr/webrtc-broken.patch
deleted file mode 100644
index 85b1b1209..000000000
--- a/user/firefox-esr/webrtc-broken.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -Naur firefox-60.0.orig/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c firefox-60.0/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c
---- firefox-60.0.orig/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c 2018-05-13 17:33:55.266855917 -0700
-+++ firefox-60.0/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c 2018-05-13 20:21:08.158464933 -0700
-@@ -11,7 +11,7 @@
- #ifndef __GLIBC_PREREQ
- #define __GLIBC_PREREQ(a, b) 0
- #endif
--#if __GLIBC_PREREQ(2, 16)
-+#if __linux__
- #include <sys/auxv.h>
- #else
- #include <fcntl.h>
-@@ -29,7 +29,7 @@
- int architecture = 0;
- unsigned long hwcap = 0;
- const char* platform = NULL;
--#if __GLIBC_PREREQ(2, 16)
-+#if __linux__
- hwcap = getauxval(AT_HWCAP);
- platform = (const char*)getauxval(AT_PLATFORM);
- #else
-@@ -53,7 +53,7 @@
- }
- close(fd);
- }
--#endif // __GLIBC_PREREQ(2,16)
-+#endif // __linux__
- #if defined(__aarch64__)
- architecture = 8;
- if ((hwcap & HWCAP_FP) != 0)