Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] [WIP] firefox-esr: update to 78.4.0
@ 2020-11-04 17:22 pullmoll
  2020-11-04 17:35 ` [PR PATCH] [Updated] " pullmoll
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: pullmoll @ 2020-11-04 17:22 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 374 bytes --]

There is a new pull request by pullmoll against master on the void-packages repository

https://github.com/pullmoll/void-packages firefox-esr-78
https://github.com/void-linux/void-packages/pull/26130

[WIP] firefox-esr: update to 78.4.0
Still testing if it builds for all platforms.

A patch file from https://github.com/void-linux/void-packages/pull/26130.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-firefox-esr-78-26130.patch --]
[-- Type: text/x-diff, Size: 57792 bytes --]

From eae8d56329bd3ff9bbde7510a51a2ef2ada42b4f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 16:13:37 +0100
Subject: [PATCH 1/2] firefox-esr: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr/files/firefox-wayland     |   2 +
 srcpkgs/firefox-esr/files/mozconfig           |   7 +-
 .../patches/big-endian-image-decoders.patch   |  88 +++++++++++
 .../disable-image-format-warning.patch        |  15 --
 srcpkgs/firefox-esr/patches/fix-cross.patch   |  16 ++
 ...686-musl.patch => fix-i686-ppc-musl.patch} |   0
 .../patches/fix-image-format-warning.patch    |  39 +++++
 .../patches/fix-sandbox-membarrier.patch      |  52 -------
 .../firefox-esr/patches/fix-seccomp-bpf.patch |  14 --
 srcpkgs/firefox-esr/patches/fix-toolkit.patch |  78 ----------
 srcpkgs/firefox-esr/patches/fix-tools.patch   |  29 ----
 .../firefox-esr/patches/flac-no-ffvpx.patch   |  26 ++++
 srcpkgs/firefox-esr/patches/gettid-musl.patch |  11 --
 .../firefox-esr/patches/ppc32-fix-build.patch |  36 +++++
 ...rustc-check.patch => rust-configure.patch} |   8 +-
 .../firefox-esr/patches/rust-has-i128.patch   |  21 +++
 .../firefox-esr/patches/sandbox-fork.patch    |  13 ++
 srcpkgs/firefox-esr/patches/skia-sucks1.patch | 147 +++++++++---------
 srcpkgs/firefox-esr/patches/skia-sucks3.patch |  28 +++-
 srcpkgs/firefox-esr/patches/sndio.patch       |  81 +++-------
 srcpkgs/firefox-esr/template                  | 120 ++++++++------
 21 files changed, 433 insertions(+), 398 deletions(-)
 create mode 100644 srcpkgs/firefox-esr/files/firefox-wayland
 create mode 100644 srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
 create mode 100644 srcpkgs/firefox-esr/patches/fix-cross.patch
 rename srcpkgs/firefox-esr/patches/{fix-i686-musl.patch => fix-i686-ppc-musl.patch} (100%)
 create mode 100644 srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-toolkit.patch
 create mode 100644 srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/gettid-musl.patch
 create mode 100644 srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
 rename srcpkgs/firefox-esr/patches/{remove-rustc-check.patch => rust-configure.patch} (85%)
 create mode 100644 srcpkgs/firefox-esr/patches/rust-has-i128.patch
 create mode 100644 srcpkgs/firefox-esr/patches/sandbox-fork.patch

diff --git a/srcpkgs/firefox-esr/files/firefox-wayland b/srcpkgs/firefox-esr/files/firefox-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/firefox-esr/files/firefox-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/firefox-esr/files/mozconfig b/srcpkgs/firefox-esr/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/firefox-esr/files/mozconfig
+++ b/srcpkgs/firefox-esr/files/mozconfig
@@ -3,7 +3,6 @@ ac_add_options --libdir=/usr/lib
 
 ac_add_options --with-system-nspr
 ac_add_options --with-system-nss
-ac_add_options --with-system-bz2
 ac_add_options --with-system-jpeg
 ac_add_options --with-system-zlib
 ac_add_options --with-system-libevent
@@ -12,12 +11,8 @@ ac_add_options --with-system-icu
 # XXX: the system's libpng doesn't have APNG support
 ac_add_options --without-system-png
 ac_add_options --enable-system-pixman
-ac_add_options --enable-system-sqlite
 ac_add_options --enable-system-ffi
 
-ac_add_options --with-nspr-prefix=${XBPS_CROSS_BASE}/usr
-ac_add_options --with-nss-prefix=${XBPS_CROSS_BASE}/usr
-
 nspr_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nspr"
@@ -26,13 +21,13 @@ nss_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nss"
 
-ac_add_options --disable-gconf
 ac_add_options --disable-tests
 ac_add_options --disable-crashreporter
 ac_add_options --disable-updater
 ac_add_options --disable-install-strip
 ac_add_options --disable-strip
 ac_add_options --disable-profiling
+ac_add_options --enable-release
 ac_add_options --enable-optimize="$CFLAGS"
 
 ac_add_options --enable-official-branding
diff --git a/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
@@ -0,0 +1,88 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1626236
+https://bug1626236.bmoattachments.org/attachment.cgi?id=9137096
+
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1582805876 -3600
+#      Thu Feb 27 13:17:56 2020 +0100
+# Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158
+# Parent  9cd90914846f667f18babc491a74c164ae5d6e9f
+imported patch decoder_workaround.patch
+
+diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp
+--- image/decoders/nsGIFDecoder2.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsGIFDecoder2.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -422,6 +422,9 @@
+   MOZ_ASSERT(mSwizzleFn);
+   uint8_t* data = reinterpret_cast<uint8_t*>(aColormap);
+   mSwizzleFn(data, data, aColors);
++#if MOZ_BIG_ENDIAN()
++  SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors);
++#endif
+ }
+ 
+ LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator,
+diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp
+--- image/decoders/nsJPEGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsJPEGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -263,6 +263,9 @@
+         case JCS_YCbCr:
+           // By default, we will output directly to BGRA. If we need to apply
+           // special color transforms, this may change.
++#if MOZ_BIG_ENDIAN()
++          mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB;
++#else
+           switch (SurfaceFormat::OS_RGBX) {
+             case SurfaceFormat::B8G8R8X8:
+               mInfo.out_color_space = JCS_EXT_BGRX;
+@@ -277,6 +280,7 @@
+               mState = JPEG_ERROR;
+               return Transition::TerminateFailure();
+           }
++#endif
+           break;
+         case JCS_CMYK:
+         case JCS_YCCK:
+diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp
+--- image/decoders/nsPNGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsPNGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -361,7 +361,7 @@
+                                    IResumable* aOnResume) {
+   MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!");
+ 
+-  return mLexer.Lex(aIterator, aOnResume,
++  LexerResult res = mLexer.Lex(aIterator, aOnResume,
+                     [=](State aState, const char* aData, size_t aLength) {
+                       switch (aState) {
+                         case State::PNG_DATA:
+@@ -371,6 +371,14 @@
+                       }
+                       MOZ_CRASH("Unknown State");
+                     });
++
++#if MOZ_BIG_ENDIAN()
++  if(res.is<TerminalState>() && res.as<TerminalState>() == TerminalState::SUCCESS) {
++      NativeEndian::swapToLittleEndianInPlace<uint32_t>((uint32_t*)(mImageData), mImageDataLength / 4);
++  }
++#endif
++
++  return res;
+ }
+ 
+ LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData(
+diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp
+--- image/decoders/nsWebPDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsWebPDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -237,7 +237,12 @@
+   // WebP doesn't guarantee that the alpha generated matches the hint in the
+   // header, so we always need to claim the input is BGRA. If the output is
+   // BGRX, swizzling will mask off the alpha channel.
++#if MOZ_BIG_ENDIAN()
++  mBuffer.colorspace = MODE_ARGB;
++  SurfaceFormat inFormat = mFormat;
++#else
+   SurfaceFormat inFormat = SurfaceFormat::OS_RGBA;
++#endif
+ 
+   SurfacePipeFlags pipeFlags = SurfacePipeFlags();
+   if (mFormat == SurfaceFormat::OS_RGBA &&
diff --git a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch b/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Imported from Adélie. Firefox is prone to this warning on BE and
-it leads to huge .xsession-errors, and the warning is not very
-important or meaningful, so just disable it.
-
---- gfx/2d/HelpersCairo.h
-+++ gfx/2d/HelpersCairo.h
-@@ -147,7 +147,7 @@
-     case SurfaceFormat::R5G6B5_UINT16:
-       return CAIRO_FORMAT_RGB16_565;
-     default:
--      gfxCriticalError() << "Unknown image format " << (int)format;
-+      //gfxCriticalError() << "Unknown image format " << (int)format;
-       return CAIRO_FORMAT_ARGB32;
-   }
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-cross.patch b/srcpkgs/firefox-esr/patches/fix-cross.patch
new file mode 100644
index 00000000000..9b8a816d269
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-cross.patch
@@ -0,0 +1,16 @@
+terrible hack to fix cross builds
+overwrite HOST_* flags to get rid of -MF
+
+note: this patch was used from firefox-77 until 80, dropped with the update to 81
+
+--- third_party/rust/glslopt/build.rs
++++ third_party/rust/glslopt/build.rs
+@@ -28,6 +28,8 @@
+     env::remove_var(format!("CXXFLAGS_{}", &target));
+     env::remove_var(format!("CFLAGS_{}", target.replace("-", "_")));
+     env::remove_var(format!("CXXFLAGS_{}", target.replace("-", "_")));
++    env::set_var("HOST_CFLAGS", "-O2");
++    env::set_var("HOST_CXXFLAGS", "-O2");
+
+     configure(&mut cc::Build::new())
+         .warnings(false)
diff --git a/srcpkgs/firefox-esr/patches/fix-i686-musl.patch b/srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/firefox-esr/patches/fix-i686-musl.patch
rename to srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
@@ -0,0 +1,39 @@
+# HG changeset patch
+# User Lee Salzman <lsalzman@mozilla.com>
+# Date 1462463631 14400
+#      Thu May 05 11:53:51 2016 -0400
+# Node ID 8da374804a09977c8f89af5e6e0cb37cb074595d
+# Parent  29662e28a9c93ac67ee0b8ddfb65a9f29bbf73f5
+handle big-endian formats in Cairo format conversions
+
+--- gfx/2d/HelpersCairo.h
++++ gfx/2d/HelpersCairo.h
+@@ -147,7 +147,14 @@ static inline cairo_format_t GfxFormatToCairoFormat(Su
+     case SurfaceFormat::R5G6B5_UINT16:
+       return CAIRO_FORMAT_RGB16_565;
+     default:
+-      gfxCriticalError() << "Unknown image format " << (int)format;
++      // _UINT32 formats don't match B8G8R8[AX]8 on big-endian platforms,
++      // and Moz2d uses B8G8R8[AX]8 as if it was _UINT32.
++      // See bug 1269654
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_FORMAT_RGB24;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image format " << (int)format;
++      }
+       return CAIRO_FORMAT_ARGB32;
+   }
+ }
+@@ -177,7 +184,11 @@ static inline cairo_content_t GfxFormatToCairoContent(
+     case SurfaceFormat::A8:
+       return CAIRO_CONTENT_ALPHA;
+     default:
+-      gfxCriticalError() << "Unknown image content format " << (int)format;
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_CONTENT_COLOR;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image content format " << (int)format;
++      }
+       return CAIRO_CONTENT_COLOR_ALPHA;
+   }
+ }
diff --git a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch b/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-allow usage of SYS_membarrier, needed since musl-1.1.22
-
---- security/sandbox/linux/SandboxFilter.cpp
-+++ security/sandbox/linux/SandboxFilter.cpp
-@@ -283,6 +283,8 @@
-       case __NR_set_tid_address:
-         return Allow();
- #endif
-+      case __NR_membarrier:
-+        return Allow();
- 
-         // prctl
-       case __NR_prctl: {
-
---- security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-@@ -1385,6 +1385,10 @@
- #define __NR_memfd_create (__NR_SYSCALL_BASE+385)
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier (__NR_SYSCALL_BASE+389)
-+#endif
-+
- // ARM private syscalls.
- #if !defined(__ARM_NR_BASE)
- #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
-
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-@@ -1290,5 +1290,9 @@
- #define __NR_memfd_create 319
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 324
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_
- 
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-@@ -1490,5 +1490,9 @@
- #define __NR_shutdown 373
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 375
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_
- 
diff --git a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch b/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig	2015-09-23 09:10:08.812740571 +0200
-+++ security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc	2015-09-23 09:11:38.404746155 +0200
-@@ -23,6 +23,11 @@
- #include "sandbox/linux/services/android_ucontext.h"
- #endif
- 
-+// musl libc defines siginfo_t __si_fields instead of _sifields
-+#if defined(OS_LINUX) && !defined(__GLIBC__)
-+#define _sifields __si_fields
-+#endif
-+
- namespace {
- 
- struct arch_sigsys {
diff --git a/srcpkgs/firefox-esr/patches/fix-toolkit.patch b/srcpkgs/firefox-esr/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-toolkit.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- toolkit.orig/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h.orig    2016-07-05 21:00:03.672000517 +0200
-+++ toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2016-07-05 21:05:37.347806230 +0200
-@@ -1134,6 +1134,12 @@
- #ifndef __NR_fallocate
- #define __NR_fallocate          285
- #endif
-+
-+#undef __NR_pread
-+#define __NR_pread __NR_pread64
-+#undef __NR_pwrite
-+#define __NR_pwrite __NR_pwrite64
-+
- /* End of x86-64 definitions                                                 */
- #elif defined(__mips__)
- #if _MIPS_SIM == _MIPS_SIM_ABI32
---- toolkit.orig/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -45,6 +45,7 @@
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#include <libgen.h>
- 
- #include <iostream>
- #include <set>
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -41,6 +41,10 @@
- 
- #include "common/using_std_string.h"
- 
-+#ifndef N_UNDF
-+#define N_UNDF 0
-+#endif
-+
- using std::vector;
- 
- namespace google_breakpad {
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-04-17 10:24:33.793431933 +0000
-@@ -55,7 +55,7 @@
-
- #ifdef HAVE_MACH_O_NLIST_H
- #include <mach-o/nlist.h>
--#elif defined(HAVE_A_OUT_H)
-+#elif 0
- #include <a.out.h>
- #endif
-
---- toolkit.orig/mozapps/update/common/updatedefines.h	2019-01-29 11:34:36.416804577 +0100
-+++ toolkit/mozapps/update/common/updatedefines.h	2019-01-29 11:34:59.193583777 +0100
-@@ -102,7 +102,7 @@
-
- #  ifdef SOLARIS
- #    include <sys/stat.h>
--#  else
-+#  elif !(defined(__linux__)) || defined(__GLIBC__)
- #    include <fts.h>
- #  endif
- #  include <dirent.h>
---- toolkit.orig/mozapps/update/updater/updater.cpp	2014-03-15 05:19:37.000000000 +0000
-+++ toolkit/mozapps/update/updater/updater.cpp	2014-04-17 10:24:33.796765327 +0000
-@@ -3978,6 +3978,7 @@
- 
- int add_dir_entries(const NS_tchar* dirpath, ActionList* list) {
-   int rv = OK;
-+#if !defined(__linux__) || defined(__GLIBC__)
-   FTS* ftsdir;
-   FTSENT* ftsdirEntry;
-   mozilla::UniquePtr<NS_tchar[]> searchpath(get_full_path(dirpath));
-@@ -4085,6 +4086,7 @@
-   }
- 
-   fts_close(ftsdir);
-+#endif
- 
-   return rv;
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-tools.patch b/srcpkgs/firefox-esr/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/firefox-esr/patches/fix-tools.patch
+++ b/srcpkgs/firefox-esr/patches/fix-tools.patch
@@ -1,34 +1,5 @@
---- tools/profiler/lul/LulElf.cpp.orig	2019-01-29 12:05:34.223834130 +0100
-+++ tools/profiler/lul/LulElf.cpp	2019-01-29 12:08:02.480400845 +0100
-@@ -469,10 +469,10 @@
- // Return the non-directory portion of FILENAME: the portion after the
- // last slash, or the whole filename if there are no slashes.
- string BaseFileName(const string& filename) {
--  // Lots of copies!  basename's behavior is less than ideal.
--  char* c_filename = strdup(filename.c_str());
--  string base = basename(c_filename);
--  free(c_filename);
-+  // basename's behavior is less than ideal so avoid it
-+  const char *c_filename = filename.c_str();
-+  const char *p = strrchr(c_filename, '/');
-+  string base = p ? p+1 : c_filename;
-   return base;
- }
- 
 --- tools/profiler/core/platform-linux-android.cpp.orig	2019-01-29 12:09:40.980448579 +0100
 +++ tools/profiler/core/platform-linux-android.cpp	2019-01-29 12:11:09.689590967 +0100
-@@ -253,7 +253,11 @@
- 
-   // Request profiling signals.
-   struct sigaction sa;
-+#if defined(GP_ARCH_arm)
-+  sa.sa_sigaction = SigprofHandler;
-+#else
-   sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
-+#endif
-   sigemptyset(&sa.sa_mask);
-   sa.sa_flags = SA_RESTART | SA_SIGINFO;
-   if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
 @@ -497,8 +501,10 @@
  ucontext_t sSyncUContext;
  
diff --git a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
@@ -0,0 +1,26 @@
+Enable FLAC on platforms without ffvpx like powerpc*
+
+diff --git dom/media/flac/FlacDecoder.cpp dom/media/flac/FlacDecoder.cpp
+index 53fc3c9937f7..b23771ab80fa 100644
+--- dom/media/flac/FlacDecoder.cpp
++++ dom/media/flac/FlacDecoder.cpp
+@@ -7,6 +7,7 @@
+ #include "FlacDecoder.h"
+ #include "MediaContainerType.h"
+ #include "mozilla/StaticPrefs_media.h"
++#include "PDMFactory.h"
+ 
+ namespace mozilla {
+ 
+@@ -14,6 +15,11 @@ namespace mozilla {
+ bool FlacDecoder::IsEnabled() {
+ #ifdef MOZ_FFVPX
+   return StaticPrefs::media_flac_enabled();
++#elif defined(MOZ_FFMPEG)
++  RefPtr<PDMFactory> platform = new PDMFactory();
++  return StaticPrefs::media_flac_enabled() &&
++         platform->SupportsMimeType("audio/flac"_ns,
++                                    /* DecoderDoctorDiagnostics* */ nullptr);
+ #else
+   // Until bug 1295886 is fixed.
+   return false;
diff --git a/srcpkgs/firefox-esr/patches/gettid-musl.patch b/srcpkgs/firefox-esr/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/firefox-esr/patches/gettid-musl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- tools/profiler/core/platform-linux-android.cpp.orig	2019-07-09 22:58:30.039475686 +0200
-+++ tools/profiler/core/platform-linux-android.cpp	2019-07-09 22:58:39.331437677 +0200
-@@ -73,7 +73,7 @@
- 
- int profiler_current_thread_id() {
-   // glibc doesn't provide a wrapper for gettid().
--#if defined(__GLIBC__)
-+#if defined(__linux__)
-   return static_cast<int>(static_cast<pid_t>(syscall(SYS_gettid)));
- #else
-   return static_cast<int>(gettid());
diff --git a/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
@@ -0,0 +1,36 @@
+This is not a complete/correct patch, but it makes firefox build. For now
+mostly for tracking, so a real fix can be made, but right now it still
+segfaults on start.
+
+Ref: https://hg.mozilla.org/mozilla-central/rev/08339a56f3ae
+Ref: https://hg.mozilla.org/mozilla-central/rev/d16fcad6aa60
+Ref: https://hg.mozilla.org/mozilla-central/rev/ab87611d012e
+Ref: https://hg.mozilla.org/mozilla-central/file/tip/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
+
+--- xpcom/reflect/xptcall/xptcall.h
++++ xpcom/reflect/xptcall/xptcall.h
+@@ -71,6 +71,11 @@ struct nsXPTCVariant {
+     ExtendedVal ext;
+   };
+ 
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  // this field is still necessary on ppc32, as an address
++  // to it is taken certain places in xptcall
++  void *ptr;
++#endif
+   nsXPTType type;
+   uint8_t flags;
+ 
+@@ -91,7 +96,12 @@ struct nsXPTCVariant {
+   };
+ 
+   void ClearFlags() { flags = 0; }
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  void SetIndirect() { ptr = &val; flags |= IS_INDIRECT; }
++  bool IsPtrData() const { return IsIndirect(); }
++#else
+   void SetIndirect() { flags |= IS_INDIRECT; }
++#endif
+ 
+   bool IsIndirect() const { return 0 != (flags & IS_INDIRECT); }
+ 
diff --git a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch b/srcpkgs/firefox-esr/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/firefox-esr/patches/remove-rustc-check.patch
rename to srcpkgs/firefox-esr/patches/rust-configure.patch
index 26a20dd94ce..887c102bc55 100644
--- a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch
+++ b/srcpkgs/firefox-esr/patches/rust-configure.patch
@@ -1,9 +1,9 @@
 Mozilla rustc check does not support crossbuild: let's remove it
 Remove calls to unwrap_rustup, they fail if rustup isn't present
 
---- build/moz.configure/rust.configure	2019-07-06 03:48:30.000000000 +0200
-+++ build/moz.configure/rust.configure	2019-07-09 22:35:23.326851798 +0200
-@@ -79,9 +79,6 @@
+--- build/moz.configure/rust.configure.orig	2019-10-17 04:19:59.000000000 +0700
++++ build/moz.configure/rust.configure	2019-10-22 11:48:55.616022140 +0700
+@@ -78,9 +78,6 @@
  
      return unwrap
  
@@ -13,7 +13,7 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -365,26 +362,6 @@
+@@ -348,26 +345,6 @@
  
              os.write(in_fd, source)
              os.close(in_fd)
diff --git a/srcpkgs/firefox-esr/patches/rust-has-i128.patch b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
@@ -0,0 +1,21 @@
+The configure check fails for cross builds.
+i128 is supported since rust-1.26, so it is safe for us to assume it is always present
+
+--- third_party/rust/num-traits/build.rs.orig	2020-02-14 23:57:25.985355610 +0100
++++ third_party/rust/num-traits/build.rs	2020-02-14 23:58:36.255710188 +0100
+@@ -1,14 +1,5 @@
+-extern crate autocfg;
+-
+-use std::env;
+-
+ fn main() {
+-    let ac = autocfg::new();
+-    if ac.probe_type("i128") {
+-        println!("cargo:rustc-cfg=has_i128");
+-    } else if env::var_os("CARGO_FEATURE_I128").is_some() {
+-        panic!("i128 support was not detected!");
+-    }
++    println!("cargo:rustc-cfg=has_i128");
+ 
+     autocfg::rerun_path("build.rs");
+ }
diff --git a/srcpkgs/firefox-esr/patches/sandbox-fork.patch b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
@@ -0,0 +1,13 @@
+make SYS_fork non-fatal, musl uses it for fork(2)
+
+--- security/sandbox/linux/SandboxFilter.cpp
++++ security/sandbox/linux/SandboxFilter.cpp
+@@ -1253,6 +1253,8 @@
+         // usually do something reasonable on error.
+       case __NR_clone:
+         return ClonePolicy(Error(EPERM));
++      case __NR_fork:
++        return Error(ENOSYS);
+ 
+ #  ifdef __NR_fadvise64
+       case __NR_fadvise64:
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks1.patch b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks1.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
@@ -1,84 +1,77 @@
-# HG changeset patch
-# Parent  548d0a2f3a22bfac32ec0c3921c6c969c8bf32a9
+https://bugzilla.mozilla.org/show_bug.cgi?id=1504834#c5
+https://bugzilla.mozilla.org/attachment.cgi?id=9028600
 
-diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
---- gfx/2d/ConvolutionFilter.cpp	Mon Jul 22 16:57:54 2019 +0200
-+++ gfx/2d/ConvolutionFilter.cpp	Thu Jul 25 14:27:59 2019 +0200
-@@ -35,9 +35,38 @@
-   return true;
+--- gfx/skia/skia/third_party/skcms/skcms.cc
++++ gfx/skia/skia/third_party/skcms/skcms.cc
+@@ -30,6 +30,8 @@
+         #include <avx512fintrin.h>
+         #include <avx512dqintrin.h>
+     #endif
++#elif defined(__BIG_ENDIAN__)
++    #define SKCMS_PORTABLE
+ #endif
+ 
+ // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
+@@ -280,20 +282,28 @@ enum {
+ static uint16_t read_big_u16(const uint8_t* ptr) {
+     uint16_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ushort(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ushort(be);
++    #else
+     return __builtin_bswap16(be);
++    #endif
+ #endif
  }
  
-+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
+ static uint32_t read_big_u32(const uint8_t* ptr) {
+     uint32_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ulong(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ulong(be);
++    #else
+     return __builtin_bswap32(be);
++    #endif
+ #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
+--- gfx/2d/DrawTargetSkia.cpp
++++ gfx/2d/DrawTargetSkia.cpp
+@@ -138,8 +138,7 @@ static IntRect CalculateSurfaceBounds(const IntSize& a
+   return surfaceBounds.Intersect(bounds);
  }
  
- /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
-diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h
---- gfx/skia/skia/include/core/SkPreConfig.h	Mon Jul 22 16:57:54 2019 +0200
-+++ 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
+-static const int kARGBAlphaOffset =
+-    SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
++static const int kARGBAlphaOffset = 0;
+ 
+ static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
+                              const int32_t aStride, SurfaceFormat aFormat) {
+--- gfx/2d/Types.h
++++ gfx/2d/Types.h
+@@ -87,15 +87,8 @@ enum class SurfaceFormat : int8_t {
+ // 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.
+   //
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks3.patch b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks3.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
@@ -1,3 +1,5 @@
+CompositableHost.cpp patch added by @q66, based on patch in issue 1602730.
+
 # HG changeset patch
 # Parent  46ea866ca3acb8bb5e1709ceb799b9c94f591dec
 Problem description: Tab-titles that are too long to fit into a tab get faded out.
@@ -17,7 +19,7 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
        SkCanvas::kPreserveLCDText_SaveLayerFlag |
            (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
  
-+#if MOZ_BIG_ENDIAN
++#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.
@@ -28,3 +30,27 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
    mCanvas->saveLayer(saveRec);
  
    SetPermitSubpixelAA(aOpaque);
+--- gfx/layers/composite/CompositableHost.cpp
++++ gfx/layers/composite/CompositableHost.cpp
+@@ -13,6 +13,7 @@
+ #include "ImageHost.h"  // for ImageHostBuffered, etc
+ #include "Layers.h"
+ #include "TiledContentHost.h"  // for TiledContentHost
++#include "mozilla/EndianUtils.h"
+ #include "mozilla/gfx/gfxVars.h"
+ #include "mozilla/layers/LayersSurfaces.h"  // for SurfaceDescriptor
+ #include "mozilla/layers/TextureHost.h"     // for TextureHost, etc
+@@ -92,9 +93,13 @@ bool CompositableHost::AddMaskEffect(EffectChain& aEffects,
+   }
+   MOZ_ASSERT(source);
+ 
++  // Setting an alpha-mask here breaks the URL-bar on big endian (s390x)
++  // if the typed URL is too long for the textbox (automatic scrolling needed)
++#if MOZ_LITTLE_ENDIAN()
+   RefPtr<EffectMask> effect =
+       new EffectMask(source, source->GetSize(), aTransform);
+   aEffects.mSecondaryEffects[EffectTypes::MASK] = effect;
++#endif
+   return true;
+ }
+ 
diff --git a/srcpkgs/firefox-esr/patches/sndio.patch b/srcpkgs/firefox-esr/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/firefox-esr/patches/sndio.patch
+++ b/srcpkgs/firefox-esr/patches/sndio.patch
@@ -1,8 +1,8 @@
 --- old-configure.in.orig
 +++ old-configure.in
-@@ -2839,6 +2839,22 @@
- 
- AC_SUBST(MOZ_ALSA)
+@@ -2818,6 +2818,22 @@
+     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
+ fi
  
 +dnl ==================================
 +dnl = Check sndio availability
@@ -21,26 +21,11 @@
 +AC_SUBST(MOZ_SNDIO)
 +
  dnl ========================================================
- dnl = Disable PulseAudio
- dnl ========================================================
---- toolkit/library/moz.build.orig
-+++ toolkit/library/moz.build
-@@ -235,10 +235,8 @@
- if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'):
-     OS_LIBS += CONFIG['TK_LIBS']
- 
--if CONFIG['OS_ARCH'] == 'OpenBSD':
--    OS_LIBS += [
--        'sndio',
--    ]
-+if CONFIG['MOZ_SNDIO']:
-+    OS_LIBS += CONFIG['MOZ_SNDIO_LIBS']
- 
- if CONFIG['MOZ_ENABLE_DBUS']:
-     OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS']
+ dnl =
+ dnl = Maintainer debug option (no --enable equivalent)
 --- media/libcubeb/src/moz.build.orig
 +++ media/libcubeb/src/moz.build
-@@ -43,7 +43,7 @@
+@@ -44,11 +44,13 @@
      ]
      DEFINES['USE_JACK'] = True
  
@@ -49,49 +34,19 @@
      SOURCES += [
          'cubeb_sndio.c',
      ]
---- build/moz.configure/old.configure.orig
-+++ build/moz.configure/old.configure
-@@ -169,6 +169,7 @@
+     DEFINES['USE_SNDIO'] = True
++
++if CONFIG['OS_ARCH'] == 'OpenBSD':
+     DEFINES['DISABLE_LIBSNDIO_DLOPEN'] = True
+ 
+ if CONFIG['OS_TARGET'] == 'Darwin':
+--- build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
++++ -	2020-06-30 12:18:26.027756310 +0200
+@@ -210,6 +210,7 @@
  @old_configure_options(
      '--cache-file',
      '--datadir',
 +    '--enable-sndio',
-     '--enable-content-sandbox',
-     '--enable-cookies',
-     '--enable-cpp-rtti',
---- security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp.orig
-+++ security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
-@@ -349,6 +349,21 @@
-         }
-       }
-     }
-+
-+#ifdef MOZ_SNDIO
-+    // ~/.aucat_cookie (sndio)
-+    rv = homeDir->Clone(getter_AddRefs(confDir));
-+    if (NS_SUCCEEDED(rv)) {
-+      rv = confDir->AppendNative(NS_LITERAL_CSTRING(".aucat_cookie"));
-+      if (NS_SUCCEEDED(rv)) {
-+        nsAutoCString tmpPath;
-+        rv = confDir->GetNativePath(tmpPath);
-+        if (NS_SUCCEEDED(rv)) {
-+          policy->AddPath(rdwrcr, tmpPath.get());
-+        }
-+      }
-+    }
-+#endif
-   }
- 
-   // Firefox binary dir.
---- security/sandbox/linux/moz.build.orig
-+++ security/sandbox/linux/moz.build
-@@ -81,6 +81,9 @@
- if CONFIG['MOZ_ALSA']:
-     DEFINES['MOZ_ALSA'] = True
- 
-+if CONFIG['MOZ_SNDIO']:
-+    DEFINES['MOZ_SNDIO'] = True
-+
- # This copy of SafeSPrintf doesn't need to avoid the Chromium logging
- # dependency like the one in libxul does, but this way the behavior is
- # consistent.  See also the comment in SandboxLogging.h.
+     '--enable-crashreporter',
+     '--enable-dbus',
+     '--enable-debug-js-modules',
diff --git a/srcpkgs/firefox-esr/template b/srcpkgs/firefox-esr/template
index eb3c32bed59..51f1ebe2334 100644
--- a/srcpkgs/firefox-esr/template
+++ b/srcpkgs/firefox-esr/template
@@ -3,57 +3,59 @@
 # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-esr-i18n".
 #
 pkgname=firefox-esr
-version=68.11.0
+version=78.4.0
 revision=1
 wrksrc="firefox-${version}"
-build_helper="rust"
-short_desc="Mozilla Firefox web browser - Extended Support Release (ESR)"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_helper="rust qemu"
+hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo
+ llvm clang nodejs-lts-10 cbindgen python nasm which tar"
+makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
+ libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
+ libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel)
+ $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
+ $(vopt_if xscreensaver libXScrnSaver-devel)
+ $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)"
+depends="nss>=3.53 desktop-file-utils hicolor-icon-theme"
+short_desc="Firefox browser - Extended Support Release"
+maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.mozilla.org/firefox/organizations/"
 distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
-checksum=91c1f7caaf1ba785b74799865227456bf784ba614d17cf5f0f41a5f25d6d2160
-
+checksum=8e3cf0bbf1062768134db2eb10ab774731ca5ec6694b65def82234bb0a9170fc
 lib32disabled=yes
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
-makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
- pixman-devel sqlite-devel libevent-devel libnotify-devel libvpx5-devel
- libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
- $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
- $(vopt_if startup_notification startup-notification-devel)
- $(vopt_if xscreensaver libXScrnSaver-devel) $(vopt_if sndio sndio-devel)"
-depends="nss>=3.44.3 desktop-file-utils hicolor-icon-theme"
 conflicts="firefox>=0"
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
+build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland"
+build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 
 case $XBPS_TARGET_MACHINE in
-	armv[56]*) broken="required NEON extensions are not supported on armv6" ;;
+	armv[56]*) broken="required NEON extensions are not supported on armv[56]" ;;
 	ppc64*) ;;
 	ppc*) broken="xptcall bitrot" ;;
 esac
 
+if [ "$XBPS_TARGET_ENDIAN" = "be" ]; then
+	broken="rendering is busted, dunno why"
+fi
+
+CXXFLAGS="-Wno-class-memaccess -Wno-unused-function"
+
 if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
 	makedepends+=" libatomic-devel"
 fi
 
-# we need this because cargo verifies checksums of all files in vendor
-# crates when it builds and gives us no way to override or update the
-# file sanely... so just clear out the file list
+# We need this because cargo verifies checksums of all files
+# in vendor crates when it builds and gives us no way to
+# override or update the file sanely... so just clear out the file list
 _clear_vendor_checksums() {
 	sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
 }
 
 post_extract() {
-	case "$XBPS_TARGET_MACHINE" in
-	*-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		cp "${FILESDIR}/stab.h" toolkit/crashreporter/google-breakpad/src/
-		;;
-	esac
-
+	fi
 	# Google API key (see http://www.chromium.org/developers/how-tos/api-keys)
 	# Note: This is for Void Linux use ONLY.
 	echo -n "AIzaSyCIFdBA7eQP43R6kXRwTq7j6Mvj1ITze90" > google-api-key
@@ -64,19 +66,18 @@ post_extract() {
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
+	_clear_vendor_checksums glslopt
 }
 
 do_build() {
-	cp "${FILESDIR}/mozconfig" "${wrksrc}/.mozconfig"
+	cp ${FILESDIR}/mozconfig .mozconfig
 
-	case "$XBPS_TARGET_MACHINE" in
-	       *-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		echo "ac_add_options --disable-jemalloc" >>.mozconfig
 		echo "ac_add_options --disable-gold" >>.mozconfig
 		echo "ac_add_options --enable-release" >>.mozconfig
-		;;
-	esac
+	fi
 
 	case "$XBPS_TARGET_MACHINE" in
 	arm*|x86_64*|i686*)
@@ -101,17 +102,16 @@ do_build() {
 
 		export BINDGEN_CFLAGS="--target=$XBPS_CROSS_TRIPLET \
 			--sysroot=${XBPS_CROSS_BASE} ${BINDGEN_INCLUDE_FLAGS}"
-		export HOST_CC=cc
+		export HOST_CC="${CC_host}"
 		export TARGET_CC="${CC}"
 		export HOST_CFLAGS="${XBPS_CFLAGS}"
 		export HOST_CXXFLAGS="${XBPS_CXXFLAGS}"
-		export ac_cv_sqlite_secure_delete=yes \
-			ac_cv_sqlite_threadsafe=yes \
-			ac_cv_sqlite_enable_fts3=yes \
-			ac_cv_sqlite_dbstat_vtab=yes \
-			ac_cv_sqlite_enable_unlock_notify=yes \
-			ac_cv_prog_hostcxx_works=1
-
+		echo "ac_cv_sqlite_secure_delete=yes" >> .mozconfig
+		echo "ac_cv_sqlite_threadsafe=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_fts3=yes" >> .mozconfig
+		echo "ac_cv_sqlite_dbstat_vtab=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_unlock_notify=yes" >> .mozconfig
+		echo "ac_cv_prog_hostcxx_works=1" >> .mozconfig
 		echo "ac_add_options --target=$XBPS_CROSS_TRIPLET" >>.mozconfig
 		echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig
 	else
@@ -138,6 +138,11 @@ do_build() {
 		build/moz.configure/toolchain.configure
 	fi
 
+	case "$XBPS_TARGET_MACHINE" in
+	aarch64*|i686*|x86_64*)
+		echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
+	esac
+
 	export LDFLAGS+=" -Wl,-rpath=/usr/lib/firefox"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -147,38 +152,57 @@ do_build() {
 	export MOZ_MAKE_FLAGS="${makejobs}"
 	export MOZ_NOSPAM=1
 	export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild"
+	export MACH_USE_SYSTEM_PYTHON=1
 
 	export AS=$CC
 
-	cat <<! >>.mozconfig
+	cat >>.mozconfig <<EOF
 ac_add_options --with-google-location-service-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-google-safebrowsing-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key"
 ac_add_options $(vopt_enable alsa)
+ac_add_options $(vopt_enable jack)
 ac_add_options $(vopt_enable sndio)
 ac_add_options $(vopt_enable dbus)
 ac_add_options $(vopt_enable dbus necko-wifi)
 ac_add_options $(vopt_enable pulseaudio)
-ac_add_options $(vopt_enable startup_notification startup-notification)
-!
-
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
+EOF
 	rm -f old-configure
 	./mach build
+
+	# Make langpacks for all languages
+	dir=$(ls -d obj-*/browser/locales)
+	cd ${wrksrc}/${dir}
+	for lang in ${languages[*]}; do
+		msg_normal "Making langpack for ${lang} ...\n"
+		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
+	done
 }
+
 do_install() {
+	export MACH_USE_SYSTEM_PYTHON=1
 	DESTDIR="$DESTDIR" ./mach install
 
+	vbin ${FILESDIR}/firefox-wayland
 	vinstall ${FILESDIR}/vendor.js 644 usr/lib/firefox/browser/defaults/preferences
 	vinstall taskcluster/docker/firefox-snap/firefox.desktop 644 usr/share/applications
 
-	for i in 16x16 22x22 24x24 32x32 48x48 128x128 256x256; do
+	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
 		vinstall ${wrksrc}/browser/branding/official/default${i%x*}.png 644 \
 			usr/share/icons/hicolor/${i}/apps firefox.png
 	done
+	vinstall ${wrksrc}/browser/branding/official/default256.png 644 \
+		usr/share/pixmaps firefox.png
 
-	# We don't want the development stuff
-	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
+	# Use system-provided dictionaries
+	rm -rf ${DESTDIR}/usr/lib/firefox/{dictionaries,hyphenation}
+	ln -s /usr/share/hunspell ${DESTDIR}/usr/lib/firefox/dictionaries
+	ln -s /usr/share/hyphen ${DESTDIR}/usr/lib/firefox/hyphenation
 
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf firefox ${DESTDIR}/usr/lib/firefox/firefox-bin
+
+	# Remove the development files - noone uses them
+	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
 }

From 410ec89b63fd03e0413346e8e2640aa16f89ceda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 18:01:21 +0100
Subject: [PATCH 2/2] firefox-esr-i18n: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr-i18n/template | 188 +++++++++++++++---------------
 1 file changed, 94 insertions(+), 94 deletions(-)

diff --git a/srcpkgs/firefox-esr-i18n/template b/srcpkgs/firefox-esr-i18n/template
index 6fdd22574cb..fca846e6f1e 100644
--- a/srcpkgs/firefox-esr-i18n/template
+++ b/srcpkgs/firefox-esr-i18n/template
@@ -1,6 +1,6 @@
 # Template file for 'firefox-esr-i18n'
 pkgname=firefox-esr-i18n
-version=68.11.0
+version=78.4.0
 revision=1
 build_style=meta
 short_desc="Firefox ESR language packs"
@@ -135,96 +135,96 @@ _pkgtmpl() {
 	}
 }
 
-checksum="a96b2eab357c1d3ae79978919d78227e91427464ec0d506276e8448df878e4de
- 77b3f295c0c8e331deec5ac81c4566e70e686e1134569e3dc383406634148642
- dddd186a5e1835778736cf1eb6254dc6909b0fc547b312695788cc455b52aa9e
- a59a86cc1838461ee51c3235c617ee28bb0ae7a4422866b645f67a7a2bc77673
- 52acf8999a4f46549ef251787681f8db62ee44a1653cd1eefb82b5c8a7e3c480
- 02d42d95c95d4b83716d71dbc8f9eab6d046540be34bc65360f16deca54840e8
- 458001594cf5402dae30241193ffcdf0f727bc0451b46382cd12939458459258
- 87be7b1c87ad813430e9f587315f1371f21f655ecb7f6dd90380741597ee818b
- 67f628587202ffef8744e2399fc2e808454562f6e68a607c4a0dadff38f68789
- 27b99f0e05d79f39abbb1770190f4a3d049aa527bd02ce9dd6815a3f73e3757f
- 4b30e8c01fc67bb11779fa50d8e1b2c93d6a2a936c6d8c77d3314df0cfccc131
- 45ebc6437bcc217ac54b0bf380a2f3f2e6cbbeada8d74269a760ae0d7a3a47da
- 139126e7e7f6c78e23da66dca5441fc9c0c53eca1009cf58377044fe6fdeb202
- 92b1a9b9465237c6423aac78cd02110354f7a4d4f89e915e045e3cf224323c51
- a0abce87643502f16e3a4dde825cf3e7f58cd75f5a4196451ede813b799611c3
- 8faaf99245fa5fd7a8ffe0344a6892546735c19eb9f2c6ecc534fc5808e26aec
- 9317185ea24b23004971de4187b2561d12c82872e4aa61f406bc02d5e83617fd
- 6869b14cf69508cd2f34cc722b346f30db0ec3891ebcc31908f69a1f307c8d67
- c153a54ec2e4ad4e817f8fa91d29a1698c11ca9ec04e494e1d866c7d9842ee8e
- dfe8300b735d2141798f8255d3ec102699b5b127bf9cfe5860784220ca0b6055
- fd57e1055a25fa1dcd5a91393408dad91bf0db2054c4bfd29ab47785f3156599
- a9f17b51896142082b3bfdcdbca9a472d95c5dd12005f2c3ce346c938d57ce7f
- 935826ae44cace20973c9ee32df8032fa95ab82843a92c514add0d8c44fb4c7e
- 4579dd24069d6414eb105d58c1789605a0ada438504f4fc14c724a4ee78b3726
- f69ec189d7eb2a4074a9218a9b87399f0504b8790e8aab98650120acc20ca184
- 4164c7f23e13e86f6c3e3bb1319da47a51d8b35b13acd2e8bf1c371d6c8a6ec3
- ffac444bc57d684f0f131f93ff48ddf4db3761905fa36882659a380eddaa1703
- 017049781b08378ab45a8cc95efda95e8dc4d10dc86d26efaf8209c51c556a0a
- 5b7851dca418b6cb08a3e6d4f189478de2fba5869d559f82740eec55abb45f93
- ef8c1054b528afc780b916f87b5038c0d2baa02a4445f7ec18c11f316766533e
- ee81934fbe482564a28f5e4cd44d3596b5f3a3926abf4e7c30c52918199299e1
- 269f6ca41e1322939ec1ed68a919e84e990cd431d7dbfc2bb67d3708e8d89bd8
- c29406cfb4d94e98e15ec5f0fe9f9cec52a6e251865683cca307ff562b52d0a7
- 025c7ed2fec33d06eb3cca4b7255d8b133cccb5d943d38afceef93ffc494e9e1
- ac70f1b3f164798e4c95dddb81e45ae91f40ad66b97cd443da94df68cc7b7964
- b467e26b8facc706501ec93be8b23c4fbc16b1fd01678f968d591951b7dab19b
- cf0b4e1f2c0620b19917e616ce1d94da9b4361e1e642c080fe36580911d61b18
- fd18f16b746c48224e4721d2a118fad44c598ca851778331aed4bd4355d8e982
- 064fe64bde1cd1bf2c255297af730ef0487fb193d5ca425935fc26e6e46c6733
- 06396fbfaebba29ffded9c79942e7fe6d988d1e0e26ac6bb3082dc5c1bfd1370
- ac2d5b18284b3702a3b93e09c73dabc42894088bf7bd3ecd9e1114c882ad88be
- 8f96e6b7e4be985ca90e5a378cb90a87cdef5b0ef36a64e86aac042e6f4dce74
- ca38f1b8c8198150986e35264d6c8a0f56c2e4b694738d926104d360d1244c1e
- bdb3756655fb54f5fb3feca19dce0bb6a7a98293f0def9f8855dbd269d20a259
- f531eee42bb19c32ea1242beb29147e064da58caeede025510d8b3092198c62b
- 05df51330571877fd1ab339183e6d68a5c92c5a132e109464b75dd5d4879d969
- 8492216768d7c008a224d5831b47bf0ef6a7ac19ce21b0113ecce921868654ca
- adea068ac99f58030551f1a080bd70d946c20edd9000c554f46289f3ea75c4bb
- 0d909de2c7320827eab604e697ad3bd89adfd55c9e8ea5aabc2e3938f45025bc
- 6edbe0259392b489ff808174e107d01dcaaf42b862ee3d0b804cfbda1ff636d3
- 4fc4c48637a0d285e85db0d699a62a08c6cc503073b4201b6115c13f9c7283dd
- e6fe631141ce94e6425e4c745fe2b5a2cbda685c5492ebb3c614d09433c455b8
- 6f0730299dd9fd362c6b994128bce064bf215fd27f55a673fda6569bbf38a4c4
- bb2e2cc0a0e4047b67b28596685b228c69c85a6a65d37c2c1003d7a9d8fd378a
- 8640f7eaa4aa157ce94c951d9eecfaffd0d603bc05ce95559d90042302c99803
- 2641ca0efcde0c92cc2ad4ad6c65fbe3ab56b711d88f26fd4e78c18cd3138aa2
- 34cf05b4d96261da6e972bd64bba273de11b24b3032de1bdf1777d69d968b114
- 0fb47c0ac1aec79351af5e06782c2ba1afd26cf8cc37505858e4028261affdf0
- c4926c88b3466385c6040378e0fe9f777536f540e01b01f3d70ee514ff3593a6
- b6edc8d2a7f9ea08ad89d05560351d5dd90f1bdc73c5ca7f6fc6e2cd6902bcd3
- 5f25b4cc7443a6e8b30a4ffd8233920b2b8e4d1a6adca465739d7badd80f1534
- 81248e707ced39e1bab3d28c9735dbe15ab7e8a9b563e887a65c6e995045bf17
- 5fcabf089b74c00a4864dd77191fdbc8c5c35a7b748c96834961d2e2c1d2b15b
- ea07bc5f78c771e803b00844a49d7f6e45abb6624a106d921d7a0d4bcc8ed886
- 3c30cfbb658332f44a397e91da7aefbab02adb34bdc534386f6acb47e5eb5c18
- ea4f2864fa6624a43cc04ad8222256a12b6c2aef877ac811f8c2f64097439006
- 0bcd2198157a72df46c6702cc1330b152555341eeb4f046f6e7cec63d0715802
- 2eca90bf5c6f0c762fb1f52cfa7f0146fae69a85bd45080066b8ef3514dc24e5
- 506ba2747f0eac45f42ee729ca5bbc41931630852f2288244233e98cd7c9a489
- de98305ce3526749f4cac6ffd47861a3cad7f2cbf25180471c68cf3280776edf
- 4a8de2a062d67875dec79748e4cb03a3881e378108ede064d5aab10145afd2a2
- c638de4dc72b87dab2e315b2da71d7612762c4d483d75d2feaa655e24db64241
- 090918108985a1ab3ee8e155c97e6ef4ab7b7b2613f4be3388bfb4758be4e503
- 4153ffb1c211c3c45a0efa9700c0908544f90d6a848f5096120933bfd94c44c3
- 96d86350fd693bf708e4f4f7de238e71e0b90bcdac3205a3a25c84b13500bd99
- ae4a76c6644585df1777d46ef10dbcbdb35dee0a13a45622bd49ad7b5eb996ac
- ecb6a93d321be76717245b6a651b96123ec1765f133779caf8a43b38827aa892
- 51932dccdd95a740fafdb2873f56c3306d803db5a796fd8379d986d84fd128a2
- 8162375363e6f1650230bc643e2bde1d0018b4f6cf54369e0c59967ad5fa4a97
- 72c79a7c65a637cb918e999d7d7ee13f4736e646512d165371740862e1e943b1
- 558887a62a2b09636c5c5f8e7ed99b018344af190ebdf1a6d71548cda11d032e
- b39046f78509d308072b384511725776d9de7da667f12bc6508eb6c39f843c75
- 9038e9e671846f1839fa3b4794f121e546ce544021848f933c239b9917a16c2d
- e238909d4f9ab35a0f1f56cd85747b307626f9713c3899d6497b3e1f257f28cb
- 220793d97e399aca5d5e82bf159eb12b7acb6d974fcd693d45c7c264e85e6548
- ef3f9f02f67084fc4dc4bde464002502a176cb7361813815c5460dd94ae0656d
- 7baede2ac4e391b60896a0a02242aeabfe55ce8b50e7b05d5b77d99dda6b76e1
- 5dec1a1452fc2303c655f153c19d675ef200f448be4b0c2b2b2d50244c820b41
- 88ed2511992f45b930922fd4bba5e5ececc761029e3d92cd092d5ed5f66a3030
- fcd8e1dea4a1c33fd72b096a61712f74a269ab334bf93653b265ee9e2871d999
- 4ec2d6697632bc8dfd294b668d514deb37efde5414881dccbb9a280fa9f86ef4
- 6c9aea7e23d20cb9074dc4acf8936cf249eb5b6e2c5ba1e4eab27267b41822a4
- 5c0f5c8cc336e73a98dd6b22bc11c418e2ab33bc95ac5b7c948ea4eba1f1a7e3"
+checksum="35c752c8332e93c7ae10e09691440accdde03232be291f57f106a73e0522da4e
+ c0a32333c4d33626b108d6e89f0ebae3924d95e97f93e739ff4720d79d895756
+ b1a51894781f6fb757a4502e5f59eb577174274260f980321a8169c5a6b4c761
+ 925a61467b506d94c59a0003d8e3f5b01d6bafbac612fd5ab52633661939ad45
+ 4ce396e8f2a65d12b082e5d3541069a80ffd79b52286db1de7dc2669923a4212
+ 885454f2fa66015fc772442b420cf9361f0ea8fcc6a861c5b3b8952b999e4b23
+ 433b6de936c7cfb7a025fc25767744c7392386de646724757d10f586aa83b24a
+ 9e17a358e8ba03ff31d98fcb108b0fb42523a1f06a7fb07edf3289da66f65034
+ ff54ceea34d4aedbb905d71caffb6606a0f79cdad6b2f58017bc00ef45caf399
+ 77e7edd22f3b062b04b89b96d1e8cd03b9b29fa587f401f8fd6a62d8cbb71ef4
+ 7df2e3610c0f4ef3d450b6d8b7c31e7941447ba40f06e4075e14e0a16f5e5a63
+ 99b3a2a17e2815958e6987e91027d3bf866efdad694b6701e0d00f96b72a4bfd
+ 8da6131d3857c403def32ac18f94a760bd4fa9734cfc018afadff0aab435f6b2
+ 43fdd1b32eb3fe59853bed4e5dba94b03dcb8d4d6a9ff87869b4637478053c92
+ 9ba43cc29edd3f9b4cfeb146e31eb1668cc427d9bd334e5aa9eb0cc904ebdac5
+ d1bb088339aa358e9ff7332d40cc7c7ee75e31e6c9653574c03b7aaf01187322
+ 20830119a3ce7f0bbfbbed86f38fc1e623dca824ae6e7b36c80cf4a28e14cd2e
+ 4668d586d8f2bccd1f20905da08c123dcee4f5cf3bafe9b0a0070ea712a84298
+ 60c0c41a9d95c0ae169cb39e84b25a35cfe2b02ed81f2c411067d2285dd95c89
+ c18a432bcc3faf4a4b5cde8688483cf4a1dc1b1e8e74ebfc64f490a7b45db66a
+ c019015d322d4b37f6266f49994e3ef325c8a99d11505591db9815600905b9a1
+ a1285de48c539790cb216c8539c3ac10b1837f0029e7f99dd4247e83b60a40e6
+ 1e21753f0334a39db7deabe2b439e1884ef499c02d716f9d3f9f73feaf6109b2
+ b9a9a87386d535b131b70db3f7e5d4f3c552fe3e38b21869bf5b0943b58ddfd5
+ df9ae1d24f07340f368a2031a3c44f14bc15a72dc076aba2c1692a98ef345d4a
+ 6b04111a500d4923e52674874ec0bf76a29522d56b9d19ebc75cae24d3d03fa5
+ 29709f30c3a1ff97371417fa35ee985360bdbba8b01367508d34373d990eed84
+ fe5eb1d10c74568566c91133af9524108120f1f89b5a6d04fc374821d0c0649a
+ f8b747e8564a45ebfa4677dcc105180a883a5f022f87e86d96c1ad56f42f1961
+ f54c672d98ea069b628febabe6120d96c9b8ce84dc797577ee292127000820df
+ 6323c444f9cb9f9430601cfa561249f072edbcdfe664847bb6f4b78ba9d2ad00
+ af3b9a70817316dec6ffc0cfc7d5405f96d637a5b8afcc7ec4fb5f66b1e2965b
+ 26b1667f7c5aca3023c0e64c47386f1862bab780dfb51ce4f964bb2dba117ab0
+ d6282d2b3ad88b4e2eaca9b48c108ec3a3cdb575ad507313515335551943af75
+ 9fa91154b3596c6f360053eee870715f6ee3682ec7a8962c180ba254075df59a
+ 15289032b51367eb654e425f3aee15e12d8e3288ae2b3cd36853d137d8489d87
+ a69bd27e74de22c6e472aacc5bb9d9c4e543027d861791f0417382a5f7f5118d
+ 54f42c8506f639562eca63b63f09566900017c1e22793d233570e28c97db72ca
+ 82c3396456c455b13802977bcda8a5f98f4a72471ad9189020603275348d8010
+ 4538c6d201312b42989bd8d895e9a32aafb6355f83a7afa4155e2c9afa5e1983
+ 4d299eeb204f4e1e8ff7c6c27b84481d1df84d53be1131680e0dab80f4578a6d
+ 37d638dfa311486749f970eafe54790e5a4ac79843a1acffd0a9f10a3e96fd83
+ 0f34bb060b1cbd05a442d69dd02dcf454ed3de8636a2a3989fbabeaee82efbf9
+ 4daca2bbcc014524d096f83891120582294389a727df8608512397b47e8ddbf3
+ 90f8bb64ab8f5b9ebf11538edb7f6ad0f484b3bdfef963a491135b18c9d5eabf
+ fe8196ebf1940d534eae41f8b8bd481d4b84d306b5f8de4715147e139031b07f
+ 093bdbd9150d86df6603e20097ce4c5db18b460fdc6349c824c4723681bb6826
+ 1a0282846b44a7ba90219c212e50d8784cd9b77cfab8c8ae14577863cc12ebd6
+ 13db9b9ebcb7d9c0868d1260feeee63300910d0e5b193e06ab861e540bddbd0a
+ 3ed29ddb978f2ff7c1672bd6525b5adf6818e14b260d7a0835ebf465f9dfca95
+ eeb2834967f05b9080a58de1f759406bb4294909a0922c7f7e4e2a69ed22104d
+ ed5b351f84260047b2f959b7dbeb9a3fa6f4710777780831c4f0259907b5fbe0
+ 1e09c208488553d62fc0f78a926971d3b37d969ed237137844c76f684bb07272
+ 8877e26cde0358319b57ade82c2d6aaf56ba3673517fc3fbf46390907c998b30
+ 4bb3c5aab906d9cfc53494c79e373b71852bd1cfd551c62dd4e5d4bfb95d8e48
+ 5f93db3d3d77dee88888c143e9fdd6c62b3584b5851532671fe14b7d4bee18db
+ 35fee74c18d203601a562093cd67013431a1efea99d930b6012f2501bd8a364b
+ 5c677d1c44b195af914137eafa94191d964ea4e014b7586a6d6c213b5e78fd49
+ b377c9210c98c95330ebbc74fd43226cb4d11ea5d2b3947bef55943e0fe93329
+ c6017b6cc9243f558eda77dbe536f3e8089764d490eaa846f61c9b373e91dfda
+ 7c2e54610bdc94c3a3d320e158537c5d6589f24a1bdd9bd2f74e2a2e32de41b6
+ 6f0b776eec863cdbfbea145551ea24bcee9358bcf014b060de3bced4fd9a9f3b
+ 1d93bed629c1fd548bc2e13a25d8fae5dd343888c8c9142f52e8f8a128f91247
+ e27c28fe6ba9cfc6191dcedf2511092b610b42c6023c27c05fec3273babb4cda
+ e85ff98db5a5b7aaf1719fe5adafd9555e2fc5d5869a6af636747fad416f3cc6
+ 947bc98e84fa1668beb3dc3067d96b40575e581df997b1cf4ec13b26856b5a2f
+ 42cb022dc9becddba32595855bd358ba8dc1bdc0f5485914337cc087e9c2ebea
+ 45b7fef087f305c963cec517db5518af5d3680230617a853ab677fe241c03a79
+ b84434f6a5cdc058868633449a984d302b0f0029d605110814e516dc4c0298b3
+ daa0bbb4caddc4098a451a050d2a60ff8694bee0da0e48eb04224636531918f5
+ 20edddb729bb4a230ded2ba323681e2f6b18b8da6c79f5c78396422affef23a9
+ ca8eb956c6061f2ebce77b97a8e7e1a9f8e2378e3d74a83e75b5d750f1f81e56
+ 5409bbf56ecd8d1c74328644ab3dd9dd4330d5be92aa4d6d569b3dea6f1aa990
+ e1beeb8feee4fd13f21ca1bedbb99b2fd060d99e771c52477ab494866b3fe20c
+ ad8c57d68d36893488ad051a4abbe95eb52544eb0f2f5d8f09f524784633e0e1
+ 3e275b9eaa134c0457a13fdb89207da4f6f370797c1c5fac809bccceb1a8b661
+ 34f67db7354e694b0c9f2a09af4bc7069851a3691280613802eef512fda2e9bf
+ cc008ee84e7af7bb51a09120022acb39032ec6fa4d59f6cee2f61b7a32b4daac
+ f289208bfd9981968144fa7669c2872cfe67cc15edba6cc109c926b22596a3c8
+ c96be633a6b9da032d4aa5e63ebb72924b58d96b61e1f723723a88eafd6c1015
+ 27cbe55e65de1dd4dabed9de5ebd5aec1f59d31735c57168675ffc3878cdca7d
+ a298214b7cc5a5a807031cda012751692b6d96b83a73c03d82f9f9b909d59be6
+ 19de4d1d77ff6eec0d0840ae7b8c1138ea80e162dc62684f8eed59b47670e4ed
+ dd066e9bc0d22915388b3be25afed12db90197124afb5355599676a55a2c321a
+ b6883ba8e423eacc9f5715172ce591bf056891c4420a952de2284a79293afc49
+ 73a0c455ff8e9efdbbf278fcb26711732b85ba3c66e1fb97882e09979b288291
+ d90e4348ab6d4cd786acc8a474a9664730ec81b41db90585a3531d19996821ef
+ dfe77d29b1290a17497521e464ca1398f4961310ae07795de44683df7cac2a3c
+ adffef23919ddf92dedd9c81f5c73cd30e21c9980c354bf20c7bf9ebe58a9709
+ 50124f81e3db868533e13436ef6c17c09b591962d021869a710a0e9bd826887b
+ ba23938f2767eae74371618aa06d9bf98c70352007d2ada2bb46f3c8e6e26689
+ aa6c7d37b9e8590404e7e3ad32a1d9845fcdbf799f5b59cc320ec17dc50c3570
+ 2b30f7f634d0f6bb431dd8378e198cf397a8ff7b57b613c085d206b4ec68cc38"

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
@ 2020-11-04 17:35 ` pullmoll
  2020-11-04 17:37 ` pullmoll
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pullmoll @ 2020-11-04 17:35 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 379 bytes --]

There is an updated pull request by pullmoll against master on the void-packages repository

https://github.com/pullmoll/void-packages firefox-esr-78
https://github.com/void-linux/void-packages/pull/26130

[WIP] firefox-esr: update to 78.4.0
Still testing if it builds for all platforms.

A patch file from https://github.com/void-linux/void-packages/pull/26130.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-firefox-esr-78-26130.patch --]
[-- Type: text/x-diff, Size: 57963 bytes --]

From eae8d56329bd3ff9bbde7510a51a2ef2ada42b4f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 16:13:37 +0100
Subject: [PATCH 1/2] firefox-esr: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr/files/firefox-wayland     |   2 +
 srcpkgs/firefox-esr/files/mozconfig           |   7 +-
 .../patches/big-endian-image-decoders.patch   |  88 +++++++++++
 .../disable-image-format-warning.patch        |  15 --
 srcpkgs/firefox-esr/patches/fix-cross.patch   |  16 ++
 ...686-musl.patch => fix-i686-ppc-musl.patch} |   0
 .../patches/fix-image-format-warning.patch    |  39 +++++
 .../patches/fix-sandbox-membarrier.patch      |  52 -------
 .../firefox-esr/patches/fix-seccomp-bpf.patch |  14 --
 srcpkgs/firefox-esr/patches/fix-toolkit.patch |  78 ----------
 srcpkgs/firefox-esr/patches/fix-tools.patch   |  29 ----
 .../firefox-esr/patches/flac-no-ffvpx.patch   |  26 ++++
 srcpkgs/firefox-esr/patches/gettid-musl.patch |  11 --
 .../firefox-esr/patches/ppc32-fix-build.patch |  36 +++++
 ...rustc-check.patch => rust-configure.patch} |   8 +-
 .../firefox-esr/patches/rust-has-i128.patch   |  21 +++
 .../firefox-esr/patches/sandbox-fork.patch    |  13 ++
 srcpkgs/firefox-esr/patches/skia-sucks1.patch | 147 +++++++++---------
 srcpkgs/firefox-esr/patches/skia-sucks3.patch |  28 +++-
 srcpkgs/firefox-esr/patches/sndio.patch       |  81 +++-------
 srcpkgs/firefox-esr/template                  | 120 ++++++++------
 21 files changed, 433 insertions(+), 398 deletions(-)
 create mode 100644 srcpkgs/firefox-esr/files/firefox-wayland
 create mode 100644 srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
 create mode 100644 srcpkgs/firefox-esr/patches/fix-cross.patch
 rename srcpkgs/firefox-esr/patches/{fix-i686-musl.patch => fix-i686-ppc-musl.patch} (100%)
 create mode 100644 srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-toolkit.patch
 create mode 100644 srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/gettid-musl.patch
 create mode 100644 srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
 rename srcpkgs/firefox-esr/patches/{remove-rustc-check.patch => rust-configure.patch} (85%)
 create mode 100644 srcpkgs/firefox-esr/patches/rust-has-i128.patch
 create mode 100644 srcpkgs/firefox-esr/patches/sandbox-fork.patch

diff --git a/srcpkgs/firefox-esr/files/firefox-wayland b/srcpkgs/firefox-esr/files/firefox-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/firefox-esr/files/firefox-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/firefox-esr/files/mozconfig b/srcpkgs/firefox-esr/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/firefox-esr/files/mozconfig
+++ b/srcpkgs/firefox-esr/files/mozconfig
@@ -3,7 +3,6 @@ ac_add_options --libdir=/usr/lib
 
 ac_add_options --with-system-nspr
 ac_add_options --with-system-nss
-ac_add_options --with-system-bz2
 ac_add_options --with-system-jpeg
 ac_add_options --with-system-zlib
 ac_add_options --with-system-libevent
@@ -12,12 +11,8 @@ ac_add_options --with-system-icu
 # XXX: the system's libpng doesn't have APNG support
 ac_add_options --without-system-png
 ac_add_options --enable-system-pixman
-ac_add_options --enable-system-sqlite
 ac_add_options --enable-system-ffi
 
-ac_add_options --with-nspr-prefix=${XBPS_CROSS_BASE}/usr
-ac_add_options --with-nss-prefix=${XBPS_CROSS_BASE}/usr
-
 nspr_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nspr"
@@ -26,13 +21,13 @@ nss_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nss"
 
-ac_add_options --disable-gconf
 ac_add_options --disable-tests
 ac_add_options --disable-crashreporter
 ac_add_options --disable-updater
 ac_add_options --disable-install-strip
 ac_add_options --disable-strip
 ac_add_options --disable-profiling
+ac_add_options --enable-release
 ac_add_options --enable-optimize="$CFLAGS"
 
 ac_add_options --enable-official-branding
diff --git a/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
@@ -0,0 +1,88 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1626236
+https://bug1626236.bmoattachments.org/attachment.cgi?id=9137096
+
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1582805876 -3600
+#      Thu Feb 27 13:17:56 2020 +0100
+# Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158
+# Parent  9cd90914846f667f18babc491a74c164ae5d6e9f
+imported patch decoder_workaround.patch
+
+diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp
+--- image/decoders/nsGIFDecoder2.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsGIFDecoder2.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -422,6 +422,9 @@
+   MOZ_ASSERT(mSwizzleFn);
+   uint8_t* data = reinterpret_cast<uint8_t*>(aColormap);
+   mSwizzleFn(data, data, aColors);
++#if MOZ_BIG_ENDIAN()
++  SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors);
++#endif
+ }
+ 
+ LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator,
+diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp
+--- image/decoders/nsJPEGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsJPEGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -263,6 +263,9 @@
+         case JCS_YCbCr:
+           // By default, we will output directly to BGRA. If we need to apply
+           // special color transforms, this may change.
++#if MOZ_BIG_ENDIAN()
++          mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB;
++#else
+           switch (SurfaceFormat::OS_RGBX) {
+             case SurfaceFormat::B8G8R8X8:
+               mInfo.out_color_space = JCS_EXT_BGRX;
+@@ -277,6 +280,7 @@
+               mState = JPEG_ERROR;
+               return Transition::TerminateFailure();
+           }
++#endif
+           break;
+         case JCS_CMYK:
+         case JCS_YCCK:
+diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp
+--- image/decoders/nsPNGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsPNGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -361,7 +361,7 @@
+                                    IResumable* aOnResume) {
+   MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!");
+ 
+-  return mLexer.Lex(aIterator, aOnResume,
++  LexerResult res = mLexer.Lex(aIterator, aOnResume,
+                     [=](State aState, const char* aData, size_t aLength) {
+                       switch (aState) {
+                         case State::PNG_DATA:
+@@ -371,6 +371,14 @@
+                       }
+                       MOZ_CRASH("Unknown State");
+                     });
++
++#if MOZ_BIG_ENDIAN()
++  if(res.is<TerminalState>() && res.as<TerminalState>() == TerminalState::SUCCESS) {
++      NativeEndian::swapToLittleEndianInPlace<uint32_t>((uint32_t*)(mImageData), mImageDataLength / 4);
++  }
++#endif
++
++  return res;
+ }
+ 
+ LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData(
+diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp
+--- image/decoders/nsWebPDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsWebPDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -237,7 +237,12 @@
+   // WebP doesn't guarantee that the alpha generated matches the hint in the
+   // header, so we always need to claim the input is BGRA. If the output is
+   // BGRX, swizzling will mask off the alpha channel.
++#if MOZ_BIG_ENDIAN()
++  mBuffer.colorspace = MODE_ARGB;
++  SurfaceFormat inFormat = mFormat;
++#else
+   SurfaceFormat inFormat = SurfaceFormat::OS_RGBA;
++#endif
+ 
+   SurfacePipeFlags pipeFlags = SurfacePipeFlags();
+   if (mFormat == SurfaceFormat::OS_RGBA &&
diff --git a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch b/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Imported from Adélie. Firefox is prone to this warning on BE and
-it leads to huge .xsession-errors, and the warning is not very
-important or meaningful, so just disable it.
-
---- gfx/2d/HelpersCairo.h
-+++ gfx/2d/HelpersCairo.h
-@@ -147,7 +147,7 @@
-     case SurfaceFormat::R5G6B5_UINT16:
-       return CAIRO_FORMAT_RGB16_565;
-     default:
--      gfxCriticalError() << "Unknown image format " << (int)format;
-+      //gfxCriticalError() << "Unknown image format " << (int)format;
-       return CAIRO_FORMAT_ARGB32;
-   }
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-cross.patch b/srcpkgs/firefox-esr/patches/fix-cross.patch
new file mode 100644
index 00000000000..9b8a816d269
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-cross.patch
@@ -0,0 +1,16 @@
+terrible hack to fix cross builds
+overwrite HOST_* flags to get rid of -MF
+
+note: this patch was used from firefox-77 until 80, dropped with the update to 81
+
+--- third_party/rust/glslopt/build.rs
++++ third_party/rust/glslopt/build.rs
+@@ -28,6 +28,8 @@
+     env::remove_var(format!("CXXFLAGS_{}", &target));
+     env::remove_var(format!("CFLAGS_{}", target.replace("-", "_")));
+     env::remove_var(format!("CXXFLAGS_{}", target.replace("-", "_")));
++    env::set_var("HOST_CFLAGS", "-O2");
++    env::set_var("HOST_CXXFLAGS", "-O2");
+
+     configure(&mut cc::Build::new())
+         .warnings(false)
diff --git a/srcpkgs/firefox-esr/patches/fix-i686-musl.patch b/srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/firefox-esr/patches/fix-i686-musl.patch
rename to srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
@@ -0,0 +1,39 @@
+# HG changeset patch
+# User Lee Salzman <lsalzman@mozilla.com>
+# Date 1462463631 14400
+#      Thu May 05 11:53:51 2016 -0400
+# Node ID 8da374804a09977c8f89af5e6e0cb37cb074595d
+# Parent  29662e28a9c93ac67ee0b8ddfb65a9f29bbf73f5
+handle big-endian formats in Cairo format conversions
+
+--- gfx/2d/HelpersCairo.h
++++ gfx/2d/HelpersCairo.h
+@@ -147,7 +147,14 @@ static inline cairo_format_t GfxFormatToCairoFormat(Su
+     case SurfaceFormat::R5G6B5_UINT16:
+       return CAIRO_FORMAT_RGB16_565;
+     default:
+-      gfxCriticalError() << "Unknown image format " << (int)format;
++      // _UINT32 formats don't match B8G8R8[AX]8 on big-endian platforms,
++      // and Moz2d uses B8G8R8[AX]8 as if it was _UINT32.
++      // See bug 1269654
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_FORMAT_RGB24;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image format " << (int)format;
++      }
+       return CAIRO_FORMAT_ARGB32;
+   }
+ }
+@@ -177,7 +184,11 @@ static inline cairo_content_t GfxFormatToCairoContent(
+     case SurfaceFormat::A8:
+       return CAIRO_CONTENT_ALPHA;
+     default:
+-      gfxCriticalError() << "Unknown image content format " << (int)format;
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_CONTENT_COLOR;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image content format " << (int)format;
++      }
+       return CAIRO_CONTENT_COLOR_ALPHA;
+   }
+ }
diff --git a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch b/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-allow usage of SYS_membarrier, needed since musl-1.1.22
-
---- security/sandbox/linux/SandboxFilter.cpp
-+++ security/sandbox/linux/SandboxFilter.cpp
-@@ -283,6 +283,8 @@
-       case __NR_set_tid_address:
-         return Allow();
- #endif
-+      case __NR_membarrier:
-+        return Allow();
- 
-         // prctl
-       case __NR_prctl: {
-
---- security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-@@ -1385,6 +1385,10 @@
- #define __NR_memfd_create (__NR_SYSCALL_BASE+385)
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier (__NR_SYSCALL_BASE+389)
-+#endif
-+
- // ARM private syscalls.
- #if !defined(__ARM_NR_BASE)
- #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
-
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-@@ -1290,5 +1290,9 @@
- #define __NR_memfd_create 319
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 324
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_
- 
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-@@ -1490,5 +1490,9 @@
- #define __NR_shutdown 373
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 375
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_
- 
diff --git a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch b/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig	2015-09-23 09:10:08.812740571 +0200
-+++ security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc	2015-09-23 09:11:38.404746155 +0200
-@@ -23,6 +23,11 @@
- #include "sandbox/linux/services/android_ucontext.h"
- #endif
- 
-+// musl libc defines siginfo_t __si_fields instead of _sifields
-+#if defined(OS_LINUX) && !defined(__GLIBC__)
-+#define _sifields __si_fields
-+#endif
-+
- namespace {
- 
- struct arch_sigsys {
diff --git a/srcpkgs/firefox-esr/patches/fix-toolkit.patch b/srcpkgs/firefox-esr/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-toolkit.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- toolkit.orig/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h.orig    2016-07-05 21:00:03.672000517 +0200
-+++ toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2016-07-05 21:05:37.347806230 +0200
-@@ -1134,6 +1134,12 @@
- #ifndef __NR_fallocate
- #define __NR_fallocate          285
- #endif
-+
-+#undef __NR_pread
-+#define __NR_pread __NR_pread64
-+#undef __NR_pwrite
-+#define __NR_pwrite __NR_pwrite64
-+
- /* End of x86-64 definitions                                                 */
- #elif defined(__mips__)
- #if _MIPS_SIM == _MIPS_SIM_ABI32
---- toolkit.orig/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -45,6 +45,7 @@
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#include <libgen.h>
- 
- #include <iostream>
- #include <set>
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -41,6 +41,10 @@
- 
- #include "common/using_std_string.h"
- 
-+#ifndef N_UNDF
-+#define N_UNDF 0
-+#endif
-+
- using std::vector;
- 
- namespace google_breakpad {
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-04-17 10:24:33.793431933 +0000
-@@ -55,7 +55,7 @@
-
- #ifdef HAVE_MACH_O_NLIST_H
- #include <mach-o/nlist.h>
--#elif defined(HAVE_A_OUT_H)
-+#elif 0
- #include <a.out.h>
- #endif
-
---- toolkit.orig/mozapps/update/common/updatedefines.h	2019-01-29 11:34:36.416804577 +0100
-+++ toolkit/mozapps/update/common/updatedefines.h	2019-01-29 11:34:59.193583777 +0100
-@@ -102,7 +102,7 @@
-
- #  ifdef SOLARIS
- #    include <sys/stat.h>
--#  else
-+#  elif !(defined(__linux__)) || defined(__GLIBC__)
- #    include <fts.h>
- #  endif
- #  include <dirent.h>
---- toolkit.orig/mozapps/update/updater/updater.cpp	2014-03-15 05:19:37.000000000 +0000
-+++ toolkit/mozapps/update/updater/updater.cpp	2014-04-17 10:24:33.796765327 +0000
-@@ -3978,6 +3978,7 @@
- 
- int add_dir_entries(const NS_tchar* dirpath, ActionList* list) {
-   int rv = OK;
-+#if !defined(__linux__) || defined(__GLIBC__)
-   FTS* ftsdir;
-   FTSENT* ftsdirEntry;
-   mozilla::UniquePtr<NS_tchar[]> searchpath(get_full_path(dirpath));
-@@ -4085,6 +4086,7 @@
-   }
- 
-   fts_close(ftsdir);
-+#endif
- 
-   return rv;
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-tools.patch b/srcpkgs/firefox-esr/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/firefox-esr/patches/fix-tools.patch
+++ b/srcpkgs/firefox-esr/patches/fix-tools.patch
@@ -1,34 +1,5 @@
---- tools/profiler/lul/LulElf.cpp.orig	2019-01-29 12:05:34.223834130 +0100
-+++ tools/profiler/lul/LulElf.cpp	2019-01-29 12:08:02.480400845 +0100
-@@ -469,10 +469,10 @@
- // Return the non-directory portion of FILENAME: the portion after the
- // last slash, or the whole filename if there are no slashes.
- string BaseFileName(const string& filename) {
--  // Lots of copies!  basename's behavior is less than ideal.
--  char* c_filename = strdup(filename.c_str());
--  string base = basename(c_filename);
--  free(c_filename);
-+  // basename's behavior is less than ideal so avoid it
-+  const char *c_filename = filename.c_str();
-+  const char *p = strrchr(c_filename, '/');
-+  string base = p ? p+1 : c_filename;
-   return base;
- }
- 
 --- tools/profiler/core/platform-linux-android.cpp.orig	2019-01-29 12:09:40.980448579 +0100
 +++ tools/profiler/core/platform-linux-android.cpp	2019-01-29 12:11:09.689590967 +0100
-@@ -253,7 +253,11 @@
- 
-   // Request profiling signals.
-   struct sigaction sa;
-+#if defined(GP_ARCH_arm)
-+  sa.sa_sigaction = SigprofHandler;
-+#else
-   sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
-+#endif
-   sigemptyset(&sa.sa_mask);
-   sa.sa_flags = SA_RESTART | SA_SIGINFO;
-   if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
 @@ -497,8 +501,10 @@
  ucontext_t sSyncUContext;
  
diff --git a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
@@ -0,0 +1,26 @@
+Enable FLAC on platforms without ffvpx like powerpc*
+
+diff --git dom/media/flac/FlacDecoder.cpp dom/media/flac/FlacDecoder.cpp
+index 53fc3c9937f7..b23771ab80fa 100644
+--- dom/media/flac/FlacDecoder.cpp
++++ dom/media/flac/FlacDecoder.cpp
+@@ -7,6 +7,7 @@
+ #include "FlacDecoder.h"
+ #include "MediaContainerType.h"
+ #include "mozilla/StaticPrefs_media.h"
++#include "PDMFactory.h"
+ 
+ namespace mozilla {
+ 
+@@ -14,6 +15,11 @@ namespace mozilla {
+ bool FlacDecoder::IsEnabled() {
+ #ifdef MOZ_FFVPX
+   return StaticPrefs::media_flac_enabled();
++#elif defined(MOZ_FFMPEG)
++  RefPtr<PDMFactory> platform = new PDMFactory();
++  return StaticPrefs::media_flac_enabled() &&
++         platform->SupportsMimeType("audio/flac"_ns,
++                                    /* DecoderDoctorDiagnostics* */ nullptr);
+ #else
+   // Until bug 1295886 is fixed.
+   return false;
diff --git a/srcpkgs/firefox-esr/patches/gettid-musl.patch b/srcpkgs/firefox-esr/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/firefox-esr/patches/gettid-musl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- tools/profiler/core/platform-linux-android.cpp.orig	2019-07-09 22:58:30.039475686 +0200
-+++ tools/profiler/core/platform-linux-android.cpp	2019-07-09 22:58:39.331437677 +0200
-@@ -73,7 +73,7 @@
- 
- int profiler_current_thread_id() {
-   // glibc doesn't provide a wrapper for gettid().
--#if defined(__GLIBC__)
-+#if defined(__linux__)
-   return static_cast<int>(static_cast<pid_t>(syscall(SYS_gettid)));
- #else
-   return static_cast<int>(gettid());
diff --git a/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
@@ -0,0 +1,36 @@
+This is not a complete/correct patch, but it makes firefox build. For now
+mostly for tracking, so a real fix can be made, but right now it still
+segfaults on start.
+
+Ref: https://hg.mozilla.org/mozilla-central/rev/08339a56f3ae
+Ref: https://hg.mozilla.org/mozilla-central/rev/d16fcad6aa60
+Ref: https://hg.mozilla.org/mozilla-central/rev/ab87611d012e
+Ref: https://hg.mozilla.org/mozilla-central/file/tip/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
+
+--- xpcom/reflect/xptcall/xptcall.h
++++ xpcom/reflect/xptcall/xptcall.h
+@@ -71,6 +71,11 @@ struct nsXPTCVariant {
+     ExtendedVal ext;
+   };
+ 
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  // this field is still necessary on ppc32, as an address
++  // to it is taken certain places in xptcall
++  void *ptr;
++#endif
+   nsXPTType type;
+   uint8_t flags;
+ 
+@@ -91,7 +96,12 @@ struct nsXPTCVariant {
+   };
+ 
+   void ClearFlags() { flags = 0; }
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  void SetIndirect() { ptr = &val; flags |= IS_INDIRECT; }
++  bool IsPtrData() const { return IsIndirect(); }
++#else
+   void SetIndirect() { flags |= IS_INDIRECT; }
++#endif
+ 
+   bool IsIndirect() const { return 0 != (flags & IS_INDIRECT); }
+ 
diff --git a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch b/srcpkgs/firefox-esr/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/firefox-esr/patches/remove-rustc-check.patch
rename to srcpkgs/firefox-esr/patches/rust-configure.patch
index 26a20dd94ce..887c102bc55 100644
--- a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch
+++ b/srcpkgs/firefox-esr/patches/rust-configure.patch
@@ -1,9 +1,9 @@
 Mozilla rustc check does not support crossbuild: let's remove it
 Remove calls to unwrap_rustup, they fail if rustup isn't present
 
---- build/moz.configure/rust.configure	2019-07-06 03:48:30.000000000 +0200
-+++ build/moz.configure/rust.configure	2019-07-09 22:35:23.326851798 +0200
-@@ -79,9 +79,6 @@
+--- build/moz.configure/rust.configure.orig	2019-10-17 04:19:59.000000000 +0700
++++ build/moz.configure/rust.configure	2019-10-22 11:48:55.616022140 +0700
+@@ -78,9 +78,6 @@
  
      return unwrap
  
@@ -13,7 +13,7 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -365,26 +362,6 @@
+@@ -348,26 +345,6 @@
  
              os.write(in_fd, source)
              os.close(in_fd)
diff --git a/srcpkgs/firefox-esr/patches/rust-has-i128.patch b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
@@ -0,0 +1,21 @@
+The configure check fails for cross builds.
+i128 is supported since rust-1.26, so it is safe for us to assume it is always present
+
+--- third_party/rust/num-traits/build.rs.orig	2020-02-14 23:57:25.985355610 +0100
++++ third_party/rust/num-traits/build.rs	2020-02-14 23:58:36.255710188 +0100
+@@ -1,14 +1,5 @@
+-extern crate autocfg;
+-
+-use std::env;
+-
+ fn main() {
+-    let ac = autocfg::new();
+-    if ac.probe_type("i128") {
+-        println!("cargo:rustc-cfg=has_i128");
+-    } else if env::var_os("CARGO_FEATURE_I128").is_some() {
+-        panic!("i128 support was not detected!");
+-    }
++    println!("cargo:rustc-cfg=has_i128");
+ 
+     autocfg::rerun_path("build.rs");
+ }
diff --git a/srcpkgs/firefox-esr/patches/sandbox-fork.patch b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
@@ -0,0 +1,13 @@
+make SYS_fork non-fatal, musl uses it for fork(2)
+
+--- security/sandbox/linux/SandboxFilter.cpp
++++ security/sandbox/linux/SandboxFilter.cpp
+@@ -1253,6 +1253,8 @@
+         // usually do something reasonable on error.
+       case __NR_clone:
+         return ClonePolicy(Error(EPERM));
++      case __NR_fork:
++        return Error(ENOSYS);
+ 
+ #  ifdef __NR_fadvise64
+       case __NR_fadvise64:
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks1.patch b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks1.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
@@ -1,84 +1,77 @@
-# HG changeset patch
-# Parent  548d0a2f3a22bfac32ec0c3921c6c969c8bf32a9
+https://bugzilla.mozilla.org/show_bug.cgi?id=1504834#c5
+https://bugzilla.mozilla.org/attachment.cgi?id=9028600
 
-diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
---- gfx/2d/ConvolutionFilter.cpp	Mon Jul 22 16:57:54 2019 +0200
-+++ gfx/2d/ConvolutionFilter.cpp	Thu Jul 25 14:27:59 2019 +0200
-@@ -35,9 +35,38 @@
-   return true;
+--- gfx/skia/skia/third_party/skcms/skcms.cc
++++ gfx/skia/skia/third_party/skcms/skcms.cc
+@@ -30,6 +30,8 @@
+         #include <avx512fintrin.h>
+         #include <avx512dqintrin.h>
+     #endif
++#elif defined(__BIG_ENDIAN__)
++    #define SKCMS_PORTABLE
+ #endif
+ 
+ // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
+@@ -280,20 +282,28 @@ enum {
+ static uint16_t read_big_u16(const uint8_t* ptr) {
+     uint16_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ushort(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ushort(be);
++    #else
+     return __builtin_bswap16(be);
++    #endif
+ #endif
  }
  
-+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
+ static uint32_t read_big_u32(const uint8_t* ptr) {
+     uint32_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ulong(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ulong(be);
++    #else
+     return __builtin_bswap32(be);
++    #endif
+ #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
+--- gfx/2d/DrawTargetSkia.cpp
++++ gfx/2d/DrawTargetSkia.cpp
+@@ -138,8 +138,7 @@ static IntRect CalculateSurfaceBounds(const IntSize& a
+   return surfaceBounds.Intersect(bounds);
  }
  
- /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
-diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h
---- gfx/skia/skia/include/core/SkPreConfig.h	Mon Jul 22 16:57:54 2019 +0200
-+++ 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
+-static const int kARGBAlphaOffset =
+-    SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
++static const int kARGBAlphaOffset = 0;
+ 
+ static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
+                              const int32_t aStride, SurfaceFormat aFormat) {
+--- gfx/2d/Types.h
++++ gfx/2d/Types.h
+@@ -87,15 +87,8 @@ enum class SurfaceFormat : int8_t {
+ // 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.
+   //
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks3.patch b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks3.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
@@ -1,3 +1,5 @@
+CompositableHost.cpp patch added by @q66, based on patch in issue 1602730.
+
 # HG changeset patch
 # Parent  46ea866ca3acb8bb5e1709ceb799b9c94f591dec
 Problem description: Tab-titles that are too long to fit into a tab get faded out.
@@ -17,7 +19,7 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
        SkCanvas::kPreserveLCDText_SaveLayerFlag |
            (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
  
-+#if MOZ_BIG_ENDIAN
++#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.
@@ -28,3 +30,27 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
    mCanvas->saveLayer(saveRec);
  
    SetPermitSubpixelAA(aOpaque);
+--- gfx/layers/composite/CompositableHost.cpp
++++ gfx/layers/composite/CompositableHost.cpp
+@@ -13,6 +13,7 @@
+ #include "ImageHost.h"  // for ImageHostBuffered, etc
+ #include "Layers.h"
+ #include "TiledContentHost.h"  // for TiledContentHost
++#include "mozilla/EndianUtils.h"
+ #include "mozilla/gfx/gfxVars.h"
+ #include "mozilla/layers/LayersSurfaces.h"  // for SurfaceDescriptor
+ #include "mozilla/layers/TextureHost.h"     // for TextureHost, etc
+@@ -92,9 +93,13 @@ bool CompositableHost::AddMaskEffect(EffectChain& aEffects,
+   }
+   MOZ_ASSERT(source);
+ 
++  // Setting an alpha-mask here breaks the URL-bar on big endian (s390x)
++  // if the typed URL is too long for the textbox (automatic scrolling needed)
++#if MOZ_LITTLE_ENDIAN()
+   RefPtr<EffectMask> effect =
+       new EffectMask(source, source->GetSize(), aTransform);
+   aEffects.mSecondaryEffects[EffectTypes::MASK] = effect;
++#endif
+   return true;
+ }
+ 
diff --git a/srcpkgs/firefox-esr/patches/sndio.patch b/srcpkgs/firefox-esr/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/firefox-esr/patches/sndio.patch
+++ b/srcpkgs/firefox-esr/patches/sndio.patch
@@ -1,8 +1,8 @@
 --- old-configure.in.orig
 +++ old-configure.in
-@@ -2839,6 +2839,22 @@
- 
- AC_SUBST(MOZ_ALSA)
+@@ -2818,6 +2818,22 @@
+     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
+ fi
  
 +dnl ==================================
 +dnl = Check sndio availability
@@ -21,26 +21,11 @@
 +AC_SUBST(MOZ_SNDIO)
 +
  dnl ========================================================
- dnl = Disable PulseAudio
- dnl ========================================================
---- toolkit/library/moz.build.orig
-+++ toolkit/library/moz.build
-@@ -235,10 +235,8 @@
- if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'):
-     OS_LIBS += CONFIG['TK_LIBS']
- 
--if CONFIG['OS_ARCH'] == 'OpenBSD':
--    OS_LIBS += [
--        'sndio',
--    ]
-+if CONFIG['MOZ_SNDIO']:
-+    OS_LIBS += CONFIG['MOZ_SNDIO_LIBS']
- 
- if CONFIG['MOZ_ENABLE_DBUS']:
-     OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS']
+ dnl =
+ dnl = Maintainer debug option (no --enable equivalent)
 --- media/libcubeb/src/moz.build.orig
 +++ media/libcubeb/src/moz.build
-@@ -43,7 +43,7 @@
+@@ -44,11 +44,13 @@
      ]
      DEFINES['USE_JACK'] = True
  
@@ -49,49 +34,19 @@
      SOURCES += [
          'cubeb_sndio.c',
      ]
---- build/moz.configure/old.configure.orig
-+++ build/moz.configure/old.configure
-@@ -169,6 +169,7 @@
+     DEFINES['USE_SNDIO'] = True
++
++if CONFIG['OS_ARCH'] == 'OpenBSD':
+     DEFINES['DISABLE_LIBSNDIO_DLOPEN'] = True
+ 
+ if CONFIG['OS_TARGET'] == 'Darwin':
+--- build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
++++ -	2020-06-30 12:18:26.027756310 +0200
+@@ -210,6 +210,7 @@
  @old_configure_options(
      '--cache-file',
      '--datadir',
 +    '--enable-sndio',
-     '--enable-content-sandbox',
-     '--enable-cookies',
-     '--enable-cpp-rtti',
---- security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp.orig
-+++ security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
-@@ -349,6 +349,21 @@
-         }
-       }
-     }
-+
-+#ifdef MOZ_SNDIO
-+    // ~/.aucat_cookie (sndio)
-+    rv = homeDir->Clone(getter_AddRefs(confDir));
-+    if (NS_SUCCEEDED(rv)) {
-+      rv = confDir->AppendNative(NS_LITERAL_CSTRING(".aucat_cookie"));
-+      if (NS_SUCCEEDED(rv)) {
-+        nsAutoCString tmpPath;
-+        rv = confDir->GetNativePath(tmpPath);
-+        if (NS_SUCCEEDED(rv)) {
-+          policy->AddPath(rdwrcr, tmpPath.get());
-+        }
-+      }
-+    }
-+#endif
-   }
- 
-   // Firefox binary dir.
---- security/sandbox/linux/moz.build.orig
-+++ security/sandbox/linux/moz.build
-@@ -81,6 +81,9 @@
- if CONFIG['MOZ_ALSA']:
-     DEFINES['MOZ_ALSA'] = True
- 
-+if CONFIG['MOZ_SNDIO']:
-+    DEFINES['MOZ_SNDIO'] = True
-+
- # This copy of SafeSPrintf doesn't need to avoid the Chromium logging
- # dependency like the one in libxul does, but this way the behavior is
- # consistent.  See also the comment in SandboxLogging.h.
+     '--enable-crashreporter',
+     '--enable-dbus',
+     '--enable-debug-js-modules',
diff --git a/srcpkgs/firefox-esr/template b/srcpkgs/firefox-esr/template
index eb3c32bed59..51f1ebe2334 100644
--- a/srcpkgs/firefox-esr/template
+++ b/srcpkgs/firefox-esr/template
@@ -3,57 +3,59 @@
 # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-esr-i18n".
 #
 pkgname=firefox-esr
-version=68.11.0
+version=78.4.0
 revision=1
 wrksrc="firefox-${version}"
-build_helper="rust"
-short_desc="Mozilla Firefox web browser - Extended Support Release (ESR)"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_helper="rust qemu"
+hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo
+ llvm clang nodejs-lts-10 cbindgen python nasm which tar"
+makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
+ libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
+ libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel)
+ $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
+ $(vopt_if xscreensaver libXScrnSaver-devel)
+ $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)"
+depends="nss>=3.53 desktop-file-utils hicolor-icon-theme"
+short_desc="Firefox browser - Extended Support Release"
+maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.mozilla.org/firefox/organizations/"
 distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
-checksum=91c1f7caaf1ba785b74799865227456bf784ba614d17cf5f0f41a5f25d6d2160
-
+checksum=8e3cf0bbf1062768134db2eb10ab774731ca5ec6694b65def82234bb0a9170fc
 lib32disabled=yes
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
-makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
- pixman-devel sqlite-devel libevent-devel libnotify-devel libvpx5-devel
- libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
- $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
- $(vopt_if startup_notification startup-notification-devel)
- $(vopt_if xscreensaver libXScrnSaver-devel) $(vopt_if sndio sndio-devel)"
-depends="nss>=3.44.3 desktop-file-utils hicolor-icon-theme"
 conflicts="firefox>=0"
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
+build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland"
+build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 
 case $XBPS_TARGET_MACHINE in
-	armv[56]*) broken="required NEON extensions are not supported on armv6" ;;
+	armv[56]*) broken="required NEON extensions are not supported on armv[56]" ;;
 	ppc64*) ;;
 	ppc*) broken="xptcall bitrot" ;;
 esac
 
+if [ "$XBPS_TARGET_ENDIAN" = "be" ]; then
+	broken="rendering is busted, dunno why"
+fi
+
+CXXFLAGS="-Wno-class-memaccess -Wno-unused-function"
+
 if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
 	makedepends+=" libatomic-devel"
 fi
 
-# we need this because cargo verifies checksums of all files in vendor
-# crates when it builds and gives us no way to override or update the
-# file sanely... so just clear out the file list
+# We need this because cargo verifies checksums of all files
+# in vendor crates when it builds and gives us no way to
+# override or update the file sanely... so just clear out the file list
 _clear_vendor_checksums() {
 	sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
 }
 
 post_extract() {
-	case "$XBPS_TARGET_MACHINE" in
-	*-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		cp "${FILESDIR}/stab.h" toolkit/crashreporter/google-breakpad/src/
-		;;
-	esac
-
+	fi
 	# Google API key (see http://www.chromium.org/developers/how-tos/api-keys)
 	# Note: This is for Void Linux use ONLY.
 	echo -n "AIzaSyCIFdBA7eQP43R6kXRwTq7j6Mvj1ITze90" > google-api-key
@@ -64,19 +66,18 @@ post_extract() {
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
+	_clear_vendor_checksums glslopt
 }
 
 do_build() {
-	cp "${FILESDIR}/mozconfig" "${wrksrc}/.mozconfig"
+	cp ${FILESDIR}/mozconfig .mozconfig
 
-	case "$XBPS_TARGET_MACHINE" in
-	       *-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		echo "ac_add_options --disable-jemalloc" >>.mozconfig
 		echo "ac_add_options --disable-gold" >>.mozconfig
 		echo "ac_add_options --enable-release" >>.mozconfig
-		;;
-	esac
+	fi
 
 	case "$XBPS_TARGET_MACHINE" in
 	arm*|x86_64*|i686*)
@@ -101,17 +102,16 @@ do_build() {
 
 		export BINDGEN_CFLAGS="--target=$XBPS_CROSS_TRIPLET \
 			--sysroot=${XBPS_CROSS_BASE} ${BINDGEN_INCLUDE_FLAGS}"
-		export HOST_CC=cc
+		export HOST_CC="${CC_host}"
 		export TARGET_CC="${CC}"
 		export HOST_CFLAGS="${XBPS_CFLAGS}"
 		export HOST_CXXFLAGS="${XBPS_CXXFLAGS}"
-		export ac_cv_sqlite_secure_delete=yes \
-			ac_cv_sqlite_threadsafe=yes \
-			ac_cv_sqlite_enable_fts3=yes \
-			ac_cv_sqlite_dbstat_vtab=yes \
-			ac_cv_sqlite_enable_unlock_notify=yes \
-			ac_cv_prog_hostcxx_works=1
-
+		echo "ac_cv_sqlite_secure_delete=yes" >> .mozconfig
+		echo "ac_cv_sqlite_threadsafe=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_fts3=yes" >> .mozconfig
+		echo "ac_cv_sqlite_dbstat_vtab=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_unlock_notify=yes" >> .mozconfig
+		echo "ac_cv_prog_hostcxx_works=1" >> .mozconfig
 		echo "ac_add_options --target=$XBPS_CROSS_TRIPLET" >>.mozconfig
 		echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig
 	else
@@ -138,6 +138,11 @@ do_build() {
 		build/moz.configure/toolchain.configure
 	fi
 
+	case "$XBPS_TARGET_MACHINE" in
+	aarch64*|i686*|x86_64*)
+		echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
+	esac
+
 	export LDFLAGS+=" -Wl,-rpath=/usr/lib/firefox"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -147,38 +152,57 @@ do_build() {
 	export MOZ_MAKE_FLAGS="${makejobs}"
 	export MOZ_NOSPAM=1
 	export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild"
+	export MACH_USE_SYSTEM_PYTHON=1
 
 	export AS=$CC
 
-	cat <<! >>.mozconfig
+	cat >>.mozconfig <<EOF
 ac_add_options --with-google-location-service-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-google-safebrowsing-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key"
 ac_add_options $(vopt_enable alsa)
+ac_add_options $(vopt_enable jack)
 ac_add_options $(vopt_enable sndio)
 ac_add_options $(vopt_enable dbus)
 ac_add_options $(vopt_enable dbus necko-wifi)
 ac_add_options $(vopt_enable pulseaudio)
-ac_add_options $(vopt_enable startup_notification startup-notification)
-!
-
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
+EOF
 	rm -f old-configure
 	./mach build
+
+	# Make langpacks for all languages
+	dir=$(ls -d obj-*/browser/locales)
+	cd ${wrksrc}/${dir}
+	for lang in ${languages[*]}; do
+		msg_normal "Making langpack for ${lang} ...\n"
+		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
+	done
 }
+
 do_install() {
+	export MACH_USE_SYSTEM_PYTHON=1
 	DESTDIR="$DESTDIR" ./mach install
 
+	vbin ${FILESDIR}/firefox-wayland
 	vinstall ${FILESDIR}/vendor.js 644 usr/lib/firefox/browser/defaults/preferences
 	vinstall taskcluster/docker/firefox-snap/firefox.desktop 644 usr/share/applications
 
-	for i in 16x16 22x22 24x24 32x32 48x48 128x128 256x256; do
+	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
 		vinstall ${wrksrc}/browser/branding/official/default${i%x*}.png 644 \
 			usr/share/icons/hicolor/${i}/apps firefox.png
 	done
+	vinstall ${wrksrc}/browser/branding/official/default256.png 644 \
+		usr/share/pixmaps firefox.png
 
-	# We don't want the development stuff
-	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
+	# Use system-provided dictionaries
+	rm -rf ${DESTDIR}/usr/lib/firefox/{dictionaries,hyphenation}
+	ln -s /usr/share/hunspell ${DESTDIR}/usr/lib/firefox/dictionaries
+	ln -s /usr/share/hyphen ${DESTDIR}/usr/lib/firefox/hyphenation
 
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf firefox ${DESTDIR}/usr/lib/firefox/firefox-bin
+
+	# Remove the development files - noone uses them
+	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
 }

From 015f5422735bd8de2db67a1b7b5c2ce0149fb9ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 18:01:21 +0100
Subject: [PATCH 2/2] firefox-esr-i18n: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr-i18n/template | 190 +++++++++++++++---------------
 1 file changed, 95 insertions(+), 95 deletions(-)

diff --git a/srcpkgs/firefox-esr-i18n/template b/srcpkgs/firefox-esr-i18n/template
index 6fdd22574cb..d8df644a8c1 100644
--- a/srcpkgs/firefox-esr-i18n/template
+++ b/srcpkgs/firefox-esr-i18n/template
@@ -1,10 +1,10 @@
 # Template file for 'firefox-esr-i18n'
 pkgname=firefox-esr-i18n
-version=68.11.0
+version=78.4.0
 revision=1
 build_style=meta
 short_desc="Firefox ESR language packs"
-maintainer="Orphaned <orphan@voidlinux.org>"
+maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-2.0"
 homepage="https://www.mozilla.org/firefox/"
 
@@ -135,96 +135,96 @@ _pkgtmpl() {
 	}
 }
 
-checksum="a96b2eab357c1d3ae79978919d78227e91427464ec0d506276e8448df878e4de
- 77b3f295c0c8e331deec5ac81c4566e70e686e1134569e3dc383406634148642
- dddd186a5e1835778736cf1eb6254dc6909b0fc547b312695788cc455b52aa9e
- a59a86cc1838461ee51c3235c617ee28bb0ae7a4422866b645f67a7a2bc77673
- 52acf8999a4f46549ef251787681f8db62ee44a1653cd1eefb82b5c8a7e3c480
- 02d42d95c95d4b83716d71dbc8f9eab6d046540be34bc65360f16deca54840e8
- 458001594cf5402dae30241193ffcdf0f727bc0451b46382cd12939458459258
- 87be7b1c87ad813430e9f587315f1371f21f655ecb7f6dd90380741597ee818b
- 67f628587202ffef8744e2399fc2e808454562f6e68a607c4a0dadff38f68789
- 27b99f0e05d79f39abbb1770190f4a3d049aa527bd02ce9dd6815a3f73e3757f
- 4b30e8c01fc67bb11779fa50d8e1b2c93d6a2a936c6d8c77d3314df0cfccc131
- 45ebc6437bcc217ac54b0bf380a2f3f2e6cbbeada8d74269a760ae0d7a3a47da
- 139126e7e7f6c78e23da66dca5441fc9c0c53eca1009cf58377044fe6fdeb202
- 92b1a9b9465237c6423aac78cd02110354f7a4d4f89e915e045e3cf224323c51
- a0abce87643502f16e3a4dde825cf3e7f58cd75f5a4196451ede813b799611c3
- 8faaf99245fa5fd7a8ffe0344a6892546735c19eb9f2c6ecc534fc5808e26aec
- 9317185ea24b23004971de4187b2561d12c82872e4aa61f406bc02d5e83617fd
- 6869b14cf69508cd2f34cc722b346f30db0ec3891ebcc31908f69a1f307c8d67
- c153a54ec2e4ad4e817f8fa91d29a1698c11ca9ec04e494e1d866c7d9842ee8e
- dfe8300b735d2141798f8255d3ec102699b5b127bf9cfe5860784220ca0b6055
- fd57e1055a25fa1dcd5a91393408dad91bf0db2054c4bfd29ab47785f3156599
- a9f17b51896142082b3bfdcdbca9a472d95c5dd12005f2c3ce346c938d57ce7f
- 935826ae44cace20973c9ee32df8032fa95ab82843a92c514add0d8c44fb4c7e
- 4579dd24069d6414eb105d58c1789605a0ada438504f4fc14c724a4ee78b3726
- f69ec189d7eb2a4074a9218a9b87399f0504b8790e8aab98650120acc20ca184
- 4164c7f23e13e86f6c3e3bb1319da47a51d8b35b13acd2e8bf1c371d6c8a6ec3
- ffac444bc57d684f0f131f93ff48ddf4db3761905fa36882659a380eddaa1703
- 017049781b08378ab45a8cc95efda95e8dc4d10dc86d26efaf8209c51c556a0a
- 5b7851dca418b6cb08a3e6d4f189478de2fba5869d559f82740eec55abb45f93
- ef8c1054b528afc780b916f87b5038c0d2baa02a4445f7ec18c11f316766533e
- ee81934fbe482564a28f5e4cd44d3596b5f3a3926abf4e7c30c52918199299e1
- 269f6ca41e1322939ec1ed68a919e84e990cd431d7dbfc2bb67d3708e8d89bd8
- c29406cfb4d94e98e15ec5f0fe9f9cec52a6e251865683cca307ff562b52d0a7
- 025c7ed2fec33d06eb3cca4b7255d8b133cccb5d943d38afceef93ffc494e9e1
- ac70f1b3f164798e4c95dddb81e45ae91f40ad66b97cd443da94df68cc7b7964
- b467e26b8facc706501ec93be8b23c4fbc16b1fd01678f968d591951b7dab19b
- cf0b4e1f2c0620b19917e616ce1d94da9b4361e1e642c080fe36580911d61b18
- fd18f16b746c48224e4721d2a118fad44c598ca851778331aed4bd4355d8e982
- 064fe64bde1cd1bf2c255297af730ef0487fb193d5ca425935fc26e6e46c6733
- 06396fbfaebba29ffded9c79942e7fe6d988d1e0e26ac6bb3082dc5c1bfd1370
- ac2d5b18284b3702a3b93e09c73dabc42894088bf7bd3ecd9e1114c882ad88be
- 8f96e6b7e4be985ca90e5a378cb90a87cdef5b0ef36a64e86aac042e6f4dce74
- ca38f1b8c8198150986e35264d6c8a0f56c2e4b694738d926104d360d1244c1e
- bdb3756655fb54f5fb3feca19dce0bb6a7a98293f0def9f8855dbd269d20a259
- f531eee42bb19c32ea1242beb29147e064da58caeede025510d8b3092198c62b
- 05df51330571877fd1ab339183e6d68a5c92c5a132e109464b75dd5d4879d969
- 8492216768d7c008a224d5831b47bf0ef6a7ac19ce21b0113ecce921868654ca
- adea068ac99f58030551f1a080bd70d946c20edd9000c554f46289f3ea75c4bb
- 0d909de2c7320827eab604e697ad3bd89adfd55c9e8ea5aabc2e3938f45025bc
- 6edbe0259392b489ff808174e107d01dcaaf42b862ee3d0b804cfbda1ff636d3
- 4fc4c48637a0d285e85db0d699a62a08c6cc503073b4201b6115c13f9c7283dd
- e6fe631141ce94e6425e4c745fe2b5a2cbda685c5492ebb3c614d09433c455b8
- 6f0730299dd9fd362c6b994128bce064bf215fd27f55a673fda6569bbf38a4c4
- bb2e2cc0a0e4047b67b28596685b228c69c85a6a65d37c2c1003d7a9d8fd378a
- 8640f7eaa4aa157ce94c951d9eecfaffd0d603bc05ce95559d90042302c99803
- 2641ca0efcde0c92cc2ad4ad6c65fbe3ab56b711d88f26fd4e78c18cd3138aa2
- 34cf05b4d96261da6e972bd64bba273de11b24b3032de1bdf1777d69d968b114
- 0fb47c0ac1aec79351af5e06782c2ba1afd26cf8cc37505858e4028261affdf0
- c4926c88b3466385c6040378e0fe9f777536f540e01b01f3d70ee514ff3593a6
- b6edc8d2a7f9ea08ad89d05560351d5dd90f1bdc73c5ca7f6fc6e2cd6902bcd3
- 5f25b4cc7443a6e8b30a4ffd8233920b2b8e4d1a6adca465739d7badd80f1534
- 81248e707ced39e1bab3d28c9735dbe15ab7e8a9b563e887a65c6e995045bf17
- 5fcabf089b74c00a4864dd77191fdbc8c5c35a7b748c96834961d2e2c1d2b15b
- ea07bc5f78c771e803b00844a49d7f6e45abb6624a106d921d7a0d4bcc8ed886
- 3c30cfbb658332f44a397e91da7aefbab02adb34bdc534386f6acb47e5eb5c18
- ea4f2864fa6624a43cc04ad8222256a12b6c2aef877ac811f8c2f64097439006
- 0bcd2198157a72df46c6702cc1330b152555341eeb4f046f6e7cec63d0715802
- 2eca90bf5c6f0c762fb1f52cfa7f0146fae69a85bd45080066b8ef3514dc24e5
- 506ba2747f0eac45f42ee729ca5bbc41931630852f2288244233e98cd7c9a489
- de98305ce3526749f4cac6ffd47861a3cad7f2cbf25180471c68cf3280776edf
- 4a8de2a062d67875dec79748e4cb03a3881e378108ede064d5aab10145afd2a2
- c638de4dc72b87dab2e315b2da71d7612762c4d483d75d2feaa655e24db64241
- 090918108985a1ab3ee8e155c97e6ef4ab7b7b2613f4be3388bfb4758be4e503
- 4153ffb1c211c3c45a0efa9700c0908544f90d6a848f5096120933bfd94c44c3
- 96d86350fd693bf708e4f4f7de238e71e0b90bcdac3205a3a25c84b13500bd99
- ae4a76c6644585df1777d46ef10dbcbdb35dee0a13a45622bd49ad7b5eb996ac
- ecb6a93d321be76717245b6a651b96123ec1765f133779caf8a43b38827aa892
- 51932dccdd95a740fafdb2873f56c3306d803db5a796fd8379d986d84fd128a2
- 8162375363e6f1650230bc643e2bde1d0018b4f6cf54369e0c59967ad5fa4a97
- 72c79a7c65a637cb918e999d7d7ee13f4736e646512d165371740862e1e943b1
- 558887a62a2b09636c5c5f8e7ed99b018344af190ebdf1a6d71548cda11d032e
- b39046f78509d308072b384511725776d9de7da667f12bc6508eb6c39f843c75
- 9038e9e671846f1839fa3b4794f121e546ce544021848f933c239b9917a16c2d
- e238909d4f9ab35a0f1f56cd85747b307626f9713c3899d6497b3e1f257f28cb
- 220793d97e399aca5d5e82bf159eb12b7acb6d974fcd693d45c7c264e85e6548
- ef3f9f02f67084fc4dc4bde464002502a176cb7361813815c5460dd94ae0656d
- 7baede2ac4e391b60896a0a02242aeabfe55ce8b50e7b05d5b77d99dda6b76e1
- 5dec1a1452fc2303c655f153c19d675ef200f448be4b0c2b2b2d50244c820b41
- 88ed2511992f45b930922fd4bba5e5ececc761029e3d92cd092d5ed5f66a3030
- fcd8e1dea4a1c33fd72b096a61712f74a269ab334bf93653b265ee9e2871d999
- 4ec2d6697632bc8dfd294b668d514deb37efde5414881dccbb9a280fa9f86ef4
- 6c9aea7e23d20cb9074dc4acf8936cf249eb5b6e2c5ba1e4eab27267b41822a4
- 5c0f5c8cc336e73a98dd6b22bc11c418e2ab33bc95ac5b7c948ea4eba1f1a7e3"
+checksum="35c752c8332e93c7ae10e09691440accdde03232be291f57f106a73e0522da4e
+ c0a32333c4d33626b108d6e89f0ebae3924d95e97f93e739ff4720d79d895756
+ b1a51894781f6fb757a4502e5f59eb577174274260f980321a8169c5a6b4c761
+ 925a61467b506d94c59a0003d8e3f5b01d6bafbac612fd5ab52633661939ad45
+ 4ce396e8f2a65d12b082e5d3541069a80ffd79b52286db1de7dc2669923a4212
+ 885454f2fa66015fc772442b420cf9361f0ea8fcc6a861c5b3b8952b999e4b23
+ 433b6de936c7cfb7a025fc25767744c7392386de646724757d10f586aa83b24a
+ 9e17a358e8ba03ff31d98fcb108b0fb42523a1f06a7fb07edf3289da66f65034
+ ff54ceea34d4aedbb905d71caffb6606a0f79cdad6b2f58017bc00ef45caf399
+ 77e7edd22f3b062b04b89b96d1e8cd03b9b29fa587f401f8fd6a62d8cbb71ef4
+ 7df2e3610c0f4ef3d450b6d8b7c31e7941447ba40f06e4075e14e0a16f5e5a63
+ 99b3a2a17e2815958e6987e91027d3bf866efdad694b6701e0d00f96b72a4bfd
+ 8da6131d3857c403def32ac18f94a760bd4fa9734cfc018afadff0aab435f6b2
+ 43fdd1b32eb3fe59853bed4e5dba94b03dcb8d4d6a9ff87869b4637478053c92
+ 9ba43cc29edd3f9b4cfeb146e31eb1668cc427d9bd334e5aa9eb0cc904ebdac5
+ d1bb088339aa358e9ff7332d40cc7c7ee75e31e6c9653574c03b7aaf01187322
+ 20830119a3ce7f0bbfbbed86f38fc1e623dca824ae6e7b36c80cf4a28e14cd2e
+ 4668d586d8f2bccd1f20905da08c123dcee4f5cf3bafe9b0a0070ea712a84298
+ 60c0c41a9d95c0ae169cb39e84b25a35cfe2b02ed81f2c411067d2285dd95c89
+ c18a432bcc3faf4a4b5cde8688483cf4a1dc1b1e8e74ebfc64f490a7b45db66a
+ c019015d322d4b37f6266f49994e3ef325c8a99d11505591db9815600905b9a1
+ a1285de48c539790cb216c8539c3ac10b1837f0029e7f99dd4247e83b60a40e6
+ 1e21753f0334a39db7deabe2b439e1884ef499c02d716f9d3f9f73feaf6109b2
+ b9a9a87386d535b131b70db3f7e5d4f3c552fe3e38b21869bf5b0943b58ddfd5
+ df9ae1d24f07340f368a2031a3c44f14bc15a72dc076aba2c1692a98ef345d4a
+ 6b04111a500d4923e52674874ec0bf76a29522d56b9d19ebc75cae24d3d03fa5
+ 29709f30c3a1ff97371417fa35ee985360bdbba8b01367508d34373d990eed84
+ fe5eb1d10c74568566c91133af9524108120f1f89b5a6d04fc374821d0c0649a
+ f8b747e8564a45ebfa4677dcc105180a883a5f022f87e86d96c1ad56f42f1961
+ f54c672d98ea069b628febabe6120d96c9b8ce84dc797577ee292127000820df
+ 6323c444f9cb9f9430601cfa561249f072edbcdfe664847bb6f4b78ba9d2ad00
+ af3b9a70817316dec6ffc0cfc7d5405f96d637a5b8afcc7ec4fb5f66b1e2965b
+ 26b1667f7c5aca3023c0e64c47386f1862bab780dfb51ce4f964bb2dba117ab0
+ d6282d2b3ad88b4e2eaca9b48c108ec3a3cdb575ad507313515335551943af75
+ 9fa91154b3596c6f360053eee870715f6ee3682ec7a8962c180ba254075df59a
+ 15289032b51367eb654e425f3aee15e12d8e3288ae2b3cd36853d137d8489d87
+ a69bd27e74de22c6e472aacc5bb9d9c4e543027d861791f0417382a5f7f5118d
+ 54f42c8506f639562eca63b63f09566900017c1e22793d233570e28c97db72ca
+ 82c3396456c455b13802977bcda8a5f98f4a72471ad9189020603275348d8010
+ 4538c6d201312b42989bd8d895e9a32aafb6355f83a7afa4155e2c9afa5e1983
+ 4d299eeb204f4e1e8ff7c6c27b84481d1df84d53be1131680e0dab80f4578a6d
+ 37d638dfa311486749f970eafe54790e5a4ac79843a1acffd0a9f10a3e96fd83
+ 0f34bb060b1cbd05a442d69dd02dcf454ed3de8636a2a3989fbabeaee82efbf9
+ 4daca2bbcc014524d096f83891120582294389a727df8608512397b47e8ddbf3
+ 90f8bb64ab8f5b9ebf11538edb7f6ad0f484b3bdfef963a491135b18c9d5eabf
+ fe8196ebf1940d534eae41f8b8bd481d4b84d306b5f8de4715147e139031b07f
+ 093bdbd9150d86df6603e20097ce4c5db18b460fdc6349c824c4723681bb6826
+ 1a0282846b44a7ba90219c212e50d8784cd9b77cfab8c8ae14577863cc12ebd6
+ 13db9b9ebcb7d9c0868d1260feeee63300910d0e5b193e06ab861e540bddbd0a
+ 3ed29ddb978f2ff7c1672bd6525b5adf6818e14b260d7a0835ebf465f9dfca95
+ eeb2834967f05b9080a58de1f759406bb4294909a0922c7f7e4e2a69ed22104d
+ ed5b351f84260047b2f959b7dbeb9a3fa6f4710777780831c4f0259907b5fbe0
+ 1e09c208488553d62fc0f78a926971d3b37d969ed237137844c76f684bb07272
+ 8877e26cde0358319b57ade82c2d6aaf56ba3673517fc3fbf46390907c998b30
+ 4bb3c5aab906d9cfc53494c79e373b71852bd1cfd551c62dd4e5d4bfb95d8e48
+ 5f93db3d3d77dee88888c143e9fdd6c62b3584b5851532671fe14b7d4bee18db
+ 35fee74c18d203601a562093cd67013431a1efea99d930b6012f2501bd8a364b
+ 5c677d1c44b195af914137eafa94191d964ea4e014b7586a6d6c213b5e78fd49
+ b377c9210c98c95330ebbc74fd43226cb4d11ea5d2b3947bef55943e0fe93329
+ c6017b6cc9243f558eda77dbe536f3e8089764d490eaa846f61c9b373e91dfda
+ 7c2e54610bdc94c3a3d320e158537c5d6589f24a1bdd9bd2f74e2a2e32de41b6
+ 6f0b776eec863cdbfbea145551ea24bcee9358bcf014b060de3bced4fd9a9f3b
+ 1d93bed629c1fd548bc2e13a25d8fae5dd343888c8c9142f52e8f8a128f91247
+ e27c28fe6ba9cfc6191dcedf2511092b610b42c6023c27c05fec3273babb4cda
+ e85ff98db5a5b7aaf1719fe5adafd9555e2fc5d5869a6af636747fad416f3cc6
+ 947bc98e84fa1668beb3dc3067d96b40575e581df997b1cf4ec13b26856b5a2f
+ 42cb022dc9becddba32595855bd358ba8dc1bdc0f5485914337cc087e9c2ebea
+ 45b7fef087f305c963cec517db5518af5d3680230617a853ab677fe241c03a79
+ b84434f6a5cdc058868633449a984d302b0f0029d605110814e516dc4c0298b3
+ daa0bbb4caddc4098a451a050d2a60ff8694bee0da0e48eb04224636531918f5
+ 20edddb729bb4a230ded2ba323681e2f6b18b8da6c79f5c78396422affef23a9
+ ca8eb956c6061f2ebce77b97a8e7e1a9f8e2378e3d74a83e75b5d750f1f81e56
+ 5409bbf56ecd8d1c74328644ab3dd9dd4330d5be92aa4d6d569b3dea6f1aa990
+ e1beeb8feee4fd13f21ca1bedbb99b2fd060d99e771c52477ab494866b3fe20c
+ ad8c57d68d36893488ad051a4abbe95eb52544eb0f2f5d8f09f524784633e0e1
+ 3e275b9eaa134c0457a13fdb89207da4f6f370797c1c5fac809bccceb1a8b661
+ 34f67db7354e694b0c9f2a09af4bc7069851a3691280613802eef512fda2e9bf
+ cc008ee84e7af7bb51a09120022acb39032ec6fa4d59f6cee2f61b7a32b4daac
+ f289208bfd9981968144fa7669c2872cfe67cc15edba6cc109c926b22596a3c8
+ c96be633a6b9da032d4aa5e63ebb72924b58d96b61e1f723723a88eafd6c1015
+ 27cbe55e65de1dd4dabed9de5ebd5aec1f59d31735c57168675ffc3878cdca7d
+ a298214b7cc5a5a807031cda012751692b6d96b83a73c03d82f9f9b909d59be6
+ 19de4d1d77ff6eec0d0840ae7b8c1138ea80e162dc62684f8eed59b47670e4ed
+ dd066e9bc0d22915388b3be25afed12db90197124afb5355599676a55a2c321a
+ b6883ba8e423eacc9f5715172ce591bf056891c4420a952de2284a79293afc49
+ 73a0c455ff8e9efdbbf278fcb26711732b85ba3c66e1fb97882e09979b288291
+ d90e4348ab6d4cd786acc8a474a9664730ec81b41db90585a3531d19996821ef
+ dfe77d29b1290a17497521e464ca1398f4961310ae07795de44683df7cac2a3c
+ adffef23919ddf92dedd9c81f5c73cd30e21c9980c354bf20c7bf9ebe58a9709
+ 50124f81e3db868533e13436ef6c17c09b591962d021869a710a0e9bd826887b
+ ba23938f2767eae74371618aa06d9bf98c70352007d2ada2bb46f3c8e6e26689
+ aa6c7d37b9e8590404e7e3ad32a1d9845fcdbf799f5b59cc320ec17dc50c3570
+ 2b30f7f634d0f6bb431dd8378e198cf397a8ff7b57b613c085d206b4ec68cc38"

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
  2020-11-04 17:35 ` [PR PATCH] [Updated] " pullmoll
