Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] [WIP] icecat: update to 78.3.0
@ 2020-10-02 16:19 pullmoll
  2020-10-04 14:09 ` [PR PATCH] [Updated] " pullmoll
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: pullmoll @ 2020-10-02 16:19 UTC (permalink / raw)
  To: ml

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

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

https://github.com/pullmoll/void-packages icecat78
https://github.com/void-linux/void-packages/pull/25284

[WIP] icecat: update to 78.3.0
Currently does not cross compile.

[ci skip]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-icecat78-25284.patch --]
[-- Type: text/x-diff, Size: 66002 bytes --]

From ea9914e5d7d87c2979f167f0395124c37ae382c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Fri, 2 Oct 2020 18:17:56 +0200
Subject: [PATCH] icecat: update to 78.3.0

Currently does not cross compile.

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

diff --git a/srcpkgs/icecat/files/icecat-wayland b/srcpkgs/icecat/files/icecat-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/icecat/files/icecat-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/icecat/files/mozconfig b/srcpkgs/icecat/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/icecat/files/mozconfig
+++ b/srcpkgs/icecat/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/icecat/patches/big-endian-image-decoders.patch b/srcpkgs/icecat/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/disable-image-format-warning.patch b/srcpkgs/icecat/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-desktop-icon-path.patch b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
new file mode 100644
index 00000000000..c2c34db5377
--- /dev/null
+++ b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
@@ -0,0 +1,11 @@
+--- taskcluster/docker/icecat-snap/icecat.desktop.orig	2019-01-18 19:31:39.428839442 +0100
++++ taskcluster/docker/icecat-snap/icecat.desktop	2019-01-18 19:32:20.689063456 +0100
+@@ -154,7 +154,7 @@
+ Terminal=false
+ X-MultipleArgs=false
+ Type=Application
+-Icon=/browser/chrome/icons/default/default128.png
++Icon=icecat
+ Categories=GNOME;GTK;Network;WebBrowser;
+ MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+ StartupNotify=true
diff --git a/srcpkgs/icecat/patches/fix-i686-musl.patch b/srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/icecat/patches/fix-i686-musl.patch
rename to srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/icecat/patches/fix-image-format-warning.patch b/srcpkgs/icecat/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/fix-sandbox-membarrier.patch b/srcpkgs/icecat/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-seccomp-bpf.patch b/srcpkgs/icecat/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-toolkit.patch b/srcpkgs/icecat/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-tools.patch b/srcpkgs/icecat/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/icecat/patches/fix-tools.patch
+++ b/srcpkgs/icecat/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/icecat/patches/flac-no-ffvpx.patch b/srcpkgs/icecat/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/gettid-musl.patch b/srcpkgs/icecat/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/ppc32-fix-build.patch b/srcpkgs/icecat/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/remove-rustc-check.patch b/srcpkgs/icecat/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/icecat/patches/remove-rustc-check.patch
rename to srcpkgs/icecat/patches/rust-configure.patch
index 5066c4605bd..887c102bc55 100644
--- a/srcpkgs/icecat/patches/remove-rustc-check.patch
+++ b/srcpkgs/icecat/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,10 +13,11 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -366,25 +363,6 @@
+@@ -348,26 +345,6 @@
+ 
              os.write(in_fd, source)
              os.close(in_fd)
- 
+-
 -            cmd = [
 -                rustc,
 -                '--crate-type', 'staticlib',
diff --git a/srcpkgs/icecat/patches/rust-has-i128.patch b/srcpkgs/icecat/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/sandbox-fork.patch b/srcpkgs/icecat/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks1.patch b/srcpkgs/icecat/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/icecat/patches/skia-sucks1.patch
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks3.patch b/srcpkgs/icecat/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/icecat/patches/skia-sucks3.patch
+++ b/srcpkgs/icecat/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/icecat/patches/sndio.patch b/srcpkgs/icecat/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/icecat/patches/sndio.patch
+++ b/srcpkgs/icecat/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/icecat/template b/srcpkgs/icecat/template
index a717e9b4093..adafc14e4ba 100644
--- a/srcpkgs/icecat/template
+++ b/srcpkgs/icecat/template
@@ -1,28 +1,28 @@
 # Template file for 'icecat'
 pkgname=icecat
-version=68.12.0
+version=78.3.0
 revision=1
-build_helper="rust"
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
+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 sqlite-devel libevent-devel libnotify-devel libvpx5-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
+ libXdamage-devel freetype-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)"
+ $(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="GNU version of the Firefox browser"
 maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-1.1, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.gnu.org/software/${pkgname}/"
 distfiles="https://distfiles.voidlinux.de/${pkgname}-${version}/${pkgname}-${version}-gnu1.tar.xz"
-checksum=bfacd60caf5f8f0cc63aa651d60c6f95fb0019f56ad7182cea56d77f02a38314
+checksum=157afb0898e6717c60a6ca41641d0cd338ed2b49e9ab0d3e627f4e902978ad22
 lib32disabled=yes
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
+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 armv[56]" ;;
@@ -43,10 +43,9 @@ if [ "$XBPS_WORDSIZE" -eq 32 ]; then
 	nodebug=yes
 fi
 
-# We need this because cargo verifies s 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
 }
@@ -55,36 +54,32 @@ _clear_vendor_checksums() {
 # FIXME: The *.xpi files have to be signed to be accepted as plugins
 #        yet how do you sign a package if you don't have a signing key?
 _install_langpack() {
-	local tempdir=$(ls -d ${wrksrc}/build/dist/linux-*)
-	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.$1.langpack.xpi \
+	local lang=$1 tempdir=$(ls -d ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/dist/linux-*)
+	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.${lang}.langpack.xpi \
 		644 usr/lib/icecat/browser/extensions
 }
 
 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
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
 }
 
 do_build() {
-	local lang languages=(ach af an ar ast az be bg bn br bs ca cak cs cy da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW)
+	local lang languages="en-US $(cat browser/locales/all-locales)"
 	local triplet
 
 	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
 	x86_64*|i686*|arm*)
@@ -145,6 +140,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/icecat"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -153,26 +153,26 @@ 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 <<EOF
 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 --with-l10n-base=${wrksrc}/l10n
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
 EOF
-	# Use the old style configure
-	mkdir -p build
-	cd ${wrksrc}/build
-	../configure --with-l10n-base=${wrksrc}/l10n
-	make ${makejobs}
+	rm -f old-configure
+	./mach build
 
 	# Make langpacks for all languages
-	cd ${wrksrc}/build/browser/locales
+	cd ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/browser/locales/
 	for lang in ${languages[*]}; do
 		msg_normal "Making langpack for ${lang} ...\n"
 		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
@@ -180,10 +180,11 @@ EOF
 }
 
 do_install() {
-	cd ${wrksrc}/build
-	make DESTDIR="${DESTDIR}" install
+	export MACH_USE_SYSTEM_PYTHON=1
+	DESTDIR="$DESTDIR" ./mach install
 
-	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/defaults/pref
+	vbin ${FILESDIR}/icecat-wayland
+	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/browser/defaults/preferences
 	vinstall ${FILESDIR}/icecat.desktop 644 usr/share/applications
 
 	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
@@ -201,14 +202,13 @@ do_install() {
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf icecat ${DESTDIR}/usr/lib/icecat/icecat-bin
 
-	# Remove the development files - noone uses them and the subpkg was broken
+	# Remove the development files - noone uses them
 	rm -rf ${DESTDIR}/usr/{include,lib/icecat-devel,share/idl}
 }
 
 icecat-i18n-ach_package() {
 	short_desc+=" - Acholi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -217,7 +217,6 @@ icecat-i18n-ach_package() {
 icecat-i18n-af_package() {
 	short_desc+=" - Afrikaans language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -226,7 +225,6 @@ icecat-i18n-af_package() {
 icecat-i18n-an_package() {
 	short_desc+=" - Aragonese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -235,7 +233,6 @@ icecat-i18n-an_package() {
 icecat-i18n-ar_package() {
 	short_desc+=" - Arabic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -244,7 +241,6 @@ icecat-i18n-ar_package() {
 icecat-i18n-ast_package() {
 	short_desc+=" - Asturian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -253,7 +249,6 @@ icecat-i18n-ast_package() {
 icecat-i18n-az_package() {
 	short_desc+=" - Azerbaijani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -262,7 +257,6 @@ icecat-i18n-az_package() {
 icecat-i18n-be_package() {
 	short_desc+=" - Belarusian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -271,7 +265,6 @@ icecat-i18n-be_package() {
 icecat-i18n-bg_package() {
 	short_desc+=" - Bulgarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -280,7 +273,6 @@ icecat-i18n-bg_package() {
 icecat-i18n-bn_package() {
 	short_desc+=" - Bengali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -289,7 +281,6 @@ icecat-i18n-bn_package() {
 icecat-i18n-br_package() {
 	short_desc+=" - Breton language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -298,7 +289,6 @@ icecat-i18n-br_package() {
 icecat-i18n-bs_package() {
 	short_desc+=" - Bosnian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -307,7 +297,6 @@ icecat-i18n-bs_package() {
 icecat-i18n-ca_package() {
 	short_desc+=" - Catalan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -316,7 +305,6 @@ icecat-i18n-ca_package() {
 icecat-i18n-cak_package() {
 	short_desc+=" - Kaqchikel language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -325,7 +313,6 @@ icecat-i18n-cak_package() {
 icecat-i18n-cs_package() {
 	short_desc+=" - Czech language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -334,7 +321,6 @@ icecat-i18n-cs_package() {
 icecat-i18n-cy_package() {
 	short_desc+=" - Welsh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -343,7 +329,6 @@ icecat-i18n-cy_package() {
 icecat-i18n-da_package() {
 	short_desc+=" - Danish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -352,7 +337,6 @@ icecat-i18n-da_package() {
 icecat-i18n-de_package() {
 	short_desc+=" - German language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -361,7 +345,6 @@ icecat-i18n-de_package() {
 icecat-i18n-dsb_package() {
 	short_desc+=" - Lower Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -370,7 +353,6 @@ icecat-i18n-dsb_package() {
 icecat-i18n-el_package() {
 	short_desc+=" - Greek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -379,7 +361,6 @@ icecat-i18n-el_package() {
 icecat-i18n-en-CA_package() {
 	short_desc+=" - English (Canada) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -388,7 +369,6 @@ icecat-i18n-en-CA_package() {
 icecat-i18n-en-GB_package() {
 	short_desc+=" - English (British) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -397,7 +377,6 @@ icecat-i18n-en-GB_package() {
 icecat-i18n-en-US_package() {
 	short_desc+=" - English (US) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -406,7 +385,6 @@ icecat-i18n-en-US_package() {
 icecat-i18n-eo_package() {
 	short_desc+=" - Esperanto language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -415,7 +393,6 @@ icecat-i18n-eo_package() {
 icecat-i18n-es-AR_package() {
 	short_desc+=" - Spanish (Argentina) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -424,7 +401,6 @@ icecat-i18n-es-AR_package() {
 icecat-i18n-es-CL_package() {
 	short_desc+=" - Spanish (Chile) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -433,7 +409,6 @@ icecat-i18n-es-CL_package() {
 icecat-i18n-es-ES_package() {
 	short_desc+=" - Spanish (Spain) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -442,7 +417,6 @@ icecat-i18n-es-ES_package() {
 icecat-i18n-es-MX_package() {
 	short_desc+=" - Spanish (Mexico) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -451,7 +425,6 @@ icecat-i18n-es-MX_package() {
 icecat-i18n-et_package() {
 	short_desc+=" - Estonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -460,7 +433,6 @@ icecat-i18n-et_package() {
 icecat-i18n-eu_package() {
 	short_desc+=" - Basque language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -469,7 +441,6 @@ icecat-i18n-eu_package() {
 icecat-i18n-fa_package() {
 	short_desc+=" - Persian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -478,7 +449,6 @@ icecat-i18n-fa_package() {
 icecat-i18n-ff_package() {
 	short_desc+=" - Fulah language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -487,7 +457,6 @@ icecat-i18n-ff_package() {
 icecat-i18n-fi_package() {
 	short_desc+=" - Finnish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -496,7 +465,6 @@ icecat-i18n-fi_package() {
 icecat-i18n-fr_package() {
 	short_desc+=" - French language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -505,7 +473,6 @@ icecat-i18n-fr_package() {
 icecat-i18n-fy-NL_package() {
 	short_desc+=" - Frisian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -514,7 +481,6 @@ icecat-i18n-fy-NL_package() {
 icecat-i18n-ga-IE_package() {
 	short_desc+=" - Irish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -523,7 +489,6 @@ icecat-i18n-ga-IE_package() {
 icecat-i18n-gd_package() {
 	short_desc+=" - Gaelic (Scotland) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -532,7 +497,6 @@ icecat-i18n-gd_package() {
 icecat-i18n-gl_package() {
 	short_desc+=" - Galician language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -541,7 +505,6 @@ icecat-i18n-gl_package() {
 icecat-i18n-gn_package() {
 	short_desc+=" - Guarani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -550,7 +513,6 @@ icecat-i18n-gn_package() {
 icecat-i18n-gu-IN_package() {
 	short_desc+=" - Gujarati (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -559,7 +521,6 @@ icecat-i18n-gu-IN_package() {
 icecat-i18n-he_package() {
 	short_desc+=" - Hebrew language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -568,7 +529,6 @@ icecat-i18n-he_package() {
 icecat-i18n-hi-IN_package() {
 	short_desc+=" - Hindi (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -577,7 +537,6 @@ icecat-i18n-hi-IN_package() {
 icecat-i18n-hr_package() {
 	short_desc+=" - Croatian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -586,7 +545,6 @@ icecat-i18n-hr_package() {
 icecat-i18n-hsb_package() {
 	short_desc+=" - Upper Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -595,7 +553,6 @@ icecat-i18n-hsb_package() {
 icecat-i18n-hu_package() {
 	short_desc+=" - Hungarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -604,7 +561,6 @@ icecat-i18n-hu_package() {
 icecat-i18n-hy-AM_package() {
 	short_desc+=" - Armenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -613,7 +569,6 @@ icecat-i18n-hy-AM_package() {
 icecat-i18n-ia_package() {
 	short_desc+=" - Interlingua language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -622,7 +577,6 @@ icecat-i18n-ia_package() {
 icecat-i18n-id_package() {
 	short_desc+=" - Indonesian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -631,7 +585,6 @@ icecat-i18n-id_package() {
 icecat-i18n-is_package() {
 	short_desc+=" - Icelandic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -640,7 +593,6 @@ icecat-i18n-is_package() {
 icecat-i18n-it_package() {
 	short_desc+=" - Italian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -649,7 +601,6 @@ icecat-i18n-it_package() {
 icecat-i18n-ja_package() {
 	short_desc+=" - Japanese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -658,7 +609,6 @@ icecat-i18n-ja_package() {
 icecat-i18n-ka_package() {
 	short_desc+=" - Georgian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -667,7 +617,6 @@ icecat-i18n-ka_package() {
 icecat-i18n-kab_package() {
 	short_desc+=" - Kabyle language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -676,7 +625,6 @@ icecat-i18n-kab_package() {
 icecat-i18n-kk_package() {
 	short_desc+=" - Kazakh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -685,7 +633,6 @@ icecat-i18n-kk_package() {
 icecat-i18n-km_package() {
 	short_desc+=" - Khmer language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -694,7 +641,6 @@ icecat-i18n-km_package() {
 icecat-i18n-kn_package() {
 	short_desc+=" - Kannada language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -703,7 +649,6 @@ icecat-i18n-kn_package() {
 icecat-i18n-ko_package() {
 	short_desc+=" - Korean language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -712,7 +657,6 @@ icecat-i18n-ko_package() {
 icecat-i18n-lij_package() {
 	short_desc+=" - Ligurian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -721,7 +665,6 @@ icecat-i18n-lij_package() {
 icecat-i18n-lt_package() {
 	short_desc+=" - Lithuanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -730,7 +673,6 @@ icecat-i18n-lt_package() {
 icecat-i18n-lv_package() {
 	short_desc+=" - Latvian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -739,7 +681,6 @@ icecat-i18n-lv_package() {
 icecat-i18n-mk_package() {
 	short_desc+=" - Macedonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -748,7 +689,6 @@ icecat-i18n-mk_package() {
 icecat-i18n-mr_package() {
 	short_desc+=" - Marathi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -757,7 +697,6 @@ icecat-i18n-mr_package() {
 icecat-i18n-ms_package() {
 	short_desc+=" - Malay language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -766,7 +705,6 @@ icecat-i18n-ms_package() {
 icecat-i18n-my_package() {
 	short_desc+=" - Burmese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -775,7 +713,6 @@ icecat-i18n-my_package() {
 icecat-i18n-nb-NO_package() {
 	short_desc+=" - Norwegian (Bokmål) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -784,7 +721,6 @@ icecat-i18n-nb-NO_package() {
 icecat-i18n-ne-NP_package() {
 	short_desc+=" - Nepali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -793,7 +729,6 @@ icecat-i18n-ne-NP_package() {
 icecat-i18n-nl_package() {
 	short_desc+=" - Dutch language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -802,7 +737,6 @@ icecat-i18n-nl_package() {
 icecat-i18n-nn-NO_package() {
 	short_desc+=" - Norwegian (Nynorsk) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -811,7 +745,6 @@ icecat-i18n-nn-NO_package() {
 icecat-i18n-oc_package() {
 	short_desc+=" - Occitan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -820,7 +753,6 @@ icecat-i18n-oc_package() {
 icecat-i18n-pa-IN_package() {
 	short_desc+=" - Punjabi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -829,7 +761,6 @@ icecat-i18n-pa-IN_package() {
 icecat-i18n-pl_package() {
 	short_desc+=" - Polish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -838,7 +769,6 @@ icecat-i18n-pl_package() {
 icecat-i18n-pt-BR_package() {
 	short_desc+=" - Portuguese (Brazilian) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -847,7 +777,6 @@ icecat-i18n-pt-BR_package() {
 icecat-i18n-pt-PT_package() {
 	short_desc+=" - Portuguese (Portugal) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -856,7 +785,6 @@ icecat-i18n-pt-PT_package() {
 icecat-i18n-rm_package() {
 	short_desc+=" - Romansh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -865,7 +793,6 @@ icecat-i18n-rm_package() {
 icecat-i18n-ro_package() {
 	short_desc+=" - Romanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -874,7 +801,6 @@ icecat-i18n-ro_package() {
 icecat-i18n-ru_package() {
 	short_desc+=" - Russian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -883,7 +809,6 @@ icecat-i18n-ru_package() {
 icecat-i18n-si_package() {
 	short_desc+=" - Sinhala language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -892,7 +817,6 @@ icecat-i18n-si_package() {
 icecat-i18n-sk_package() {
 	short_desc+=" - Slovak language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -901,7 +825,6 @@ icecat-i18n-sk_package() {
 icecat-i18n-sl_package() {
 	short_desc+=" - Slovenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -910,7 +833,6 @@ icecat-i18n-sl_package() {
 icecat-i18n-son_package() {
 	short_desc+=" - Songhai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -919,7 +841,6 @@ icecat-i18n-son_package() {
 icecat-i18n-sq_package() {
 	short_desc+=" - Albanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -928,7 +849,6 @@ icecat-i18n-sq_package() {
 icecat-i18n-sr_package() {
 	short_desc+=" - Serbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -937,7 +857,6 @@ icecat-i18n-sr_package() {
 icecat-i18n-sv-SE_package() {
 	short_desc+=" - Swedish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -946,7 +865,6 @@ icecat-i18n-sv-SE_package() {
 icecat-i18n-ta_package() {
 	short_desc+=" - Tamil language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -955,7 +873,6 @@ icecat-i18n-ta_package() {
 icecat-i18n-te_package() {
 	short_desc+=" - Telugu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -964,7 +881,6 @@ icecat-i18n-te_package() {
 icecat-i18n-th_package() {
 	short_desc+=" - Thai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -973,7 +889,6 @@ icecat-i18n-th_package() {
 icecat-i18n-tr_package() {
 	short_desc+=" - Turkish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -982,7 +897,6 @@ icecat-i18n-tr_package() {
 icecat-i18n-uk_package() {
 	short_desc+=" - Ukrainian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -991,7 +905,6 @@ icecat-i18n-uk_package() {
 icecat-i18n-ur_package() {
 	short_desc+=" - Urdu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1000,7 +913,6 @@ icecat-i18n-ur_package() {
 icecat-i18n-uz_package() {
 	short_desc+=" - Uzbek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1009,7 +921,6 @@ icecat-i18n-uz_package() {
 icecat-i18n-vi_package() {
 	short_desc+=" - Vietnamese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1018,7 +929,6 @@ icecat-i18n-vi_package() {
 icecat-i18n-xh_package() {
 	short_desc+=" - Xhosa language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1027,7 +937,6 @@ icecat-i18n-xh_package() {
 icecat-i18n-zh-CN_package() {
 	short_desc+=" - Chinese (simplified) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1036,7 +945,6 @@ icecat-i18n-zh-CN_package() {
 icecat-i18n-zh-TW_package() {
 	short_desc+=" - Chinese (traditional) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}

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

* Re: [PR PATCH] [Updated] [WIP] icecat: update to 78.3.0
  2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
@ 2020-10-04 14:09 ` pullmoll
  2020-10-04 17:19 ` pullmoll
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: pullmoll @ 2020-10-04 14:09 UTC (permalink / raw)
  To: ml

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

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

https://github.com/pullmoll/void-packages icecat78
https://github.com/void-linux/void-packages/pull/25284

[WIP] icecat: update to 78.3.0
Currently does not cross compile. And even worse: x86_64 segfaults at startup.
[ci skip]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-icecat78-25284.patch --]
[-- Type: text/x-diff, Size: 65967 bytes --]

From 8e782cefe3cb885c36cf6a45ca974139ed157f83 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Fri, 2 Oct 2020 18:17:56 +0200
Subject: [PATCH] icecat: update to 78.3.1

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

diff --git a/srcpkgs/icecat/files/icecat-wayland b/srcpkgs/icecat/files/icecat-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/icecat/files/icecat-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/icecat/files/mozconfig b/srcpkgs/icecat/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/icecat/files/mozconfig
+++ b/srcpkgs/icecat/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/icecat/patches/big-endian-image-decoders.patch b/srcpkgs/icecat/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/disable-image-format-warning.patch b/srcpkgs/icecat/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-desktop-icon-path.patch b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
new file mode 100644
index 00000000000..c2c34db5377
--- /dev/null
+++ b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
@@ -0,0 +1,11 @@
+--- taskcluster/docker/icecat-snap/icecat.desktop.orig	2019-01-18 19:31:39.428839442 +0100
++++ taskcluster/docker/icecat-snap/icecat.desktop	2019-01-18 19:32:20.689063456 +0100
+@@ -154,7 +154,7 @@
+ Terminal=false
+ X-MultipleArgs=false
+ Type=Application
+-Icon=/browser/chrome/icons/default/default128.png
++Icon=icecat
+ Categories=GNOME;GTK;Network;WebBrowser;
+ MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+ StartupNotify=true
diff --git a/srcpkgs/icecat/patches/fix-i686-musl.patch b/srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/icecat/patches/fix-i686-musl.patch
rename to srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/icecat/patches/fix-image-format-warning.patch b/srcpkgs/icecat/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/fix-sandbox-membarrier.patch b/srcpkgs/icecat/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-seccomp-bpf.patch b/srcpkgs/icecat/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-toolkit.patch b/srcpkgs/icecat/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-tools.patch b/srcpkgs/icecat/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/icecat/patches/fix-tools.patch
+++ b/srcpkgs/icecat/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/icecat/patches/flac-no-ffvpx.patch b/srcpkgs/icecat/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/gettid-musl.patch b/srcpkgs/icecat/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/ppc32-fix-build.patch b/srcpkgs/icecat/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/remove-rustc-check.patch b/srcpkgs/icecat/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/icecat/patches/remove-rustc-check.patch
rename to srcpkgs/icecat/patches/rust-configure.patch
index 5066c4605bd..887c102bc55 100644
--- a/srcpkgs/icecat/patches/remove-rustc-check.patch
+++ b/srcpkgs/icecat/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,10 +13,11 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -366,25 +363,6 @@
+@@ -348,26 +345,6 @@
+ 
              os.write(in_fd, source)
              os.close(in_fd)
- 
+-
 -            cmd = [
 -                rustc,
 -                '--crate-type', 'staticlib',
diff --git a/srcpkgs/icecat/patches/rust-has-i128.patch b/srcpkgs/icecat/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/sandbox-fork.patch b/srcpkgs/icecat/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks1.patch b/srcpkgs/icecat/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/icecat/patches/skia-sucks1.patch
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks3.patch b/srcpkgs/icecat/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/icecat/patches/skia-sucks3.patch
+++ b/srcpkgs/icecat/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/icecat/patches/sndio.patch b/srcpkgs/icecat/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/icecat/patches/sndio.patch
+++ b/srcpkgs/icecat/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/icecat/template b/srcpkgs/icecat/template
index a717e9b4093..adafc14e4ba 100644
--- a/srcpkgs/icecat/template
+++ b/srcpkgs/icecat/template
@@ -1,28 +1,28 @@
 # Template file for 'icecat'
 pkgname=icecat
-version=68.12.0
+version=78.3.0
 revision=1
-build_helper="rust"
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
+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 sqlite-devel libevent-devel libnotify-devel libvpx5-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
+ libXdamage-devel freetype-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)"
+ $(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="GNU version of the Firefox browser"
 maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-1.1, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.gnu.org/software/${pkgname}/"
 distfiles="https://distfiles.voidlinux.de/${pkgname}-${version}/${pkgname}-${version}-gnu1.tar.xz"
-checksum=bfacd60caf5f8f0cc63aa651d60c6f95fb0019f56ad7182cea56d77f02a38314
+checksum=157afb0898e6717c60a6ca41641d0cd338ed2b49e9ab0d3e627f4e902978ad22
 lib32disabled=yes
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
+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 armv[56]" ;;
@@ -43,10 +43,9 @@ if [ "$XBPS_WORDSIZE" -eq 32 ]; then
 	nodebug=yes
 fi
 
-# We need this because cargo verifies s 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
 }
@@ -55,36 +54,32 @@ _clear_vendor_checksums() {
 # FIXME: The *.xpi files have to be signed to be accepted as plugins
 #        yet how do you sign a package if you don't have a signing key?
 _install_langpack() {
-	local tempdir=$(ls -d ${wrksrc}/build/dist/linux-*)
-	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.$1.langpack.xpi \
+	local lang=$1 tempdir=$(ls -d ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/dist/linux-*)
+	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.${lang}.langpack.xpi \
 		644 usr/lib/icecat/browser/extensions
 }
 
 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
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
 }
 
 do_build() {
-	local lang languages=(ach af an ar ast az be bg bn br bs ca cak cs cy da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW)
+	local lang languages="en-US $(cat browser/locales/all-locales)"
 	local triplet
 
 	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
 	x86_64*|i686*|arm*)
@@ -145,6 +140,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/icecat"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -153,26 +153,26 @@ 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 <<EOF
 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 --with-l10n-base=${wrksrc}/l10n
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
 EOF
-	# Use the old style configure
-	mkdir -p build
-	cd ${wrksrc}/build
-	../configure --with-l10n-base=${wrksrc}/l10n
-	make ${makejobs}
+	rm -f old-configure
+	./mach build
 
 	# Make langpacks for all languages
-	cd ${wrksrc}/build/browser/locales
+	cd ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/browser/locales/
 	for lang in ${languages[*]}; do
 		msg_normal "Making langpack for ${lang} ...\n"
 		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
@@ -180,10 +180,11 @@ EOF
 }
 
 do_install() {
-	cd ${wrksrc}/build
-	make DESTDIR="${DESTDIR}" install
+	export MACH_USE_SYSTEM_PYTHON=1
+	DESTDIR="$DESTDIR" ./mach install
 
-	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/defaults/pref
+	vbin ${FILESDIR}/icecat-wayland
+	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/browser/defaults/preferences
 	vinstall ${FILESDIR}/icecat.desktop 644 usr/share/applications
 
 	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
@@ -201,14 +202,13 @@ do_install() {
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf icecat ${DESTDIR}/usr/lib/icecat/icecat-bin
 
-	# Remove the development files - noone uses them and the subpkg was broken
+	# Remove the development files - noone uses them
 	rm -rf ${DESTDIR}/usr/{include,lib/icecat-devel,share/idl}
 }
 
 icecat-i18n-ach_package() {
 	short_desc+=" - Acholi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -217,7 +217,6 @@ icecat-i18n-ach_package() {
 icecat-i18n-af_package() {
 	short_desc+=" - Afrikaans language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -226,7 +225,6 @@ icecat-i18n-af_package() {
 icecat-i18n-an_package() {
 	short_desc+=" - Aragonese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -235,7 +233,6 @@ icecat-i18n-an_package() {
 icecat-i18n-ar_package() {
 	short_desc+=" - Arabic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -244,7 +241,6 @@ icecat-i18n-ar_package() {
 icecat-i18n-ast_package() {
 	short_desc+=" - Asturian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -253,7 +249,6 @@ icecat-i18n-ast_package() {
 icecat-i18n-az_package() {
 	short_desc+=" - Azerbaijani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -262,7 +257,6 @@ icecat-i18n-az_package() {
 icecat-i18n-be_package() {
 	short_desc+=" - Belarusian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -271,7 +265,6 @@ icecat-i18n-be_package() {
 icecat-i18n-bg_package() {
 	short_desc+=" - Bulgarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -280,7 +273,6 @@ icecat-i18n-bg_package() {
 icecat-i18n-bn_package() {
 	short_desc+=" - Bengali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -289,7 +281,6 @@ icecat-i18n-bn_package() {
 icecat-i18n-br_package() {
 	short_desc+=" - Breton language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -298,7 +289,6 @@ icecat-i18n-br_package() {
 icecat-i18n-bs_package() {
 	short_desc+=" - Bosnian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -307,7 +297,6 @@ icecat-i18n-bs_package() {
 icecat-i18n-ca_package() {
 	short_desc+=" - Catalan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -316,7 +305,6 @@ icecat-i18n-ca_package() {
 icecat-i18n-cak_package() {
 	short_desc+=" - Kaqchikel language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -325,7 +313,6 @@ icecat-i18n-cak_package() {
 icecat-i18n-cs_package() {
 	short_desc+=" - Czech language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -334,7 +321,6 @@ icecat-i18n-cs_package() {
 icecat-i18n-cy_package() {
 	short_desc+=" - Welsh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -343,7 +329,6 @@ icecat-i18n-cy_package() {
 icecat-i18n-da_package() {
 	short_desc+=" - Danish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -352,7 +337,6 @@ icecat-i18n-da_package() {
 icecat-i18n-de_package() {
 	short_desc+=" - German language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -361,7 +345,6 @@ icecat-i18n-de_package() {
 icecat-i18n-dsb_package() {
 	short_desc+=" - Lower Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -370,7 +353,6 @@ icecat-i18n-dsb_package() {
 icecat-i18n-el_package() {
 	short_desc+=" - Greek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -379,7 +361,6 @@ icecat-i18n-el_package() {
 icecat-i18n-en-CA_package() {
 	short_desc+=" - English (Canada) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -388,7 +369,6 @@ icecat-i18n-en-CA_package() {
 icecat-i18n-en-GB_package() {
 	short_desc+=" - English (British) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -397,7 +377,6 @@ icecat-i18n-en-GB_package() {
 icecat-i18n-en-US_package() {
 	short_desc+=" - English (US) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -406,7 +385,6 @@ icecat-i18n-en-US_package() {
 icecat-i18n-eo_package() {
 	short_desc+=" - Esperanto language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -415,7 +393,6 @@ icecat-i18n-eo_package() {
 icecat-i18n-es-AR_package() {
 	short_desc+=" - Spanish (Argentina) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -424,7 +401,6 @@ icecat-i18n-es-AR_package() {
 icecat-i18n-es-CL_package() {
 	short_desc+=" - Spanish (Chile) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -433,7 +409,6 @@ icecat-i18n-es-CL_package() {
 icecat-i18n-es-ES_package() {
 	short_desc+=" - Spanish (Spain) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -442,7 +417,6 @@ icecat-i18n-es-ES_package() {
 icecat-i18n-es-MX_package() {
 	short_desc+=" - Spanish (Mexico) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -451,7 +425,6 @@ icecat-i18n-es-MX_package() {
 icecat-i18n-et_package() {
 	short_desc+=" - Estonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -460,7 +433,6 @@ icecat-i18n-et_package() {
 icecat-i18n-eu_package() {
 	short_desc+=" - Basque language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -469,7 +441,6 @@ icecat-i18n-eu_package() {
 icecat-i18n-fa_package() {
 	short_desc+=" - Persian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -478,7 +449,6 @@ icecat-i18n-fa_package() {
 icecat-i18n-ff_package() {
 	short_desc+=" - Fulah language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -487,7 +457,6 @@ icecat-i18n-ff_package() {
 icecat-i18n-fi_package() {
 	short_desc+=" - Finnish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -496,7 +465,6 @@ icecat-i18n-fi_package() {
 icecat-i18n-fr_package() {
 	short_desc+=" - French language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -505,7 +473,6 @@ icecat-i18n-fr_package() {
 icecat-i18n-fy-NL_package() {
 	short_desc+=" - Frisian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -514,7 +481,6 @@ icecat-i18n-fy-NL_package() {
 icecat-i18n-ga-IE_package() {
 	short_desc+=" - Irish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -523,7 +489,6 @@ icecat-i18n-ga-IE_package() {
 icecat-i18n-gd_package() {
 	short_desc+=" - Gaelic (Scotland) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -532,7 +497,6 @@ icecat-i18n-gd_package() {
 icecat-i18n-gl_package() {
 	short_desc+=" - Galician language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -541,7 +505,6 @@ icecat-i18n-gl_package() {
 icecat-i18n-gn_package() {
 	short_desc+=" - Guarani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -550,7 +513,6 @@ icecat-i18n-gn_package() {
 icecat-i18n-gu-IN_package() {
 	short_desc+=" - Gujarati (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -559,7 +521,6 @@ icecat-i18n-gu-IN_package() {
 icecat-i18n-he_package() {
 	short_desc+=" - Hebrew language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -568,7 +529,6 @@ icecat-i18n-he_package() {
 icecat-i18n-hi-IN_package() {
 	short_desc+=" - Hindi (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -577,7 +537,6 @@ icecat-i18n-hi-IN_package() {
 icecat-i18n-hr_package() {
 	short_desc+=" - Croatian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -586,7 +545,6 @@ icecat-i18n-hr_package() {
 icecat-i18n-hsb_package() {
 	short_desc+=" - Upper Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -595,7 +553,6 @@ icecat-i18n-hsb_package() {
 icecat-i18n-hu_package() {
 	short_desc+=" - Hungarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -604,7 +561,6 @@ icecat-i18n-hu_package() {
 icecat-i18n-hy-AM_package() {
 	short_desc+=" - Armenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -613,7 +569,6 @@ icecat-i18n-hy-AM_package() {
 icecat-i18n-ia_package() {
 	short_desc+=" - Interlingua language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -622,7 +577,6 @@ icecat-i18n-ia_package() {
 icecat-i18n-id_package() {
 	short_desc+=" - Indonesian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -631,7 +585,6 @@ icecat-i18n-id_package() {
 icecat-i18n-is_package() {
 	short_desc+=" - Icelandic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -640,7 +593,6 @@ icecat-i18n-is_package() {
 icecat-i18n-it_package() {
 	short_desc+=" - Italian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -649,7 +601,6 @@ icecat-i18n-it_package() {
 icecat-i18n-ja_package() {
 	short_desc+=" - Japanese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -658,7 +609,6 @@ icecat-i18n-ja_package() {
 icecat-i18n-ka_package() {
 	short_desc+=" - Georgian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -667,7 +617,6 @@ icecat-i18n-ka_package() {
 icecat-i18n-kab_package() {
 	short_desc+=" - Kabyle language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -676,7 +625,6 @@ icecat-i18n-kab_package() {
 icecat-i18n-kk_package() {
 	short_desc+=" - Kazakh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -685,7 +633,6 @@ icecat-i18n-kk_package() {
 icecat-i18n-km_package() {
 	short_desc+=" - Khmer language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -694,7 +641,6 @@ icecat-i18n-km_package() {
 icecat-i18n-kn_package() {
 	short_desc+=" - Kannada language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -703,7 +649,6 @@ icecat-i18n-kn_package() {
 icecat-i18n-ko_package() {
 	short_desc+=" - Korean language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -712,7 +657,6 @@ icecat-i18n-ko_package() {
 icecat-i18n-lij_package() {
 	short_desc+=" - Ligurian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -721,7 +665,6 @@ icecat-i18n-lij_package() {
 icecat-i18n-lt_package() {
 	short_desc+=" - Lithuanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -730,7 +673,6 @@ icecat-i18n-lt_package() {
 icecat-i18n-lv_package() {
 	short_desc+=" - Latvian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -739,7 +681,6 @@ icecat-i18n-lv_package() {
 icecat-i18n-mk_package() {
 	short_desc+=" - Macedonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -748,7 +689,6 @@ icecat-i18n-mk_package() {
 icecat-i18n-mr_package() {
 	short_desc+=" - Marathi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -757,7 +697,6 @@ icecat-i18n-mr_package() {
 icecat-i18n-ms_package() {
 	short_desc+=" - Malay language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -766,7 +705,6 @@ icecat-i18n-ms_package() {
 icecat-i18n-my_package() {
 	short_desc+=" - Burmese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -775,7 +713,6 @@ icecat-i18n-my_package() {
 icecat-i18n-nb-NO_package() {
 	short_desc+=" - Norwegian (Bokmål) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -784,7 +721,6 @@ icecat-i18n-nb-NO_package() {
 icecat-i18n-ne-NP_package() {
 	short_desc+=" - Nepali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -793,7 +729,6 @@ icecat-i18n-ne-NP_package() {
 icecat-i18n-nl_package() {
 	short_desc+=" - Dutch language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -802,7 +737,6 @@ icecat-i18n-nl_package() {
 icecat-i18n-nn-NO_package() {
 	short_desc+=" - Norwegian (Nynorsk) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -811,7 +745,6 @@ icecat-i18n-nn-NO_package() {
 icecat-i18n-oc_package() {
 	short_desc+=" - Occitan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -820,7 +753,6 @@ icecat-i18n-oc_package() {
 icecat-i18n-pa-IN_package() {
 	short_desc+=" - Punjabi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -829,7 +761,6 @@ icecat-i18n-pa-IN_package() {
 icecat-i18n-pl_package() {
 	short_desc+=" - Polish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -838,7 +769,6 @@ icecat-i18n-pl_package() {
 icecat-i18n-pt-BR_package() {
 	short_desc+=" - Portuguese (Brazilian) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -847,7 +777,6 @@ icecat-i18n-pt-BR_package() {
 icecat-i18n-pt-PT_package() {
 	short_desc+=" - Portuguese (Portugal) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -856,7 +785,6 @@ icecat-i18n-pt-PT_package() {
 icecat-i18n-rm_package() {
 	short_desc+=" - Romansh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -865,7 +793,6 @@ icecat-i18n-rm_package() {
 icecat-i18n-ro_package() {
 	short_desc+=" - Romanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -874,7 +801,6 @@ icecat-i18n-ro_package() {
 icecat-i18n-ru_package() {
 	short_desc+=" - Russian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -883,7 +809,6 @@ icecat-i18n-ru_package() {
 icecat-i18n-si_package() {
 	short_desc+=" - Sinhala language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -892,7 +817,6 @@ icecat-i18n-si_package() {
 icecat-i18n-sk_package() {
 	short_desc+=" - Slovak language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -901,7 +825,6 @@ icecat-i18n-sk_package() {
 icecat-i18n-sl_package() {
 	short_desc+=" - Slovenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -910,7 +833,6 @@ icecat-i18n-sl_package() {
 icecat-i18n-son_package() {
 	short_desc+=" - Songhai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -919,7 +841,6 @@ icecat-i18n-son_package() {
 icecat-i18n-sq_package() {
 	short_desc+=" - Albanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -928,7 +849,6 @@ icecat-i18n-sq_package() {
 icecat-i18n-sr_package() {
 	short_desc+=" - Serbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -937,7 +857,6 @@ icecat-i18n-sr_package() {
 icecat-i18n-sv-SE_package() {
 	short_desc+=" - Swedish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -946,7 +865,6 @@ icecat-i18n-sv-SE_package() {
 icecat-i18n-ta_package() {
 	short_desc+=" - Tamil language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -955,7 +873,6 @@ icecat-i18n-ta_package() {
 icecat-i18n-te_package() {
 	short_desc+=" - Telugu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -964,7 +881,6 @@ icecat-i18n-te_package() {
 icecat-i18n-th_package() {
 	short_desc+=" - Thai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -973,7 +889,6 @@ icecat-i18n-th_package() {
 icecat-i18n-tr_package() {
 	short_desc+=" - Turkish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -982,7 +897,6 @@ icecat-i18n-tr_package() {
 icecat-i18n-uk_package() {
 	short_desc+=" - Ukrainian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -991,7 +905,6 @@ icecat-i18n-uk_package() {
 icecat-i18n-ur_package() {
 	short_desc+=" - Urdu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1000,7 +913,6 @@ icecat-i18n-ur_package() {
 icecat-i18n-uz_package() {
 	short_desc+=" - Uzbek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1009,7 +921,6 @@ icecat-i18n-uz_package() {
 icecat-i18n-vi_package() {
 	short_desc+=" - Vietnamese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1018,7 +929,6 @@ icecat-i18n-vi_package() {
 icecat-i18n-xh_package() {
 	short_desc+=" - Xhosa language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1027,7 +937,6 @@ icecat-i18n-xh_package() {
 icecat-i18n-zh-CN_package() {
 	short_desc+=" - Chinese (simplified) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1036,7 +945,6 @@ icecat-i18n-zh-CN_package() {
 icecat-i18n-zh-TW_package() {
 	short_desc+=" - Chinese (traditional) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}

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

* Re: [WIP] icecat: update to 78.3.0
  2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
  2020-10-04 14:09 ` [PR PATCH] [Updated] " pullmoll
