From 603147ea5d9a4b815bf9448dee4c8648e3eefbc4 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Sat, 19 Nov 2022 04:01:56 -0600 Subject: user/thunderbird: Update to 91.13.0 --- user/thunderbird/APKBUILD | 80 ++++++++----------------- user/thunderbird/disable-gecko-profiler.patch | 14 ----- user/thunderbird/fix-bug-1261392.patch | 25 -------- user/thunderbird/gcc89074.patch | 24 ++++++++ user/thunderbird/jpeg-link.patch | 25 ++++++++ user/thunderbird/mozconfig | 5 +- user/thunderbird/newer-cbindgen.patch | 17 ++++++ user/thunderbird/ppc32-fix.patch | 43 ++++++++++++++ user/thunderbird/rust-32bit.patch | 32 ++++++++++ user/thunderbird/skia-sucks1.patch | 84 --------------------------- user/thunderbird/skia-sucks2.patch | 44 -------------- user/thunderbird/skia-sucks3.patch | 30 ---------- user/thunderbird/skia-unified.patch | 69 ++++++++++++++++++++++ user/thunderbird/webrender.patch | 54 +++++++++++++++++ user/thunderbird/webrtc-broken.patch | 30 ---------- 15 files changed, 290 insertions(+), 286 deletions(-) delete mode 100644 user/thunderbird/disable-gecko-profiler.patch delete mode 100644 user/thunderbird/fix-bug-1261392.patch create mode 100644 user/thunderbird/gcc89074.patch create mode 100644 user/thunderbird/jpeg-link.patch create mode 100644 user/thunderbird/newer-cbindgen.patch create mode 100644 user/thunderbird/ppc32-fix.patch create mode 100644 user/thunderbird/rust-32bit.patch delete mode 100644 user/thunderbird/skia-sucks1.patch delete mode 100644 user/thunderbird/skia-sucks2.patch delete mode 100644 user/thunderbird/skia-sucks3.patch create mode 100644 user/thunderbird/skia-unified.patch create mode 100644 user/thunderbird/webrender.patch delete mode 100644 user/thunderbird/webrtc-broken.patch (limited to 'user') diff --git a/user/thunderbird/APKBUILD b/user/thunderbird/APKBUILD index fc2887d63..12b206893 100644 --- a/user/thunderbird/APKBUILD +++ b/user/thunderbird/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox pkgname=thunderbird -pkgver=68.9.0 +pkgver=91.13.0 pkgrel=0 pkgdesc="Email client from Mozilla" url="https://www.thunderbird.net/" @@ -9,14 +9,11 @@ options="!check" # Tests disabled license="MPL-2.0" depends="" # moz build system stuff -# python deps # system-libs # actual deps makedepends=" - autoconf2.13 cargo cbindgen clang llvm8-dev node ncurses-dev - perl rust cmd:which - - ncurses-dev openssl-dev + autoconf2.13 cargo cbindgen clang llvm14-dev node ncurses-dev + perl python3 rust cmd:which alsa-lib-dev bzip2-dev icu-dev libevent-dev libffi-dev libpng-dev libjpeg-turbo-dev nspr-dev nss-dev pulseaudio-dev zlib-dev @@ -26,22 +23,22 @@ makedepends=" libxrender-dev libxt-dev nasm nss-static sqlite-dev startup-notification-dev unzip yasm zip gtk+2.0-dev " -_py2ver="2.7.16" source="https://archive.mozilla.org/pub/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.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 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 thunderbird.desktop " @@ -76,33 +73,6 @@ ldpath="$_mozappdir" # - CVE-2020-12395 # - CVE-2020-12397 -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 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 cp "$srcdir"/mozconfig "$builddir"/mozconfig @@ -119,11 +89,6 @@ prepare() { 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() { @@ -131,6 +96,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" @@ -139,18 +105,19 @@ build() { export UNIXCONFDIR="$srcdir" - export PATH="$srcdir/python/bin:$PATH" ./mach build } run() { cd "$builddir"/obj-$CHOST/dist/bin export LD_LIBRARY_PATH=. - ./thunderbird -no-remote -profile "$builddir"/obj-$CHOST/tmp/profile-default + export PROFILE_DIR="$builddir"/obj-$CHOST/tmp/profile-default + [ -d $PROFILE_DIR ] || ./thunderbird -no-remote -CreateProfile "Test $PROFILE_DIR" + ./thunderbird -no-remote -profile $PROFILE_DIR } package() { - export PATH="$srcdir/python/bin:$PATH" + export MACH_USE_SYSTEM_PYTHON=1 DESTDIR="$pkgdir" ./mach install install -m755 -d ${pkgdir}/usr/share/applications @@ -169,18 +136,19 @@ package() { ${pkgdir}/usr/share/applications/thunderbird.desktop } -sha512sums="891472c95ba6ff46061131504e89010da512a84b0e1dea0482e603fd4c87f11e099280a245c7dd9fc9320c48229c26602565c089d86f1a1f4271b29b6fc606f0 thunderbird-68.9.0.source.tar.xz -16e814e8dcffc707b595ca2919bd2fa3db0d15794c63d977364652c4a5b92e90e72b8c9e1cc83b5020398bd90a1b397dbdd7cb931c49f1aa4af6ef95414b43e0 Python-2.7.16.tar.xz -5519234df2934ac2f3d76c8cad7e4f0fe15cf83ea4beb32c6489d8b7839b3ebea88bdb342e0d2a9c1c7c95e9455d234b0a5aa0e73446fd8027b520f080a2bb5b mozconfig +sha512sums="e73d3db4333ad659ec1ab249bd261e8c28301c125d0c39b473c83f8fccace6d4916a2bfef14fc20c065055ff6bbd3ca618b5aab178241b53509543640dcd541a thunderbird-91.13.0.source.tar.xz +afc87cdd19500f8b6b0bedabe98339cca9e6af86edb45e673c6ee0a49bdb3a48b1816f6f5f8790cab86cca428ab7f142cbeb6462079fe293f5f13563a7761896 mozconfig ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53f94c76e722ba0bab73e28d83ec12d3e672554712e6b08613 bad-google-code.patch -9c14041f0295682b8dbeb6d5b58a2f9dc0a2dc8bef995a0f7e30fa0b17c51aa0f6748f80fb8584169db7687e2eeb404dff68a09158ae56a5f24eef30685dd2b3 disable-gecko-profiler.patch c0b2bf43206c2a5154e560ef30189a1062ae856861b39f52ce69002390ff9972d43e387bfd2bf8d2ab3cac621987bc042c8c0a8b4cf90ae05717ca7705271880 fix-mutex-build.patch 70863b985427b9653ce5e28d6064f078fb6d4ccf43dd1b68e72f97f44868fc0ce063161c39a4e77a0a1a207b7365d5dc7a7ca5e68c726825eba814f2b93e2f5d fix-seccomp-bpf.patch +6eb7fb134760f5d232710c56f18f14de4f533e41e269531edd01f5650f6d641513e34a8d2294af5ad6fd184736f674c734efb4cc003636a75e14a8fdba2fe3b0 gcc89074.patch +240d6c9290a20e2c9ccfa2d15c9a636fc1b09b62f09285eb688974d888390da2a84271f14c397570b58ccdcf29b99370f7183cc0dbbbe581bf6e7d7ee8dcabd2 jpeg-link.patch e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch +eb158bf2e4b9d513ae36f3c977a3b110ea8c4801c3c94841bc3ad4cdca3bdfc96d4a662e5a2e662fe7a01b0f1af097280097b16f5d0e83d29b4a7e6cbb8c7396 newer-cbindgen.patch +06a3f4ee6d3726adf3460952fcbaaf24bb15ef8d15b3357fdd1766c7a62b00bd53a1e943b5df7f4e1a69f4fae0d44b64fae1e027d7812499c77894975969ea10 ppc32-fix.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 95a2b1deb4f6c90750fdd2bfe8ca0a7879a5b267965091705a6beb0a0a4b1ccad75d11df7b9885543ca4232ff704e975c6946f4c11804cb71c471e06f9576001 thunderbird.desktop" diff --git a/user/thunderbird/disable-gecko-profiler.patch b/user/thunderbird/disable-gecko-profiler.patch deleted file mode 100644 index 160ac6097..000000000 --- a/user/thunderbird/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/thunderbird/fix-bug-1261392.patch b/user/thunderbird/fix-bug-1261392.patch deleted file mode 100644 index fa40914d6..000000000 --- a/user/thunderbird/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 - #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 -+#if !defined(__BIONIC__) - # include - # define gettid() static_cast(syscall(SYS_gettid)) -+#endif -@@ -71,6 +72,7 @@ - return (pid_t) syscall(SYS_thread_selfid); - } - #endif -+#endif - - #ifdef XP_WIN - #include diff --git a/user/thunderbird/gcc89074.patch b/user/thunderbird/gcc89074.patch new file mode 100644 index 000000000..e9713193c --- /dev/null +++ b/user/thunderbird/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/thunderbird/jpeg-link.patch b/user/thunderbird/jpeg-link.patch new file mode 100644 index 000000000..a04d924d4 --- /dev/null +++ b/user/thunderbird/jpeg-link.patch @@ -0,0 +1,25 @@ +--- 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." ++ # ), ++ #) + + c_compiler.try_compile( + includes=[ diff --git a/user/thunderbird/mozconfig b/user/thunderbird/mozconfig index c79f93bcb..9f77cf649 100644 --- a/user/thunderbird/mozconfig +++ b/user/thunderbird/mozconfig @@ -7,17 +7,16 @@ 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-application=comm/mail ac_add_options --enable-alsa -ac_add_options --enable-calendar 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 ac_add_options --with-system-nspr ac_add_options --with-system-nss diff --git a/user/thunderbird/newer-cbindgen.patch b/user/thunderbird/newer-cbindgen.patch new file mode 100644 index 000000000..9829237ee --- /dev/null +++ b/user/thunderbird/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 +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; + +-const uint64_t ROOT_CLIP_CHAIN = ~0; +- + } // namespace wr + } // namespace mozilla + diff --git a/user/thunderbird/ppc32-fix.patch b/user/thunderbird/ppc32-fix.patch new file mode 100644 index 000000000..b4103c65f --- /dev/null +++ b/user/thunderbird/ppc32-fix.patch @@ -0,0 +1,43 @@ +--- firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp ++++ firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp +@@ -45,11 +45,8 @@ invoke_copy_to_stack(uint32_t* d, + uint64_t tempu64; + + for(uint32_t i = 0; i < paramCount; i++, s++) { +- if(s->IsPtrData()) { +- if(s->type == nsXPTType::T_JSVAL) +- tempu32 = (uint32_t) &s->ptr; +- else +- tempu32 = (uint32_t) s->ptr; ++ if(s->IsIndirect()) { ++ tempu32 = (uint32_t) &s->val; + } + else { + switch(s->type) { +@@ -70,7 +67,7 @@ invoke_copy_to_stack(uint32_t* d, + } + } + +- if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) { ++ if (!s->IsIndirect() && s->type == nsXPTType::T_DOUBLE) { + #ifndef __NO_FPRS__ + if (fpr < FPR_COUNT) + fpregs[fpr++] = s->val.d; +@@ -88,7 +85,7 @@ invoke_copy_to_stack(uint32_t* d, + d += 2; + } + } +- else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) { ++ else if (!s->IsIndirect() && s->type == nsXPTType::T_FLOAT) { + #ifndef __NO_FPRS__ + if (fpr < FPR_COUNT) + fpregs[fpr++] = s->val.f; // if passed in registers, floats are promoted to doubles +@@ -99,7 +96,7 @@ invoke_copy_to_stack(uint32_t* d, + else + *((float*) d++) = s->val.f; + } +- else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64 ++ else if (!s->IsIndirect() && (s->type == nsXPTType::T_I64 + || s->type == nsXPTType::T_U64)) { + if (gpr & 1) gpr++; // longlongs are aligned in odd/even register pairs, eg. r5/r6 + if ((gpr + 1) < GPR_COUNT) { diff --git a/user/thunderbird/rust-32bit.patch b/user/thunderbird/rust-32bit.patch new file mode 100644 index 000000000..cff36e90b --- /dev/null +++ b/user/thunderbird/rust-32bit.patch @@ -0,0 +1,32 @@ +--- 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 + + ifdef CARGO_INCREMENTAL + export CARGO_INCREMENTAL diff --git a/user/thunderbird/skia-sucks1.patch b/user/thunderbird/skia-sucks1.patch deleted file mode 100644 index a02c3b775..000000000 --- a/user/thunderbird/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(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/thunderbird/skia-sucks2.patch b/user/thunderbird/skia-sucks2.patch deleted file mode 100644 index 1a498f871..000000000 --- a/user/thunderbird/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/thunderbird/skia-sucks3.patch b/user/thunderbird/skia-sucks3.patch deleted file mode 100644 index 9d2ffc410..000000000 --- a/user/thunderbird/skia-sucks3.patch +++ /dev/null @@ -1,30 +0,0 @@ -# HG changeset patch -# Parent 46ea866ca3acb8bb5e1709ceb799b9c94f591dec -Problem description: Tab-titles that are too long to fit into a tab get faded out. - On big endian this is broken and instead of fading out, the - tab gets white and the font transparent, leading to an unreadable - tab-title -Solution: This is not a real solution, but a hack. The real solution would have been - to byte-swap the correct buffer, but I could not find it. - So the next best thing is to deactivate the fading-effect. Now all tab-titles - are readable, albeit not as pretty to look at as they could be. -Side-effects: I have not yet found an unwanted side-effect. - -diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp ---- a/gfx/2d/DrawTargetSkia.cpp Tue Oct 22 12:27:22 2019 +0200 -+++ b/gfx/2d/DrawTargetSkia.cpp Thu Oct 31 09:11:56 2019 +0100 -@@ -1861,6 +1861,14 @@ - SkCanvas::kPreserveLCDText_SaveLayerFlag | - (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0)); - -+#if MOZ_BIG_ENDIAN -+ // Pushing a layer where an aMask is defined produces wrong output. -+ // We _should_ endian swap the data, but I couldn't find a workable way to do so -+ // Therefore I deactivate those layers in the meantime. -+ // The result is: Tab-titles that are longer than the available space should be faded out. -+ // The fading doesn't work, so we deactivate the fading-effect here. -+ if (!aMask) -+#endif - mCanvas->saveLayer(saveRec); - - SetPermitSubpixelAA(aOpaque); diff --git a/user/thunderbird/skia-unified.patch b/user/thunderbird/skia-unified.patch new file mode 100644 index 000000000..77bc56299 --- /dev/null +++ b/user/thunderbird/skia-unified.patch @@ -0,0 +1,69 @@ +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. + On big endian this is broken and instead of fading out, the + tab gets white and the font transparent, leading to an unreadable + tab-title +Solution: This is not a real solution, but a hack. The real solution would have been + to byte-swap the correct buffer, but I could not find it. + So the next best thing is to deactivate the fading-effect. Now all tab-titles + are readable, albeit not as pretty to look at as they could be. +Side-effects: I have not yet found an unwanted side-effect. + +diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp +--- a/gfx/2d/DrawTargetSkia.cpp Tue Oct 22 12:27:22 2019 +0200 ++++ b/gfx/2d/DrawTargetSkia.cpp Thu Oct 31 09:11:56 2019 +0100 +@@ -1861,6 +1861,14 @@ + SkCanvas::kPreserveLCDText_SaveLayerFlag | + (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0)); + ++#if MOZ_BIG_ENDIAN ++ // Pushing a layer where an aMask is defined produces wrong output. ++ // We _should_ endian swap the data, but I couldn't find a workable way to do so ++ // Therefore I deactivate those layers in the meantime. ++ // The result is: Tab-titles that are longer than the available space should be faded out. ++ // The fading doesn't work, so we deactivate the fading-effect here. ++ if (!aMask) ++#endif + mCanvas->saveLayer(saveRec); + + SetPermitSubpixelAA(aOpaque); diff --git a/user/thunderbird/webrender.patch b/user/thunderbird/webrender.patch new file mode 100644 index 000000000..a2457e576 --- /dev/null +++ b/user/thunderbird/webrender.patch @@ -0,0 +1,54 @@ +# HG changeset patch +# User Petr Sumbera +# 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/thunderbird/webrtc-broken.patch b/user/thunderbird/webrtc-broken.patch deleted file mode 100644 index 85b1b1209..000000000 --- a/user/thunderbird/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 - #else - #include -@@ -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) -- cgit v1.2.3-70-g09d2