@ 2020-11-04 17:37 ` pullmoll
  2020-11-04 22:31 ` pullmoll
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pullmoll @ 2020-11-04 17:37 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 379 bytes --]

There is an updated pull request by pullmoll against master on the void-packages repository

https://github.com/pullmoll/void-packages firefox-esr-78
https://github.com/void-linux/void-packages/pull/26130

[WIP] firefox-esr: update to 78.4.0
Still testing if it builds for all platforms.

A patch file from https://github.com/void-linux/void-packages/pull/26130.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-firefox-esr-78-26130.patch --]
[-- Type: text/x-diff, Size: 57965 bytes --]

From 9b2e1422e4c8d808bf12a6dc11cd6ef1435c2614 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 16:13:37 +0100
Subject: [PATCH 1/2] firefox-esr: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr/files/firefox-wayland     |   2 +
 srcpkgs/firefox-esr/files/mozconfig           |   7 +-
 .../patches/big-endian-image-decoders.patch   |  88 +++++++++++
 .../disable-image-format-warning.patch        |  15 --
 srcpkgs/firefox-esr/patches/fix-cross.patch   |  16 ++
 ...686-musl.patch => fix-i686-ppc-musl.patch} |   0
 .../patches/fix-image-format-warning.patch    |  39 +++++
 .../patches/fix-sandbox-membarrier.patch      |  52 -------
 .../firefox-esr/patches/fix-seccomp-bpf.patch |  14 --
 srcpkgs/firefox-esr/patches/fix-toolkit.patch |  78 ----------
 srcpkgs/firefox-esr/patches/fix-tools.patch   |  29 ----
 .../firefox-esr/patches/flac-no-ffvpx.patch   |  26 ++++
 srcpkgs/firefox-esr/patches/gettid-musl.patch |  11 --
 .../firefox-esr/patches/ppc32-fix-build.patch |  36 +++++
 ...rustc-check.patch => rust-configure.patch} |   8 +-
 .../firefox-esr/patches/rust-has-i128.patch   |  21 +++
 .../firefox-esr/patches/sandbox-fork.patch    |  13 ++
 srcpkgs/firefox-esr/patches/skia-sucks1.patch | 147 +++++++++---------
 srcpkgs/firefox-esr/patches/skia-sucks3.patch |  28 +++-
 srcpkgs/firefox-esr/patches/sndio.patch       |  81 +++-------
 srcpkgs/firefox-esr/template                  | 120 ++++++++------
 21 files changed, 433 insertions(+), 398 deletions(-)
 create mode 100644 srcpkgs/firefox-esr/files/firefox-wayland
 create mode 100644 srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
 create mode 100644 srcpkgs/firefox-esr/patches/fix-cross.patch
 rename srcpkgs/firefox-esr/patches/{fix-i686-musl.patch => fix-i686-ppc-musl.patch} (100%)
 create mode 100644 srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-toolkit.patch
 create mode 100644 srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/gettid-musl.patch
 create mode 100644 srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
 rename srcpkgs/firefox-esr/patches/{remove-rustc-check.patch => rust-configure.patch} (85%)
 create mode 100644 srcpkgs/firefox-esr/patches/rust-has-i128.patch
 create mode 100644 srcpkgs/firefox-esr/patches/sandbox-fork.patch