@ 2020-10-04 17:19 ` pullmoll
  2020-10-16 18:42 ` [PR PATCH] [Updated] [WIP] icecat: update to 78.3.1 pullmoll
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: pullmoll @ 2020-10-04 17:19 UTC (permalink / raw)
  To: ml

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

New comment by pullmoll on void-packages repository

https://github.com/void-linux/void-packages/pull/25284#issuecomment-703286961

Comment:
Here's the error when cross building:
```
 4:01.03 The following warnings were emitted during compilation:
 4:01.03 warning: src/compiler/glsl/glcpp/glcpp-lex.l:622:1: fatal error: opening dependency file .deps/force-cargo-library-build.pp: No such file or directory
 4:01.03 warning: compilation terminated.
 4:01.04 warning: src/compiler/glsl/glcpp/glcpp-parse.y:2543:1: fatal error: opening dependency file .deps/force-cargo-library-build.pp: No such file or directory
```
It seems that the rule to build `force-cargo-library-build.pp` is not executed or fails. I have no clue why and how to overcome this problem.

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

* Re: [PR PATCH] [Updated] [WIP] icecat: update to 78.3.1
  2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
  2020-10-04 14:09 ` [PR PATCH] [Updated] " pullmoll
  2020-10-04 17:19 ` pullmoll