diff --git a/srcpkgs/firefox-esr/files/firefox-wayland b/srcpkgs/firefox-esr/files/firefox-wayland
new file mode 100644
index 00000000000..495f901320c
--- /dev/null
+++ b/srcpkgs/firefox-esr/files/firefox-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/firefox/firefox "$@"
diff --git a/srcpkgs/firefox-esr/files/mozconfig b/srcpkgs/firefox-esr/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/firefox-esr/files/mozconfig
+++ b/srcpkgs/firefox-esr/files/mozconfig
@@ -3,7 +3,6 @@ ac_add_options --libdir=/usr/lib
 
 ac_add_options --with-system-nspr
 ac_add_options --with-system-nss
-ac_add_options --with-system-bz2
 ac_add_options --with-system-jpeg
 ac_add_options --with-system-zlib
 ac_add_options --with-system-libevent
@@ -12,12 +11,8 @@ ac_add_options --with-system-icu
 # XXX: the system's libpng doesn't have APNG support
 ac_add_options --without-system-png
 ac_add_options --enable-system-pixman
-ac_add_options --enable-system-sqlite
 ac_add_options --enable-system-ffi
 
-ac_add_options --with-nspr-prefix=${XBPS_CROSS_BASE}/usr
-ac_add_options --with-nss-prefix=${XBPS_CROSS_BASE}/usr
-
 nspr_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nspr"
@@ -26,13 +21,13 @@ nss_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nss"
 
-ac_add_options --disable-gconf
 ac_add_options --disable-tests
 ac_add_options --disable-crashreporter
 ac_add_options --disable-updater
 ac_add_options --disable-install-strip
 ac_add_options --disable-strip
 ac_add_options --disable-profiling
+ac_add_options --enable-release
 ac_add_options --enable-optimize="$CFLAGS"
 
 ac_add_options --enable-official-branding
diff --git a/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
@@ -0,0 +1,88 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1626236
+https://bug1626236.bmoattachments.org/attachment.cgi?id=9137096
+
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1582805876 -3600
+#      Thu Feb 27 13:17:56 2020 +0100
+# Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158
+# Parent  9cd90914846f667f18babc491a74c164ae5d6e9f
+imported patch decoder_workaround.patch
+
+diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp
+--- image/decoders/nsGIFDecoder2.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsGIFDecoder2.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -422,6 +422,9 @@
+   MOZ_ASSERT(mSwizzleFn);
+   uint8_t* data = reinterpret_cast<uint8_t*>(aColormap);
+   mSwizzleFn(data, data, aColors);
++#if MOZ_BIG_ENDIAN()
++  SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors);
++#endif
+ }
+ 
+ LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator,
+diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp
+--- image/decoders/nsJPEGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsJPEGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -263,6 +263,9 @@
+         case JCS_YCbCr:
+           // By default, we will output directly to BGRA. If we need to apply
+           // special color transforms, this may change.
++#if MOZ_BIG_ENDIAN()
++          mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB;
++#else
+           switch (SurfaceFormat::OS_RGBX) {
+             case SurfaceFormat::B8G8R8X8:
+               mInfo.out_color_space = JCS_EXT_BGRX;
+@@ -277,6 +280,7 @@
+               mState = JPEG_ERROR;
+               return Transition::TerminateFailure();
+           }
++#endif
+           break;
+         case JCS_CMYK:
+         case JCS_YCCK:
+diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp
+--- image/decoders/nsPNGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsPNGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -361,7 +361,7 @@
+                                    IResumable* aOnResume) {
+   MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!");
+ 
+-  return mLexer.Lex(aIterator, aOnResume,
++  LexerResult res = mLexer.Lex(aIterator, aOnResume,
+                     [=](State aState, const char* aData, size_t aLength) {
+                       switch (aState) {
+                         case State::PNG_DATA:
+@@ -371,6 +371,14 @@
+                       }
+                       MOZ_CRASH("Unknown State");
+                     });
++
++#if MOZ_BIG_ENDIAN()
++  if(res.is<TerminalState>() && res.as<TerminalState>() == TerminalState::SUCCESS) {
++      NativeEndian::swapToLittleEndianInPlace<uint32_t>((uint32_t*)(mImageData), mImageDataLength / 4);
++  }
++#endif
++
++  return res;
+ }
+ 
+ LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData(
+diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp
+--- image/decoders/nsWebPDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsWebPDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -237,7 +237,12 @@
+   // WebP doesn't guarantee that the alpha generated matches the hint in the
+   // header, so we always need to claim the input is BGRA. If the output is
+   // BGRX, swizzling will mask off the alpha channel.
++#if MOZ_BIG_ENDIAN()
++  mBuffer.colorspace = MODE_ARGB;
++  SurfaceFormat inFormat = mFormat;
++#else
+   SurfaceFormat inFormat = SurfaceFormat::OS_RGBA;
++#endif
+ 
+   SurfacePipeFlags pipeFlags = SurfacePipeFlags();
+   if (mFormat == SurfaceFormat::OS_RGBA &&
diff --git a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch b/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Imported from Adélie. Firefox is prone to this warning on BE and
-it leads to huge .xsession-errors, and the warning is not very
-important or meaningful, so just disable it.
-
---- gfx/2d/HelpersCairo.h
-+++ gfx/2d/HelpersCairo.h
-@@ -147,7 +147,7 @@
-     case SurfaceFormat::R5G6B5_UINT16:
-       return CAIRO_FORMAT_RGB16_565;
-     default:
--      gfxCriticalError() << "Unknown image format " << (int)format;
-+      //gfxCriticalError() << "Unknown image format " << (int)format;
-       return CAIRO_FORMAT_ARGB32;
-   }
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-cross.patch b/srcpkgs/firefox-esr/patches/fix-cross.patch
new file mode 100644
index 00000000000..9b8a816d269
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-cross.patch
@@ -0,0 +1,16 @@
+terrible hack to fix cross builds
+overwrite HOST_* flags to get rid of -MF
+
+note: this patch was used from firefox-77 until 80, dropped with the update to 81
+
+--- third_party/rust/glslopt/build.rs
++++ third_party/rust/glslopt/build.rs
+@@ -28,6 +28,8 @@
+     env::remove_var(format!("CXXFLAGS_{}", &target));
+     env::remove_var(format!("CFLAGS_{}", target.replace("-", "_")));
+     env::remove_var(format!("CXXFLAGS_{}", target.replace("-", "_")));
++    env::set_var("HOST_CFLAGS", "-O2");
++    env::set_var("HOST_CXXFLAGS", "-O2");
+
+     configure(&mut cc::Build::new())
+         .warnings(false)
diff --git a/srcpkgs/firefox-esr/patches/fix-i686-musl.patch b/srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/firefox-esr/patches/fix-i686-musl.patch
rename to srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
@@ -0,0 +1,39 @@
+# HG changeset patch
+# User Lee Salzman <lsalzman@mozilla.com>
+# Date 1462463631 14400
+#      Thu May 05 11:53:51 2016 -0400
+# Node ID 8da374804a09977c8f89af5e6e0cb37cb074595d
+# Parent  29662e28a9c93ac67ee0b8ddfb65a9f29bbf73f5
+handle big-endian formats in Cairo format conversions
+
+--- gfx/2d/HelpersCairo.h
++++ gfx/2d/HelpersCairo.h
+@@ -147,7 +147,14 @@ static inline cairo_format_t GfxFormatToCairoFormat(Su
+     case SurfaceFormat::R5G6B5_UINT16:
+       return CAIRO_FORMAT_RGB16_565;
+     default:
+-      gfxCriticalError() << "Unknown image format " << (int)format;
++      // _UINT32 formats don't match B8G8R8[AX]8 on big-endian platforms,
++      // and Moz2d uses B8G8R8[AX]8 as if it was _UINT32.
++      // See bug 1269654
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_FORMAT_RGB24;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image format " << (int)format;
++      }
+       return CAIRO_FORMAT_ARGB32;
+   }
+ }
+@@ -177,7 +184,11 @@ static inline cairo_content_t GfxFormatToCairoContent(
+     case SurfaceFormat::A8:
+       return CAIRO_CONTENT_ALPHA;
+     default:
+-      gfxCriticalError() << "Unknown image content format " << (int)format;
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_CONTENT_COLOR;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image content format " << (int)format;
++      }
+       return CAIRO_CONTENT_COLOR_ALPHA;
+   }
+ }
diff --git a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch b/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-allow usage of SYS_membarrier, needed since musl-1.1.22
-
---- security/sandbox/linux/SandboxFilter.cpp
-+++ security/sandbox/linux/SandboxFilter.cpp
-@@ -283,6 +283,8 @@
-       case __NR_set_tid_address:
-         return Allow();
- #endif
-+      case __NR_membarrier:
-+        return Allow();
- 
-         // prctl
-       case __NR_prctl: {
-
---- security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-@@ -1385,6 +1385,10 @@
- #define __NR_memfd_create (__NR_SYSCALL_BASE+385)
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier (__NR_SYSCALL_BASE+389)
-+#endif
-+
- // ARM private syscalls.
- #if !defined(__ARM_NR_BASE)
- #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
-
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-@@ -1290,5 +1290,9 @@
- #define __NR_memfd_create 319
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 324
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_
- 
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-@@ -1490,5 +1490,9 @@
- #define __NR_shutdown 373
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 375
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_
- 
diff --git a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch b/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig	2015-09-23 09:10:08.812740571 +0200
-+++ security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc	2015-09-23 09:11:38.404746155 +0200
-@@ -23,6 +23,11 @@
- #include "sandbox/linux/services/android_ucontext.h"
- #endif
- 
-+// musl libc defines siginfo_t __si_fields instead of _sifields
-+#if defined(OS_LINUX) && !defined(__GLIBC__)
-+#define _sifields __si_fields
-+#endif
-+
- namespace {
- 
- struct arch_sigsys {
diff --git a/srcpkgs/firefox-esr/patches/fix-toolkit.patch b/srcpkgs/firefox-esr/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-toolkit.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- toolkit.orig/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h.orig    2016-07-05 21:00:03.672000517 +0200
-+++ toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2016-07-05 21:05:37.347806230 +0200
-@@ -1134,6 +1134,12 @@
- #ifndef __NR_fallocate
- #define __NR_fallocate          285
- #endif
-+
-+#undef __NR_pread
-+#define __NR_pread __NR_pread64
-+#undef __NR_pwrite
-+#define __NR_pwrite __NR_pwrite64
-+
- /* End of x86-64 definitions                                                 */
- #elif defined(__mips__)
- #if _MIPS_SIM == _MIPS_SIM_ABI32
---- toolkit.orig/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -45,6 +45,7 @@
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#include <libgen.h>
- 
- #include <iostream>
- #include <set>
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -41,6 +41,10 @@
- 
- #include "common/using_std_string.h"
- 
-+#ifndef N_UNDF
-+#define N_UNDF 0
-+#endif
-+
- using std::vector;
- 
- namespace google_breakpad {
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-04-17 10:24:33.793431933 +0000
-@@ -55,7 +55,7 @@
-
- #ifdef HAVE_MACH_O_NLIST_H
- #include <mach-o/nlist.h>
--#elif defined(HAVE_A_OUT_H)
-+#elif 0
- #include <a.out.h>
- #endif
-
---- toolkit.orig/mozapps/update/common/updatedefines.h	2019-01-29 11:34:36.416804577 +0100
-+++ toolkit/mozapps/update/common/updatedefines.h	2019-01-29 11:34:59.193583777 +0100
-@@ -102,7 +102,7 @@
-
- #  ifdef SOLARIS
- #    include <sys/stat.h>
--#  else
-+#  elif !(defined(__linux__)) || defined(__GLIBC__)
- #    include <fts.h>
- #  endif
- #  include <dirent.h>
---- toolkit.orig/mozapps/update/updater/updater.cpp	2014-03-15 05:19:37.000000000 +0000
-+++ toolkit/mozapps/update/updater/updater.cpp	2014-04-17 10:24:33.796765327 +0000
-@@ -3978,6 +3978,7 @@
- 
- int add_dir_entries(const NS_tchar* dirpath, ActionList* list) {
-   int rv = OK;
-+#if !defined(__linux__) || defined(__GLIBC__)
-   FTS* ftsdir;
-   FTSENT* ftsdirEntry;
-   mozilla::UniquePtr<NS_tchar[]> searchpath(get_full_path(dirpath));
-@@ -4085,6 +4086,7 @@
-   }
- 
-   fts_close(ftsdir);
-+#endif
- 
-   return rv;
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-tools.patch b/srcpkgs/firefox-esr/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/firefox-esr/patches/fix-tools.patch
+++ b/srcpkgs/firefox-esr/patches/fix-tools.patch
@@ -1,34 +1,5 @@
---- tools/profiler/lul/LulElf.cpp.orig	2019-01-29 12:05:34.223834130 +0100
-+++ tools/profiler/lul/LulElf.cpp	2019-01-29 12:08:02.480400845 +0100
-@@ -469,10 +469,10 @@
- // Return the non-directory portion of FILENAME: the portion after the
- // last slash, or the whole filename if there are no slashes.
- string BaseFileName(const string& filename) {
--  // Lots of copies!  basename's behavior is less than ideal.
--  char* c_filename = strdup(filename.c_str());
--  string base = basename(c_filename);
--  free(c_filename);
-+  // basename's behavior is less than ideal so avoid it
-+  const char *c_filename = filename.c_str();
-+  const char *p = strrchr(c_filename, '/');
-+  string base = p ? p+1 : c_filename;
-   return base;
- }
- 
 --- tools/profiler/core/platform-linux-android.cpp.orig	2019-01-29 12:09:40.980448579 +0100
 +++ tools/profiler/core/platform-linux-android.cpp	2019-01-29 12:11:09.689590967 +0100
-@@ -253,7 +253,11 @@
- 
-   // Request profiling signals.
-   struct sigaction sa;
-+#if defined(GP_ARCH_arm)
-+  sa.sa_sigaction = SigprofHandler;
-+#else
-   sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
-+#endif
-   sigemptyset(&sa.sa_mask);
-   sa.sa_flags = SA_RESTART | SA_SIGINFO;
-   if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
 @@ -497,8 +501,10 @@
  ucontext_t sSyncUContext;
  
diff --git a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
@@ -0,0 +1,26 @@
+Enable FLAC on platforms without ffvpx like powerpc*
+
+diff --git dom/media/flac/FlacDecoder.cpp dom/media/flac/FlacDecoder.cpp
+index 53fc3c9937f7..b23771ab80fa 100644
+--- dom/media/flac/FlacDecoder.cpp
++++ dom/media/flac/FlacDecoder.cpp
+@@ -7,6 +7,7 @@
+ #include "FlacDecoder.h"
+ #include "MediaContainerType.h"
+ #include "mozilla/StaticPrefs_media.h"
++#include "PDMFactory.h"
+ 
+ namespace mozilla {
+ 
+@@ -14,6 +15,11 @@ namespace mozilla {
+ bool FlacDecoder::IsEnabled() {
+ #ifdef MOZ_FFVPX
+   return StaticPrefs::media_flac_enabled();
++#elif defined(MOZ_FFMPEG)
++  RefPtr<PDMFactory> platform = new PDMFactory();
++  return StaticPrefs::media_flac_enabled() &&
++         platform->SupportsMimeType("audio/flac"_ns,
++                                    /* DecoderDoctorDiagnostics* */ nullptr);
+ #else
+   // Until bug 1295886 is fixed.
+   return false;
diff --git a/srcpkgs/firefox-esr/patches/gettid-musl.patch b/srcpkgs/firefox-esr/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/firefox-esr/patches/gettid-musl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- tools/profiler/core/platform-linux-android.cpp.orig	2019-07-09 22:58:30.039475686 +0200
-+++ tools/profiler/core/platform-linux-android.cpp	2019-07-09 22:58:39.331437677 +0200
-@@ -73,7 +73,7 @@
- 
- int profiler_current_thread_id() {
-   // glibc doesn't provide a wrapper for gettid().
--#if defined(__GLIBC__)
-+#if defined(__linux__)
-   return static_cast<int>(static_cast<pid_t>(syscall(SYS_gettid)));
- #else
-   return static_cast<int>(gettid());
diff --git a/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
@@ -0,0 +1,36 @@
+This is not a complete/correct patch, but it makes firefox build. For now
+mostly for tracking, so a real fix can be made, but right now it still
+segfaults on start.
+
+Ref: https://hg.mozilla.org/mozilla-central/rev/08339a56f3ae
+Ref: https://hg.mozilla.org/mozilla-central/rev/d16fcad6aa60
+Ref: https://hg.mozilla.org/mozilla-central/rev/ab87611d012e
+Ref: https://hg.mozilla.org/mozilla-central/file/tip/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
+
+--- xpcom/reflect/xptcall/xptcall.h
++++ xpcom/reflect/xptcall/xptcall.h
+@@ -71,6 +71,11 @@ struct nsXPTCVariant {
+     ExtendedVal ext;
+   };
+ 
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  // this field is still necessary on ppc32, as an address
++  // to it is taken certain places in xptcall
++  void *ptr;
++#endif
+   nsXPTType type;
+   uint8_t flags;
+ 
+@@ -91,7 +96,12 @@ struct nsXPTCVariant {
+   };
+ 
+   void ClearFlags() { flags = 0; }
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  void SetIndirect() { ptr = &val; flags |= IS_INDIRECT; }
++  bool IsPtrData() const { return IsIndirect(); }
++#else
+   void SetIndirect() { flags |= IS_INDIRECT; }
++#endif
+ 
+   bool IsIndirect() const { return 0 != (flags & IS_INDIRECT); }
+ 
diff --git a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch b/srcpkgs/firefox-esr/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/firefox-esr/patches/remove-rustc-check.patch
rename to srcpkgs/firefox-esr/patches/rust-configure.patch
index 26a20dd94ce..887c102bc55 100644
--- a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch
+++ b/srcpkgs/firefox-esr/patches/rust-configure.patch
@@ -1,9 +1,9 @@
 Mozilla rustc check does not support crossbuild: let's remove it
 Remove calls to unwrap_rustup, they fail if rustup isn't present
 
---- build/moz.configure/rust.configure	2019-07-06 03:48:30.000000000 +0200
-+++ build/moz.configure/rust.configure	2019-07-09 22:35:23.326851798 +0200
-@@ -79,9 +79,6 @@
+--- build/moz.configure/rust.configure.orig	2019-10-17 04:19:59.000000000 +0700
++++ build/moz.configure/rust.configure	2019-10-22 11:48:55.616022140 +0700
+@@ -78,9 +78,6 @@
  
      return unwrap
  
@@ -13,7 +13,7 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -365,26 +362,6 @@
+@@ -348,26 +345,6 @@
  
              os.write(in_fd, source)
              os.close(in_fd)
diff --git a/srcpkgs/firefox-esr/patches/rust-has-i128.patch b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
@@ -0,0 +1,21 @@
+The configure check fails for cross builds.
+i128 is supported since rust-1.26, so it is safe for us to assume it is always present
+
+--- third_party/rust/num-traits/build.rs.orig	2020-02-14 23:57:25.985355610 +0100
++++ third_party/rust/num-traits/build.rs	2020-02-14 23:58:36.255710188 +0100
+@@ -1,14 +1,5 @@
+-extern crate autocfg;
+-
+-use std::env;
+-
+ fn main() {
+-    let ac = autocfg::new();
+-    if ac.probe_type("i128") {
+-        println!("cargo:rustc-cfg=has_i128");
+-    } else if env::var_os("CARGO_FEATURE_I128").is_some() {
+-        panic!("i128 support was not detected!");
+-    }
++    println!("cargo:rustc-cfg=has_i128");
+ 
+     autocfg::rerun_path("build.rs");
+ }
diff --git a/srcpkgs/firefox-esr/patches/sandbox-fork.patch b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
@@ -0,0 +1,13 @@
+make SYS_fork non-fatal, musl uses it for fork(2)
+
+--- security/sandbox/linux/SandboxFilter.cpp
++++ security/sandbox/linux/SandboxFilter.cpp
+@@ -1253,6 +1253,8 @@
+         // usually do something reasonable on error.
+       case __NR_clone:
+         return ClonePolicy(Error(EPERM));
++      case __NR_fork:
++        return Error(ENOSYS);
+ 
+ #  ifdef __NR_fadvise64
+       case __NR_fadvise64:
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks1.patch b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks1.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
@@ -1,84 +1,77 @@
-# HG changeset patch
-# Parent  548d0a2f3a22bfac32ec0c3921c6c969c8bf32a9
+https://bugzilla.mozilla.org/show_bug.cgi?id=1504834#c5
+https://bugzilla.mozilla.org/attachment.cgi?id=9028600
 
-diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
---- gfx/2d/ConvolutionFilter.cpp	Mon Jul 22 16:57:54 2019 +0200
-+++ gfx/2d/ConvolutionFilter.cpp	Thu Jul 25 14:27:59 2019 +0200
-@@ -35,9 +35,38 @@
-   return true;
+--- gfx/skia/skia/third_party/skcms/skcms.cc
++++ gfx/skia/skia/third_party/skcms/skcms.cc
+@@ -30,6 +30,8 @@
+         #include <avx512fintrin.h>
+         #include <avx512dqintrin.h>
+     #endif
++#elif defined(__BIG_ENDIAN__)
++    #define SKCMS_PORTABLE
+ #endif
+ 
+ // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
+@@ -280,20 +282,28 @@ enum {
+ static uint16_t read_big_u16(const uint8_t* ptr) {
+     uint16_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ushort(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ushort(be);
++    #else
+     return __builtin_bswap16(be);
++    #endif
+ #endif
  }
  
-+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
+ static uint32_t read_big_u32(const uint8_t* ptr) {
+     uint32_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ulong(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ulong(be);
++    #else
+     return __builtin_bswap32(be);
++    #endif
+ #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
+--- gfx/2d/DrawTargetSkia.cpp
++++ gfx/2d/DrawTargetSkia.cpp
+@@ -138,8 +138,7 @@ static IntRect CalculateSurfaceBounds(const IntSize& a
+   return surfaceBounds.Intersect(bounds);
  }
  
- /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
-diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h
---- gfx/skia/skia/include/core/SkPreConfig.h	Mon Jul 22 16:57:54 2019 +0200
-+++ 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
+-static const int kARGBAlphaOffset =
+-    SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
++static const int kARGBAlphaOffset = 0;
+ 
+ static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
+                              const int32_t aStride, SurfaceFormat aFormat) {
+--- gfx/2d/Types.h
++++ gfx/2d/Types.h
+@@ -87,15 +87,8 @@ enum class SurfaceFormat : int8_t {
+ // 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.
+   //
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks3.patch b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks3.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
@@ -1,3 +1,5 @@
+CompositableHost.cpp patch added by @q66, based on patch in issue 1602730.
+
 # HG changeset patch
 # Parent  46ea866ca3acb8bb5e1709ceb799b9c94f591dec
 Problem description: Tab-titles that are too long to fit into a tab get faded out.
@@ -17,7 +19,7 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
        SkCanvas::kPreserveLCDText_SaveLayerFlag |
            (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
  
-+#if MOZ_BIG_ENDIAN
++#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.
@@ -28,3 +30,27 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
    mCanvas->saveLayer(saveRec);
  
    SetPermitSubpixelAA(aOpaque);
+--- gfx/layers/composite/CompositableHost.cpp
++++ gfx/layers/composite/CompositableHost.cpp
+@@ -13,6 +13,7 @@
+ #include "ImageHost.h"  // for ImageHostBuffered, etc
+ #include "Layers.h"
+ #include "TiledContentHost.h"  // for TiledContentHost
++#include "mozilla/EndianUtils.h"
+ #include "mozilla/gfx/gfxVars.h"
+ #include "mozilla/layers/LayersSurfaces.h"  // for SurfaceDescriptor
+ #include "mozilla/layers/TextureHost.h"     // for TextureHost, etc
+@@ -92,9 +93,13 @@ bool CompositableHost::AddMaskEffect(EffectChain& aEffects,
+   }
+   MOZ_ASSERT(source);
+ 
++  // Setting an alpha-mask here breaks the URL-bar on big endian (s390x)
++  // if the typed URL is too long for the textbox (automatic scrolling needed)
++#if MOZ_LITTLE_ENDIAN()
+   RefPtr<EffectMask> effect =
+       new EffectMask(source, source->GetSize(), aTransform);
+   aEffects.mSecondaryEffects[EffectTypes::MASK] = effect;
++#endif
+   return true;
+ }
+ 
diff --git a/srcpkgs/firefox-esr/patches/sndio.patch b/srcpkgs/firefox-esr/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/firefox-esr/patches/sndio.patch
+++ b/srcpkgs/firefox-esr/patches/sndio.patch
@@ -1,8 +1,8 @@
 --- old-configure.in.orig
 +++ old-configure.in
-@@ -2839,6 +2839,22 @@
- 
- AC_SUBST(MOZ_ALSA)
+@@ -2818,6 +2818,22 @@
+     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
+ fi
  
 +dnl ==================================
 +dnl = Check sndio availability
@@ -21,26 +21,11 @@
 +AC_SUBST(MOZ_SNDIO)
 +
  dnl ========================================================
- dnl = Disable PulseAudio
- dnl ========================================================
---- toolkit/library/moz.build.orig
-+++ toolkit/library/moz.build
-@@ -235,10 +235,8 @@
- if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'):
-     OS_LIBS += CONFIG['TK_LIBS']
- 
--if CONFIG['OS_ARCH'] == 'OpenBSD':
--    OS_LIBS += [
--        'sndio',
--    ]
-+if CONFIG['MOZ_SNDIO']:
-+    OS_LIBS += CONFIG['MOZ_SNDIO_LIBS']
- 
- if CONFIG['MOZ_ENABLE_DBUS']:
-     OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS']
+ dnl =
+ dnl = Maintainer debug option (no --enable equivalent)
 --- media/libcubeb/src/moz.build.orig
 +++ media/libcubeb/src/moz.build
-@@ -43,7 +43,7 @@
+@@ -44,11 +44,13 @@
      ]
      DEFINES['USE_JACK'] = True
  
@@ -49,49 +34,19 @@
      SOURCES += [
          'cubeb_sndio.c',
      ]
---- build/moz.configure/old.configure.orig
-+++ build/moz.configure/old.configure
-@@ -169,6 +169,7 @@
+     DEFINES['USE_SNDIO'] = True
++
++if CONFIG['OS_ARCH'] == 'OpenBSD':
+     DEFINES['DISABLE_LIBSNDIO_DLOPEN'] = True
+ 
+ if CONFIG['OS_TARGET'] == 'Darwin':
+--- build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
++++ -	2020-06-30 12:18:26.027756310 +0200
+@@ -210,6 +210,7 @@
  @old_configure_options(
      '--cache-file',
      '--datadir',
 +    '--enable-sndio',
-     '--enable-content-sandbox',
-     '--enable-cookies',
-     '--enable-cpp-rtti',
---- security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp.orig
-+++ security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
-@@ -349,6 +349,21 @@
-         }
-       }
-     }
-+
-+#ifdef MOZ_SNDIO
-+    // ~/.aucat_cookie (sndio)
-+    rv = homeDir->Clone(getter_AddRefs(confDir));
-+    if (NS_SUCCEEDED(rv)) {
-+      rv = confDir->AppendNative(NS_LITERAL_CSTRING(".aucat_cookie"));
-+      if (NS_SUCCEEDED(rv)) {
-+        nsAutoCString tmpPath;
-+        rv = confDir->GetNativePath(tmpPath);
-+        if (NS_SUCCEEDED(rv)) {
-+          policy->AddPath(rdwrcr, tmpPath.get());
-+        }
-+      }
-+    }
-+#endif
-   }
- 
-   // Firefox binary dir.
---- security/sandbox/linux/moz.build.orig
-+++ security/sandbox/linux/moz.build
-@@ -81,6 +81,9 @@
- if CONFIG['MOZ_ALSA']:
-     DEFINES['MOZ_ALSA'] = True
- 
-+if CONFIG['MOZ_SNDIO']:
-+    DEFINES['MOZ_SNDIO'] = True
-+
- # This copy of SafeSPrintf doesn't need to avoid the Chromium logging
- # dependency like the one in libxul does, but this way the behavior is
- # consistent.  See also the comment in SandboxLogging.h.
+     '--enable-crashreporter',
+     '--enable-dbus',
+     '--enable-debug-js-modules',
diff --git a/srcpkgs/firefox-esr/template b/srcpkgs/firefox-esr/template
index eb3c32bed59..51f1ebe2334 100644
--- a/srcpkgs/firefox-esr/template
+++ b/srcpkgs/firefox-esr/template
@@ -3,57 +3,59 @@
 # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-esr-i18n".
 #
 pkgname=firefox-esr
-version=68.11.0
+version=78.4.0
 revision=1
 wrksrc="firefox-${version}"
-build_helper="rust"
-short_desc="Mozilla Firefox web browser - Extended Support Release (ESR)"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_helper="rust qemu"
+hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo
+ llvm clang nodejs-lts-10 cbindgen python nasm which tar"
+makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
+ libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
+ libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel)
+ $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
+ $(vopt_if xscreensaver libXScrnSaver-devel)
+ $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)"
+depends="nss>=3.53 desktop-file-utils hicolor-icon-theme"
+short_desc="Firefox browser - Extended Support Release"
+maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.mozilla.org/firefox/organizations/"
 distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
-checksum=91c1f7caaf1ba785b74799865227456bf784ba614d17cf5f0f41a5f25d6d2160
-
+checksum=8e3cf0bbf1062768134db2eb10ab774731ca5ec6694b65def82234bb0a9170fc
 lib32disabled=yes
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
-makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
- pixman-devel sqlite-devel libevent-devel libnotify-devel libvpx5-devel
- libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
- $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
- $(vopt_if startup_notification startup-notification-devel)
- $(vopt_if xscreensaver libXScrnSaver-devel) $(vopt_if sndio sndio-devel)"
-depends="nss>=3.44.3 desktop-file-utils hicolor-icon-theme"
 conflicts="firefox>=0"
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
+build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland"
+build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 
 case $XBPS_TARGET_MACHINE in
-	armv[56]*) broken="required NEON extensions are not supported on armv6" ;;
+	armv[56]*) broken="required NEON extensions are not supported on armv[56]" ;;
 	ppc64*) ;;
 	ppc*) broken="xptcall bitrot" ;;
 esac
 
+if [ "$XBPS_TARGET_ENDIAN" = "be" ]; then
+	broken="rendering is busted, dunno why"
+fi
+
+CXXFLAGS="-Wno-class-memaccess -Wno-unused-function"
+
 if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
 	makedepends+=" libatomic-devel"
 fi
 
-# we need this because cargo verifies checksums of all files in vendor
-# crates when it builds and gives us no way to override or update the
-# file sanely... so just clear out the file list
+# We need this because cargo verifies checksums of all files
+# in vendor crates when it builds and gives us no way to
+# override or update the file sanely... so just clear out the file list
 _clear_vendor_checksums() {
 	sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
 }
 
 post_extract() {
-	case "$XBPS_TARGET_MACHINE" in
-	*-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		cp "${FILESDIR}/stab.h" toolkit/crashreporter/google-breakpad/src/
-		;;
-	esac
-
+	fi
 	# Google API key (see http://www.chromium.org/developers/how-tos/api-keys)
 	# Note: This is for Void Linux use ONLY.
 	echo -n "AIzaSyCIFdBA7eQP43R6kXRwTq7j6Mvj1ITze90" > google-api-key
@@ -64,19 +66,18 @@ post_extract() {
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
+	_clear_vendor_checksums glslopt
 }
 
 do_build() {
-	cp "${FILESDIR}/mozconfig" "${wrksrc}/.mozconfig"
+	cp ${FILESDIR}/mozconfig .mozconfig
 
-	case "$XBPS_TARGET_MACHINE" in
-	       *-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		echo "ac_add_options --disable-jemalloc" >>.mozconfig
 		echo "ac_add_options --disable-gold" >>.mozconfig
 		echo "ac_add_options --enable-release" >>.mozconfig
-		;;
-	esac
+	fi
 
 	case "$XBPS_TARGET_MACHINE" in
 	arm*|x86_64*|i686*)
@@ -101,17 +102,16 @@ do_build() {
 
 		export BINDGEN_CFLAGS="--target=$XBPS_CROSS_TRIPLET \
 			--sysroot=${XBPS_CROSS_BASE} ${BINDGEN_INCLUDE_FLAGS}"
-		export HOST_CC=cc
+		export HOST_CC="${CC_host}"
 		export TARGET_CC="${CC}"
 		export HOST_CFLAGS="${XBPS_CFLAGS}"
 		export HOST_CXXFLAGS="${XBPS_CXXFLAGS}"
-		export ac_cv_sqlite_secure_delete=yes \
-			ac_cv_sqlite_threadsafe=yes \
-			ac_cv_sqlite_enable_fts3=yes \
-			ac_cv_sqlite_dbstat_vtab=yes \
-			ac_cv_sqlite_enable_unlock_notify=yes \
-			ac_cv_prog_hostcxx_works=1
-
+		echo "ac_cv_sqlite_secure_delete=yes" >> .mozconfig
+		echo "ac_cv_sqlite_threadsafe=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_fts3=yes" >> .mozconfig
+		echo "ac_cv_sqlite_dbstat_vtab=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_unlock_notify=yes" >> .mozconfig
+		echo "ac_cv_prog_hostcxx_works=1" >> .mozconfig
 		echo "ac_add_options --target=$XBPS_CROSS_TRIPLET" >>.mozconfig
 		echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig
 	else
@@ -138,6 +138,11 @@ do_build() {
 		build/moz.configure/toolchain.configure
 	fi
 
+	case "$XBPS_TARGET_MACHINE" in
+	aarch64*|i686*|x86_64*)
+		echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
+	esac
+
 	export LDFLAGS+=" -Wl,-rpath=/usr/lib/firefox"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -147,38 +152,57 @@ do_build() {
 	export MOZ_MAKE_FLAGS="${makejobs}"
 	export MOZ_NOSPAM=1
 	export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild"
+	export MACH_USE_SYSTEM_PYTHON=1
 
 	export AS=$CC
 
-	cat <<! >>.mozconfig
+	cat >>.mozconfig <<EOF
 ac_add_options --with-google-location-service-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-google-safebrowsing-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key"
 ac_add_options $(vopt_enable alsa)
+ac_add_options $(vopt_enable jack)
 ac_add_options $(vopt_enable sndio)
 ac_add_options $(vopt_enable dbus)
 ac_add_options $(vopt_enable dbus necko-wifi)
 ac_add_options $(vopt_enable pulseaudio)
-ac_add_options $(vopt_enable startup_notification startup-notification)
-!
-
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
+EOF
 	rm -f old-configure
 	./mach build
+
+	# Make langpacks for all languages
+	dir=$(ls -d obj-*/browser/locales)
+	cd ${wrksrc}/${dir}
+	for lang in ${languages[*]}; do
+		msg_normal "Making langpack for ${lang} ...\n"
+		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
+	done
 }
+
 do_install() {
+	export MACH_USE_SYSTEM_PYTHON=1
 	DESTDIR="$DESTDIR" ./mach install
 
+	vbin ${FILESDIR}/firefox-wayland
 	vinstall ${FILESDIR}/vendor.js 644 usr/lib/firefox/browser/defaults/preferences
 	vinstall taskcluster/docker/firefox-snap/firefox.desktop 644 usr/share/applications
 
-	for i in 16x16 22x22 24x24 32x32 48x48 128x128 256x256; do
+	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
 		vinstall ${wrksrc}/browser/branding/official/default${i%x*}.png 644 \
 			usr/share/icons/hicolor/${i}/apps firefox.png
 	done
+	vinstall ${wrksrc}/browser/branding/official/default256.png 644 \
+		usr/share/pixmaps firefox.png
 
-	# We don't want the development stuff
-	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
+	# Use system-provided dictionaries
+	rm -rf ${DESTDIR}/usr/lib/firefox/{dictionaries,hyphenation}
+	ln -s /usr/share/hunspell ${DESTDIR}/usr/lib/firefox/dictionaries
+	ln -s /usr/share/hyphen ${DESTDIR}/usr/lib/firefox/hyphenation
 
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf firefox ${DESTDIR}/usr/lib/firefox/firefox-bin
+
+	# Remove the development files - noone uses them
+	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
 }

From c7944db80b352b0422bec676f385b29947d5cd74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 18:01:21 +0100
Subject: [PATCH 2/2] firefox-esr-i18n: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr-i18n/template | 190 +++++++++++++++---------------
 1 file changed, 95 insertions(+), 95 deletions(-)

diff --git a/srcpkgs/firefox-esr-i18n/template b/srcpkgs/firefox-esr-i18n/template
index 6fdd22574cb..d8df644a8c1 100644
--- a/srcpkgs/firefox-esr-i18n/template
+++ b/srcpkgs/firefox-esr-i18n/template
@@ -1,10 +1,10 @@
 # Template file for 'firefox-esr-i18n'
 pkgname=firefox-esr-i18n
-version=68.11.0
+version=78.4.0
 revision=1
 build_style=meta
 short_desc="Firefox ESR language packs"
-maintainer="Orphaned <orphan@voidlinux.org>"
+maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-2.0"
 homepage="https://www.mozilla.org/firefox/"
 
@@ -135,96 +135,96 @@ _pkgtmpl() {
 	}
 }
 
-checksum="a96b2eab357c1d3ae79978919d78227e91427464ec0d506276e8448df878e4de
- 77b3f295c0c8e331deec5ac81c4566e70e686e1134569e3dc383406634148642
- dddd186a5e1835778736cf1eb6254dc6909b0fc547b312695788cc455b52aa9e
- a59a86cc1838461ee51c3235c617ee28bb0ae7a4422866b645f67a7a2bc77673
- 52acf8999a4f46549ef251787681f8db62ee44a1653cd1eefb82b5c8a7e3c480
- 02d42d95c95d4b83716d71dbc8f9eab6d046540be34bc65360f16deca54840e8
- 458001594cf5402dae30241193ffcdf0f727bc0451b46382cd12939458459258
- 87be7b1c87ad813430e9f587315f1371f21f655ecb7f6dd90380741597ee818b
- 67f628587202ffef8744e2399fc2e808454562f6e68a607c4a0dadff38f68789
- 27b99f0e05d79f39abbb1770190f4a3d049aa527bd02ce9dd6815a3f73e3757f
- 4b30e8c01fc67bb11779fa50d8e1b2c93d6a2a936c6d8c77d3314df0cfccc131
- 45ebc6437bcc217ac54b0bf380a2f3f2e6cbbeada8d74269a760ae0d7a3a47da
- 139126e7e7f6c78e23da66dca5441fc9c0c53eca1009cf58377044fe6fdeb202
- 92b1a9b9465237c6423aac78cd02110354f7a4d4f89e915e045e3cf224323c51
- a0abce87643502f16e3a4dde825cf3e7f58cd75f5a4196451ede813b799611c3
- 8faaf99245fa5fd7a8ffe0344a6892546735c19eb9f2c6ecc534fc5808e26aec
- 9317185ea24b23004971de4187b2561d12c82872e4aa61f406bc02d5e83617fd
- 6869b14cf69508cd2f34cc722b346f30db0ec3891ebcc31908f69a1f307c8d67
- c153a54ec2e4ad4e817f8fa91d29a1698c11ca9ec04e494e1d866c7d9842ee8e
- dfe8300b735d2141798f8255d3ec102699b5b127bf9cfe5860784220ca0b6055
- fd57e1055a25fa1dcd5a91393408dad91bf0db2054c4bfd29ab47785f3156599
- a9f17b51896142082b3bfdcdbca9a472d95c5dd12005f2c3ce346c938d57ce7f
- 935826ae44cace20973c9ee32df8032fa95ab82843a92c514add0d8c44fb4c7e
- 4579dd24069d6414eb105d58c1789605a0ada438504f4fc14c724a4ee78b3726
- f69ec189d7eb2a4074a9218a9b87399f0504b8790e8aab98650120acc20ca184
- 4164c7f23e13e86f6c3e3bb1319da47a51d8b35b13acd2e8bf1c371d6c8a6ec3
- ffac444bc57d684f0f131f93ff48ddf4db3761905fa36882659a380eddaa1703
- 017049781b08378ab45a8cc95efda95e8dc4d10dc86d26efaf8209c51c556a0a
- 5b7851dca418b6cb08a3e6d4f189478de2fba5869d559f82740eec55abb45f93
- ef8c1054b528afc780b916f87b5038c0d2baa02a4445f7ec18c11f316766533e
- ee81934fbe482564a28f5e4cd44d3596b5f3a3926abf4e7c30c52918199299e1
- 269f6ca41e1322939ec1ed68a919e84e990cd431d7dbfc2bb67d3708e8d89bd8
- c29406cfb4d94e98e15ec5f0fe9f9cec52a6e251865683cca307ff562b52d0a7
- 025c7ed2fec33d06eb3cca4b7255d8b133cccb5d943d38afceef93ffc494e9e1
- ac70f1b3f164798e4c95dddb81e45ae91f40ad66b97cd443da94df68cc7b7964
- b467e26b8facc706501ec93be8b23c4fbc16b1fd01678f968d591951b7dab19b
- cf0b4e1f2c0620b19917e616ce1d94da9b4361e1e642c080fe36580911d61b18
- fd18f16b746c48224e4721d2a118fad44c598ca851778331aed4bd4355d8e982
- 064fe64bde1cd1bf2c255297af730ef0487fb193d5ca425935fc26e6e46c6733
- 06396fbfaebba29ffded9c79942e7fe6d988d1e0e26ac6bb3082dc5c1bfd1370
- ac2d5b18284b3702a3b93e09c73dabc42894088bf7bd3ecd9e1114c882ad88be
- 8f96e6b7e4be985ca90e5a378cb90a87cdef5b0ef36a64e86aac042e6f4dce74
- ca38f1b8c8198150986e35264d6c8a0f56c2e4b694738d926104d360d1244c1e
- bdb3756655fb54f5fb3feca19dce0bb6a7a98293f0def9f8855dbd269d20a259
- f531eee42bb19c32ea1242beb29147e064da58caeede025510d8b3092198c62b
- 05df51330571877fd1ab339183e6d68a5c92c5a132e109464b75dd5d4879d969
- 8492216768d7c008a224d5831b47bf0ef6a7ac19ce21b0113ecce921868654ca
- adea068ac99f58030551f1a080bd70d946c20edd9000c554f46289f3ea75c4bb
- 0d909de2c7320827eab604e697ad3bd89adfd55c9e8ea5aabc2e3938f45025bc
- 6edbe0259392b489ff808174e107d01dcaaf42b862ee3d0b804cfbda1ff636d3
- 4fc4c48637a0d285e85db0d699a62a08c6cc503073b4201b6115c13f9c7283dd
- e6fe631141ce94e6425e4c745fe2b5a2cbda685c5492ebb3c614d09433c455b8
- 6f0730299dd9fd362c6b994128bce064bf215fd27f55a673fda6569bbf38a4c4
- bb2e2cc0a0e4047b67b28596685b228c69c85a6a65d37c2c1003d7a9d8fd378a
- 8640f7eaa4aa157ce94c951d9eecfaffd0d603bc05ce95559d90042302c99803
- 2641ca0efcde0c92cc2ad4ad6c65fbe3ab56b711d88f26fd4e78c18cd3138aa2
- 34cf05b4d96261da6e972bd64bba273de11b24b3032de1bdf1777d69d968b114
- 0fb47c0ac1aec79351af5e06782c2ba1afd26cf8cc37505858e4028261affdf0
- c4926c88b3466385c6040378e0fe9f777536f540e01b01f3d70ee514ff3593a6
- b6edc8d2a7f9ea08ad89d05560351d5dd90f1bdc73c5ca7f6fc6e2cd6902bcd3
- 5f25b4cc7443a6e8b30a4ffd8233920b2b8e4d1a6adca465739d7badd80f1534
- 81248e707ced39e1bab3d28c9735dbe15ab7e8a9b563e887a65c6e995045bf17
- 5fcabf089b74c00a4864dd77191fdbc8c5c35a7b748c96834961d2e2c1d2b15b
- ea07bc5f78c771e803b00844a49d7f6e45abb6624a106d921d7a0d4bcc8ed886
- 3c30cfbb658332f44a397e91da7aefbab02adb34bdc534386f6acb47e5eb5c18
- ea4f2864fa6624a43cc04ad8222256a12b6c2aef877ac811f8c2f64097439006
- 0bcd2198157a72df46c6702cc1330b152555341eeb4f046f6e7cec63d0715802
- 2eca90bf5c6f0c762fb1f52cfa7f0146fae69a85bd45080066b8ef3514dc24e5
- 506ba2747f0eac45f42ee729ca5bbc41931630852f2288244233e98cd7c9a489
- de98305ce3526749f4cac6ffd47861a3cad7f2cbf25180471c68cf3280776edf
- 4a8de2a062d67875dec79748e4cb03a3881e378108ede064d5aab10145afd2a2
- c638de4dc72b87dab2e315b2da71d7612762c4d483d75d2feaa655e24db64241
- 090918108985a1ab3ee8e155c97e6ef4ab7b7b2613f4be3388bfb4758be4e503
- 4153ffb1c211c3c45a0efa9700c0908544f90d6a848f5096120933bfd94c44c3
- 96d86350fd693bf708e4f4f7de238e71e0b90bcdac3205a3a25c84b13500bd99
- ae4a76c6644585df1777d46ef10dbcbdb35dee0a13a45622bd49ad7b5eb996ac
- ecb6a93d321be76717245b6a651b96123ec1765f133779caf8a43b38827aa892
- 51932dccdd95a740fafdb2873f56c3306d803db5a796fd8379d986d84fd128a2
- 8162375363e6f1650230bc643e2bde1d0018b4f6cf54369e0c59967ad5fa4a97
- 72c79a7c65a637cb918e999d7d7ee13f4736e646512d165371740862e1e943b1
- 558887a62a2b09636c5c5f8e7ed99b018344af190ebdf1a6d71548cda11d032e
- b39046f78509d308072b384511725776d9de7da667f12bc6508eb6c39f843c75
- 9038e9e671846f1839fa3b4794f121e546ce544021848f933c239b9917a16c2d
- e238909d4f9ab35a0f1f56cd85747b307626f9713c3899d6497b3e1f257f28cb
- 220793d97e399aca5d5e82bf159eb12b7acb6d974fcd693d45c7c264e85e6548
- ef3f9f02f67084fc4dc4bde464002502a176cb7361813815c5460dd94ae0656d
- 7baede2ac4e391b60896a0a02242aeabfe55ce8b50e7b05d5b77d99dda6b76e1
- 5dec1a1452fc2303c655f153c19d675ef200f448be4b0c2b2b2d50244c820b41
- 88ed2511992f45b930922fd4bba5e5ececc761029e3d92cd092d5ed5f66a3030
- fcd8e1dea4a1c33fd72b096a61712f74a269ab334bf93653b265ee9e2871d999
- 4ec2d6697632bc8dfd294b668d514deb37efde5414881dccbb9a280fa9f86ef4
- 6c9aea7e23d20cb9074dc4acf8936cf249eb5b6e2c5ba1e4eab27267b41822a4
- 5c0f5c8cc336e73a98dd6b22bc11c418e2ab33bc95ac5b7c948ea4eba1f1a7e3"
+checksum="35c752c8332e93c7ae10e09691440accdde03232be291f57f106a73e0522da4e
+ c0a32333c4d33626b108d6e89f0ebae3924d95e97f93e739ff4720d79d895756
+ b1a51894781f6fb757a4502e5f59eb577174274260f980321a8169c5a6b4c761
+ 925a61467b506d94c59a0003d8e3f5b01d6bafbac612fd5ab52633661939ad45
+ 4ce396e8f2a65d12b082e5d3541069a80ffd79b52286db1de7dc2669923a4212
+ 885454f2fa66015fc772442b420cf9361f0ea8fcc6a861c5b3b8952b999e4b23
+ 433b6de936c7cfb7a025fc25767744c7392386de646724757d10f586aa83b24a
+ 9e17a358e8ba03ff31d98fcb108b0fb42523a1f06a7fb07edf3289da66f65034
+ ff54ceea34d4aedbb905d71caffb6606a0f79cdad6b2f58017bc00ef45caf399
+ 77e7edd22f3b062b04b89b96d1e8cd03b9b29fa587f401f8fd6a62d8cbb71ef4
+ 7df2e3610c0f4ef3d450b6d8b7c31e7941447ba40f06e4075e14e0a16f5e5a63
+ 99b3a2a17e2815958e6987e91027d3bf866efdad694b6701e0d00f96b72a4bfd
+ 8da6131d3857c403def32ac18f94a760bd4fa9734cfc018afadff0aab435f6b2
+ 43fdd1b32eb3fe59853bed4e5dba94b03dcb8d4d6a9ff87869b4637478053c92
+ 9ba43cc29edd3f9b4cfeb146e31eb1668cc427d9bd334e5aa9eb0cc904ebdac5
+ d1bb088339aa358e9ff7332d40cc7c7ee75e31e6c9653574c03b7aaf01187322
+ 20830119a3ce7f0bbfbbed86f38fc1e623dca824ae6e7b36c80cf4a28e14cd2e
+ 4668d586d8f2bccd1f20905da08c123dcee4f5cf3bafe9b0a0070ea712a84298
+ 60c0c41a9d95c0ae169cb39e84b25a35cfe2b02ed81f2c411067d2285dd95c89
+ c18a432bcc3faf4a4b5cde8688483cf4a1dc1b1e8e74ebfc64f490a7b45db66a
+ c019015d322d4b37f6266f49994e3ef325c8a99d11505591db9815600905b9a1
+ a1285de48c539790cb216c8539c3ac10b1837f0029e7f99dd4247e83b60a40e6
+ 1e21753f0334a39db7deabe2b439e1884ef499c02d716f9d3f9f73feaf6109b2
+ b9a9a87386d535b131b70db3f7e5d4f3c552fe3e38b21869bf5b0943b58ddfd5
+ df9ae1d24f07340f368a2031a3c44f14bc15a72dc076aba2c1692a98ef345d4a
+ 6b04111a500d4923e52674874ec0bf76a29522d56b9d19ebc75cae24d3d03fa5
+ 29709f30c3a1ff97371417fa35ee985360bdbba8b01367508d34373d990eed84
+ fe5eb1d10c74568566c91133af9524108120f1f89b5a6d04fc374821d0c0649a
+ f8b747e8564a45ebfa4677dcc105180a883a5f022f87e86d96c1ad56f42f1961
+ f54c672d98ea069b628febabe6120d96c9b8ce84dc797577ee292127000820df
+ 6323c444f9cb9f9430601cfa561249f072edbcdfe664847bb6f4b78ba9d2ad00
+ af3b9a70817316dec6ffc0cfc7d5405f96d637a5b8afcc7ec4fb5f66b1e2965b
+ 26b1667f7c5aca3023c0e64c47386f1862bab780dfb51ce4f964bb2dba117ab0
+ d6282d2b3ad88b4e2eaca9b48c108ec3a3cdb575ad507313515335551943af75
+ 9fa91154b3596c6f360053eee870715f6ee3682ec7a8962c180ba254075df59a
+ 15289032b51367eb654e425f3aee15e12d8e3288ae2b3cd36853d137d8489d87
+ a69bd27e74de22c6e472aacc5bb9d9c4e543027d861791f0417382a5f7f5118d
+ 54f42c8506f639562eca63b63f09566900017c1e22793d233570e28c97db72ca
+ 82c3396456c455b13802977bcda8a5f98f4a72471ad9189020603275348d8010
+ 4538c6d201312b42989bd8d895e9a32aafb6355f83a7afa4155e2c9afa5e1983
+ 4d299eeb204f4e1e8ff7c6c27b84481d1df84d53be1131680e0dab80f4578a6d
+ 37d638dfa311486749f970eafe54790e5a4ac79843a1acffd0a9f10a3e96fd83
+ 0f34bb060b1cbd05a442d69dd02dcf454ed3de8636a2a3989fbabeaee82efbf9
+ 4daca2bbcc014524d096f83891120582294389a727df8608512397b47e8ddbf3
+ 90f8bb64ab8f5b9ebf11538edb7f6ad0f484b3bdfef963a491135b18c9d5eabf
+ fe8196ebf1940d534eae41f8b8bd481d4b84d306b5f8de4715147e139031b07f
+ 093bdbd9150d86df6603e20097ce4c5db18b460fdc6349c824c4723681bb6826
+ 1a0282846b44a7ba90219c212e50d8784cd9b77cfab8c8ae14577863cc12ebd6
+ 13db9b9ebcb7d9c0868d1260feeee63300910d0e5b193e06ab861e540bddbd0a
+ 3ed29ddb978f2ff7c1672bd6525b5adf6818e14b260d7a0835ebf465f9dfca95
+ eeb2834967f05b9080a58de1f759406bb4294909a0922c7f7e4e2a69ed22104d
+ ed5b351f84260047b2f959b7dbeb9a3fa6f4710777780831c4f0259907b5fbe0
+ 1e09c208488553d62fc0f78a926971d3b37d969ed237137844c76f684bb07272
+ 8877e26cde0358319b57ade82c2d6aaf56ba3673517fc3fbf46390907c998b30
+ 4bb3c5aab906d9cfc53494c79e373b71852bd1cfd551c62dd4e5d4bfb95d8e48
+ 5f93db3d3d77dee88888c143e9fdd6c62b3584b5851532671fe14b7d4bee18db
+ 35fee74c18d203601a562093cd67013431a1efea99d930b6012f2501bd8a364b
+ 5c677d1c44b195af914137eafa94191d964ea4e014b7586a6d6c213b5e78fd49
+ b377c9210c98c95330ebbc74fd43226cb4d11ea5d2b3947bef55943e0fe93329
+ c6017b6cc9243f558eda77dbe536f3e8089764d490eaa846f61c9b373e91dfda
+ 7c2e54610bdc94c3a3d320e158537c5d6589f24a1bdd9bd2f74e2a2e32de41b6
+ 6f0b776eec863cdbfbea145551ea24bcee9358bcf014b060de3bced4fd9a9f3b
+ 1d93bed629c1fd548bc2e13a25d8fae5dd343888c8c9142f52e8f8a128f91247
+ e27c28fe6ba9cfc6191dcedf2511092b610b42c6023c27c05fec3273babb4cda
+ e85ff98db5a5b7aaf1719fe5adafd9555e2fc5d5869a6af636747fad416f3cc6
+ 947bc98e84fa1668beb3dc3067d96b40575e581df997b1cf4ec13b26856b5a2f
+ 42cb022dc9becddba32595855bd358ba8dc1bdc0f5485914337cc087e9c2ebea
+ 45b7fef087f305c963cec517db5518af5d3680230617a853ab677fe241c03a79
+ b84434f6a5cdc058868633449a984d302b0f0029d605110814e516dc4c0298b3
+ daa0bbb4caddc4098a451a050d2a60ff8694bee0da0e48eb04224636531918f5
+ 20edddb729bb4a230ded2ba323681e2f6b18b8da6c79f5c78396422affef23a9
+ ca8eb956c6061f2ebce77b97a8e7e1a9f8e2378e3d74a83e75b5d750f1f81e56
+ 5409bbf56ecd8d1c74328644ab3dd9dd4330d5be92aa4d6d569b3dea6f1aa990
+ e1beeb8feee4fd13f21ca1bedbb99b2fd060d99e771c52477ab494866b3fe20c
+ ad8c57d68d36893488ad051a4abbe95eb52544eb0f2f5d8f09f524784633e0e1
+ 3e275b9eaa134c0457a13fdb89207da4f6f370797c1c5fac809bccceb1a8b661
+ 34f67db7354e694b0c9f2a09af4bc7069851a3691280613802eef512fda2e9bf
+ cc008ee84e7af7bb51a09120022acb39032ec6fa4d59f6cee2f61b7a32b4daac
+ f289208bfd9981968144fa7669c2872cfe67cc15edba6cc109c926b22596a3c8
+ c96be633a6b9da032d4aa5e63ebb72924b58d96b61e1f723723a88eafd6c1015
+ 27cbe55e65de1dd4dabed9de5ebd5aec1f59d31735c57168675ffc3878cdca7d
+ a298214b7cc5a5a807031cda012751692b6d96b83a73c03d82f9f9b909d59be6
+ 19de4d1d77ff6eec0d0840ae7b8c1138ea80e162dc62684f8eed59b47670e4ed
+ dd066e9bc0d22915388b3be25afed12db90197124afb5355599676a55a2c321a
+ b6883ba8e423eacc9f5715172ce591bf056891c4420a952de2284a79293afc49
+ 73a0c455ff8e9efdbbf278fcb26711732b85ba3c66e1fb97882e09979b288291
+ d90e4348ab6d4cd786acc8a474a9664730ec81b41db90585a3531d19996821ef
+ dfe77d29b1290a17497521e464ca1398f4961310ae07795de44683df7cac2a3c
+ adffef23919ddf92dedd9c81f5c73cd30e21c9980c354bf20c7bf9ebe58a9709
+ 50124f81e3db868533e13436ef6c17c09b591962d021869a710a0e9bd826887b
+ ba23938f2767eae74371618aa06d9bf98c70352007d2ada2bb46f3c8e6e26689
+ aa6c7d37b9e8590404e7e3ad32a1d9845fcdbf799f5b59cc320ec17dc50c3570
+ 2b30f7f634d0f6bb431dd8378e198cf397a8ff7b57b613c085d206b4ec68cc38"

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
  2020-11-04 17:35 ` [PR PATCH] [Updated] " pullmoll
  2020-11-04 17:37 ` pullmoll
@ 2020-11-04 22:31 ` pullmoll
  2020-11-04 22:31 ` pullmoll
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pullmoll @ 2020-11-04 22:31 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 484 bytes --]

New comment by pullmoll on void-packages repository

https://github.com/void-linux/void-packages/pull/26130#issuecomment-722010456

Comment:
Tested for `i686` and `x86_64`, built fine for `aarch64`.
My PBP currently doesn't recognize the m.2 SSD where `/home` lives so I can't test it myself. 
The package is available at https://repo.voidlinux.de/aarch64/ if someone finds time to try.
The other architectures will need some more time as I'm yet again rebuilding my repository.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
                   ` (2 preceding siblings ...)
  2020-11-04 22:31 ` pullmoll
@ 2020-11-04 22:31 ` pullmoll
  2020-11-05  9:00 ` pullmoll
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pullmoll @ 2020-11-04 22:31 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 492 bytes --]

New comment by pullmoll on void-packages repository

https://github.com/void-linux/void-packages/pull/26130#issuecomment-722010456

Comment:
Tested for `i686` and `x86_64{,-musl}`, built fine for `aarch64`.
My PBP currently doesn't recognize the m.2 SSD where `/home` lives so I can't test it myself. 
The package is available at https://repo.voidlinux.de/aarch64/ if someone finds time to try.
The other architectures will need some more time as I'm yet again rebuilding my repository.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
                   ` (3 preceding siblings ...)
  2020-11-04 22:31 ` pullmoll
@ 2020-11-05  9:00 ` pullmoll
  2020-11-06 20:17 ` [PR PATCH] [Updated] " pullmoll
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pullmoll @ 2020-11-05  9:00 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 510 bytes --]

New comment by pullmoll on void-packages repository

https://github.com/void-linux/void-packages/pull/26130#issuecomment-722010456

Comment:
Tested for `i686` and `x86_64{,-musl}`, built fine for `aarch64` and `armv7l-musl`.
My PBP currently doesn't recognize the m.2 SSD where `/home` lives so I can't test it myself. 
The package is available at https://repo.voidlinux.de/aarch64/ if someone finds time to try.
The other architectures will need some more time as I'm yet again rebuilding my repository.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
                   ` (4 preceding siblings ...)
  2020-11-05  9:00 ` pullmoll
@ 2020-11-06 20:17 ` pullmoll
  2020-11-06 20:19 ` [PR PATCH] [Merged]: " pullmoll
  2020-11-06 20:42 ` q66
  7 siblings, 0 replies; 9+ messages in thread
From: pullmoll @ 2020-11-06 20:17 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 371 bytes --]

There is an updated pull request by pullmoll against master on the void-packages repository

https://github.com/pullmoll/void-packages firefox-esr-78
https://github.com/void-linux/void-packages/pull/26130

firefox-esr: update to 78.4.0
Still testing if it builds for all targets.

A patch file from https://github.com/void-linux/void-packages/pull/26130.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-firefox-esr-78-26130.patch --]
[-- Type: text/x-diff, Size: 57965 bytes --]

From 6c669fe8870bf044a1d2536752b79e5f160b3752 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 16:13:37 +0100
Subject: [PATCH 1/2] firefox-esr: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr/files/firefox-wayland     |   2 +
 srcpkgs/firefox-esr/files/mozconfig           |   7 +-
 .../patches/big-endian-image-decoders.patch   |  88 +++++++++++
 .../disable-image-format-warning.patch        |  15 --
 srcpkgs/firefox-esr/patches/fix-cross.patch   |  16 ++
 ...686-musl.patch => fix-i686-ppc-musl.patch} |   0
 .../patches/fix-image-format-warning.patch    |  39 +++++
 .../patches/fix-sandbox-membarrier.patch      |  52 -------
 .../firefox-esr/patches/fix-seccomp-bpf.patch |  14 --
 srcpkgs/firefox-esr/patches/fix-toolkit.patch |  78 ----------
 srcpkgs/firefox-esr/patches/fix-tools.patch   |  29 ----
 .../firefox-esr/patches/flac-no-ffvpx.patch   |  26 ++++
 srcpkgs/firefox-esr/patches/gettid-musl.patch |  11 --
 .../firefox-esr/patches/ppc32-fix-build.patch |  36 +++++
 ...rustc-check.patch => rust-configure.patch} |   8 +-
 .../firefox-esr/patches/rust-has-i128.patch   |  21 +++
 .../firefox-esr/patches/sandbox-fork.patch    |  13 ++
 srcpkgs/firefox-esr/patches/skia-sucks1.patch | 147 +++++++++---------
 srcpkgs/firefox-esr/patches/skia-sucks3.patch |  28 +++-
 srcpkgs/firefox-esr/patches/sndio.patch       |  81 +++-------
 srcpkgs/firefox-esr/template                  | 120 ++++++++------
 21 files changed, 433 insertions(+), 398 deletions(-)
 create mode 100644 srcpkgs/firefox-esr/files/firefox-wayland
 create mode 100644 srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
 create mode 100644 srcpkgs/firefox-esr/patches/fix-cross.patch
 rename srcpkgs/firefox-esr/patches/{fix-i686-musl.patch => fix-i686-ppc-musl.patch} (100%)
 create mode 100644 srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-toolkit.patch
 create mode 100644 srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/gettid-musl.patch
 create mode 100644 srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
 rename srcpkgs/firefox-esr/patches/{remove-rustc-check.patch => rust-configure.patch} (85%)
 create mode 100644 srcpkgs/firefox-esr/patches/rust-has-i128.patch
 create mode 100644 srcpkgs/firefox-esr/patches/sandbox-fork.patch

diff --git a/srcpkgs/firefox-esr/files/firefox-wayland b/srcpkgs/firefox-esr/files/firefox-wayland
new file mode 100644
index 00000000000..495f901320c
--- /dev/null
+++ b/srcpkgs/firefox-esr/files/firefox-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/firefox/firefox "$@"
diff --git a/srcpkgs/firefox-esr/files/mozconfig b/srcpkgs/firefox-esr/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/firefox-esr/files/mozconfig
+++ b/srcpkgs/firefox-esr/files/mozconfig
@@ -3,7 +3,6 @@ ac_add_options --libdir=/usr/lib
 
 ac_add_options --with-system-nspr
 ac_add_options --with-system-nss
-ac_add_options --with-system-bz2
 ac_add_options --with-system-jpeg
 ac_add_options --with-system-zlib
 ac_add_options --with-system-libevent
@@ -12,12 +11,8 @@ ac_add_options --with-system-icu
 # XXX: the system's libpng doesn't have APNG support
 ac_add_options --without-system-png
 ac_add_options --enable-system-pixman
-ac_add_options --enable-system-sqlite
 ac_add_options --enable-system-ffi
 
-ac_add_options --with-nspr-prefix=${XBPS_CROSS_BASE}/usr
-ac_add_options --with-nss-prefix=${XBPS_CROSS_BASE}/usr
-
 nspr_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nspr"
@@ -26,13 +21,13 @@ nss_config_args="
  --libdir=${XBPS_CROSS_BASE}/usr/lib
  --includedir=${XBPS_CROSS_BASE}/usr/include/nss"
 
-ac_add_options --disable-gconf
 ac_add_options --disable-tests
 ac_add_options --disable-crashreporter
 ac_add_options --disable-updater
 ac_add_options --disable-install-strip
 ac_add_options --disable-strip
 ac_add_options --disable-profiling
+ac_add_options --enable-release
 ac_add_options --enable-optimize="$CFLAGS"
 
 ac_add_options --enable-official-branding
diff --git a/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/big-endian-image-decoders.patch
@@ -0,0 +1,88 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1626236
+https://bug1626236.bmoattachments.org/attachment.cgi?id=9137096
+
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1582805876 -3600
+#      Thu Feb 27 13:17:56 2020 +0100
+# Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158
+# Parent  9cd90914846f667f18babc491a74c164ae5d6e9f
+imported patch decoder_workaround.patch
+
+diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp
+--- image/decoders/nsGIFDecoder2.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsGIFDecoder2.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -422,6 +422,9 @@
+   MOZ_ASSERT(mSwizzleFn);
+   uint8_t* data = reinterpret_cast<uint8_t*>(aColormap);
+   mSwizzleFn(data, data, aColors);
++#if MOZ_BIG_ENDIAN()
++  SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors);
++#endif
+ }
+ 
+ LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator,
+diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp
+--- image/decoders/nsJPEGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsJPEGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -263,6 +263,9 @@
+         case JCS_YCbCr:
+           // By default, we will output directly to BGRA. If we need to apply
+           // special color transforms, this may change.
++#if MOZ_BIG_ENDIAN()
++          mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB;
++#else
+           switch (SurfaceFormat::OS_RGBX) {
+             case SurfaceFormat::B8G8R8X8:
+               mInfo.out_color_space = JCS_EXT_BGRX;
+@@ -277,6 +280,7 @@
+               mState = JPEG_ERROR;
+               return Transition::TerminateFailure();
+           }
++#endif
+           break;
+         case JCS_CMYK:
+         case JCS_YCCK:
+diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp
+--- image/decoders/nsPNGDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsPNGDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -361,7 +361,7 @@
+                                    IResumable* aOnResume) {
+   MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!");
+ 
+-  return mLexer.Lex(aIterator, aOnResume,
++  LexerResult res = mLexer.Lex(aIterator, aOnResume,
+                     [=](State aState, const char* aData, size_t aLength) {
+                       switch (aState) {
+                         case State::PNG_DATA:
+@@ -371,6 +371,14 @@
+                       }
+                       MOZ_CRASH("Unknown State");
+                     });
++
++#if MOZ_BIG_ENDIAN()
++  if(res.is<TerminalState>() && res.as<TerminalState>() == TerminalState::SUCCESS) {
++      NativeEndian::swapToLittleEndianInPlace<uint32_t>((uint32_t*)(mImageData), mImageDataLength / 4);
++  }
++#endif
++
++  return res;
+ }
+ 
+ LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData(
+diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp
+--- image/decoders/nsWebPDecoder.cpp	Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsWebPDecoder.cpp	Fri Mar 27 13:06:18 2020 +0100
+@@ -237,7 +237,12 @@
+   // WebP doesn't guarantee that the alpha generated matches the hint in the
+   // header, so we always need to claim the input is BGRA. If the output is
+   // BGRX, swizzling will mask off the alpha channel.
++#if MOZ_BIG_ENDIAN()
++  mBuffer.colorspace = MODE_ARGB;
++  SurfaceFormat inFormat = mFormat;
++#else
+   SurfaceFormat inFormat = SurfaceFormat::OS_RGBA;
++#endif
+ 
+   SurfacePipeFlags pipeFlags = SurfacePipeFlags();
+   if (mFormat == SurfaceFormat::OS_RGBA &&
diff --git a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch b/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/firefox-esr/patches/disable-image-format-warning.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Imported from Adélie. Firefox is prone to this warning on BE and
-it leads to huge .xsession-errors, and the warning is not very
-important or meaningful, so just disable it.
-
---- gfx/2d/HelpersCairo.h
-+++ gfx/2d/HelpersCairo.h
-@@ -147,7 +147,7 @@
-     case SurfaceFormat::R5G6B5_UINT16:
-       return CAIRO_FORMAT_RGB16_565;
-     default:
--      gfxCriticalError() << "Unknown image format " << (int)format;
-+      //gfxCriticalError() << "Unknown image format " << (int)format;
-       return CAIRO_FORMAT_ARGB32;
-   }
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-cross.patch b/srcpkgs/firefox-esr/patches/fix-cross.patch
new file mode 100644
index 00000000000..9b8a816d269
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-cross.patch
@@ -0,0 +1,16 @@
+terrible hack to fix cross builds
+overwrite HOST_* flags to get rid of -MF
+
+note: this patch was used from firefox-77 until 80, dropped with the update to 81
+
+--- third_party/rust/glslopt/build.rs
++++ third_party/rust/glslopt/build.rs
+@@ -28,6 +28,8 @@
+     env::remove_var(format!("CXXFLAGS_{}", &target));
+     env::remove_var(format!("CFLAGS_{}", target.replace("-", "_")));
+     env::remove_var(format!("CXXFLAGS_{}", target.replace("-", "_")));
++    env::set_var("HOST_CFLAGS", "-O2");
++    env::set_var("HOST_CXXFLAGS", "-O2");
+
+     configure(&mut cc::Build::new())
+         .warnings(false)
diff --git a/srcpkgs/firefox-esr/patches/fix-i686-musl.patch b/srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/firefox-esr/patches/fix-i686-musl.patch
rename to srcpkgs/firefox-esr/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-image-format-warning.patch
@@ -0,0 +1,39 @@
+# HG changeset patch
+# User Lee Salzman <lsalzman@mozilla.com>
+# Date 1462463631 14400
+#      Thu May 05 11:53:51 2016 -0400
+# Node ID 8da374804a09977c8f89af5e6e0cb37cb074595d
+# Parent  29662e28a9c93ac67ee0b8ddfb65a9f29bbf73f5
+handle big-endian formats in Cairo format conversions
+
+--- gfx/2d/HelpersCairo.h
++++ gfx/2d/HelpersCairo.h
+@@ -147,7 +147,14 @@ static inline cairo_format_t GfxFormatToCairoFormat(Su
+     case SurfaceFormat::R5G6B5_UINT16:
+       return CAIRO_FORMAT_RGB16_565;
+     default:
+-      gfxCriticalError() << "Unknown image format " << (int)format;
++      // _UINT32 formats don't match B8G8R8[AX]8 on big-endian platforms,
++      // and Moz2d uses B8G8R8[AX]8 as if it was _UINT32.
++      // See bug 1269654
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_FORMAT_RGB24;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image format " << (int)format;
++      }
+       return CAIRO_FORMAT_ARGB32;
+   }
+ }
+@@ -177,7 +184,11 @@ static inline cairo_content_t GfxFormatToCairoContent(
+     case SurfaceFormat::A8:
+       return CAIRO_CONTENT_ALPHA;
+     default:
+-      gfxCriticalError() << "Unknown image content format " << (int)format;
++      if (format == SurfaceFormat::B8G8R8X8) {
++        return CAIRO_CONTENT_COLOR;
++      } else if (format != SurfaceFormat::B8G8R8A8) {
++        gfxCriticalError() << "Unknown image content format " << (int)format;
++      }
+       return CAIRO_CONTENT_COLOR_ALPHA;
+   }
+ }
diff --git a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch b/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-sandbox-membarrier.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-allow usage of SYS_membarrier, needed since musl-1.1.22
-
---- security/sandbox/linux/SandboxFilter.cpp
-+++ security/sandbox/linux/SandboxFilter.cpp
-@@ -283,6 +283,8 @@
-       case __NR_set_tid_address:
-         return Allow();
- #endif
-+      case __NR_membarrier:
-+        return Allow();
- 
-         // prctl
-       case __NR_prctl: {
-
---- security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
-@@ -1385,6 +1385,10 @@
- #define __NR_memfd_create (__NR_SYSCALL_BASE+385)
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier (__NR_SYSCALL_BASE+389)
-+#endif
-+
- // ARM private syscalls.
- #if !defined(__ARM_NR_BASE)
- #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
-
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
-@@ -1290,5 +1290,9 @@
- #define __NR_memfd_create 319
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 324
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_
- 
---- security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-+++ security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
-@@ -1490,5 +1490,9 @@
- #define __NR_shutdown 373
- #endif
- 
-+#if !defined(__NR_membarrier)
-+#define __NR_membarrier 375
-+#endif
-+
- #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_
- 
diff --git a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch b/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-seccomp-bpf.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig	2015-09-23 09:10:08.812740571 +0200
-+++ security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc	2015-09-23 09:11:38.404746155 +0200
-@@ -23,6 +23,11 @@
- #include "sandbox/linux/services/android_ucontext.h"
- #endif
- 
-+// musl libc defines siginfo_t __si_fields instead of _sifields
-+#if defined(OS_LINUX) && !defined(__GLIBC__)
-+#define _sifields __si_fields
-+#endif
-+
- namespace {
- 
- struct arch_sigsys {
diff --git a/srcpkgs/firefox-esr/patches/fix-toolkit.patch b/srcpkgs/firefox-esr/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/firefox-esr/patches/fix-toolkit.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- toolkit.orig/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h.orig    2016-07-05 21:00:03.672000517 +0200
-+++ toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2016-07-05 21:05:37.347806230 +0200
-@@ -1134,6 +1134,12 @@
- #ifndef __NR_fallocate
- #define __NR_fallocate          285
- #endif
-+
-+#undef __NR_pread
-+#define __NR_pread __NR_pread64
-+#undef __NR_pwrite
-+#define __NR_pwrite __NR_pwrite64
-+
- /* End of x86-64 definitions                                                 */
- #elif defined(__mips__)
- #if _MIPS_SIM == _MIPS_SIM_ABI32
---- toolkit.orig/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -45,6 +45,7 @@
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#include <libgen.h>
- 
- #include <iostream>
- #include <set>
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc	2014-04-17 10:24:33.793431933 +0000
-@@ -41,6 +41,10 @@
- 
- #include "common/using_std_string.h"
- 
-+#ifndef N_UNDF
-+#define N_UNDF 0
-+#endif
-+
- using std::vector;
- 
- namespace google_breakpad {
---- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-03-15 05:19:36.000000000 +0000
-+++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h	2014-04-17 10:24:33.793431933 +0000
-@@ -55,7 +55,7 @@
-
- #ifdef HAVE_MACH_O_NLIST_H
- #include <mach-o/nlist.h>
--#elif defined(HAVE_A_OUT_H)
-+#elif 0
- #include <a.out.h>
- #endif
-
---- toolkit.orig/mozapps/update/common/updatedefines.h	2019-01-29 11:34:36.416804577 +0100
-+++ toolkit/mozapps/update/common/updatedefines.h	2019-01-29 11:34:59.193583777 +0100
-@@ -102,7 +102,7 @@
-
- #  ifdef SOLARIS
- #    include <sys/stat.h>
--#  else
-+#  elif !(defined(__linux__)) || defined(__GLIBC__)
- #    include <fts.h>
- #  endif
- #  include <dirent.h>
---- toolkit.orig/mozapps/update/updater/updater.cpp	2014-03-15 05:19:37.000000000 +0000
-+++ toolkit/mozapps/update/updater/updater.cpp	2014-04-17 10:24:33.796765327 +0000
-@@ -3978,6 +3978,7 @@
- 
- int add_dir_entries(const NS_tchar* dirpath, ActionList* list) {
-   int rv = OK;
-+#if !defined(__linux__) || defined(__GLIBC__)
-   FTS* ftsdir;
-   FTSENT* ftsdirEntry;
-   mozilla::UniquePtr<NS_tchar[]> searchpath(get_full_path(dirpath));
-@@ -4085,6 +4086,7 @@
-   }
- 
-   fts_close(ftsdir);
-+#endif
- 
-   return rv;
- }
diff --git a/srcpkgs/firefox-esr/patches/fix-tools.patch b/srcpkgs/firefox-esr/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/firefox-esr/patches/fix-tools.patch
+++ b/srcpkgs/firefox-esr/patches/fix-tools.patch
@@ -1,34 +1,5 @@
---- tools/profiler/lul/LulElf.cpp.orig	2019-01-29 12:05:34.223834130 +0100
-+++ tools/profiler/lul/LulElf.cpp	2019-01-29 12:08:02.480400845 +0100
-@@ -469,10 +469,10 @@
- // Return the non-directory portion of FILENAME: the portion after the
- // last slash, or the whole filename if there are no slashes.
- string BaseFileName(const string& filename) {
--  // Lots of copies!  basename's behavior is less than ideal.
--  char* c_filename = strdup(filename.c_str());
--  string base = basename(c_filename);
--  free(c_filename);
-+  // basename's behavior is less than ideal so avoid it
-+  const char *c_filename = filename.c_str();
-+  const char *p = strrchr(c_filename, '/');
-+  string base = p ? p+1 : c_filename;
-   return base;
- }
- 
 --- tools/profiler/core/platform-linux-android.cpp.orig	2019-01-29 12:09:40.980448579 +0100
 +++ tools/profiler/core/platform-linux-android.cpp	2019-01-29 12:11:09.689590967 +0100
-@@ -253,7 +253,11 @@
- 
-   // Request profiling signals.
-   struct sigaction sa;
-+#if defined(GP_ARCH_arm)
-+  sa.sa_sigaction = SigprofHandler;
-+#else
-   sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
-+#endif
-   sigemptyset(&sa.sa_mask);
-   sa.sa_flags = SA_RESTART | SA_SIGINFO;
-   if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
 @@ -497,8 +501,10 @@
  ucontext_t sSyncUContext;
  
diff --git a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
@@ -0,0 +1,26 @@
+Enable FLAC on platforms without ffvpx like powerpc*
+
+diff --git dom/media/flac/FlacDecoder.cpp dom/media/flac/FlacDecoder.cpp
+index 53fc3c9937f7..b23771ab80fa 100644
+--- dom/media/flac/FlacDecoder.cpp
++++ dom/media/flac/FlacDecoder.cpp
+@@ -7,6 +7,7 @@
+ #include "FlacDecoder.h"
+ #include "MediaContainerType.h"
+ #include "mozilla/StaticPrefs_media.h"
++#include "PDMFactory.h"
+ 
+ namespace mozilla {
+ 
+@@ -14,6 +15,11 @@ namespace mozilla {
+ bool FlacDecoder::IsEnabled() {
+ #ifdef MOZ_FFVPX
+   return StaticPrefs::media_flac_enabled();
++#elif defined(MOZ_FFMPEG)
++  RefPtr<PDMFactory> platform = new PDMFactory();
++  return StaticPrefs::media_flac_enabled() &&
++         platform->SupportsMimeType("audio/flac"_ns,
++                                    /* DecoderDoctorDiagnostics* */ nullptr);
+ #else
+   // Until bug 1295886 is fixed.
+   return false;
diff --git a/srcpkgs/firefox-esr/patches/gettid-musl.patch b/srcpkgs/firefox-esr/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/firefox-esr/patches/gettid-musl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- tools/profiler/core/platform-linux-android.cpp.orig	2019-07-09 22:58:30.039475686 +0200
-+++ tools/profiler/core/platform-linux-android.cpp	2019-07-09 22:58:39.331437677 +0200
-@@ -73,7 +73,7 @@
- 
- int profiler_current_thread_id() {
-   // glibc doesn't provide a wrapper for gettid().
--#if defined(__GLIBC__)
-+#if defined(__linux__)
-   return static_cast<int>(static_cast<pid_t>(syscall(SYS_gettid)));
- #else
-   return static_cast<int>(gettid());
diff --git a/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/ppc32-fix-build.patch
@@ -0,0 +1,36 @@
+This is not a complete/correct patch, but it makes firefox build. For now
+mostly for tracking, so a real fix can be made, but right now it still
+segfaults on start.
+
+Ref: https://hg.mozilla.org/mozilla-central/rev/08339a56f3ae
+Ref: https://hg.mozilla.org/mozilla-central/rev/d16fcad6aa60
+Ref: https://hg.mozilla.org/mozilla-central/rev/ab87611d012e
+Ref: https://hg.mozilla.org/mozilla-central/file/tip/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
+
+--- xpcom/reflect/xptcall/xptcall.h
++++ xpcom/reflect/xptcall/xptcall.h
+@@ -71,6 +71,11 @@ struct nsXPTCVariant {
+     ExtendedVal ext;
+   };
+ 
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  // this field is still necessary on ppc32, as an address
++  // to it is taken certain places in xptcall
++  void *ptr;
++#endif
+   nsXPTType type;
+   uint8_t flags;
+ 
+@@ -91,7 +96,12 @@ struct nsXPTCVariant {
+   };
+ 
+   void ClearFlags() { flags = 0; }
++#if defined(__powerpc__) && !defined(__powerpc64__)
++  void SetIndirect() { ptr = &val; flags |= IS_INDIRECT; }
++  bool IsPtrData() const { return IsIndirect(); }
++#else
+   void SetIndirect() { flags |= IS_INDIRECT; }
++#endif
+ 
+   bool IsIndirect() const { return 0 != (flags & IS_INDIRECT); }
+ 
diff --git a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch b/srcpkgs/firefox-esr/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/firefox-esr/patches/remove-rustc-check.patch
rename to srcpkgs/firefox-esr/patches/rust-configure.patch
index 26a20dd94ce..887c102bc55 100644
--- a/srcpkgs/firefox-esr/patches/remove-rustc-check.patch
+++ b/srcpkgs/firefox-esr/patches/rust-configure.patch
@@ -1,9 +1,9 @@
 Mozilla rustc check does not support crossbuild: let's remove it
 Remove calls to unwrap_rustup, they fail if rustup isn't present
 
---- build/moz.configure/rust.configure	2019-07-06 03:48:30.000000000 +0200
-+++ build/moz.configure/rust.configure	2019-07-09 22:35:23.326851798 +0200
-@@ -79,9 +79,6 @@
+--- build/moz.configure/rust.configure.orig	2019-10-17 04:19:59.000000000 +0700
++++ build/moz.configure/rust.configure	2019-10-22 11:48:55.616022140 +0700
+@@ -78,9 +78,6 @@
  
      return unwrap
  
@@ -13,7 +13,7 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -365,26 +362,6 @@
+@@ -348,26 +345,6 @@
  
              os.write(in_fd, source)
              os.close(in_fd)
diff --git a/srcpkgs/firefox-esr/patches/rust-has-i128.patch b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
@@ -0,0 +1,21 @@
+The configure check fails for cross builds.
+i128 is supported since rust-1.26, so it is safe for us to assume it is always present
+
+--- third_party/rust/num-traits/build.rs.orig	2020-02-14 23:57:25.985355610 +0100
++++ third_party/rust/num-traits/build.rs	2020-02-14 23:58:36.255710188 +0100
+@@ -1,14 +1,5 @@
+-extern crate autocfg;
+-
+-use std::env;
+-
+ fn main() {
+-    let ac = autocfg::new();
+-    if ac.probe_type("i128") {
+-        println!("cargo:rustc-cfg=has_i128");
+-    } else if env::var_os("CARGO_FEATURE_I128").is_some() {
+-        panic!("i128 support was not detected!");
+-    }
++    println!("cargo:rustc-cfg=has_i128");
+ 
+     autocfg::rerun_path("build.rs");
+ }
diff --git a/srcpkgs/firefox-esr/patches/sandbox-fork.patch b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
@@ -0,0 +1,13 @@
+make SYS_fork non-fatal, musl uses it for fork(2)
+
+--- security/sandbox/linux/SandboxFilter.cpp
++++ security/sandbox/linux/SandboxFilter.cpp
+@@ -1253,6 +1253,8 @@
+         // usually do something reasonable on error.
+       case __NR_clone:
+         return ClonePolicy(Error(EPERM));
++      case __NR_fork:
++        return Error(ENOSYS);
+ 
+ #  ifdef __NR_fadvise64
+       case __NR_fadvise64:
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks1.patch b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks1.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks1.patch
@@ -1,84 +1,77 @@
-# HG changeset patch
-# Parent  548d0a2f3a22bfac32ec0c3921c6c969c8bf32a9
+https://bugzilla.mozilla.org/show_bug.cgi?id=1504834#c5
+https://bugzilla.mozilla.org/attachment.cgi?id=9028600
 
-diff -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp
---- gfx/2d/ConvolutionFilter.cpp	Mon Jul 22 16:57:54 2019 +0200
-+++ gfx/2d/ConvolutionFilter.cpp	Thu Jul 25 14:27:59 2019 +0200
-@@ -35,9 +35,38 @@
-   return true;
+--- gfx/skia/skia/third_party/skcms/skcms.cc
++++ gfx/skia/skia/third_party/skcms/skcms.cc
+@@ -30,6 +30,8 @@
+         #include <avx512fintrin.h>
+         #include <avx512dqintrin.h>
+     #endif
++#elif defined(__BIG_ENDIAN__)
++    #define SKCMS_PORTABLE
+ #endif
+ 
+ // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
+@@ -280,20 +282,28 @@ enum {
+ static uint16_t read_big_u16(const uint8_t* ptr) {
+     uint16_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ushort(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ushort(be);
++    #else
+     return __builtin_bswap16(be);
++    #endif
+ #endif
  }
  
-+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
+ static uint32_t read_big_u32(const uint8_t* ptr) {
+     uint32_t be;
+     memcpy(&be, ptr, sizeof(be));
+-#if defined(_MSC_VER)
+-    return _byteswap_ulong(be);
++#if defined(__BIG_ENDIAN__)
++    return be;
+ #else
++    #if defined(_MSC_VER)
++    return _byteswap_ulong(be);
++    #else
+     return __builtin_bswap32(be);
++    #endif
+ #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
+--- gfx/2d/DrawTargetSkia.cpp
++++ gfx/2d/DrawTargetSkia.cpp
+@@ -138,8 +138,7 @@ static IntRect CalculateSurfaceBounds(const IntSize& a
+   return surfaceBounds.Intersect(bounds);
  }
  
- /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
-diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h
---- gfx/skia/skia/include/core/SkPreConfig.h	Mon Jul 22 16:57:54 2019 +0200
-+++ 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
+-static const int kARGBAlphaOffset =
+-    SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
++static const int kARGBAlphaOffset = 0;
+ 
+ static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
+                              const int32_t aStride, SurfaceFormat aFormat) {
+--- gfx/2d/Types.h
++++ gfx/2d/Types.h
+@@ -87,15 +87,8 @@ enum class SurfaceFormat : int8_t {
+ // 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.
+   //
diff --git a/srcpkgs/firefox-esr/patches/skia-sucks3.patch b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/firefox-esr/patches/skia-sucks3.patch
+++ b/srcpkgs/firefox-esr/patches/skia-sucks3.patch
@@ -1,3 +1,5 @@
+CompositableHost.cpp patch added by @q66, based on patch in issue 1602730.
+
 # HG changeset patch
 # Parent  46ea866ca3acb8bb5e1709ceb799b9c94f591dec
 Problem description: Tab-titles that are too long to fit into a tab get faded out.
@@ -17,7 +19,7 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
        SkCanvas::kPreserveLCDText_SaveLayerFlag |
            (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
  
-+#if MOZ_BIG_ENDIAN
++#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.
@@ -28,3 +30,27 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
    mCanvas->saveLayer(saveRec);
  
    SetPermitSubpixelAA(aOpaque);
+--- gfx/layers/composite/CompositableHost.cpp
++++ gfx/layers/composite/CompositableHost.cpp
+@@ -13,6 +13,7 @@
+ #include "ImageHost.h"  // for ImageHostBuffered, etc
+ #include "Layers.h"
+ #include "TiledContentHost.h"  // for TiledContentHost
++#include "mozilla/EndianUtils.h"
+ #include "mozilla/gfx/gfxVars.h"
+ #include "mozilla/layers/LayersSurfaces.h"  // for SurfaceDescriptor
+ #include "mozilla/layers/TextureHost.h"     // for TextureHost, etc
+@@ -92,9 +93,13 @@ bool CompositableHost::AddMaskEffect(EffectChain& aEffects,
+   }
+   MOZ_ASSERT(source);
+ 
++  // Setting an alpha-mask here breaks the URL-bar on big endian (s390x)
++  // if the typed URL is too long for the textbox (automatic scrolling needed)
++#if MOZ_LITTLE_ENDIAN()
+   RefPtr<EffectMask> effect =
+       new EffectMask(source, source->GetSize(), aTransform);
+   aEffects.mSecondaryEffects[EffectTypes::MASK] = effect;
++#endif
+   return true;
+ }
+ 
diff --git a/srcpkgs/firefox-esr/patches/sndio.patch b/srcpkgs/firefox-esr/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/firefox-esr/patches/sndio.patch
+++ b/srcpkgs/firefox-esr/patches/sndio.patch
@@ -1,8 +1,8 @@
 --- old-configure.in.orig
 +++ old-configure.in
-@@ -2839,6 +2839,22 @@
- 
- AC_SUBST(MOZ_ALSA)
+@@ -2818,6 +2818,22 @@
+     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
+ fi
  
 +dnl ==================================
 +dnl = Check sndio availability
@@ -21,26 +21,11 @@
 +AC_SUBST(MOZ_SNDIO)
 +
  dnl ========================================================
- dnl = Disable PulseAudio
- dnl ========================================================
---- toolkit/library/moz.build.orig
-+++ toolkit/library/moz.build
-@@ -235,10 +235,8 @@
- if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'):
-     OS_LIBS += CONFIG['TK_LIBS']
- 
--if CONFIG['OS_ARCH'] == 'OpenBSD':
--    OS_LIBS += [
--        'sndio',
--    ]
-+if CONFIG['MOZ_SNDIO']:
-+    OS_LIBS += CONFIG['MOZ_SNDIO_LIBS']
- 
- if CONFIG['MOZ_ENABLE_DBUS']:
-     OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS']
+ dnl =
+ dnl = Maintainer debug option (no --enable equivalent)
 --- media/libcubeb/src/moz.build.orig
 +++ media/libcubeb/src/moz.build
-@@ -43,7 +43,7 @@
+@@ -44,11 +44,13 @@
      ]
      DEFINES['USE_JACK'] = True
  
@@ -49,49 +34,19 @@
      SOURCES += [
          'cubeb_sndio.c',
      ]
---- build/moz.configure/old.configure.orig
-+++ build/moz.configure/old.configure
-@@ -169,6 +169,7 @@
+     DEFINES['USE_SNDIO'] = True
++
++if CONFIG['OS_ARCH'] == 'OpenBSD':
+     DEFINES['DISABLE_LIBSNDIO_DLOPEN'] = True
+ 
+ if CONFIG['OS_TARGET'] == 'Darwin':
+--- build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
++++ -	2020-06-30 12:18:26.027756310 +0200
+@@ -210,6 +210,7 @@
  @old_configure_options(
      '--cache-file',
      '--datadir',
 +    '--enable-sndio',
-     '--enable-content-sandbox',
-     '--enable-cookies',
-     '--enable-cpp-rtti',
---- security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp.orig
-+++ security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
-@@ -349,6 +349,21 @@
-         }
-       }
-     }
-+
-+#ifdef MOZ_SNDIO
-+    // ~/.aucat_cookie (sndio)
-+    rv = homeDir->Clone(getter_AddRefs(confDir));
-+    if (NS_SUCCEEDED(rv)) {
-+      rv = confDir->AppendNative(NS_LITERAL_CSTRING(".aucat_cookie"));
-+      if (NS_SUCCEEDED(rv)) {
-+        nsAutoCString tmpPath;
-+        rv = confDir->GetNativePath(tmpPath);
-+        if (NS_SUCCEEDED(rv)) {
-+          policy->AddPath(rdwrcr, tmpPath.get());
-+        }
-+      }
-+    }
-+#endif
-   }
- 
-   // Firefox binary dir.
---- security/sandbox/linux/moz.build.orig
-+++ security/sandbox/linux/moz.build
-@@ -81,6 +81,9 @@
- if CONFIG['MOZ_ALSA']:
-     DEFINES['MOZ_ALSA'] = True
- 
-+if CONFIG['MOZ_SNDIO']:
-+    DEFINES['MOZ_SNDIO'] = True
-+
- # This copy of SafeSPrintf doesn't need to avoid the Chromium logging
- # dependency like the one in libxul does, but this way the behavior is
- # consistent.  See also the comment in SandboxLogging.h.
+     '--enable-crashreporter',
+     '--enable-dbus',
+     '--enable-debug-js-modules',
diff --git a/srcpkgs/firefox-esr/template b/srcpkgs/firefox-esr/template
index eb3c32bed59..51f1ebe2334 100644
--- a/srcpkgs/firefox-esr/template
+++ b/srcpkgs/firefox-esr/template
@@ -3,57 +3,59 @@
 # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-esr-i18n".
 #
 pkgname=firefox-esr
-version=68.11.0
+version=78.4.0
 revision=1
 wrksrc="firefox-${version}"
-build_helper="rust"
-short_desc="Mozilla Firefox web browser - Extended Support Release (ESR)"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_helper="rust qemu"
+hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo
+ llvm clang nodejs-lts-10 cbindgen python nasm which tar"
+makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
+ libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
+ libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel)
+ $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
+ $(vopt_if xscreensaver libXScrnSaver-devel)
+ $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)"
+depends="nss>=3.53 desktop-file-utils hicolor-icon-theme"
+short_desc="Firefox browser - Extended Support Release"
+maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.mozilla.org/firefox/organizations/"
 distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
-checksum=91c1f7caaf1ba785b74799865227456bf784ba614d17cf5f0f41a5f25d6d2160
-
+checksum=8e3cf0bbf1062768134db2eb10ab774731ca5ec6694b65def82234bb0a9170fc
 lib32disabled=yes
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
-makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
- pixman-devel sqlite-devel libevent-devel libnotify-devel libvpx5-devel
- libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
- $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
- $(vopt_if startup_notification startup-notification-devel)
- $(vopt_if xscreensaver libXScrnSaver-devel) $(vopt_if sndio sndio-devel)"
-depends="nss>=3.44.3 desktop-file-utils hicolor-icon-theme"
 conflicts="firefox>=0"
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio"
+build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland"
+build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 
 case $XBPS_TARGET_MACHINE in
-	armv[56]*) broken="required NEON extensions are not supported on armv6" ;;
+	armv[56]*) broken="required NEON extensions are not supported on armv[56]" ;;
 	ppc64*) ;;
 	ppc*) broken="xptcall bitrot" ;;
 esac
 
+if [ "$XBPS_TARGET_ENDIAN" = "be" ]; then
+	broken="rendering is busted, dunno why"
+fi
+
+CXXFLAGS="-Wno-class-memaccess -Wno-unused-function"
+
 if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
 	makedepends+=" libatomic-devel"
 fi
 
-# we need this because cargo verifies checksums of all files in vendor
-# crates when it builds and gives us no way to override or update the
-# file sanely... so just clear out the file list
+# We need this because cargo verifies checksums of all files
+# in vendor crates when it builds and gives us no way to
+# override or update the file sanely... so just clear out the file list
 _clear_vendor_checksums() {
 	sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
 }
 
 post_extract() {
-	case "$XBPS_TARGET_MACHINE" in
-	*-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		cp "${FILESDIR}/stab.h" toolkit/crashreporter/google-breakpad/src/
-		;;
-	esac
-
+	fi
 	# Google API key (see http://www.chromium.org/developers/how-tos/api-keys)
 	# Note: This is for Void Linux use ONLY.
 	echo -n "AIzaSyCIFdBA7eQP43R6kXRwTq7j6Mvj1ITze90" > google-api-key
@@ -64,19 +66,18 @@ post_extract() {
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
+	_clear_vendor_checksums glslopt
 }
 
 do_build() {
-	cp "${FILESDIR}/mozconfig" "${wrksrc}/.mozconfig"
+	cp ${FILESDIR}/mozconfig .mozconfig
 
-	case "$XBPS_TARGET_MACHINE" in
-	       *-musl)
+	if [ "$XBPS_TARGET_LIBC" = musl ]; then
 		echo "ac_add_options --disable-jemalloc" >>.mozconfig
 		echo "ac_add_options --disable-gold" >>.mozconfig
 		echo "ac_add_options --enable-release" >>.mozconfig
-		;;
-	esac
+	fi
 
 	case "$XBPS_TARGET_MACHINE" in
 	arm*|x86_64*|i686*)
@@ -101,17 +102,16 @@ do_build() {
 
 		export BINDGEN_CFLAGS="--target=$XBPS_CROSS_TRIPLET \
 			--sysroot=${XBPS_CROSS_BASE} ${BINDGEN_INCLUDE_FLAGS}"
-		export HOST_CC=cc
+		export HOST_CC="${CC_host}"
 		export TARGET_CC="${CC}"
 		export HOST_CFLAGS="${XBPS_CFLAGS}"
 		export HOST_CXXFLAGS="${XBPS_CXXFLAGS}"
-		export ac_cv_sqlite_secure_delete=yes \
-			ac_cv_sqlite_threadsafe=yes \
-			ac_cv_sqlite_enable_fts3=yes \
-			ac_cv_sqlite_dbstat_vtab=yes \
-			ac_cv_sqlite_enable_unlock_notify=yes \
-			ac_cv_prog_hostcxx_works=1
-
+		echo "ac_cv_sqlite_secure_delete=yes" >> .mozconfig
+		echo "ac_cv_sqlite_threadsafe=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_fts3=yes" >> .mozconfig
+		echo "ac_cv_sqlite_dbstat_vtab=yes" >> .mozconfig
+		echo "ac_cv_sqlite_enable_unlock_notify=yes" >> .mozconfig
+		echo "ac_cv_prog_hostcxx_works=1" >> .mozconfig
 		echo "ac_add_options --target=$XBPS_CROSS_TRIPLET" >>.mozconfig
 		echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig
 	else
@@ -138,6 +138,11 @@ do_build() {
 		build/moz.configure/toolchain.configure
 	fi
 
+	case "$XBPS_TARGET_MACHINE" in
+	aarch64*|i686*|x86_64*)
+		echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
+	esac
+
 	export LDFLAGS+=" -Wl,-rpath=/usr/lib/firefox"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -147,38 +152,57 @@ do_build() {
 	export MOZ_MAKE_FLAGS="${makejobs}"
 	export MOZ_NOSPAM=1
 	export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild"
+	export MACH_USE_SYSTEM_PYTHON=1
 
 	export AS=$CC
 
-	cat <<! >>.mozconfig
+	cat >>.mozconfig <<EOF
 ac_add_options --with-google-location-service-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-google-safebrowsing-api-keyfile="${wrksrc}/google-api-key"
 ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key"
 ac_add_options $(vopt_enable alsa)
+ac_add_options $(vopt_enable jack)
 ac_add_options $(vopt_enable sndio)
 ac_add_options $(vopt_enable dbus)
 ac_add_options $(vopt_enable dbus necko-wifi)
 ac_add_options $(vopt_enable pulseaudio)
-ac_add_options $(vopt_enable startup_notification startup-notification)
-!
-
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
+EOF
 	rm -f old-configure
 	./mach build
+
+	# Make langpacks for all languages
+	dir=$(ls -d obj-*/browser/locales)
+	cd ${wrksrc}/${dir}
+	for lang in ${languages[*]}; do
+		msg_normal "Making langpack for ${lang} ...\n"
+		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
+	done
 }
+
 do_install() {
+	export MACH_USE_SYSTEM_PYTHON=1
 	DESTDIR="$DESTDIR" ./mach install
 
+	vbin ${FILESDIR}/firefox-wayland
 	vinstall ${FILESDIR}/vendor.js 644 usr/lib/firefox/browser/defaults/preferences
 	vinstall taskcluster/docker/firefox-snap/firefox.desktop 644 usr/share/applications
 
-	for i in 16x16 22x22 24x24 32x32 48x48 128x128 256x256; do
+	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
 		vinstall ${wrksrc}/browser/branding/official/default${i%x*}.png 644 \
 			usr/share/icons/hicolor/${i}/apps firefox.png
 	done
+	vinstall ${wrksrc}/browser/branding/official/default256.png 644 \
+		usr/share/pixmaps firefox.png
 
-	# We don't want the development stuff
-	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
+	# Use system-provided dictionaries
+	rm -rf ${DESTDIR}/usr/lib/firefox/{dictionaries,hyphenation}
+	ln -s /usr/share/hunspell ${DESTDIR}/usr/lib/firefox/dictionaries
+	ln -s /usr/share/hyphen ${DESTDIR}/usr/lib/firefox/hyphenation
 
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf firefox ${DESTDIR}/usr/lib/firefox/firefox-bin
+
+	# Remove the development files - noone uses them
+	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
 }

From 8a0c3501bdb0bf501b2789948eb3e576400c9880 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Wed, 4 Nov 2020 18:01:21 +0100
Subject: [PATCH 2/2] firefox-esr-i18n: update to 78.4.0

[ci skip]
---
 srcpkgs/firefox-esr-i18n/template | 190 +++++++++++++++---------------
 1 file changed, 95 insertions(+), 95 deletions(-)

diff --git a/srcpkgs/firefox-esr-i18n/template b/srcpkgs/firefox-esr-i18n/template
index 6fdd22574cb..d8df644a8c1 100644
--- a/srcpkgs/firefox-esr-i18n/template
+++ b/srcpkgs/firefox-esr-i18n/template
@@ -1,10 +1,10 @@
 # Template file for 'firefox-esr-i18n'
 pkgname=firefox-esr-i18n
-version=68.11.0
+version=78.4.0
 revision=1
 build_style=meta
 short_desc="Firefox ESR language packs"
-maintainer="Orphaned <orphan@voidlinux.org>"
+maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-2.0"
 homepage="https://www.mozilla.org/firefox/"
 
@@ -135,96 +135,96 @@ _pkgtmpl() {
 	}
 }
 
-checksum="a96b2eab357c1d3ae79978919d78227e91427464ec0d506276e8448df878e4de
- 77b3f295c0c8e331deec5ac81c4566e70e686e1134569e3dc383406634148642
- dddd186a5e1835778736cf1eb6254dc6909b0fc547b312695788cc455b52aa9e
- a59a86cc1838461ee51c3235c617ee28bb0ae7a4422866b645f67a7a2bc77673
- 52acf8999a4f46549ef251787681f8db62ee44a1653cd1eefb82b5c8a7e3c480
- 02d42d95c95d4b83716d71dbc8f9eab6d046540be34bc65360f16deca54840e8
- 458001594cf5402dae30241193ffcdf0f727bc0451b46382cd12939458459258
- 87be7b1c87ad813430e9f587315f1371f21f655ecb7f6dd90380741597ee818b
- 67f628587202ffef8744e2399fc2e808454562f6e68a607c4a0dadff38f68789
- 27b99f0e05d79f39abbb1770190f4a3d049aa527bd02ce9dd6815a3f73e3757f
- 4b30e8c01fc67bb11779fa50d8e1b2c93d6a2a936c6d8c77d3314df0cfccc131
- 45ebc6437bcc217ac54b0bf380a2f3f2e6cbbeada8d74269a760ae0d7a3a47da
- 139126e7e7f6c78e23da66dca5441fc9c0c53eca1009cf58377044fe6fdeb202
- 92b1a9b9465237c6423aac78cd02110354f7a4d4f89e915e045e3cf224323c51
- a0abce87643502f16e3a4dde825cf3e7f58cd75f5a4196451ede813b799611c3
- 8faaf99245fa5fd7a8ffe0344a6892546735c19eb9f2c6ecc534fc5808e26aec
- 9317185ea24b23004971de4187b2561d12c82872e4aa61f406bc02d5e83617fd
- 6869b14cf69508cd2f34cc722b346f30db0ec3891ebcc31908f69a1f307c8d67
- c153a54ec2e4ad4e817f8fa91d29a1698c11ca9ec04e494e1d866c7d9842ee8e
- dfe8300b735d2141798f8255d3ec102699b5b127bf9cfe5860784220ca0b6055
- fd57e1055a25fa1dcd5a91393408dad91bf0db2054c4bfd29ab47785f3156599
- a9f17b51896142082b3bfdcdbca9a472d95c5dd12005f2c3ce346c938d57ce7f
- 935826ae44cace20973c9ee32df8032fa95ab82843a92c514add0d8c44fb4c7e
- 4579dd24069d6414eb105d58c1789605a0ada438504f4fc14c724a4ee78b3726
- f69ec189d7eb2a4074a9218a9b87399f0504b8790e8aab98650120acc20ca184
- 4164c7f23e13e86f6c3e3bb1319da47a51d8b35b13acd2e8bf1c371d6c8a6ec3
- ffac444bc57d684f0f131f93ff48ddf4db3761905fa36882659a380eddaa1703
- 017049781b08378ab45a8cc95efda95e8dc4d10dc86d26efaf8209c51c556a0a
- 5b7851dca418b6cb08a3e6d4f189478de2fba5869d559f82740eec55abb45f93
- ef8c1054b528afc780b916f87b5038c0d2baa02a4445f7ec18c11f316766533e
- ee81934fbe482564a28f5e4cd44d3596b5f3a3926abf4e7c30c52918199299e1
- 269f6ca41e1322939ec1ed68a919e84e990cd431d7dbfc2bb67d3708e8d89bd8
- c29406cfb4d94e98e15ec5f0fe9f9cec52a6e251865683cca307ff562b52d0a7
- 025c7ed2fec33d06eb3cca4b7255d8b133cccb5d943d38afceef93ffc494e9e1
- ac70f1b3f164798e4c95dddb81e45ae91f40ad66b97cd443da94df68cc7b7964
- b467e26b8facc706501ec93be8b23c4fbc16b1fd01678f968d591951b7dab19b
- cf0b4e1f2c0620b19917e616ce1d94da9b4361e1e642c080fe36580911d61b18
- fd18f16b746c48224e4721d2a118fad44c598ca851778331aed4bd4355d8e982
- 064fe64bde1cd1bf2c255297af730ef0487fb193d5ca425935fc26e6e46c6733
- 06396fbfaebba29ffded9c79942e7fe6d988d1e0e26ac6bb3082dc5c1bfd1370
- ac2d5b18284b3702a3b93e09c73dabc42894088bf7bd3ecd9e1114c882ad88be
- 8f96e6b7e4be985ca90e5a378cb90a87cdef5b0ef36a64e86aac042e6f4dce74
- ca38f1b8c8198150986e35264d6c8a0f56c2e4b694738d926104d360d1244c1e
- bdb3756655fb54f5fb3feca19dce0bb6a7a98293f0def9f8855dbd269d20a259
- f531eee42bb19c32ea1242beb29147e064da58caeede025510d8b3092198c62b
- 05df51330571877fd1ab339183e6d68a5c92c5a132e109464b75dd5d4879d969
- 8492216768d7c008a224d5831b47bf0ef6a7ac19ce21b0113ecce921868654ca
- adea068ac99f58030551f1a080bd70d946c20edd9000c554f46289f3ea75c4bb
- 0d909de2c7320827eab604e697ad3bd89adfd55c9e8ea5aabc2e3938f45025bc
- 6edbe0259392b489ff808174e107d01dcaaf42b862ee3d0b804cfbda1ff636d3
- 4fc4c48637a0d285e85db0d699a62a08c6cc503073b4201b6115c13f9c7283dd
- e6fe631141ce94e6425e4c745fe2b5a2cbda685c5492ebb3c614d09433c455b8
- 6f0730299dd9fd362c6b994128bce064bf215fd27f55a673fda6569bbf38a4c4
- bb2e2cc0a0e4047b67b28596685b228c69c85a6a65d37c2c1003d7a9d8fd378a
- 8640f7eaa4aa157ce94c951d9eecfaffd0d603bc05ce95559d90042302c99803
- 2641ca0efcde0c92cc2ad4ad6c65fbe3ab56b711d88f26fd4e78c18cd3138aa2
- 34cf05b4d96261da6e972bd64bba273de11b24b3032de1bdf1777d69d968b114
- 0fb47c0ac1aec79351af5e06782c2ba1afd26cf8cc37505858e4028261affdf0
- c4926c88b3466385c6040378e0fe9f777536f540e01b01f3d70ee514ff3593a6
- b6edc8d2a7f9ea08ad89d05560351d5dd90f1bdc73c5ca7f6fc6e2cd6902bcd3
- 5f25b4cc7443a6e8b30a4ffd8233920b2b8e4d1a6adca465739d7badd80f1534
- 81248e707ced39e1bab3d28c9735dbe15ab7e8a9b563e887a65c6e995045bf17
- 5fcabf089b74c00a4864dd77191fdbc8c5c35a7b748c96834961d2e2c1d2b15b
- ea07bc5f78c771e803b00844a49d7f6e45abb6624a106d921d7a0d4bcc8ed886
- 3c30cfbb658332f44a397e91da7aefbab02adb34bdc534386f6acb47e5eb5c18
- ea4f2864fa6624a43cc04ad8222256a12b6c2aef877ac811f8c2f64097439006
- 0bcd2198157a72df46c6702cc1330b152555341eeb4f046f6e7cec63d0715802
- 2eca90bf5c6f0c762fb1f52cfa7f0146fae69a85bd45080066b8ef3514dc24e5
- 506ba2747f0eac45f42ee729ca5bbc41931630852f2288244233e98cd7c9a489
- de98305ce3526749f4cac6ffd47861a3cad7f2cbf25180471c68cf3280776edf
- 4a8de2a062d67875dec79748e4cb03a3881e378108ede064d5aab10145afd2a2
- c638de4dc72b87dab2e315b2da71d7612762c4d483d75d2feaa655e24db64241
- 090918108985a1ab3ee8e155c97e6ef4ab7b7b2613f4be3388bfb4758be4e503
- 4153ffb1c211c3c45a0efa9700c0908544f90d6a848f5096120933bfd94c44c3
- 96d86350fd693bf708e4f4f7de238e71e0b90bcdac3205a3a25c84b13500bd99
- ae4a76c6644585df1777d46ef10dbcbdb35dee0a13a45622bd49ad7b5eb996ac
- ecb6a93d321be76717245b6a651b96123ec1765f133779caf8a43b38827aa892
- 51932dccdd95a740fafdb2873f56c3306d803db5a796fd8379d986d84fd128a2
- 8162375363e6f1650230bc643e2bde1d0018b4f6cf54369e0c59967ad5fa4a97
- 72c79a7c65a637cb918e999d7d7ee13f4736e646512d165371740862e1e943b1
- 558887a62a2b09636c5c5f8e7ed99b018344af190ebdf1a6d71548cda11d032e
- b39046f78509d308072b384511725776d9de7da667f12bc6508eb6c39f843c75
- 9038e9e671846f1839fa3b4794f121e546ce544021848f933c239b9917a16c2d
- e238909d4f9ab35a0f1f56cd85747b307626f9713c3899d6497b3e1f257f28cb
- 220793d97e399aca5d5e82bf159eb12b7acb6d974fcd693d45c7c264e85e6548
- ef3f9f02f67084fc4dc4bde464002502a176cb7361813815c5460dd94ae0656d
- 7baede2ac4e391b60896a0a02242aeabfe55ce8b50e7b05d5b77d99dda6b76e1
- 5dec1a1452fc2303c655f153c19d675ef200f448be4b0c2b2b2d50244c820b41
- 88ed2511992f45b930922fd4bba5e5ececc761029e3d92cd092d5ed5f66a3030
- fcd8e1dea4a1c33fd72b096a61712f74a269ab334bf93653b265ee9e2871d999
- 4ec2d6697632bc8dfd294b668d514deb37efde5414881dccbb9a280fa9f86ef4
- 6c9aea7e23d20cb9074dc4acf8936cf249eb5b6e2c5ba1e4eab27267b41822a4
- 5c0f5c8cc336e73a98dd6b22bc11c418e2ab33bc95ac5b7c948ea4eba1f1a7e3"
+checksum="35c752c8332e93c7ae10e09691440accdde03232be291f57f106a73e0522da4e
+ c0a32333c4d33626b108d6e89f0ebae3924d95e97f93e739ff4720d79d895756
+ b1a51894781f6fb757a4502e5f59eb577174274260f980321a8169c5a6b4c761
+ 925a61467b506d94c59a0003d8e3f5b01d6bafbac612fd5ab52633661939ad45
+ 4ce396e8f2a65d12b082e5d3541069a80ffd79b52286db1de7dc2669923a4212
+ 885454f2fa66015fc772442b420cf9361f0ea8fcc6a861c5b3b8952b999e4b23
+ 433b6de936c7cfb7a025fc25767744c7392386de646724757d10f586aa83b24a
+ 9e17a358e8ba03ff31d98fcb108b0fb42523a1f06a7fb07edf3289da66f65034
+ ff54ceea34d4aedbb905d71caffb6606a0f79cdad6b2f58017bc00ef45caf399
+ 77e7edd22f3b062b04b89b96d1e8cd03b9b29fa587f401f8fd6a62d8cbb71ef4
+ 7df2e3610c0f4ef3d450b6d8b7c31e7941447ba40f06e4075e14e0a16f5e5a63
+ 99b3a2a17e2815958e6987e91027d3bf866efdad694b6701e0d00f96b72a4bfd
+ 8da6131d3857c403def32ac18f94a760bd4fa9734cfc018afadff0aab435f6b2
+ 43fdd1b32eb3fe59853bed4e5dba94b03dcb8d4d6a9ff87869b4637478053c92
+ 9ba43cc29edd3f9b4cfeb146e31eb1668cc427d9bd334e5aa9eb0cc904ebdac5
+ d1bb088339aa358e9ff7332d40cc7c7ee75e31e6c9653574c03b7aaf01187322
+ 20830119a3ce7f0bbfbbed86f38fc1e623dca824ae6e7b36c80cf4a28e14cd2e
+ 4668d586d8f2bccd1f20905da08c123dcee4f5cf3bafe9b0a0070ea712a84298
+ 60c0c41a9d95c0ae169cb39e84b25a35cfe2b02ed81f2c411067d2285dd95c89
+ c18a432bcc3faf4a4b5cde8688483cf4a1dc1b1e8e74ebfc64f490a7b45db66a
+ c019015d322d4b37f6266f49994e3ef325c8a99d11505591db9815600905b9a1
+ a1285de48c539790cb216c8539c3ac10b1837f0029e7f99dd4247e83b60a40e6
+ 1e21753f0334a39db7deabe2b439e1884ef499c02d716f9d3f9f73feaf6109b2
+ b9a9a87386d535b131b70db3f7e5d4f3c552fe3e38b21869bf5b0943b58ddfd5
+ df9ae1d24f07340f368a2031a3c44f14bc15a72dc076aba2c1692a98ef345d4a
+ 6b04111a500d4923e52674874ec0bf76a29522d56b9d19ebc75cae24d3d03fa5
+ 29709f30c3a1ff97371417fa35ee985360bdbba8b01367508d34373d990eed84
+ fe5eb1d10c74568566c91133af9524108120f1f89b5a6d04fc374821d0c0649a
+ f8b747e8564a45ebfa4677dcc105180a883a5f022f87e86d96c1ad56f42f1961
+ f54c672d98ea069b628febabe6120d96c9b8ce84dc797577ee292127000820df
+ 6323c444f9cb9f9430601cfa561249f072edbcdfe664847bb6f4b78ba9d2ad00
+ af3b9a70817316dec6ffc0cfc7d5405f96d637a5b8afcc7ec4fb5f66b1e2965b
+ 26b1667f7c5aca3023c0e64c47386f1862bab780dfb51ce4f964bb2dba117ab0
+ d6282d2b3ad88b4e2eaca9b48c108ec3a3cdb575ad507313515335551943af75
+ 9fa91154b3596c6f360053eee870715f6ee3682ec7a8962c180ba254075df59a
+ 15289032b51367eb654e425f3aee15e12d8e3288ae2b3cd36853d137d8489d87
+ a69bd27e74de22c6e472aacc5bb9d9c4e543027d861791f0417382a5f7f5118d
+ 54f42c8506f639562eca63b63f09566900017c1e22793d233570e28c97db72ca
+ 82c3396456c455b13802977bcda8a5f98f4a72471ad9189020603275348d8010
+ 4538c6d201312b42989bd8d895e9a32aafb6355f83a7afa4155e2c9afa5e1983
+ 4d299eeb204f4e1e8ff7c6c27b84481d1df84d53be1131680e0dab80f4578a6d
+ 37d638dfa311486749f970eafe54790e5a4ac79843a1acffd0a9f10a3e96fd83
+ 0f34bb060b1cbd05a442d69dd02dcf454ed3de8636a2a3989fbabeaee82efbf9
+ 4daca2bbcc014524d096f83891120582294389a727df8608512397b47e8ddbf3
+ 90f8bb64ab8f5b9ebf11538edb7f6ad0f484b3bdfef963a491135b18c9d5eabf
+ fe8196ebf1940d534eae41f8b8bd481d4b84d306b5f8de4715147e139031b07f
+ 093bdbd9150d86df6603e20097ce4c5db18b460fdc6349c824c4723681bb6826
+ 1a0282846b44a7ba90219c212e50d8784cd9b77cfab8c8ae14577863cc12ebd6
+ 13db9b9ebcb7d9c0868d1260feeee63300910d0e5b193e06ab861e540bddbd0a
+ 3ed29ddb978f2ff7c1672bd6525b5adf6818e14b260d7a0835ebf465f9dfca95
+ eeb2834967f05b9080a58de1f759406bb4294909a0922c7f7e4e2a69ed22104d
+ ed5b351f84260047b2f959b7dbeb9a3fa6f4710777780831c4f0259907b5fbe0
+ 1e09c208488553d62fc0f78a926971d3b37d969ed237137844c76f684bb07272
+ 8877e26cde0358319b57ade82c2d6aaf56ba3673517fc3fbf46390907c998b30
+ 4bb3c5aab906d9cfc53494c79e373b71852bd1cfd551c62dd4e5d4bfb95d8e48
+ 5f93db3d3d77dee88888c143e9fdd6c62b3584b5851532671fe14b7d4bee18db
+ 35fee74c18d203601a562093cd67013431a1efea99d930b6012f2501bd8a364b
+ 5c677d1c44b195af914137eafa94191d964ea4e014b7586a6d6c213b5e78fd49
+ b377c9210c98c95330ebbc74fd43226cb4d11ea5d2b3947bef55943e0fe93329
+ c6017b6cc9243f558eda77dbe536f3e8089764d490eaa846f61c9b373e91dfda
+ 7c2e54610bdc94c3a3d320e158537c5d6589f24a1bdd9bd2f74e2a2e32de41b6
+ 6f0b776eec863cdbfbea145551ea24bcee9358bcf014b060de3bced4fd9a9f3b
+ 1d93bed629c1fd548bc2e13a25d8fae5dd343888c8c9142f52e8f8a128f91247
+ e27c28fe6ba9cfc6191dcedf2511092b610b42c6023c27c05fec3273babb4cda
+ e85ff98db5a5b7aaf1719fe5adafd9555e2fc5d5869a6af636747fad416f3cc6
+ 947bc98e84fa1668beb3dc3067d96b40575e581df997b1cf4ec13b26856b5a2f
+ 42cb022dc9becddba32595855bd358ba8dc1bdc0f5485914337cc087e9c2ebea
+ 45b7fef087f305c963cec517db5518af5d3680230617a853ab677fe241c03a79
+ b84434f6a5cdc058868633449a984d302b0f0029d605110814e516dc4c0298b3
+ daa0bbb4caddc4098a451a050d2a60ff8694bee0da0e48eb04224636531918f5
+ 20edddb729bb4a230ded2ba323681e2f6b18b8da6c79f5c78396422affef23a9
+ ca8eb956c6061f2ebce77b97a8e7e1a9f8e2378e3d74a83e75b5d750f1f81e56
+ 5409bbf56ecd8d1c74328644ab3dd9dd4330d5be92aa4d6d569b3dea6f1aa990
+ e1beeb8feee4fd13f21ca1bedbb99b2fd060d99e771c52477ab494866b3fe20c
+ ad8c57d68d36893488ad051a4abbe95eb52544eb0f2f5d8f09f524784633e0e1
+ 3e275b9eaa134c0457a13fdb89207da4f6f370797c1c5fac809bccceb1a8b661
+ 34f67db7354e694b0c9f2a09af4bc7069851a3691280613802eef512fda2e9bf
+ cc008ee84e7af7bb51a09120022acb39032ec6fa4d59f6cee2f61b7a32b4daac
+ f289208bfd9981968144fa7669c2872cfe67cc15edba6cc109c926b22596a3c8
+ c96be633a6b9da032d4aa5e63ebb72924b58d96b61e1f723723a88eafd6c1015
+ 27cbe55e65de1dd4dabed9de5ebd5aec1f59d31735c57168675ffc3878cdca7d
+ a298214b7cc5a5a807031cda012751692b6d96b83a73c03d82f9f9b909d59be6
+ 19de4d1d77ff6eec0d0840ae7b8c1138ea80e162dc62684f8eed59b47670e4ed
+ dd066e9bc0d22915388b3be25afed12db90197124afb5355599676a55a2c321a
+ b6883ba8e423eacc9f5715172ce591bf056891c4420a952de2284a79293afc49
+ 73a0c455ff8e9efdbbf278fcb26711732b85ba3c66e1fb97882e09979b288291
+ d90e4348ab6d4cd786acc8a474a9664730ec81b41db90585a3531d19996821ef
+ dfe77d29b1290a17497521e464ca1398f4961310ae07795de44683df7cac2a3c
+ adffef23919ddf92dedd9c81f5c73cd30e21c9980c354bf20c7bf9ebe58a9709
+ 50124f81e3db868533e13436ef6c17c09b591962d021869a710a0e9bd826887b
+ ba23938f2767eae74371618aa06d9bf98c70352007d2ada2bb46f3c8e6e26689
+ aa6c7d37b9e8590404e7e3ad32a1d9845fcdbf799f5b59cc320ec17dc50c3570
+ 2b30f7f634d0f6bb431dd8378e198cf397a8ff7b57b613c085d206b4ec68cc38"

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Merged]: firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
                   ` (5 preceding siblings ...)
  2020-11-06 20:17 ` [PR PATCH] [Updated] " pullmoll
@ 2020-11-06 20:19 ` pullmoll
  2020-11-06 20:42 ` q66
  7 siblings, 0 replies; 9+ messages in thread
From: pullmoll @ 2020-11-06 20:19 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 206 bytes --]

There's a merged pull request on the void-packages repository

firefox-esr: update to 78.4.0
https://github.com/void-linux/void-packages/pull/26130

Description:
Still testing if it builds for all targets.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: firefox-esr: update to 78.4.0
  2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
                   ` (6 preceding siblings ...)
  2020-11-06 20:19 ` [PR PATCH] [Merged]: " pullmoll
@ 2020-11-06 20:42 ` q66
  7 siblings, 0 replies; 9+ messages in thread
From: q66 @ 2020-11-06 20:42 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 388 bytes --]

New comment by q66 on void-packages repository

https://github.com/void-linux/void-packages/pull/26130#issuecomment-723290845

Comment:
sigh, this means we once again don't have firefox that has correct looking colors on big endian systems, since 68.x was almost entirely correct, but it broke again during 70something

not saying this shouldn't have been merged, but it is unfortunate

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-11-06 20:42 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-04 17:22 [PR PATCH] [WIP] firefox-esr: update to 78.4.0 pullmoll
2020-11-04 17:35 ` [PR PATCH] [Updated] " pullmoll
2020-11-04 17:37 ` pullmoll
2020-11-04 22:31 ` pullmoll
2020-11-04 22:31 ` pullmoll
2020-11-05  9:00 ` pullmoll
2020-11-06 20:17 ` [PR PATCH] [Updated] " pullmoll
2020-11-06 20:19 ` [PR PATCH] [Merged]: " pullmoll
2020-11-06 20:42 ` q66

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).