@ 2020-10-16 18:42 ` pullmoll
  2020-10-18 19:59 ` pullmoll
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: pullmoll @ 2020-10-16 18:42 UTC (permalink / raw)
  To: ml

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

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

https://github.com/pullmoll/void-packages icecat78
https://github.com/void-linux/void-packages/pull/25284

[WIP] icecat: update to 78.3.1
Currently does not cross compile.
~~And even worse: x86_64 segfaults at startup.~~
Removing the old `$HOME/.mozilla/icecat` directory makes the segfault go away so it's something with old vs. new config files.
[ci skip]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-icecat78-25284.patch --]
[-- Type: text/x-diff, Size: 65967 bytes --]

From ccc1fb20a5f8dc6854c6fa98d0f99ee245c7d408 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Fri, 2 Oct 2020 18:17:56 +0200
Subject: [PATCH] icecat: update to 78.3.1

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

diff --git a/srcpkgs/icecat/files/icecat-wayland b/srcpkgs/icecat/files/icecat-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/icecat/files/icecat-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/icecat/files/mozconfig b/srcpkgs/icecat/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/icecat/files/mozconfig
+++ b/srcpkgs/icecat/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/icecat/patches/big-endian-image-decoders.patch b/srcpkgs/icecat/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/disable-image-format-warning.patch b/srcpkgs/icecat/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-desktop-icon-path.patch b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
new file mode 100644
index 00000000000..c2c34db5377
--- /dev/null
+++ b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
@@ -0,0 +1,11 @@
+--- taskcluster/docker/icecat-snap/icecat.desktop.orig	2019-01-18 19:31:39.428839442 +0100
++++ taskcluster/docker/icecat-snap/icecat.desktop	2019-01-18 19:32:20.689063456 +0100
+@@ -154,7 +154,7 @@
+ Terminal=false
+ X-MultipleArgs=false
+ Type=Application
+-Icon=/browser/chrome/icons/default/default128.png
++Icon=icecat
+ Categories=GNOME;GTK;Network;WebBrowser;
+ MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+ StartupNotify=true
diff --git a/srcpkgs/icecat/patches/fix-i686-musl.patch b/srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/icecat/patches/fix-i686-musl.patch
rename to srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/icecat/patches/fix-image-format-warning.patch b/srcpkgs/icecat/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/fix-sandbox-membarrier.patch b/srcpkgs/icecat/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-seccomp-bpf.patch b/srcpkgs/icecat/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-toolkit.patch b/srcpkgs/icecat/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-tools.patch b/srcpkgs/icecat/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/icecat/patches/fix-tools.patch
+++ b/srcpkgs/icecat/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/icecat/patches/flac-no-ffvpx.patch b/srcpkgs/icecat/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/gettid-musl.patch b/srcpkgs/icecat/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/ppc32-fix-build.patch b/srcpkgs/icecat/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/remove-rustc-check.patch b/srcpkgs/icecat/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/icecat/patches/remove-rustc-check.patch
rename to srcpkgs/icecat/patches/rust-configure.patch
index 5066c4605bd..887c102bc55 100644
--- a/srcpkgs/icecat/patches/remove-rustc-check.patch
+++ b/srcpkgs/icecat/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,10 +13,11 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -366,25 +363,6 @@
+@@ -348,26 +345,6 @@
+ 
              os.write(in_fd, source)
              os.close(in_fd)
- 
+-
 -            cmd = [
 -                rustc,
 -                '--crate-type', 'staticlib',
diff --git a/srcpkgs/icecat/patches/rust-has-i128.patch b/srcpkgs/icecat/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/sandbox-fork.patch b/srcpkgs/icecat/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks1.patch b/srcpkgs/icecat/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/icecat/patches/skia-sucks1.patch
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks3.patch b/srcpkgs/icecat/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/icecat/patches/skia-sucks3.patch
+++ b/srcpkgs/icecat/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/icecat/patches/sndio.patch b/srcpkgs/icecat/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/icecat/patches/sndio.patch
+++ b/srcpkgs/icecat/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/icecat/template b/srcpkgs/icecat/template
index a717e9b4093..adafc14e4ba 100644
--- a/srcpkgs/icecat/template
+++ b/srcpkgs/icecat/template
@@ -1,28 +1,28 @@
 # Template file for 'icecat'
 pkgname=icecat
-version=68.12.0
+version=78.3.0
 revision=1
-build_helper="rust"
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
+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 sqlite-devel libevent-devel libnotify-devel libvpx5-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
+ libXdamage-devel freetype-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)"
+ $(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="GNU version of the Firefox browser"
 maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-1.1, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.gnu.org/software/${pkgname}/"
 distfiles="https://distfiles.voidlinux.de/${pkgname}-${version}/${pkgname}-${version}-gnu1.tar.xz"
-checksum=bfacd60caf5f8f0cc63aa651d60c6f95fb0019f56ad7182cea56d77f02a38314
+checksum=157afb0898e6717c60a6ca41641d0cd338ed2b49e9ab0d3e627f4e902978ad22
 lib32disabled=yes
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
+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 armv[56]" ;;
@@ -43,10 +43,9 @@ if [ "$XBPS_WORDSIZE" -eq 32 ]; then
 	nodebug=yes
 fi
 
-# We need this because cargo verifies s 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
 }
@@ -55,36 +54,32 @@ _clear_vendor_checksums() {
 # FIXME: The *.xpi files have to be signed to be accepted as plugins
 #        yet how do you sign a package if you don't have a signing key?
 _install_langpack() {
-	local tempdir=$(ls -d ${wrksrc}/build/dist/linux-*)
-	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.$1.langpack.xpi \
+	local lang=$1 tempdir=$(ls -d ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/dist/linux-*)
+	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.${lang}.langpack.xpi \
 		644 usr/lib/icecat/browser/extensions
 }
 
 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
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
 }
 
 do_build() {
-	local lang languages=(ach af an ar ast az be bg bn br bs ca cak cs cy da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW)
+	local lang languages="en-US $(cat browser/locales/all-locales)"
 	local triplet
 
 	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
 	x86_64*|i686*|arm*)
@@ -145,6 +140,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/icecat"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -153,26 +153,26 @@ 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 <<EOF
 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 --with-l10n-base=${wrksrc}/l10n
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
 EOF
-	# Use the old style configure
-	mkdir -p build
-	cd ${wrksrc}/build
-	../configure --with-l10n-base=${wrksrc}/l10n
-	make ${makejobs}
+	rm -f old-configure
+	./mach build
 
 	# Make langpacks for all languages
-	cd ${wrksrc}/build/browser/locales
+	cd ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/browser/locales/
 	for lang in ${languages[*]}; do
 		msg_normal "Making langpack for ${lang} ...\n"
 		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
@@ -180,10 +180,11 @@ EOF
 }
 
 do_install() {
-	cd ${wrksrc}/build
-	make DESTDIR="${DESTDIR}" install
+	export MACH_USE_SYSTEM_PYTHON=1
+	DESTDIR="$DESTDIR" ./mach install
 
-	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/defaults/pref
+	vbin ${FILESDIR}/icecat-wayland
+	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/browser/defaults/preferences
 	vinstall ${FILESDIR}/icecat.desktop 644 usr/share/applications
 
 	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
@@ -201,14 +202,13 @@ do_install() {
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf icecat ${DESTDIR}/usr/lib/icecat/icecat-bin
 
-	# Remove the development files - noone uses them and the subpkg was broken
+	# Remove the development files - noone uses them
 	rm -rf ${DESTDIR}/usr/{include,lib/icecat-devel,share/idl}
 }
 
 icecat-i18n-ach_package() {
 	short_desc+=" - Acholi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -217,7 +217,6 @@ icecat-i18n-ach_package() {
 icecat-i18n-af_package() {
 	short_desc+=" - Afrikaans language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -226,7 +225,6 @@ icecat-i18n-af_package() {
 icecat-i18n-an_package() {
 	short_desc+=" - Aragonese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -235,7 +233,6 @@ icecat-i18n-an_package() {
 icecat-i18n-ar_package() {
 	short_desc+=" - Arabic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -244,7 +241,6 @@ icecat-i18n-ar_package() {
 icecat-i18n-ast_package() {
 	short_desc+=" - Asturian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -253,7 +249,6 @@ icecat-i18n-ast_package() {
 icecat-i18n-az_package() {
 	short_desc+=" - Azerbaijani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -262,7 +257,6 @@ icecat-i18n-az_package() {
 icecat-i18n-be_package() {
 	short_desc+=" - Belarusian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -271,7 +265,6 @@ icecat-i18n-be_package() {
 icecat-i18n-bg_package() {
 	short_desc+=" - Bulgarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -280,7 +273,6 @@ icecat-i18n-bg_package() {
 icecat-i18n-bn_package() {
 	short_desc+=" - Bengali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -289,7 +281,6 @@ icecat-i18n-bn_package() {
 icecat-i18n-br_package() {
 	short_desc+=" - Breton language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -298,7 +289,6 @@ icecat-i18n-br_package() {
 icecat-i18n-bs_package() {
 	short_desc+=" - Bosnian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -307,7 +297,6 @@ icecat-i18n-bs_package() {
 icecat-i18n-ca_package() {
 	short_desc+=" - Catalan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -316,7 +305,6 @@ icecat-i18n-ca_package() {
 icecat-i18n-cak_package() {
 	short_desc+=" - Kaqchikel language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -325,7 +313,6 @@ icecat-i18n-cak_package() {
 icecat-i18n-cs_package() {
 	short_desc+=" - Czech language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -334,7 +321,6 @@ icecat-i18n-cs_package() {
 icecat-i18n-cy_package() {
 	short_desc+=" - Welsh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -343,7 +329,6 @@ icecat-i18n-cy_package() {
 icecat-i18n-da_package() {
 	short_desc+=" - Danish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -352,7 +337,6 @@ icecat-i18n-da_package() {
 icecat-i18n-de_package() {
 	short_desc+=" - German language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -361,7 +345,6 @@ icecat-i18n-de_package() {
 icecat-i18n-dsb_package() {
 	short_desc+=" - Lower Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -370,7 +353,6 @@ icecat-i18n-dsb_package() {
 icecat-i18n-el_package() {
 	short_desc+=" - Greek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -379,7 +361,6 @@ icecat-i18n-el_package() {
 icecat-i18n-en-CA_package() {
 	short_desc+=" - English (Canada) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -388,7 +369,6 @@ icecat-i18n-en-CA_package() {
 icecat-i18n-en-GB_package() {
 	short_desc+=" - English (British) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -397,7 +377,6 @@ icecat-i18n-en-GB_package() {
 icecat-i18n-en-US_package() {
 	short_desc+=" - English (US) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -406,7 +385,6 @@ icecat-i18n-en-US_package() {
 icecat-i18n-eo_package() {
 	short_desc+=" - Esperanto language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -415,7 +393,6 @@ icecat-i18n-eo_package() {
 icecat-i18n-es-AR_package() {
 	short_desc+=" - Spanish (Argentina) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -424,7 +401,6 @@ icecat-i18n-es-AR_package() {
 icecat-i18n-es-CL_package() {
 	short_desc+=" - Spanish (Chile) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -433,7 +409,6 @@ icecat-i18n-es-CL_package() {
 icecat-i18n-es-ES_package() {
 	short_desc+=" - Spanish (Spain) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -442,7 +417,6 @@ icecat-i18n-es-ES_package() {
 icecat-i18n-es-MX_package() {
 	short_desc+=" - Spanish (Mexico) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -451,7 +425,6 @@ icecat-i18n-es-MX_package() {
 icecat-i18n-et_package() {
 	short_desc+=" - Estonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -460,7 +433,6 @@ icecat-i18n-et_package() {
 icecat-i18n-eu_package() {
 	short_desc+=" - Basque language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -469,7 +441,6 @@ icecat-i18n-eu_package() {
 icecat-i18n-fa_package() {
 	short_desc+=" - Persian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -478,7 +449,6 @@ icecat-i18n-fa_package() {
 icecat-i18n-ff_package() {
 	short_desc+=" - Fulah language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -487,7 +457,6 @@ icecat-i18n-ff_package() {
 icecat-i18n-fi_package() {
 	short_desc+=" - Finnish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -496,7 +465,6 @@ icecat-i18n-fi_package() {
 icecat-i18n-fr_package() {
 	short_desc+=" - French language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -505,7 +473,6 @@ icecat-i18n-fr_package() {
 icecat-i18n-fy-NL_package() {
 	short_desc+=" - Frisian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -514,7 +481,6 @@ icecat-i18n-fy-NL_package() {
 icecat-i18n-ga-IE_package() {
 	short_desc+=" - Irish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -523,7 +489,6 @@ icecat-i18n-ga-IE_package() {
 icecat-i18n-gd_package() {
 	short_desc+=" - Gaelic (Scotland) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -532,7 +497,6 @@ icecat-i18n-gd_package() {
 icecat-i18n-gl_package() {
 	short_desc+=" - Galician language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -541,7 +505,6 @@ icecat-i18n-gl_package() {
 icecat-i18n-gn_package() {
 	short_desc+=" - Guarani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -550,7 +513,6 @@ icecat-i18n-gn_package() {
 icecat-i18n-gu-IN_package() {
 	short_desc+=" - Gujarati (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -559,7 +521,6 @@ icecat-i18n-gu-IN_package() {
 icecat-i18n-he_package() {
 	short_desc+=" - Hebrew language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -568,7 +529,6 @@ icecat-i18n-he_package() {
 icecat-i18n-hi-IN_package() {
 	short_desc+=" - Hindi (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -577,7 +537,6 @@ icecat-i18n-hi-IN_package() {
 icecat-i18n-hr_package() {
 	short_desc+=" - Croatian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -586,7 +545,6 @@ icecat-i18n-hr_package() {
 icecat-i18n-hsb_package() {
 	short_desc+=" - Upper Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -595,7 +553,6 @@ icecat-i18n-hsb_package() {
 icecat-i18n-hu_package() {
 	short_desc+=" - Hungarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -604,7 +561,6 @@ icecat-i18n-hu_package() {
 icecat-i18n-hy-AM_package() {
 	short_desc+=" - Armenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -613,7 +569,6 @@ icecat-i18n-hy-AM_package() {
 icecat-i18n-ia_package() {
 	short_desc+=" - Interlingua language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -622,7 +577,6 @@ icecat-i18n-ia_package() {
 icecat-i18n-id_package() {
 	short_desc+=" - Indonesian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -631,7 +585,6 @@ icecat-i18n-id_package() {
 icecat-i18n-is_package() {
 	short_desc+=" - Icelandic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -640,7 +593,6 @@ icecat-i18n-is_package() {
 icecat-i18n-it_package() {
 	short_desc+=" - Italian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -649,7 +601,6 @@ icecat-i18n-it_package() {
 icecat-i18n-ja_package() {
 	short_desc+=" - Japanese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -658,7 +609,6 @@ icecat-i18n-ja_package() {
 icecat-i18n-ka_package() {
 	short_desc+=" - Georgian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -667,7 +617,6 @@ icecat-i18n-ka_package() {
 icecat-i18n-kab_package() {
 	short_desc+=" - Kabyle language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -676,7 +625,6 @@ icecat-i18n-kab_package() {
 icecat-i18n-kk_package() {
 	short_desc+=" - Kazakh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -685,7 +633,6 @@ icecat-i18n-kk_package() {
 icecat-i18n-km_package() {
 	short_desc+=" - Khmer language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -694,7 +641,6 @@ icecat-i18n-km_package() {
 icecat-i18n-kn_package() {
 	short_desc+=" - Kannada language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -703,7 +649,6 @@ icecat-i18n-kn_package() {
 icecat-i18n-ko_package() {
 	short_desc+=" - Korean language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -712,7 +657,6 @@ icecat-i18n-ko_package() {
 icecat-i18n-lij_package() {
 	short_desc+=" - Ligurian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -721,7 +665,6 @@ icecat-i18n-lij_package() {
 icecat-i18n-lt_package() {
 	short_desc+=" - Lithuanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -730,7 +673,6 @@ icecat-i18n-lt_package() {
 icecat-i18n-lv_package() {
 	short_desc+=" - Latvian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -739,7 +681,6 @@ icecat-i18n-lv_package() {
 icecat-i18n-mk_package() {
 	short_desc+=" - Macedonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -748,7 +689,6 @@ icecat-i18n-mk_package() {
 icecat-i18n-mr_package() {
 	short_desc+=" - Marathi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -757,7 +697,6 @@ icecat-i18n-mr_package() {
 icecat-i18n-ms_package() {
 	short_desc+=" - Malay language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -766,7 +705,6 @@ icecat-i18n-ms_package() {
 icecat-i18n-my_package() {
 	short_desc+=" - Burmese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -775,7 +713,6 @@ icecat-i18n-my_package() {
 icecat-i18n-nb-NO_package() {
 	short_desc+=" - Norwegian (Bokmål) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -784,7 +721,6 @@ icecat-i18n-nb-NO_package() {
 icecat-i18n-ne-NP_package() {
 	short_desc+=" - Nepali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -793,7 +729,6 @@ icecat-i18n-ne-NP_package() {
 icecat-i18n-nl_package() {
 	short_desc+=" - Dutch language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -802,7 +737,6 @@ icecat-i18n-nl_package() {
 icecat-i18n-nn-NO_package() {
 	short_desc+=" - Norwegian (Nynorsk) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -811,7 +745,6 @@ icecat-i18n-nn-NO_package() {
 icecat-i18n-oc_package() {
 	short_desc+=" - Occitan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -820,7 +753,6 @@ icecat-i18n-oc_package() {
 icecat-i18n-pa-IN_package() {
 	short_desc+=" - Punjabi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -829,7 +761,6 @@ icecat-i18n-pa-IN_package() {
 icecat-i18n-pl_package() {
 	short_desc+=" - Polish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -838,7 +769,6 @@ icecat-i18n-pl_package() {
 icecat-i18n-pt-BR_package() {
 	short_desc+=" - Portuguese (Brazilian) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -847,7 +777,6 @@ icecat-i18n-pt-BR_package() {
 icecat-i18n-pt-PT_package() {
 	short_desc+=" - Portuguese (Portugal) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -856,7 +785,6 @@ icecat-i18n-pt-PT_package() {
 icecat-i18n-rm_package() {
 	short_desc+=" - Romansh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -865,7 +793,6 @@ icecat-i18n-rm_package() {
 icecat-i18n-ro_package() {
 	short_desc+=" - Romanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -874,7 +801,6 @@ icecat-i18n-ro_package() {
 icecat-i18n-ru_package() {
 	short_desc+=" - Russian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -883,7 +809,6 @@ icecat-i18n-ru_package() {
 icecat-i18n-si_package() {
 	short_desc+=" - Sinhala language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -892,7 +817,6 @@ icecat-i18n-si_package() {
 icecat-i18n-sk_package() {
 	short_desc+=" - Slovak language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -901,7 +825,6 @@ icecat-i18n-sk_package() {
 icecat-i18n-sl_package() {
 	short_desc+=" - Slovenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -910,7 +833,6 @@ icecat-i18n-sl_package() {
 icecat-i18n-son_package() {
 	short_desc+=" - Songhai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -919,7 +841,6 @@ icecat-i18n-son_package() {
 icecat-i18n-sq_package() {
 	short_desc+=" - Albanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -928,7 +849,6 @@ icecat-i18n-sq_package() {
 icecat-i18n-sr_package() {
 	short_desc+=" - Serbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -937,7 +857,6 @@ icecat-i18n-sr_package() {
 icecat-i18n-sv-SE_package() {
 	short_desc+=" - Swedish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -946,7 +865,6 @@ icecat-i18n-sv-SE_package() {
 icecat-i18n-ta_package() {
 	short_desc+=" - Tamil language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -955,7 +873,6 @@ icecat-i18n-ta_package() {
 icecat-i18n-te_package() {
 	short_desc+=" - Telugu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -964,7 +881,6 @@ icecat-i18n-te_package() {
 icecat-i18n-th_package() {
 	short_desc+=" - Thai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -973,7 +889,6 @@ icecat-i18n-th_package() {
 icecat-i18n-tr_package() {
 	short_desc+=" - Turkish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -982,7 +897,6 @@ icecat-i18n-tr_package() {
 icecat-i18n-uk_package() {
 	short_desc+=" - Ukrainian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -991,7 +905,6 @@ icecat-i18n-uk_package() {
 icecat-i18n-ur_package() {
 	short_desc+=" - Urdu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1000,7 +913,6 @@ icecat-i18n-ur_package() {
 icecat-i18n-uz_package() {
 	short_desc+=" - Uzbek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1009,7 +921,6 @@ icecat-i18n-uz_package() {
 icecat-i18n-vi_package() {
 	short_desc+=" - Vietnamese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1018,7 +929,6 @@ icecat-i18n-vi_package() {
 icecat-i18n-xh_package() {
 	short_desc+=" - Xhosa language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1027,7 +937,6 @@ icecat-i18n-xh_package() {
 icecat-i18n-zh-CN_package() {
 	short_desc+=" - Chinese (simplified) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1036,7 +945,6 @@ icecat-i18n-zh-CN_package() {
 icecat-i18n-zh-TW_package() {
 	short_desc+=" - Chinese (traditional) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}

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

* Re: [PR PATCH] [Updated] [WIP] icecat: update to 78.3.1
  2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
                   ` (2 preceding siblings ...)
  2020-10-16 18:42 ` [PR PATCH] [Updated] [WIP] icecat: update to 78.3.1 pullmoll
@ 2020-10-18 19:59 ` pullmoll
  2020-10-22 19:16 ` pullmoll
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: pullmoll @ 2020-10-18 19:59 UTC (permalink / raw)
  To: ml

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

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

https://github.com/pullmoll/void-packages icecat78
https://github.com/void-linux/void-packages/pull/25284

[WIP] icecat: update to 78.3.1
Currently does not cross compile.
~~And even worse: x86_64 segfaults at startup.~~
Removing the old `$HOME/.mozilla/icecat` directory makes the segfault go away so it's something with old vs. new config files.
[ci skip]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-icecat78-25284.patch --]
[-- Type: text/x-diff, Size: 66051 bytes --]

From 6b43a67d20826c27711bab1705be657916e7c08b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Fri, 2 Oct 2020 18:17:56 +0200
Subject: [PATCH] icecat: update to 78.3.1

Disable cross for now.

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

diff --git a/srcpkgs/icecat/files/icecat-wayland b/srcpkgs/icecat/files/icecat-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/icecat/files/icecat-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/icecat/files/mozconfig b/srcpkgs/icecat/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/icecat/files/mozconfig
+++ b/srcpkgs/icecat/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/icecat/patches/big-endian-image-decoders.patch b/srcpkgs/icecat/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/disable-image-format-warning.patch b/srcpkgs/icecat/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-desktop-icon-path.patch b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
new file mode 100644
index 00000000000..c2c34db5377
--- /dev/null
+++ b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
@@ -0,0 +1,11 @@
+--- taskcluster/docker/icecat-snap/icecat.desktop.orig	2019-01-18 19:31:39.428839442 +0100
++++ taskcluster/docker/icecat-snap/icecat.desktop	2019-01-18 19:32:20.689063456 +0100
+@@ -154,7 +154,7 @@
+ Terminal=false
+ X-MultipleArgs=false
+ Type=Application
+-Icon=/browser/chrome/icons/default/default128.png
++Icon=icecat
+ Categories=GNOME;GTK;Network;WebBrowser;
+ MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+ StartupNotify=true
diff --git a/srcpkgs/icecat/patches/fix-i686-musl.patch b/srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/icecat/patches/fix-i686-musl.patch
rename to srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/icecat/patches/fix-image-format-warning.patch b/srcpkgs/icecat/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/fix-sandbox-membarrier.patch b/srcpkgs/icecat/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-seccomp-bpf.patch b/srcpkgs/icecat/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-toolkit.patch b/srcpkgs/icecat/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-tools.patch b/srcpkgs/icecat/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/icecat/patches/fix-tools.patch
+++ b/srcpkgs/icecat/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/icecat/patches/flac-no-ffvpx.patch b/srcpkgs/icecat/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/gettid-musl.patch b/srcpkgs/icecat/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/ppc32-fix-build.patch b/srcpkgs/icecat/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/remove-rustc-check.patch b/srcpkgs/icecat/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/icecat/patches/remove-rustc-check.patch
rename to srcpkgs/icecat/patches/rust-configure.patch
index 5066c4605bd..887c102bc55 100644
--- a/srcpkgs/icecat/patches/remove-rustc-check.patch
+++ b/srcpkgs/icecat/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,10 +13,11 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -366,25 +363,6 @@
+@@ -348,26 +345,6 @@
+ 
              os.write(in_fd, source)
              os.close(in_fd)
- 
+-
 -            cmd = [
 -                rustc,
 -                '--crate-type', 'staticlib',
diff --git a/srcpkgs/icecat/patches/rust-has-i128.patch b/srcpkgs/icecat/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/sandbox-fork.patch b/srcpkgs/icecat/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks1.patch b/srcpkgs/icecat/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/icecat/patches/skia-sucks1.patch
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks3.patch b/srcpkgs/icecat/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/icecat/patches/skia-sucks3.patch
+++ b/srcpkgs/icecat/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/icecat/patches/sndio.patch b/srcpkgs/icecat/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/icecat/patches/sndio.patch
+++ b/srcpkgs/icecat/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/icecat/template b/srcpkgs/icecat/template
index a717e9b4093..b8af60161b7 100644
--- a/srcpkgs/icecat/template
+++ b/srcpkgs/icecat/template
@@ -1,28 +1,29 @@
 # Template file for 'icecat'
 pkgname=icecat
-version=68.12.0
+version=78.3.0
 revision=1
-build_helper="rust"
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
+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 sqlite-devel libevent-devel libnotify-devel libvpx5-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
+ libXdamage-devel freetype-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)"
+ $(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="GNU version of the Firefox browser"
 maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-1.1, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.gnu.org/software/${pkgname}/"
 distfiles="https://distfiles.voidlinux.de/${pkgname}-${version}/${pkgname}-${version}-gnu1.tar.xz"
-checksum=bfacd60caf5f8f0cc63aa651d60c6f95fb0019f56ad7182cea56d77f02a38314
+checksum=157afb0898e6717c60a6ca41641d0cd338ed2b49e9ab0d3e627f4e902978ad22
 lib32disabled=yes
+nocross="Fails to build dependencies when cross compiling"
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
+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 armv[56]" ;;
@@ -43,10 +44,9 @@ if [ "$XBPS_WORDSIZE" -eq 32 ]; then
 	nodebug=yes
 fi
 
-# We need this because cargo verifies s 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
 }
@@ -55,36 +55,32 @@ _clear_vendor_checksums() {
 # FIXME: The *.xpi files have to be signed to be accepted as plugins
 #        yet how do you sign a package if you don't have a signing key?
 _install_langpack() {
-	local tempdir=$(ls -d ${wrksrc}/build/dist/linux-*)
-	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.$1.langpack.xpi \
+	local lang=$1 tempdir=$(ls -d ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/dist/linux-*)
+	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.${lang}.langpack.xpi \
 		644 usr/lib/icecat/browser/extensions
 }
 
 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
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
 }
 
 do_build() {
-	local lang languages=(ach af an ar ast az be bg bn br bs ca cak cs cy da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW)
+	local lang languages="en-US $(cat browser/locales/all-locales)"
 	local triplet
 
 	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
 	x86_64*|i686*|arm*)
@@ -145,6 +141,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/icecat"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -153,26 +154,26 @@ 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 <<EOF
 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 --with-l10n-base=${wrksrc}/l10n
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
 EOF
-	# Use the old style configure
-	mkdir -p build
-	cd ${wrksrc}/build
-	../configure --with-l10n-base=${wrksrc}/l10n
-	make ${makejobs}
+	rm -f old-configure
+	./mach build
 
 	# Make langpacks for all languages
-	cd ${wrksrc}/build/browser/locales
+	cd ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/browser/locales/
 	for lang in ${languages[*]}; do
 		msg_normal "Making langpack for ${lang} ...\n"
 		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
@@ -180,10 +181,11 @@ EOF
 }
 
 do_install() {
-	cd ${wrksrc}/build
-	make DESTDIR="${DESTDIR}" install
+	export MACH_USE_SYSTEM_PYTHON=1
+	DESTDIR="$DESTDIR" ./mach install
 
-	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/defaults/pref
+	vbin ${FILESDIR}/icecat-wayland
+	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/browser/defaults/preferences
 	vinstall ${FILESDIR}/icecat.desktop 644 usr/share/applications
 
 	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
@@ -201,14 +203,13 @@ do_install() {
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf icecat ${DESTDIR}/usr/lib/icecat/icecat-bin
 
-	# Remove the development files - noone uses them and the subpkg was broken
+	# Remove the development files - noone uses them
 	rm -rf ${DESTDIR}/usr/{include,lib/icecat-devel,share/idl}
 }
 
 icecat-i18n-ach_package() {
 	short_desc+=" - Acholi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -217,7 +218,6 @@ icecat-i18n-ach_package() {
 icecat-i18n-af_package() {
 	short_desc+=" - Afrikaans language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -226,7 +226,6 @@ icecat-i18n-af_package() {
 icecat-i18n-an_package() {
 	short_desc+=" - Aragonese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -235,7 +234,6 @@ icecat-i18n-an_package() {
 icecat-i18n-ar_package() {
 	short_desc+=" - Arabic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -244,7 +242,6 @@ icecat-i18n-ar_package() {
 icecat-i18n-ast_package() {
 	short_desc+=" - Asturian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -253,7 +250,6 @@ icecat-i18n-ast_package() {
 icecat-i18n-az_package() {
 	short_desc+=" - Azerbaijani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -262,7 +258,6 @@ icecat-i18n-az_package() {
 icecat-i18n-be_package() {
 	short_desc+=" - Belarusian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -271,7 +266,6 @@ icecat-i18n-be_package() {
 icecat-i18n-bg_package() {
 	short_desc+=" - Bulgarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -280,7 +274,6 @@ icecat-i18n-bg_package() {
 icecat-i18n-bn_package() {
 	short_desc+=" - Bengali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -289,7 +282,6 @@ icecat-i18n-bn_package() {
 icecat-i18n-br_package() {
 	short_desc+=" - Breton language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -298,7 +290,6 @@ icecat-i18n-br_package() {
 icecat-i18n-bs_package() {
 	short_desc+=" - Bosnian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -307,7 +298,6 @@ icecat-i18n-bs_package() {
 icecat-i18n-ca_package() {
 	short_desc+=" - Catalan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -316,7 +306,6 @@ icecat-i18n-ca_package() {
 icecat-i18n-cak_package() {
 	short_desc+=" - Kaqchikel language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -325,7 +314,6 @@ icecat-i18n-cak_package() {
 icecat-i18n-cs_package() {
 	short_desc+=" - Czech language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -334,7 +322,6 @@ icecat-i18n-cs_package() {
 icecat-i18n-cy_package() {
 	short_desc+=" - Welsh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -343,7 +330,6 @@ icecat-i18n-cy_package() {
 icecat-i18n-da_package() {
 	short_desc+=" - Danish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -352,7 +338,6 @@ icecat-i18n-da_package() {
 icecat-i18n-de_package() {
 	short_desc+=" - German language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -361,7 +346,6 @@ icecat-i18n-de_package() {
 icecat-i18n-dsb_package() {
 	short_desc+=" - Lower Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -370,7 +354,6 @@ icecat-i18n-dsb_package() {
 icecat-i18n-el_package() {
 	short_desc+=" - Greek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -379,7 +362,6 @@ icecat-i18n-el_package() {
 icecat-i18n-en-CA_package() {
 	short_desc+=" - English (Canada) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -388,7 +370,6 @@ icecat-i18n-en-CA_package() {
 icecat-i18n-en-GB_package() {
 	short_desc+=" - English (British) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -397,7 +378,6 @@ icecat-i18n-en-GB_package() {
 icecat-i18n-en-US_package() {
 	short_desc+=" - English (US) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -406,7 +386,6 @@ icecat-i18n-en-US_package() {
 icecat-i18n-eo_package() {
 	short_desc+=" - Esperanto language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -415,7 +394,6 @@ icecat-i18n-eo_package() {
 icecat-i18n-es-AR_package() {
 	short_desc+=" - Spanish (Argentina) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -424,7 +402,6 @@ icecat-i18n-es-AR_package() {
 icecat-i18n-es-CL_package() {
 	short_desc+=" - Spanish (Chile) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -433,7 +410,6 @@ icecat-i18n-es-CL_package() {
 icecat-i18n-es-ES_package() {
 	short_desc+=" - Spanish (Spain) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -442,7 +418,6 @@ icecat-i18n-es-ES_package() {
 icecat-i18n-es-MX_package() {
 	short_desc+=" - Spanish (Mexico) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -451,7 +426,6 @@ icecat-i18n-es-MX_package() {
 icecat-i18n-et_package() {
 	short_desc+=" - Estonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -460,7 +434,6 @@ icecat-i18n-et_package() {
 icecat-i18n-eu_package() {
 	short_desc+=" - Basque language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -469,7 +442,6 @@ icecat-i18n-eu_package() {
 icecat-i18n-fa_package() {
 	short_desc+=" - Persian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -478,7 +450,6 @@ icecat-i18n-fa_package() {
 icecat-i18n-ff_package() {
 	short_desc+=" - Fulah language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -487,7 +458,6 @@ icecat-i18n-ff_package() {
 icecat-i18n-fi_package() {
 	short_desc+=" - Finnish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -496,7 +466,6 @@ icecat-i18n-fi_package() {
 icecat-i18n-fr_package() {
 	short_desc+=" - French language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -505,7 +474,6 @@ icecat-i18n-fr_package() {
 icecat-i18n-fy-NL_package() {
 	short_desc+=" - Frisian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -514,7 +482,6 @@ icecat-i18n-fy-NL_package() {
 icecat-i18n-ga-IE_package() {
 	short_desc+=" - Irish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -523,7 +490,6 @@ icecat-i18n-ga-IE_package() {
 icecat-i18n-gd_package() {
 	short_desc+=" - Gaelic (Scotland) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -532,7 +498,6 @@ icecat-i18n-gd_package() {
 icecat-i18n-gl_package() {
 	short_desc+=" - Galician language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -541,7 +506,6 @@ icecat-i18n-gl_package() {
 icecat-i18n-gn_package() {
 	short_desc+=" - Guarani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -550,7 +514,6 @@ icecat-i18n-gn_package() {
 icecat-i18n-gu-IN_package() {
 	short_desc+=" - Gujarati (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -559,7 +522,6 @@ icecat-i18n-gu-IN_package() {
 icecat-i18n-he_package() {
 	short_desc+=" - Hebrew language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -568,7 +530,6 @@ icecat-i18n-he_package() {
 icecat-i18n-hi-IN_package() {
 	short_desc+=" - Hindi (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -577,7 +538,6 @@ icecat-i18n-hi-IN_package() {
 icecat-i18n-hr_package() {
 	short_desc+=" - Croatian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -586,7 +546,6 @@ icecat-i18n-hr_package() {
 icecat-i18n-hsb_package() {
 	short_desc+=" - Upper Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -595,7 +554,6 @@ icecat-i18n-hsb_package() {
 icecat-i18n-hu_package() {
 	short_desc+=" - Hungarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -604,7 +562,6 @@ icecat-i18n-hu_package() {
 icecat-i18n-hy-AM_package() {
 	short_desc+=" - Armenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -613,7 +570,6 @@ icecat-i18n-hy-AM_package() {
 icecat-i18n-ia_package() {
 	short_desc+=" - Interlingua language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -622,7 +578,6 @@ icecat-i18n-ia_package() {
 icecat-i18n-id_package() {
 	short_desc+=" - Indonesian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -631,7 +586,6 @@ icecat-i18n-id_package() {
 icecat-i18n-is_package() {
 	short_desc+=" - Icelandic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -640,7 +594,6 @@ icecat-i18n-is_package() {
 icecat-i18n-it_package() {
 	short_desc+=" - Italian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -649,7 +602,6 @@ icecat-i18n-it_package() {
 icecat-i18n-ja_package() {
 	short_desc+=" - Japanese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -658,7 +610,6 @@ icecat-i18n-ja_package() {
 icecat-i18n-ka_package() {
 	short_desc+=" - Georgian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -667,7 +618,6 @@ icecat-i18n-ka_package() {
 icecat-i18n-kab_package() {
 	short_desc+=" - Kabyle language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -676,7 +626,6 @@ icecat-i18n-kab_package() {
 icecat-i18n-kk_package() {
 	short_desc+=" - Kazakh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -685,7 +634,6 @@ icecat-i18n-kk_package() {
 icecat-i18n-km_package() {
 	short_desc+=" - Khmer language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -694,7 +642,6 @@ icecat-i18n-km_package() {
 icecat-i18n-kn_package() {
 	short_desc+=" - Kannada language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -703,7 +650,6 @@ icecat-i18n-kn_package() {
 icecat-i18n-ko_package() {
 	short_desc+=" - Korean language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -712,7 +658,6 @@ icecat-i18n-ko_package() {
 icecat-i18n-lij_package() {
 	short_desc+=" - Ligurian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -721,7 +666,6 @@ icecat-i18n-lij_package() {
 icecat-i18n-lt_package() {
 	short_desc+=" - Lithuanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -730,7 +674,6 @@ icecat-i18n-lt_package() {
 icecat-i18n-lv_package() {
 	short_desc+=" - Latvian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -739,7 +682,6 @@ icecat-i18n-lv_package() {
 icecat-i18n-mk_package() {
 	short_desc+=" - Macedonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -748,7 +690,6 @@ icecat-i18n-mk_package() {
 icecat-i18n-mr_package() {
 	short_desc+=" - Marathi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -757,7 +698,6 @@ icecat-i18n-mr_package() {
 icecat-i18n-ms_package() {
 	short_desc+=" - Malay language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -766,7 +706,6 @@ icecat-i18n-ms_package() {
 icecat-i18n-my_package() {
 	short_desc+=" - Burmese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -775,7 +714,6 @@ icecat-i18n-my_package() {
 icecat-i18n-nb-NO_package() {
 	short_desc+=" - Norwegian (Bokmål) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -784,7 +722,6 @@ icecat-i18n-nb-NO_package() {
 icecat-i18n-ne-NP_package() {
 	short_desc+=" - Nepali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -793,7 +730,6 @@ icecat-i18n-ne-NP_package() {
 icecat-i18n-nl_package() {
 	short_desc+=" - Dutch language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -802,7 +738,6 @@ icecat-i18n-nl_package() {
 icecat-i18n-nn-NO_package() {
 	short_desc+=" - Norwegian (Nynorsk) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -811,7 +746,6 @@ icecat-i18n-nn-NO_package() {
 icecat-i18n-oc_package() {
 	short_desc+=" - Occitan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -820,7 +754,6 @@ icecat-i18n-oc_package() {
 icecat-i18n-pa-IN_package() {
 	short_desc+=" - Punjabi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -829,7 +762,6 @@ icecat-i18n-pa-IN_package() {
 icecat-i18n-pl_package() {
 	short_desc+=" - Polish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -838,7 +770,6 @@ icecat-i18n-pl_package() {
 icecat-i18n-pt-BR_package() {
 	short_desc+=" - Portuguese (Brazilian) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -847,7 +778,6 @@ icecat-i18n-pt-BR_package() {
 icecat-i18n-pt-PT_package() {
 	short_desc+=" - Portuguese (Portugal) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -856,7 +786,6 @@ icecat-i18n-pt-PT_package() {
 icecat-i18n-rm_package() {
 	short_desc+=" - Romansh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -865,7 +794,6 @@ icecat-i18n-rm_package() {
 icecat-i18n-ro_package() {
 	short_desc+=" - Romanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -874,7 +802,6 @@ icecat-i18n-ro_package() {
 icecat-i18n-ru_package() {
 	short_desc+=" - Russian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -883,7 +810,6 @@ icecat-i18n-ru_package() {
 icecat-i18n-si_package() {
 	short_desc+=" - Sinhala language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -892,7 +818,6 @@ icecat-i18n-si_package() {
 icecat-i18n-sk_package() {
 	short_desc+=" - Slovak language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -901,7 +826,6 @@ icecat-i18n-sk_package() {
 icecat-i18n-sl_package() {
 	short_desc+=" - Slovenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -910,7 +834,6 @@ icecat-i18n-sl_package() {
 icecat-i18n-son_package() {
 	short_desc+=" - Songhai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -919,7 +842,6 @@ icecat-i18n-son_package() {
 icecat-i18n-sq_package() {
 	short_desc+=" - Albanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -928,7 +850,6 @@ icecat-i18n-sq_package() {
 icecat-i18n-sr_package() {
 	short_desc+=" - Serbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -937,7 +858,6 @@ icecat-i18n-sr_package() {
 icecat-i18n-sv-SE_package() {
 	short_desc+=" - Swedish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -946,7 +866,6 @@ icecat-i18n-sv-SE_package() {
 icecat-i18n-ta_package() {
 	short_desc+=" - Tamil language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -955,7 +874,6 @@ icecat-i18n-ta_package() {
 icecat-i18n-te_package() {
 	short_desc+=" - Telugu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -964,7 +882,6 @@ icecat-i18n-te_package() {
 icecat-i18n-th_package() {
 	short_desc+=" - Thai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -973,7 +890,6 @@ icecat-i18n-th_package() {
 icecat-i18n-tr_package() {
 	short_desc+=" - Turkish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -982,7 +898,6 @@ icecat-i18n-tr_package() {
 icecat-i18n-uk_package() {
 	short_desc+=" - Ukrainian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -991,7 +906,6 @@ icecat-i18n-uk_package() {
 icecat-i18n-ur_package() {
 	short_desc+=" - Urdu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1000,7 +914,6 @@ icecat-i18n-ur_package() {
 icecat-i18n-uz_package() {
 	short_desc+=" - Uzbek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1009,7 +922,6 @@ icecat-i18n-uz_package() {
 icecat-i18n-vi_package() {
 	short_desc+=" - Vietnamese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1018,7 +930,6 @@ icecat-i18n-vi_package() {
 icecat-i18n-xh_package() {
 	short_desc+=" - Xhosa language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1027,7 +938,6 @@ icecat-i18n-xh_package() {
 icecat-i18n-zh-CN_package() {
 	short_desc+=" - Chinese (simplified) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1036,7 +946,6 @@ icecat-i18n-zh-CN_package() {
 icecat-i18n-zh-TW_package() {
 	short_desc+=" - Chinese (traditional) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}

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

* Re: [PR PATCH] [Updated] [WIP] icecat: update to 78.3.1
  2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
                   ` (3 preceding siblings ...)
  2020-10-18 19:59 ` pullmoll
@ 2020-10-22 19:16 ` pullmoll
  2020-10-23 21:53 ` pullmoll
  2020-10-23 21:56 ` [PR PATCH] [Merged]: [WIP] icecat: update to 78.4.0 pullmoll
  6 siblings, 0 replies; 8+ messages in thread
From: pullmoll @ 2020-10-22 19:16 UTC (permalink / raw)
  To: ml

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

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

https://github.com/pullmoll/void-packages icecat78
https://github.com/void-linux/void-packages/pull/25284

[WIP] icecat: update to 78.3.1
Currently does not cross compile.
~~And even worse: x86_64 segfaults at startup.~~
Removing the old `$HOME/.mozilla/icecat` directory makes the segfault go away so it's something with old vs. new config files.
[ci skip]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-icecat78-25284.patch --]
[-- Type: text/x-diff, Size: 66051 bytes --]

From 17bba2f51d3eb59633eb7fc3be63efad67beca1b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Fri, 2 Oct 2020 18:17:56 +0200
Subject: [PATCH] icecat: update to 78.4.0

Disable cross for now.

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

diff --git a/srcpkgs/icecat/files/icecat-wayland b/srcpkgs/icecat/files/icecat-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/icecat/files/icecat-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/icecat/files/mozconfig b/srcpkgs/icecat/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/icecat/files/mozconfig
+++ b/srcpkgs/icecat/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/icecat/patches/big-endian-image-decoders.patch b/srcpkgs/icecat/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/disable-image-format-warning.patch b/srcpkgs/icecat/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-desktop-icon-path.patch b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
new file mode 100644
index 00000000000..c2c34db5377
--- /dev/null
+++ b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
@@ -0,0 +1,11 @@
+--- taskcluster/docker/icecat-snap/icecat.desktop.orig	2019-01-18 19:31:39.428839442 +0100
++++ taskcluster/docker/icecat-snap/icecat.desktop	2019-01-18 19:32:20.689063456 +0100
+@@ -154,7 +154,7 @@
+ Terminal=false
+ X-MultipleArgs=false
+ Type=Application
+-Icon=/browser/chrome/icons/default/default128.png
++Icon=icecat
+ Categories=GNOME;GTK;Network;WebBrowser;
+ MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+ StartupNotify=true
diff --git a/srcpkgs/icecat/patches/fix-i686-musl.patch b/srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/icecat/patches/fix-i686-musl.patch
rename to srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/icecat/patches/fix-image-format-warning.patch b/srcpkgs/icecat/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/fix-sandbox-membarrier.patch b/srcpkgs/icecat/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-seccomp-bpf.patch b/srcpkgs/icecat/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-toolkit.patch b/srcpkgs/icecat/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-tools.patch b/srcpkgs/icecat/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/icecat/patches/fix-tools.patch
+++ b/srcpkgs/icecat/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/icecat/patches/flac-no-ffvpx.patch b/srcpkgs/icecat/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/gettid-musl.patch b/srcpkgs/icecat/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/ppc32-fix-build.patch b/srcpkgs/icecat/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/remove-rustc-check.patch b/srcpkgs/icecat/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/icecat/patches/remove-rustc-check.patch
rename to srcpkgs/icecat/patches/rust-configure.patch
index 5066c4605bd..887c102bc55 100644
--- a/srcpkgs/icecat/patches/remove-rustc-check.patch
+++ b/srcpkgs/icecat/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,10 +13,11 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -366,25 +363,6 @@
+@@ -348,26 +345,6 @@
+ 
              os.write(in_fd, source)
              os.close(in_fd)
- 
+-
 -            cmd = [
 -                rustc,
 -                '--crate-type', 'staticlib',
diff --git a/srcpkgs/icecat/patches/rust-has-i128.patch b/srcpkgs/icecat/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/sandbox-fork.patch b/srcpkgs/icecat/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks1.patch b/srcpkgs/icecat/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/icecat/patches/skia-sucks1.patch
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks3.patch b/srcpkgs/icecat/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/icecat/patches/skia-sucks3.patch
+++ b/srcpkgs/icecat/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/icecat/patches/sndio.patch b/srcpkgs/icecat/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/icecat/patches/sndio.patch
+++ b/srcpkgs/icecat/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/icecat/template b/srcpkgs/icecat/template
index a717e9b4093..44605a5c486 100644
--- a/srcpkgs/icecat/template
+++ b/srcpkgs/icecat/template
@@ -1,28 +1,29 @@
 # Template file for 'icecat'
 pkgname=icecat
-version=68.12.0
+version=78.4.0
 revision=1
-build_helper="rust"
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
+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 sqlite-devel libevent-devel libnotify-devel libvpx5-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
+ libXdamage-devel freetype-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)"
+ $(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="GNU version of the Firefox browser"
 maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-1.1, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.gnu.org/software/${pkgname}/"
 distfiles="https://distfiles.voidlinux.de/${pkgname}-${version}/${pkgname}-${version}-gnu1.tar.xz"
-checksum=bfacd60caf5f8f0cc63aa651d60c6f95fb0019f56ad7182cea56d77f02a38314
+checksum=739b304170f99ea0edda3c92eab17f55c764811b470dc6a262f3c9eaa717d062
 lib32disabled=yes
+nocross="Fails to build dependencies when cross compiling"
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
+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 armv[56]" ;;
@@ -43,10 +44,9 @@ if [ "$XBPS_WORDSIZE" -eq 32 ]; then
 	nodebug=yes
 fi
 
-# We need this because cargo verifies s 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
 }
@@ -55,36 +55,32 @@ _clear_vendor_checksums() {
 # FIXME: The *.xpi files have to be signed to be accepted as plugins
 #        yet how do you sign a package if you don't have a signing key?
 _install_langpack() {
-	local tempdir=$(ls -d ${wrksrc}/build/dist/linux-*)
-	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.$1.langpack.xpi \
+	local lang=$1 tempdir=$(ls -d ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/dist/linux-*)
+	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.${lang}.langpack.xpi \
 		644 usr/lib/icecat/browser/extensions
 }
 
 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
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
 }
 
 do_build() {
-	local lang languages=(ach af an ar ast az be bg bn br bs ca cak cs cy da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW)
+	local lang languages="en-US $(cat browser/locales/all-locales)"
 	local triplet
 
 	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
 	x86_64*|i686*|arm*)
@@ -145,6 +141,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/icecat"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -153,26 +154,26 @@ 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 <<EOF
 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 --with-l10n-base=${wrksrc}/l10n
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
 EOF
-	# Use the old style configure
-	mkdir -p build
-	cd ${wrksrc}/build
-	../configure --with-l10n-base=${wrksrc}/l10n
-	make ${makejobs}
+	rm -f old-configure
+	./mach build
 
 	# Make langpacks for all languages
-	cd ${wrksrc}/build/browser/locales
+	cd ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/browser/locales/
 	for lang in ${languages[*]}; do
 		msg_normal "Making langpack for ${lang} ...\n"
 		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
@@ -180,10 +181,11 @@ EOF
 }
 
 do_install() {
-	cd ${wrksrc}/build
-	make DESTDIR="${DESTDIR}" install
+	export MACH_USE_SYSTEM_PYTHON=1
+	DESTDIR="$DESTDIR" ./mach install
 
-	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/defaults/pref
+	vbin ${FILESDIR}/icecat-wayland
+	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/browser/defaults/preferences
 	vinstall ${FILESDIR}/icecat.desktop 644 usr/share/applications
 
 	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
@@ -201,14 +203,13 @@ do_install() {
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf icecat ${DESTDIR}/usr/lib/icecat/icecat-bin
 
-	# Remove the development files - noone uses them and the subpkg was broken
+	# Remove the development files - noone uses them
 	rm -rf ${DESTDIR}/usr/{include,lib/icecat-devel,share/idl}
 }
 
 icecat-i18n-ach_package() {
 	short_desc+=" - Acholi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -217,7 +218,6 @@ icecat-i18n-ach_package() {
 icecat-i18n-af_package() {
 	short_desc+=" - Afrikaans language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -226,7 +226,6 @@ icecat-i18n-af_package() {
 icecat-i18n-an_package() {
 	short_desc+=" - Aragonese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -235,7 +234,6 @@ icecat-i18n-an_package() {
 icecat-i18n-ar_package() {
 	short_desc+=" - Arabic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -244,7 +242,6 @@ icecat-i18n-ar_package() {
 icecat-i18n-ast_package() {
 	short_desc+=" - Asturian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -253,7 +250,6 @@ icecat-i18n-ast_package() {
 icecat-i18n-az_package() {
 	short_desc+=" - Azerbaijani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -262,7 +258,6 @@ icecat-i18n-az_package() {
 icecat-i18n-be_package() {
 	short_desc+=" - Belarusian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -271,7 +266,6 @@ icecat-i18n-be_package() {
 icecat-i18n-bg_package() {
 	short_desc+=" - Bulgarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -280,7 +274,6 @@ icecat-i18n-bg_package() {
 icecat-i18n-bn_package() {
 	short_desc+=" - Bengali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -289,7 +282,6 @@ icecat-i18n-bn_package() {
 icecat-i18n-br_package() {
 	short_desc+=" - Breton language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -298,7 +290,6 @@ icecat-i18n-br_package() {
 icecat-i18n-bs_package() {
 	short_desc+=" - Bosnian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -307,7 +298,6 @@ icecat-i18n-bs_package() {
 icecat-i18n-ca_package() {
 	short_desc+=" - Catalan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -316,7 +306,6 @@ icecat-i18n-ca_package() {
 icecat-i18n-cak_package() {
 	short_desc+=" - Kaqchikel language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -325,7 +314,6 @@ icecat-i18n-cak_package() {
 icecat-i18n-cs_package() {
 	short_desc+=" - Czech language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -334,7 +322,6 @@ icecat-i18n-cs_package() {
 icecat-i18n-cy_package() {
 	short_desc+=" - Welsh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -343,7 +330,6 @@ icecat-i18n-cy_package() {
 icecat-i18n-da_package() {
 	short_desc+=" - Danish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -352,7 +338,6 @@ icecat-i18n-da_package() {
 icecat-i18n-de_package() {
 	short_desc+=" - German language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -361,7 +346,6 @@ icecat-i18n-de_package() {
 icecat-i18n-dsb_package() {
 	short_desc+=" - Lower Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -370,7 +354,6 @@ icecat-i18n-dsb_package() {
 icecat-i18n-el_package() {
 	short_desc+=" - Greek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -379,7 +362,6 @@ icecat-i18n-el_package() {
 icecat-i18n-en-CA_package() {
 	short_desc+=" - English (Canada) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -388,7 +370,6 @@ icecat-i18n-en-CA_package() {
 icecat-i18n-en-GB_package() {
 	short_desc+=" - English (British) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -397,7 +378,6 @@ icecat-i18n-en-GB_package() {
 icecat-i18n-en-US_package() {
 	short_desc+=" - English (US) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -406,7 +386,6 @@ icecat-i18n-en-US_package() {
 icecat-i18n-eo_package() {
 	short_desc+=" - Esperanto language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -415,7 +394,6 @@ icecat-i18n-eo_package() {
 icecat-i18n-es-AR_package() {
 	short_desc+=" - Spanish (Argentina) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -424,7 +402,6 @@ icecat-i18n-es-AR_package() {
 icecat-i18n-es-CL_package() {
 	short_desc+=" - Spanish (Chile) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -433,7 +410,6 @@ icecat-i18n-es-CL_package() {
 icecat-i18n-es-ES_package() {
 	short_desc+=" - Spanish (Spain) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -442,7 +418,6 @@ icecat-i18n-es-ES_package() {
 icecat-i18n-es-MX_package() {
 	short_desc+=" - Spanish (Mexico) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -451,7 +426,6 @@ icecat-i18n-es-MX_package() {
 icecat-i18n-et_package() {
 	short_desc+=" - Estonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -460,7 +434,6 @@ icecat-i18n-et_package() {
 icecat-i18n-eu_package() {
 	short_desc+=" - Basque language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -469,7 +442,6 @@ icecat-i18n-eu_package() {
 icecat-i18n-fa_package() {
 	short_desc+=" - Persian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -478,7 +450,6 @@ icecat-i18n-fa_package() {
 icecat-i18n-ff_package() {
 	short_desc+=" - Fulah language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -487,7 +458,6 @@ icecat-i18n-ff_package() {
 icecat-i18n-fi_package() {
 	short_desc+=" - Finnish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -496,7 +466,6 @@ icecat-i18n-fi_package() {
 icecat-i18n-fr_package() {
 	short_desc+=" - French language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -505,7 +474,6 @@ icecat-i18n-fr_package() {
 icecat-i18n-fy-NL_package() {
 	short_desc+=" - Frisian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -514,7 +482,6 @@ icecat-i18n-fy-NL_package() {
 icecat-i18n-ga-IE_package() {
 	short_desc+=" - Irish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -523,7 +490,6 @@ icecat-i18n-ga-IE_package() {
 icecat-i18n-gd_package() {
 	short_desc+=" - Gaelic (Scotland) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -532,7 +498,6 @@ icecat-i18n-gd_package() {
 icecat-i18n-gl_package() {
 	short_desc+=" - Galician language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -541,7 +506,6 @@ icecat-i18n-gl_package() {
 icecat-i18n-gn_package() {
 	short_desc+=" - Guarani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -550,7 +514,6 @@ icecat-i18n-gn_package() {
 icecat-i18n-gu-IN_package() {
 	short_desc+=" - Gujarati (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -559,7 +522,6 @@ icecat-i18n-gu-IN_package() {
 icecat-i18n-he_package() {
 	short_desc+=" - Hebrew language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -568,7 +530,6 @@ icecat-i18n-he_package() {
 icecat-i18n-hi-IN_package() {
 	short_desc+=" - Hindi (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -577,7 +538,6 @@ icecat-i18n-hi-IN_package() {
 icecat-i18n-hr_package() {
 	short_desc+=" - Croatian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -586,7 +546,6 @@ icecat-i18n-hr_package() {
 icecat-i18n-hsb_package() {
 	short_desc+=" - Upper Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -595,7 +554,6 @@ icecat-i18n-hsb_package() {
 icecat-i18n-hu_package() {
 	short_desc+=" - Hungarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -604,7 +562,6 @@ icecat-i18n-hu_package() {
 icecat-i18n-hy-AM_package() {
 	short_desc+=" - Armenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -613,7 +570,6 @@ icecat-i18n-hy-AM_package() {
 icecat-i18n-ia_package() {
 	short_desc+=" - Interlingua language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -622,7 +578,6 @@ icecat-i18n-ia_package() {
 icecat-i18n-id_package() {
 	short_desc+=" - Indonesian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -631,7 +586,6 @@ icecat-i18n-id_package() {
 icecat-i18n-is_package() {
 	short_desc+=" - Icelandic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -640,7 +594,6 @@ icecat-i18n-is_package() {
 icecat-i18n-it_package() {
 	short_desc+=" - Italian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -649,7 +602,6 @@ icecat-i18n-it_package() {
 icecat-i18n-ja_package() {
 	short_desc+=" - Japanese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -658,7 +610,6 @@ icecat-i18n-ja_package() {
 icecat-i18n-ka_package() {
 	short_desc+=" - Georgian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -667,7 +618,6 @@ icecat-i18n-ka_package() {
 icecat-i18n-kab_package() {
 	short_desc+=" - Kabyle language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -676,7 +626,6 @@ icecat-i18n-kab_package() {
 icecat-i18n-kk_package() {
 	short_desc+=" - Kazakh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -685,7 +634,6 @@ icecat-i18n-kk_package() {
 icecat-i18n-km_package() {
 	short_desc+=" - Khmer language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -694,7 +642,6 @@ icecat-i18n-km_package() {
 icecat-i18n-kn_package() {
 	short_desc+=" - Kannada language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -703,7 +650,6 @@ icecat-i18n-kn_package() {
 icecat-i18n-ko_package() {
 	short_desc+=" - Korean language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -712,7 +658,6 @@ icecat-i18n-ko_package() {
 icecat-i18n-lij_package() {
 	short_desc+=" - Ligurian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -721,7 +666,6 @@ icecat-i18n-lij_package() {
 icecat-i18n-lt_package() {
 	short_desc+=" - Lithuanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -730,7 +674,6 @@ icecat-i18n-lt_package() {
 icecat-i18n-lv_package() {
 	short_desc+=" - Latvian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -739,7 +682,6 @@ icecat-i18n-lv_package() {
 icecat-i18n-mk_package() {
 	short_desc+=" - Macedonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -748,7 +690,6 @@ icecat-i18n-mk_package() {
 icecat-i18n-mr_package() {
 	short_desc+=" - Marathi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -757,7 +698,6 @@ icecat-i18n-mr_package() {
 icecat-i18n-ms_package() {
 	short_desc+=" - Malay language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -766,7 +706,6 @@ icecat-i18n-ms_package() {
 icecat-i18n-my_package() {
 	short_desc+=" - Burmese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -775,7 +714,6 @@ icecat-i18n-my_package() {
 icecat-i18n-nb-NO_package() {
 	short_desc+=" - Norwegian (Bokmål) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -784,7 +722,6 @@ icecat-i18n-nb-NO_package() {
 icecat-i18n-ne-NP_package() {
 	short_desc+=" - Nepali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -793,7 +730,6 @@ icecat-i18n-ne-NP_package() {
 icecat-i18n-nl_package() {
 	short_desc+=" - Dutch language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -802,7 +738,6 @@ icecat-i18n-nl_package() {
 icecat-i18n-nn-NO_package() {
 	short_desc+=" - Norwegian (Nynorsk) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -811,7 +746,6 @@ icecat-i18n-nn-NO_package() {
 icecat-i18n-oc_package() {
 	short_desc+=" - Occitan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -820,7 +754,6 @@ icecat-i18n-oc_package() {
 icecat-i18n-pa-IN_package() {
 	short_desc+=" - Punjabi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -829,7 +762,6 @@ icecat-i18n-pa-IN_package() {
 icecat-i18n-pl_package() {
 	short_desc+=" - Polish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -838,7 +770,6 @@ icecat-i18n-pl_package() {
 icecat-i18n-pt-BR_package() {
 	short_desc+=" - Portuguese (Brazilian) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -847,7 +778,6 @@ icecat-i18n-pt-BR_package() {
 icecat-i18n-pt-PT_package() {
 	short_desc+=" - Portuguese (Portugal) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -856,7 +786,6 @@ icecat-i18n-pt-PT_package() {
 icecat-i18n-rm_package() {
 	short_desc+=" - Romansh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -865,7 +794,6 @@ icecat-i18n-rm_package() {
 icecat-i18n-ro_package() {
 	short_desc+=" - Romanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -874,7 +802,6 @@ icecat-i18n-ro_package() {
 icecat-i18n-ru_package() {
 	short_desc+=" - Russian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -883,7 +810,6 @@ icecat-i18n-ru_package() {
 icecat-i18n-si_package() {
 	short_desc+=" - Sinhala language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -892,7 +818,6 @@ icecat-i18n-si_package() {
 icecat-i18n-sk_package() {
 	short_desc+=" - Slovak language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -901,7 +826,6 @@ icecat-i18n-sk_package() {
 icecat-i18n-sl_package() {
 	short_desc+=" - Slovenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -910,7 +834,6 @@ icecat-i18n-sl_package() {
 icecat-i18n-son_package() {
 	short_desc+=" - Songhai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -919,7 +842,6 @@ icecat-i18n-son_package() {
 icecat-i18n-sq_package() {
 	short_desc+=" - Albanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -928,7 +850,6 @@ icecat-i18n-sq_package() {
 icecat-i18n-sr_package() {
 	short_desc+=" - Serbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -937,7 +858,6 @@ icecat-i18n-sr_package() {
 icecat-i18n-sv-SE_package() {
 	short_desc+=" - Swedish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -946,7 +866,6 @@ icecat-i18n-sv-SE_package() {
 icecat-i18n-ta_package() {
 	short_desc+=" - Tamil language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -955,7 +874,6 @@ icecat-i18n-ta_package() {
 icecat-i18n-te_package() {
 	short_desc+=" - Telugu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -964,7 +882,6 @@ icecat-i18n-te_package() {
 icecat-i18n-th_package() {
 	short_desc+=" - Thai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -973,7 +890,6 @@ icecat-i18n-th_package() {
 icecat-i18n-tr_package() {
 	short_desc+=" - Turkish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -982,7 +898,6 @@ icecat-i18n-tr_package() {
 icecat-i18n-uk_package() {
 	short_desc+=" - Ukrainian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -991,7 +906,6 @@ icecat-i18n-uk_package() {
 icecat-i18n-ur_package() {
 	short_desc+=" - Urdu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1000,7 +914,6 @@ icecat-i18n-ur_package() {
 icecat-i18n-uz_package() {
 	short_desc+=" - Uzbek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1009,7 +922,6 @@ icecat-i18n-uz_package() {
 icecat-i18n-vi_package() {
 	short_desc+=" - Vietnamese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1018,7 +930,6 @@ icecat-i18n-vi_package() {
 icecat-i18n-xh_package() {
 	short_desc+=" - Xhosa language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1027,7 +938,6 @@ icecat-i18n-xh_package() {
 icecat-i18n-zh-CN_package() {
 	short_desc+=" - Chinese (simplified) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1036,7 +946,6 @@ icecat-i18n-zh-CN_package() {
 icecat-i18n-zh-TW_package() {
 	short_desc+=" - Chinese (traditional) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}

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

* Re: [PR PATCH] [Updated] [WIP] icecat: update to 78.3.1
  2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
                   ` (4 preceding siblings ...)
  2020-10-22 19:16 ` pullmoll
@ 2020-10-23 21:53 ` pullmoll
  2020-10-23 21:56 ` [PR PATCH] [Merged]: [WIP] icecat: update to 78.4.0 pullmoll
  6 siblings, 0 replies; 8+ messages in thread
From: pullmoll @ 2020-10-23 21:53 UTC (permalink / raw)
  To: ml

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

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

https://github.com/pullmoll/void-packages icecat78
https://github.com/void-linux/void-packages/pull/25284

[WIP] icecat: update to 78.3.1
Currently does not cross compile.
~~And even worse: x86_64 segfaults at startup.~~
Removing the old `$HOME/.mozilla/icecat` directory makes the segfault go away so it's something with old vs. new config files.
[ci skip]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-icecat78-25284.patch --]
[-- Type: text/x-diff, Size: 66155 bytes --]

From 7e5e90fa0c6335eea712ee3b88dcbe1be583aec2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= <pullmoll@t-online.de>
Date: Fri, 2 Oct 2020 18:17:56 +0200
Subject: [PATCH] icecat: update to 78.4.0

Disable cross for now.

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

diff --git a/srcpkgs/icecat/files/icecat-wayland b/srcpkgs/icecat/files/icecat-wayland
new file mode 100644
index 00000000000..ca6010f3044
--- /dev/null
+++ b/srcpkgs/icecat/files/icecat-wayland
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec env MOZ_ENABLE_WAYLAND= /usr/lib/icecat/icecat "$@"
diff --git a/srcpkgs/icecat/files/mozconfig b/srcpkgs/icecat/files/mozconfig
index 0798fdd40ef..31bb6dcd0f2 100644
--- a/srcpkgs/icecat/files/mozconfig
+++ b/srcpkgs/icecat/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/icecat/patches/big-endian-image-decoders.patch b/srcpkgs/icecat/patches/big-endian-image-decoders.patch
new file mode 100644
index 00000000000..ccb417b61f1
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/disable-image-format-warning.patch b/srcpkgs/icecat/patches/disable-image-format-warning.patch
deleted file mode 100644
index bd56e6bc37c..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-desktop-icon-path.patch b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
new file mode 100644
index 00000000000..c2c34db5377
--- /dev/null
+++ b/srcpkgs/icecat/patches/fix-desktop-icon-path.patch
@@ -0,0 +1,11 @@
+--- taskcluster/docker/icecat-snap/icecat.desktop.orig	2019-01-18 19:31:39.428839442 +0100
++++ taskcluster/docker/icecat-snap/icecat.desktop	2019-01-18 19:32:20.689063456 +0100
+@@ -154,7 +154,7 @@
+ Terminal=false
+ X-MultipleArgs=false
+ Type=Application
+-Icon=/browser/chrome/icons/default/default128.png
++Icon=icecat
+ Categories=GNOME;GTK;Network;WebBrowser;
+ MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+ StartupNotify=true
diff --git a/srcpkgs/icecat/patches/fix-i686-musl.patch b/srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
similarity index 100%
rename from srcpkgs/icecat/patches/fix-i686-musl.patch
rename to srcpkgs/icecat/patches/fix-i686-ppc-musl.patch
diff --git a/srcpkgs/icecat/patches/fix-image-format-warning.patch b/srcpkgs/icecat/patches/fix-image-format-warning.patch
new file mode 100644
index 00000000000..9b3b38d9065
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/fix-sandbox-membarrier.patch b/srcpkgs/icecat/patches/fix-sandbox-membarrier.patch
deleted file mode 100644
index caffd83cf67..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-seccomp-bpf.patch b/srcpkgs/icecat/patches/fix-seccomp-bpf.patch
deleted file mode 100644
index ed94fc39ed0..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-toolkit.patch b/srcpkgs/icecat/patches/fix-toolkit.patch
deleted file mode 100644
index 86e8ef47855..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/fix-tools.patch b/srcpkgs/icecat/patches/fix-tools.patch
index 0ed043fb5b5..1af39bc6118 100644
--- a/srcpkgs/icecat/patches/fix-tools.patch
+++ b/srcpkgs/icecat/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/icecat/patches/flac-no-ffvpx.patch b/srcpkgs/icecat/patches/flac-no-ffvpx.patch
new file mode 100644
index 00000000000..e3f60e8ecf6
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/gettid-musl.patch b/srcpkgs/icecat/patches/gettid-musl.patch
deleted file mode 100644
index c1cb99bf651..00000000000
--- a/srcpkgs/icecat/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/icecat/patches/ppc32-fix-build.patch b/srcpkgs/icecat/patches/ppc32-fix-build.patch
new file mode 100644
index 00000000000..c1a8f422d0a
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/remove-rustc-check.patch b/srcpkgs/icecat/patches/rust-configure.patch
similarity index 85%
rename from srcpkgs/icecat/patches/remove-rustc-check.patch
rename to srcpkgs/icecat/patches/rust-configure.patch
index 5066c4605bd..887c102bc55 100644
--- a/srcpkgs/icecat/patches/remove-rustc-check.patch
+++ b/srcpkgs/icecat/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,10 +13,11 @@ Remove calls to unwrap_rustup, they fail if rustup isn't present
  
  set_config('CARGO', cargo)
  set_config('RUSTC', rustc)
-@@ -366,25 +363,6 @@
+@@ -348,26 +345,6 @@
+ 
              os.write(in_fd, source)
              os.close(in_fd)
- 
+-
 -            cmd = [
 -                rustc,
 -                '--crate-type', 'staticlib',
diff --git a/srcpkgs/icecat/patches/rust-has-i128.patch b/srcpkgs/icecat/patches/rust-has-i128.patch
new file mode 100644
index 00000000000..4c90cd3d106
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/sandbox-fork.patch b/srcpkgs/icecat/patches/sandbox-fork.patch
new file mode 100644
index 00000000000..72640cb7f70
--- /dev/null
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks1.patch b/srcpkgs/icecat/patches/skia-sucks1.patch
index 223c9b14e6b..05ad34a3fc3 100644
--- a/srcpkgs/icecat/patches/skia-sucks1.patch
+++ b/srcpkgs/icecat/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/icecat/patches/skia-sucks3.patch b/srcpkgs/icecat/patches/skia-sucks3.patch
index d95b81698e9..f4e890f0536 100644
--- a/srcpkgs/icecat/patches/skia-sucks3.patch
+++ b/srcpkgs/icecat/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/icecat/patches/sndio.patch b/srcpkgs/icecat/patches/sndio.patch
index 6c72284c19b..c5e5c486dd1 100644
--- a/srcpkgs/icecat/patches/sndio.patch
+++ b/srcpkgs/icecat/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/icecat/template b/srcpkgs/icecat/template
index a717e9b4093..69caccdf2f6 100644
--- a/srcpkgs/icecat/template
+++ b/srcpkgs/icecat/template
@@ -1,28 +1,30 @@
 # Template file for 'icecat'
 pkgname=icecat
-version=68.12.0
+version=78.4.0
 revision=1
-build_helper="rust"
-hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm
- python3 cargo llvm clang rust cbindgen nasm nodejs-lts-10 tar which"
+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 sqlite-devel libevent-devel libnotify-devel libvpx5-devel
+ pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
- libXdamage-devel $(vopt_if alsa alsa-lib-devel)
+ libXdamage-devel freetype-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)"
+ $(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="GNU version of the Firefox browser"
 maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
 license="MPL-1.1, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.gnu.org/software/${pkgname}/"
 distfiles="https://distfiles.voidlinux.de/${pkgname}-${version}/${pkgname}-${version}-gnu1.tar.xz"
-checksum=bfacd60caf5f8f0cc63aa651d60c6f95fb0019f56ad7182cea56d77f02a38314
+checksum=739b304170f99ea0edda3c92eab17f55c764811b470dc6a262f3c9eaa717d062
 lib32disabled=yes
+nocross="warning: src/compiler/glsl/glcpp/glcpp-lex.l:622:1: fatal error: opening dependency file .deps/forc
+e-cargo-library-build.pp: No such file or directory"
 
-build_options="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
-build_options_default="alsa dbus gtk3 pulseaudio startup_notification sndio xscreensaver"
+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 armv[56]" ;;
@@ -43,10 +45,9 @@ if [ "$XBPS_WORDSIZE" -eq 32 ]; then
 	nodebug=yes
 fi
 
-# We need this because cargo verifies s 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
 }
@@ -55,36 +56,32 @@ _clear_vendor_checksums() {
 # FIXME: The *.xpi files have to be signed to be accepted as plugins
 #        yet how do you sign a package if you don't have a signing key?
 _install_langpack() {
-	local tempdir=$(ls -d ${wrksrc}/build/dist/linux-*)
-	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.$1.langpack.xpi \
+	local lang=$1 tempdir=$(ls -d ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/dist/linux-*)
+	vinstall ${tempdir}/xpi/${sourcepkg}-${version}.${lang}.langpack.xpi \
 		644 usr/lib/icecat/browser/extensions
 }
 
 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
 }
 
 post_patch() {
-	_clear_vendor_checksums cssparser
+	_clear_vendor_checksums num-traits
 }
 
 do_build() {
-	local lang languages=(ach af an ar ast az be bg bn br bs ca cak cs cy da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW)
+	local lang languages="en-US $(cat browser/locales/all-locales)"
 	local triplet
 
 	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
 	x86_64*|i686*|arm*)
@@ -145,6 +142,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/icecat"
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then
@@ -153,26 +155,26 @@ 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 <<EOF
 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 --with-l10n-base=${wrksrc}/l10n
+ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
 EOF
-	# Use the old style configure
-	mkdir -p build
-	cd ${wrksrc}/build
-	../configure --with-l10n-base=${wrksrc}/l10n
-	make ${makejobs}
+	rm -f old-configure
+	./mach build
 
 	# Make langpacks for all languages
-	cd ${wrksrc}/build/browser/locales
+	cd ${wrksrc}/obj-${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}/browser/locales/
 	for lang in ${languages[*]}; do
 		msg_normal "Making langpack for ${lang} ...\n"
 		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
@@ -180,10 +182,11 @@ EOF
 }
 
 do_install() {
-	cd ${wrksrc}/build
-	make DESTDIR="${DESTDIR}" install
+	export MACH_USE_SYSTEM_PYTHON=1
+	DESTDIR="$DESTDIR" ./mach install
 
-	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/defaults/pref
+	vbin ${FILESDIR}/icecat-wayland
+	vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/browser/defaults/preferences
 	vinstall ${FILESDIR}/icecat.desktop 644 usr/share/applications
 
 	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
@@ -201,14 +204,13 @@ do_install() {
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf icecat ${DESTDIR}/usr/lib/icecat/icecat-bin
 
-	# Remove the development files - noone uses them and the subpkg was broken
+	# Remove the development files - noone uses them
 	rm -rf ${DESTDIR}/usr/{include,lib/icecat-devel,share/idl}
 }
 
 icecat-i18n-ach_package() {
 	short_desc+=" - Acholi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -217,7 +219,6 @@ icecat-i18n-ach_package() {
 icecat-i18n-af_package() {
 	short_desc+=" - Afrikaans language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -226,7 +227,6 @@ icecat-i18n-af_package() {
 icecat-i18n-an_package() {
 	short_desc+=" - Aragonese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -235,7 +235,6 @@ icecat-i18n-an_package() {
 icecat-i18n-ar_package() {
 	short_desc+=" - Arabic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -244,7 +243,6 @@ icecat-i18n-ar_package() {
 icecat-i18n-ast_package() {
 	short_desc+=" - Asturian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -253,7 +251,6 @@ icecat-i18n-ast_package() {
 icecat-i18n-az_package() {
 	short_desc+=" - Azerbaijani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -262,7 +259,6 @@ icecat-i18n-az_package() {
 icecat-i18n-be_package() {
 	short_desc+=" - Belarusian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -271,7 +267,6 @@ icecat-i18n-be_package() {
 icecat-i18n-bg_package() {
 	short_desc+=" - Bulgarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -280,7 +275,6 @@ icecat-i18n-bg_package() {
 icecat-i18n-bn_package() {
 	short_desc+=" - Bengali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -289,7 +283,6 @@ icecat-i18n-bn_package() {
 icecat-i18n-br_package() {
 	short_desc+=" - Breton language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -298,7 +291,6 @@ icecat-i18n-br_package() {
 icecat-i18n-bs_package() {
 	short_desc+=" - Bosnian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -307,7 +299,6 @@ icecat-i18n-bs_package() {
 icecat-i18n-ca_package() {
 	short_desc+=" - Catalan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -316,7 +307,6 @@ icecat-i18n-ca_package() {
 icecat-i18n-cak_package() {
 	short_desc+=" - Kaqchikel language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -325,7 +315,6 @@ icecat-i18n-cak_package() {
 icecat-i18n-cs_package() {
 	short_desc+=" - Czech language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -334,7 +323,6 @@ icecat-i18n-cs_package() {
 icecat-i18n-cy_package() {
 	short_desc+=" - Welsh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -343,7 +331,6 @@ icecat-i18n-cy_package() {
 icecat-i18n-da_package() {
 	short_desc+=" - Danish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -352,7 +339,6 @@ icecat-i18n-da_package() {
 icecat-i18n-de_package() {
 	short_desc+=" - German language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -361,7 +347,6 @@ icecat-i18n-de_package() {
 icecat-i18n-dsb_package() {
 	short_desc+=" - Lower Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -370,7 +355,6 @@ icecat-i18n-dsb_package() {
 icecat-i18n-el_package() {
 	short_desc+=" - Greek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -379,7 +363,6 @@ icecat-i18n-el_package() {
 icecat-i18n-en-CA_package() {
 	short_desc+=" - English (Canada) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -388,7 +371,6 @@ icecat-i18n-en-CA_package() {
 icecat-i18n-en-GB_package() {
 	short_desc+=" - English (British) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -397,7 +379,6 @@ icecat-i18n-en-GB_package() {
 icecat-i18n-en-US_package() {
 	short_desc+=" - English (US) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -406,7 +387,6 @@ icecat-i18n-en-US_package() {
 icecat-i18n-eo_package() {
 	short_desc+=" - Esperanto language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -415,7 +395,6 @@ icecat-i18n-eo_package() {
 icecat-i18n-es-AR_package() {
 	short_desc+=" - Spanish (Argentina) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -424,7 +403,6 @@ icecat-i18n-es-AR_package() {
 icecat-i18n-es-CL_package() {
 	short_desc+=" - Spanish (Chile) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -433,7 +411,6 @@ icecat-i18n-es-CL_package() {
 icecat-i18n-es-ES_package() {
 	short_desc+=" - Spanish (Spain) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -442,7 +419,6 @@ icecat-i18n-es-ES_package() {
 icecat-i18n-es-MX_package() {
 	short_desc+=" - Spanish (Mexico) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -451,7 +427,6 @@ icecat-i18n-es-MX_package() {
 icecat-i18n-et_package() {
 	short_desc+=" - Estonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -460,7 +435,6 @@ icecat-i18n-et_package() {
 icecat-i18n-eu_package() {
 	short_desc+=" - Basque language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -469,7 +443,6 @@ icecat-i18n-eu_package() {
 icecat-i18n-fa_package() {
 	short_desc+=" - Persian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -478,7 +451,6 @@ icecat-i18n-fa_package() {
 icecat-i18n-ff_package() {
 	short_desc+=" - Fulah language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -487,7 +459,6 @@ icecat-i18n-ff_package() {
 icecat-i18n-fi_package() {
 	short_desc+=" - Finnish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -496,7 +467,6 @@ icecat-i18n-fi_package() {
 icecat-i18n-fr_package() {
 	short_desc+=" - French language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -505,7 +475,6 @@ icecat-i18n-fr_package() {
 icecat-i18n-fy-NL_package() {
 	short_desc+=" - Frisian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -514,7 +483,6 @@ icecat-i18n-fy-NL_package() {
 icecat-i18n-ga-IE_package() {
 	short_desc+=" - Irish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -523,7 +491,6 @@ icecat-i18n-ga-IE_package() {
 icecat-i18n-gd_package() {
 	short_desc+=" - Gaelic (Scotland) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -532,7 +499,6 @@ icecat-i18n-gd_package() {
 icecat-i18n-gl_package() {
 	short_desc+=" - Galician language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -541,7 +507,6 @@ icecat-i18n-gl_package() {
 icecat-i18n-gn_package() {
 	short_desc+=" - Guarani language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -550,7 +515,6 @@ icecat-i18n-gn_package() {
 icecat-i18n-gu-IN_package() {
 	short_desc+=" - Gujarati (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -559,7 +523,6 @@ icecat-i18n-gu-IN_package() {
 icecat-i18n-he_package() {
 	short_desc+=" - Hebrew language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -568,7 +531,6 @@ icecat-i18n-he_package() {
 icecat-i18n-hi-IN_package() {
 	short_desc+=" - Hindi (India) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -577,7 +539,6 @@ icecat-i18n-hi-IN_package() {
 icecat-i18n-hr_package() {
 	short_desc+=" - Croatian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -586,7 +547,6 @@ icecat-i18n-hr_package() {
 icecat-i18n-hsb_package() {
 	short_desc+=" - Upper Sorbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -595,7 +555,6 @@ icecat-i18n-hsb_package() {
 icecat-i18n-hu_package() {
 	short_desc+=" - Hungarian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -604,7 +563,6 @@ icecat-i18n-hu_package() {
 icecat-i18n-hy-AM_package() {
 	short_desc+=" - Armenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -613,7 +571,6 @@ icecat-i18n-hy-AM_package() {
 icecat-i18n-ia_package() {
 	short_desc+=" - Interlingua language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -622,7 +579,6 @@ icecat-i18n-ia_package() {
 icecat-i18n-id_package() {
 	short_desc+=" - Indonesian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -631,7 +587,6 @@ icecat-i18n-id_package() {
 icecat-i18n-is_package() {
 	short_desc+=" - Icelandic language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -640,7 +595,6 @@ icecat-i18n-is_package() {
 icecat-i18n-it_package() {
 	short_desc+=" - Italian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -649,7 +603,6 @@ icecat-i18n-it_package() {
 icecat-i18n-ja_package() {
 	short_desc+=" - Japanese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -658,7 +611,6 @@ icecat-i18n-ja_package() {
 icecat-i18n-ka_package() {
 	short_desc+=" - Georgian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -667,7 +619,6 @@ icecat-i18n-ka_package() {
 icecat-i18n-kab_package() {
 	short_desc+=" - Kabyle language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -676,7 +627,6 @@ icecat-i18n-kab_package() {
 icecat-i18n-kk_package() {
 	short_desc+=" - Kazakh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -685,7 +635,6 @@ icecat-i18n-kk_package() {
 icecat-i18n-km_package() {
 	short_desc+=" - Khmer language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -694,7 +643,6 @@ icecat-i18n-km_package() {
 icecat-i18n-kn_package() {
 	short_desc+=" - Kannada language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -703,7 +651,6 @@ icecat-i18n-kn_package() {
 icecat-i18n-ko_package() {
 	short_desc+=" - Korean language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -712,7 +659,6 @@ icecat-i18n-ko_package() {
 icecat-i18n-lij_package() {
 	short_desc+=" - Ligurian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -721,7 +667,6 @@ icecat-i18n-lij_package() {
 icecat-i18n-lt_package() {
 	short_desc+=" - Lithuanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -730,7 +675,6 @@ icecat-i18n-lt_package() {
 icecat-i18n-lv_package() {
 	short_desc+=" - Latvian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -739,7 +683,6 @@ icecat-i18n-lv_package() {
 icecat-i18n-mk_package() {
 	short_desc+=" - Macedonian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -748,7 +691,6 @@ icecat-i18n-mk_package() {
 icecat-i18n-mr_package() {
 	short_desc+=" - Marathi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -757,7 +699,6 @@ icecat-i18n-mr_package() {
 icecat-i18n-ms_package() {
 	short_desc+=" - Malay language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -766,7 +707,6 @@ icecat-i18n-ms_package() {
 icecat-i18n-my_package() {
 	short_desc+=" - Burmese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -775,7 +715,6 @@ icecat-i18n-my_package() {
 icecat-i18n-nb-NO_package() {
 	short_desc+=" - Norwegian (Bokmål) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -784,7 +723,6 @@ icecat-i18n-nb-NO_package() {
 icecat-i18n-ne-NP_package() {
 	short_desc+=" - Nepali language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -793,7 +731,6 @@ icecat-i18n-ne-NP_package() {
 icecat-i18n-nl_package() {
 	short_desc+=" - Dutch language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -802,7 +739,6 @@ icecat-i18n-nl_package() {
 icecat-i18n-nn-NO_package() {
 	short_desc+=" - Norwegian (Nynorsk) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -811,7 +747,6 @@ icecat-i18n-nn-NO_package() {
 icecat-i18n-oc_package() {
 	short_desc+=" - Occitan language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -820,7 +755,6 @@ icecat-i18n-oc_package() {
 icecat-i18n-pa-IN_package() {
 	short_desc+=" - Punjabi language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -829,7 +763,6 @@ icecat-i18n-pa-IN_package() {
 icecat-i18n-pl_package() {
 	short_desc+=" - Polish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -838,7 +771,6 @@ icecat-i18n-pl_package() {
 icecat-i18n-pt-BR_package() {
 	short_desc+=" - Portuguese (Brazilian) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -847,7 +779,6 @@ icecat-i18n-pt-BR_package() {
 icecat-i18n-pt-PT_package() {
 	short_desc+=" - Portuguese (Portugal) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -856,7 +787,6 @@ icecat-i18n-pt-PT_package() {
 icecat-i18n-rm_package() {
 	short_desc+=" - Romansh language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -865,7 +795,6 @@ icecat-i18n-rm_package() {
 icecat-i18n-ro_package() {
 	short_desc+=" - Romanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -874,7 +803,6 @@ icecat-i18n-ro_package() {
 icecat-i18n-ru_package() {
 	short_desc+=" - Russian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -883,7 +811,6 @@ icecat-i18n-ru_package() {
 icecat-i18n-si_package() {
 	short_desc+=" - Sinhala language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -892,7 +819,6 @@ icecat-i18n-si_package() {
 icecat-i18n-sk_package() {
 	short_desc+=" - Slovak language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -901,7 +827,6 @@ icecat-i18n-sk_package() {
 icecat-i18n-sl_package() {
 	short_desc+=" - Slovenian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -910,7 +835,6 @@ icecat-i18n-sl_package() {
 icecat-i18n-son_package() {
 	short_desc+=" - Songhai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -919,7 +843,6 @@ icecat-i18n-son_package() {
 icecat-i18n-sq_package() {
 	short_desc+=" - Albanian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -928,7 +851,6 @@ icecat-i18n-sq_package() {
 icecat-i18n-sr_package() {
 	short_desc+=" - Serbian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -937,7 +859,6 @@ icecat-i18n-sr_package() {
 icecat-i18n-sv-SE_package() {
 	short_desc+=" - Swedish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -946,7 +867,6 @@ icecat-i18n-sv-SE_package() {
 icecat-i18n-ta_package() {
 	short_desc+=" - Tamil language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -955,7 +875,6 @@ icecat-i18n-ta_package() {
 icecat-i18n-te_package() {
 	short_desc+=" - Telugu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -964,7 +883,6 @@ icecat-i18n-te_package() {
 icecat-i18n-th_package() {
 	short_desc+=" - Thai language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -973,7 +891,6 @@ icecat-i18n-th_package() {
 icecat-i18n-tr_package() {
 	short_desc+=" - Turkish language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -982,7 +899,6 @@ icecat-i18n-tr_package() {
 icecat-i18n-uk_package() {
 	short_desc+=" - Ukrainian language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -991,7 +907,6 @@ icecat-i18n-uk_package() {
 icecat-i18n-ur_package() {
 	short_desc+=" - Urdu language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1000,7 +915,6 @@ icecat-i18n-ur_package() {
 icecat-i18n-uz_package() {
 	short_desc+=" - Uzbek language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1009,7 +923,6 @@ icecat-i18n-uz_package() {
 icecat-i18n-vi_package() {
 	short_desc+=" - Vietnamese language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1018,7 +931,6 @@ icecat-i18n-vi_package() {
 icecat-i18n-xh_package() {
 	short_desc+=" - Xhosa language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1027,7 +939,6 @@ icecat-i18n-xh_package() {
 icecat-i18n-zh-CN_package() {
 	short_desc+=" - Chinese (simplified) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}
@@ -1036,7 +947,6 @@ icecat-i18n-zh-CN_package() {
 icecat-i18n-zh-TW_package() {
 	short_desc+=" - Chinese (traditional) language files"
 	depends="${sourcepkg}-${version}_${revision}"
-	archs=noarch
 	pkg_install() {
 		_install_langpack ${pkgname#icecat-i18n-}
 	}

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

* Re: [PR PATCH] [Merged]: [WIP] icecat: update to 78.4.0
  2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
                   ` (5 preceding siblings ...)
  2020-10-23 21:53 ` pullmoll
@ 2020-10-23 21:56 ` pullmoll
  6 siblings, 0 replies; 8+ messages in thread
From: pullmoll @ 2020-10-23 21:56 UTC (permalink / raw)
  To: ml

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

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

[WIP] icecat: update to 78.4.0
https://github.com/void-linux/void-packages/pull/25284

Description:
Currently does not cross compile.
~~And even worse: x86_64 segfaults at startup.~~
Removing the old `$HOME/.mozilla/icecat` directory makes the segfault go away so it's something with old vs. new config files.
[ci skip]

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

end of thread, other threads:[~2020-10-23 21:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-02 16:19 [PR PATCH] [WIP] icecat: update to 78.3.0 pullmoll
2020-10-04 14:09 ` [PR PATCH] [Updated] " pullmoll
2020-10-04 17:19 ` pullmoll
2020-10-16 18:42 ` [PR PATCH] [Updated] [WIP] icecat: update to 78.3.1 pullmoll
2020-10-18 19:59 ` pullmoll
2020-10-22 19:16 ` pullmoll
2020-10-23 21:53 ` pullmoll
2020-10-23 21:56 ` [PR PATCH] [Merged]: [WIP] icecat: update to 78.4.0 pullmoll

Github messages for voidlinux

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.vuxu.org/voidlinux-github

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 voidlinux-github voidlinux-github/ http://inbox.vuxu.org/voidlinux-github \
		voidlinux-github@inbox.vuxu.org
	public-inbox-index voidlinux-github

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.github.voidlinux


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git