Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] firefox-esr: update to 91.3.0.
@ 2021-11-20 14:23 jdnuemm
  2021-11-20 15:05 ` [PR REVIEW] " abenson
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: jdnuemm @ 2021-11-20 14:23 UTC (permalink / raw)
  To: ml

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

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

https://github.com/jdnuemm/void-packages firefox-esr-91.3.0
https://github.com/void-linux/void-packages/pull/34167

firefox-esr: update to 91.3.0.
Testing the changes:

- I tested the changes in this PR: briefly

Local build testing:

- I built this PR locally for my native architecture, x86_64-glibc

Note:

I use the Patches from Thunderbird and sync the template with Firefox. 

[skip CI]

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

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

From ee5f98b841d15bf32b97129d16046c37bb8f9312 Mon Sep 17 00:00:00 2001
From: Johannes Daniel Nuemm <daniel.nuemm@blacktre.es>
Date: Thu, 18 Nov 2021 18:33:41 +0100
Subject: [PATCH] firefox-esr: update to 91.3.0.

---
 srcpkgs/firefox-esr/files/mozconfig           |   1 +
 srcpkgs/firefox-esr/files/vendor.js           |   2 +-
 .../patches/avoid-redefinition.patch          |  15 +
 srcpkgs/firefox-esr/patches/fix-cross.patch   |  16 -
 .../patches/fix-fortify-inline.patch          |  11 -
 .../firefox-esr/patches/fix-i386-fdlibm.patch |  18 +
 .../firefox-esr/patches/fix-python3.10.patch  | 826 ------------------
 .../firefox-esr/patches/fix-wasm-arm.patch    |  15 -
 .../patches/fix-webrtc-glibcisms.patch        |   4 +-
 .../firefox-esr/patches/flac-no-ffvpx.patch   |   5 +-
 .../patches/musl-rust.configure.patch         |  26 -
 .../firefox-esr/patches/rust-configure.patch  | 132 ++-
 .../firefox-esr/patches/rust-has-i128.patch   |  21 -
 .../firefox-esr/patches/sandbox-fork.patch    |   4 +-
 srcpkgs/firefox-esr/patches/sndio.patch       |  14 +-
 srcpkgs/firefox-esr/template                  | 127 ++-
 srcpkgs/firefox-esr/update                    |   4 +-
 17 files changed, 210 insertions(+), 1031 deletions(-)
 create mode 100644 srcpkgs/firefox-esr/patches/avoid-redefinition.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-cross.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-fortify-inline.patch
 create mode 100644 srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-python3.10.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-wasm-arm.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/musl-rust.configure.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/rust-has-i128.patch

diff --git a/srcpkgs/firefox-esr/files/mozconfig b/srcpkgs/firefox-esr/files/mozconfig
index 708ee9eded9b..fa5a7a42e04b 100644
--- a/srcpkgs/firefox-esr/files/mozconfig
+++ b/srcpkgs/firefox-esr/files/mozconfig
@@ -32,4 +32,5 @@ ac_add_options --enable-optimize="$CFLAGS"
 
 ac_add_options --enable-official-branding
 ac_add_options --enable-application=browser
+
 ac_add_options --allow-addon-sideload
diff --git a/srcpkgs/firefox-esr/files/vendor.js b/srcpkgs/firefox-esr/files/vendor.js
index d8d606bc15d7..5be4f1b5f3ff 100644
--- a/srcpkgs/firefox-esr/files/vendor.js
+++ b/srcpkgs/firefox-esr/files/vendor.js
@@ -1,5 +1,5 @@
 // Use LANG environment variable to choose locale
-pref("intl.locale.matchOS", true);
+pref("intl.locale.requested", "");
 
 // Disable default browser checking.
 pref("browser.shell.checkDefaultBrowser", false);
diff --git a/srcpkgs/firefox-esr/patches/avoid-redefinition.patch b/srcpkgs/firefox-esr/patches/avoid-redefinition.patch
new file mode 100644
index 000000000000..867d37c62a90
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/avoid-redefinition.patch
@@ -0,0 +1,15 @@
+Author: Rasmus Thomsen <oss@cogitri.dev>
+Reason: FF is mixing userspace net headers (net/if.h) and kernelspace ones
+(linux/if.h), leading to redefinitions. We need to include net/if.h before
+linux/if.h because linux/if.h has redifinition guards whereas net/if.h doesnt
+Upstream: No
+--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c	2020-07-28 19:24:32.359751046 +0200
++++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c	2020-07-28 19:24:37.856343751 +0200
+@@ -31,6 +31,7 @@
+ */
+ 
+ #if defined(LINUX)
++#include <net/if.h>
+ #include "addrs-netlink.h"
+ #include <csi_platform.h>
+ #include <assert.h>
diff --git a/srcpkgs/firefox-esr/patches/fix-cross.patch b/srcpkgs/firefox-esr/patches/fix-cross.patch
deleted file mode 100644
index fad8f9060c46..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-cross.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-terrible hack to fix cross builds
-overwrite HOST_* flags to get rid of -MF
-
-note: this patch was used from firefox-77 until 80, dropped with the update to 81
-
---- a/third_party/rust/glslopt/build.rs
-+++ b/third_party/rust/glslopt/build.rs
-@@ -28,6 +28,8 @@
-     env::remove_var(format!("CXXFLAGS_{}", &target));
-     env::remove_var(format!("CFLAGS_{}", target.replace("-", "_")));
-     env::remove_var(format!("CXXFLAGS_{}", target.replace("-", "_")));
-+    env::set_var("HOST_CFLAGS", "-O2");
-+    env::set_var("HOST_CXXFLAGS", "-O2");
-
-     configure(&mut cc::Build::new())
-         .warnings(false)
diff --git a/srcpkgs/firefox-esr/patches/fix-fortify-inline.patch b/srcpkgs/firefox-esr/patches/fix-fortify-inline.patch
deleted file mode 100644
index 2498c57fc738..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-fortify-inline.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h
-+++ b/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h
-@@ -27,8 +27,5 @@
- typedef int16_t    int16;
- typedef unsigned short ushort;
- typedef unsigned long  ulong;
--#ifndef __GNUC_STDC_INLINE__
--#define inline
--#endif
- 
- #endif /* _SDP_OS_DEFS_H_ */
diff --git a/srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch b/srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch
new file mode 100644
index 000000000000..831e5e03678d
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch
@@ -0,0 +1,18 @@
+# error: typedef redefinition with different types ('__double_t' (aka 'double') vs 'long double')
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1729459
+
+--- a/modules/fdlibm/src/math_private.h
++++ b/modules/fdlibm/src/math_private.h
+@@ -30,7 +30,12 @@
+  * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+  */
+ 
++#if defined(__linux__) && defined(__i386__)
++// rely on glibc's double_t
++typedef long double __double_t;
++#else
+ typedef double      __double_t;
++#endif
+ typedef __double_t  double_t;
+ 
+ /*
diff --git a/srcpkgs/firefox-esr/patches/fix-python3.10.patch b/srcpkgs/firefox-esr/patches/fix-python3.10.patch
deleted file mode 100644
index 143e58782581..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-python3.10.patch
+++ /dev/null
@@ -1,826 +0,0 @@
-diff -ur a/python/mach/mach/config.py b/python/mach/mach/config.py
---- a/python/mach/mach/config.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mach/mach/config.py	2021-11-05 15:29:12.000000000 -0400
-@@ -144,7 +144,7 @@
-     return _
- 
- 
--class ConfigSettings(collections.Mapping):
-+class ConfigSettings(collections.abc.Mapping):
-     """Interface for configuration settings.
- 
-     This is the main interface to the configuration.
-@@ -190,7 +190,7 @@
-     will result in exceptions being raised.
-     """
- 
--    class ConfigSection(collections.MutableMapping, object):
-+    class ConfigSection(collections.abc.MutableMapping, object):
-         """Represents an individual config section."""
-         def __init__(self, config, name, settings):
-             object.__setattr__(self, '_config', config)
-diff -ur a/python/mach/mach/decorators.py b/python/mach/mach/decorators.py
---- a/python/mach/mach/decorators.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mach/mach/decorators.py	2021-11-05 15:29:12.000000000 -0400
-@@ -140,7 +140,7 @@
-               'Conditions argument must take a list ' + \
-               'of functions. Found %s instead.'
- 
--        if not isinstance(command.conditions, collections.Iterable):
-+        if not isinstance(command.conditions, collections.abc.Iterable):
-             msg = msg % (command.name, type(command.conditions))
-             raise MachError(msg)
- 
-diff -ur a/python/mach/mach/main.py b/python/mach/mach/main.py
---- a/python/mach/mach/main.py	2021-09-01 13:26:23.000000000 -0400
-+++ b/python/mach/mach/main.py	2021-11-05 15:29:12.000000000 -0400
-@@ -16,7 +16,7 @@
- import sys
- import traceback
- import uuid
--from collections import Iterable
-+from collections.abc import Iterable
- 
- from six import string_types
- 
-diff -ur a/python/mozbuild/mozbuild/backend/configenvironment.py b/python/mozbuild/mozbuild/backend/configenvironment.py
---- a/python/mozbuild/mozbuild/backend/configenvironment.py	2021-09-01 13:26:34.000000000 -0400
-+++ b/python/mozbuild/mozbuild/backend/configenvironment.py	2021-11-05 15:29:12.000000000 -0400
-@@ -9,7 +9,8 @@
- import sys
- import json
- 
--from collections import Iterable, OrderedDict
-+from collections import OrderedDict
-+from collections.abc import Iterable
- from types import ModuleType
- 
- import mozpack.path as mozpath
-diff -ur a/python/mozbuild/mozbuild/makeutil.py b/python/mozbuild/mozbuild/makeutil.py
---- a/python/mozbuild/mozbuild/makeutil.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mozbuild/mozbuild/makeutil.py	2021-11-05 15:29:12.000000000 -0400
-@@ -7,7 +7,7 @@
- import os
- import re
- import six
--from collections import Iterable
-+from collections.abc import Iterable
- 
- 
- class Makefile(object):
-diff -ur a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
---- a/python/mozbuild/mozbuild/util.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mozbuild/mozbuild/util.py	2021-11-05 15:29:12.000000000 -0400
-@@ -782,7 +782,7 @@
-         self._strings = StrictOrderingOnAppendList()
-         self._children = {}
- 
--    class StringListAdaptor(collections.Sequence):
-+    class StringListAdaptor(collections.abc.Sequence):
-         def __init__(self, hsl):
-             self._hsl = hsl
- 
-diff -ur a/testing/marionette/client/marionette_driver/wait.py b/testing/marionette/client/marionette_driver/wait.py
---- a/testing/marionette/client/marionette_driver/wait.py	2021-09-01 13:26:30.000000000 -0400
-+++ b/testing/marionette/client/marionette_driver/wait.py	2021-11-05 15:29:12.000000000 -0400
-@@ -82,7 +82,7 @@
- 
-         exceptions = []
-         if ignored_exceptions is not None:
--            if isinstance(ignored_exceptions, collections.Iterable):
-+            if isinstance(ignored_exceptions, collections.abc.Iterable):
-                 exceptions.extend(iter(ignored_exceptions))
-             else:
-                 exceptions.append(ignored_exceptions)
-diff -ur a/testing/mozbase/manifestparser/manifestparser/filters.py b/testing/mozbase/manifestparser/manifestparser/filters.py
---- a/testing/mozbase/manifestparser/manifestparser/filters.py	2021-09-01 13:26:23.000000000 -0400
-+++ b/testing/mozbase/manifestparser/manifestparser/filters.py	2021-11-05 15:29:12.000000000 -0400
-@@ -12,7 +12,8 @@
- 
- import itertools
- import os
--from collections import defaultdict, MutableSequence
-+from collections import defaultdict
-+from collections.abc import MutableSequence
- 
- import six
- from six import string_types
-diff -ur a/testing/mozbase/versioninfo.py b/testing/mozbase/versioninfo.py
---- a/testing/mozbase/versioninfo.py	2021-09-01 13:26:23.000000000 -0400
-+++ b/testing/mozbase/versioninfo.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- 
- from __future__ import absolute_import, print_function
- 
--from collections import Iterable
-+from collections.abc import Iterable
- from distutils.version import StrictVersion
- import argparse
- import os
-diff -ur a/testing/web-platform/tests/tools/manifest/typedata.py b/testing/web-platform/tests/tools/manifest/typedata.py
---- a/testing/web-platform/tests/tools/manifest/typedata.py	2021-09-01 13:26:40.000000000 -0400
-+++ b/testing/web-platform/tests/tools/manifest/typedata.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,4 +1,4 @@
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- 
- from six import itervalues, iteritems
- 
-diff -ur a/testing/web-platform/tests/tools/manifest/vcs.py b/testing/web-platform/tests/tools/manifest/vcs.py
---- a/testing/web-platform/tests/tools/manifest/vcs.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/manifest/vcs.py	2021-11-05 15:29:12.000000000 -0400
-@@ -3,7 +3,7 @@
- import os
- import stat
- from collections import deque
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- 
- from six import with_metaclass, PY2
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py b/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py
---- a/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py	2021-09-01 13:26:56.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py	2021-11-05 15:29:12.000000000 -0400
-@@ -4,7 +4,8 @@
- 
- from __future__ import absolute_import, division, print_function
- 
--from collections import Mapping, OrderedDict, Sequence
-+from collections import OrderedDict
-+from collections.abc import Mapping, Sequence
- 
- import pytest
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
---- a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py	2021-11-05 15:32:28.817737357 -0400
-@@ -88,7 +88,7 @@
-         )
- 
- 
--class Settings(collections.MutableMapping):
-+class Settings(collections.abc.MutableMapping):
-     """
-     An object that encapsulates HTTP/2 settings state.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py
---- a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,6 +1,6 @@
- from __future__ import absolute_import, division, unicode_literals
- 
--from collections import Mapping
-+from collections.abc import Mapping
- 
- 
- class Trie(Mapping):
-diff -ur a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py
---- a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,7 +1,7 @@
- from __future__ import absolute_import, division, unicode_literals
- 
- 
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- from xml.dom import minidom, Node
- import weakref
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py	2021-11-05 15:29:12.000000000 -0400
-@@ -10,7 +10,7 @@
- from hyper.common.util import to_bytestring, to_bytestring_tuple
- 
- 
--class HTTPHeaderMap(collections.MutableMapping):
-+class HTTPHeaderMap(collections.abc.MutableMapping):
-     """
-     A structure that contains HTTP headers.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py	2021-09-01 13:26:56.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py	2021-11-05 15:29:12.000000000 -0400
-@@ -151,7 +151,7 @@
-         )
- 
- 
--class Settings(collections.MutableMapping):
-+class Settings(collections.abc.MutableMapping):
-     """
-     An object that encapsulates HTTP/2 settings state.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py	2021-11-05 15:29:12.000000000 -0400
-@@ -10,7 +10,7 @@
- import socket
- import base64
- 
--from collections import Iterable, Mapping
-+from collections.abc import Iterable, Mapping
- 
- import collections
- from hyperframe.frame import SettingsFrame
-@@ -295,7 +295,7 @@
-                 return
- 
-             # Iterables that set a specific content length.
--            elif isinstance(body, collections.Iterable):
-+            elif isinstance(body, collections.abc.Iterable):
-                 for item in body:
-                     try:
-                         self._sock.send(item)
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- Flag = collections.namedtuple("Flag", ["name", "bit"])
- 
- 
--class Flags(collections.MutableSet):
-+class Flags(collections.abc.MutableSet):
-     """
-     A simple MutableSet implementation that will only accept known flags as elements.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
---- a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py	2021-09-01 13:26:39.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- Flag = collections.namedtuple("Flag", ["name", "bit"])
- 
- 
--class Flags(collections.MutableSet):
-+class Flags(collections.abc.MutableSet):
-     """
-     A simple MutableSet implementation that will only accept known flags as
-     elements.
-diff -ur a/testing/web-platform/tests/tools/wptserve/wptserve/config.py b/testing/web-platform/tests/tools/wptserve/wptserve/config.py
---- a/testing/web-platform/tests/tools/wptserve/wptserve/config.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/wptserve/wptserve/config.py	2021-11-05 15:29:12.000000000 -0400
-@@ -2,7 +2,8 @@
- import logging
- import os
- 
--from collections import defaultdict, Mapping
-+from collections import defaultdict
-+from collections.abc import Mapping
- from six import integer_types, iteritems, itervalues, string_types
- 
- from . import sslutils
-diff -ur a/testing/web-platform/tests/webdriver/tests/support/sync.py b/testing/web-platform/tests/webdriver/tests/support/sync.py
---- a/testing/web-platform/tests/webdriver/tests/support/sync.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/webdriver/tests/support/sync.py	2021-11-05 15:29:12.000000000 -0400
-@@ -81,7 +81,7 @@
- 
-         exceptions = []
-         if ignored_exceptions is not None:
--            if isinstance(ignored_exceptions, collections.Iterable):
-+            if isinstance(ignored_exceptions, collections.abc.Iterable):
-                 exceptions.extend(iter(ignored_exceptions))
-             else:
-                 exceptions.append(ignored_exceptions)
-diff -ur a/third_party/python/gyp/pylib/gyp/common.py b/third_party/python/gyp/pylib/gyp/common.py
---- a/third_party/python/gyp/pylib/gyp/common.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/gyp/pylib/gyp/common.py	2021-11-05 15:29:12.000000000 -0400
-@@ -494,7 +494,7 @@
- 
- 
- # Based on http://code.activestate.com/recipes/576694/.
--class OrderedSet(collections.MutableSet):
-+class OrderedSet(collections.abc.MutableSet):
-   def __init__(self, iterable=None):
-     self.end = end = []
-     end += [None, end, end]         # sentinel node for doubly linked list
-diff -ur a/third_party/python/gyp/pylib/gyp/msvs_emulation.py b/third_party/python/gyp/pylib/gyp/msvs_emulation.py
---- a/third_party/python/gyp/pylib/gyp/msvs_emulation.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/gyp/pylib/gyp/msvs_emulation.py	2021-11-05 15:30:47.757760820 -0400
-@@ -91,7 +91,7 @@
-   """Add |prefix| to |element| or each subelement if element is iterable."""
-   if element is None:
-     return element
--  if (isinstance(element, collections.Iterable) and
-+  if (isinstance(element, collections.abc.Iterable) and
-       not isinstance(element, basestring)):
-     return [prefix + e for e in element]
-   else:
-@@ -104,7 +104,7 @@
-   if map is not None and element is not None:
-     if not callable(map):
-       map = map.get # Assume it's a dict, otherwise a callable to do the remap.
--    if (isinstance(element, collections.Iterable) and
-+    if (isinstance(element, collections.abc.Iterable) and
-         not isinstance(element, basestring)):
-       element = filter(None, [map(elem) for elem in element])
-     else:
-@@ -117,7 +117,7 @@
-   then add |element| to it, adding each item in |element| if it's a list or
-   tuple."""
-   if append is not None and element is not None:
--    if (isinstance(element, collections.Iterable) and
-+    if (isinstance(element, collections.abc.Iterable) and
-         not isinstance(element, basestring)):
-       append.extend(element)
-     else:
-diff -ur a/third_party/python/gyp/test/lib/TestGyp.py b/third_party/python/gyp/test/lib/TestGyp.py
---- a/third_party/python/gyp/test/lib/TestGyp.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/gyp/test/lib/TestGyp.py	2021-11-05 15:30:37.671763157 -0400
-@@ -496,7 +496,7 @@
-     if status is None:
-       kw['status'] = None
-     else:
--      if not isinstance(status, collections.Iterable): status = (status,)
-+      if not isinstance(status, collections.abc.Iterable): status = (status,)
-       kw['status'] = list(itertools.chain((0,), status))
-     self.cmake_build(gyp_file, target, **kw)
-     kw['status'] = status
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py	2021-11-05 15:29:12.000000000 -0400
-@@ -319,7 +319,7 @@
- try:
-     callable = callable
- except NameError:   # pragma: no cover
--    from collections import Callable
-+    from collections.abc import Callable
- 
-     def callable(obj):
-         return isinstance(obj, Callable)
-@@ -475,7 +475,7 @@
- try:
-     from collections import ChainMap
- except ImportError: # pragma: no cover
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
- 
-     try:
-         from reprlib import recursive_repr as _recursive_repr
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,7 +1,7 @@
- from __future__ import absolute_import, division, unicode_literals
- 
- 
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- from xml.dom import minidom, Node
- import weakref
- 
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py	2021-11-05 15:29:12.000000000 -0400
-@@ -940,7 +940,7 @@
-     def __dir__(self):
-         return (dir(type(self)) + list(self.keys()))
- 
--collections.MutableMapping.register(ParseResults)
-+collections.abc.MutableMapping.register(ParseResults)
- 
- def col (loc,strg):
-     """Returns current column within a string, counting newlines as line separators.
-@@ -3223,7 +3223,7 @@
- 
-         if isinstance( exprs, basestring ):
-             self.exprs = [ ParserElement._literalStringClass( exprs ) ]
--        elif isinstance( exprs, collections.Iterable ):
-+        elif isinstance( exprs, collections.abc.Iterable ):
-             exprs = list(exprs)
-             # if sequence of strings provided, wrap with Literal
-             if all(isinstance(expr, basestring) for expr in exprs):
-@@ -4564,7 +4564,7 @@
-     symbols = []
-     if isinstance(strs,basestring):
-         symbols = strs.split()
--    elif isinstance(strs, collections.Iterable):
-+    elif isinstance(strs, collections.abc.Iterable):
-         symbols = list(strs)
-     else:
-         warnings.warn("Invalid argument to oneOf, expected string or iterable",
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -169,7 +169,7 @@
-     """
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py	2021-11-05 15:31:35.745749692 -0400
-@@ -174,10 +174,10 @@
-         if event not in self.hooks:
-             raise ValueError('Unsupported event specified, with event name "%s"' % (event))
- 
--        if isinstance(hook, collections.Callable):
-+        if isinstance(hook, collections.abc.Callable):
-             self.hooks[event].append(hook)
-         elif hasattr(hook, '__iter__'):
--            self.hooks[event].extend(h for h in hook if isinstance(h, collections.Callable))
-+            self.hooks[event].extend(h for h in hook if isinstance(h, collections.abc.Callable))
- 
-     def deregister_hook(self, event, hook):
-         """Deregister a previously registered hook.
-@@ -461,7 +461,7 @@
- 
-         is_stream = all([
-             hasattr(data, '__iter__'),
--            not isinstance(data, (basestring, list, tuple, collections.Mapping))
-+            not isinstance(data, (basestring, list, tuple, collections.abc.Mapping))
-         ])
- 
-         try:
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py	2021-11-05 15:29:12.000000000 -0400
-@@ -12,7 +12,7 @@
- from .compat import OrderedDict
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """A case-insensitive ``dict``-like object.
- 
-     Implements all methods and operations of
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py	2021-11-05 15:31:40.157748665 -0400
-@@ -262,7 +262,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py b/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py
---- a/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py	2021-11-05 15:29:12.000000000 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur a/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py b/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py
---- a/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py	2021-11-05 15:29:12.000000000 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py	2021-11-05 15:29:12.000000000 -0400
-@@ -319,7 +319,7 @@
- try:
-     callable = callable
- except NameError:   # pragma: no cover
--    from collections import Callable
-+    from collections.abc import Callable
- 
-     def callable(obj):
-         return isinstance(obj, Callable)
-@@ -475,7 +475,7 @@
- try:
-     from collections import ChainMap
- except ImportError: # pragma: no cover
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
- 
-     try:
-         from reprlib import recursive_repr as _recursive_repr
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,7 +1,7 @@
- from __future__ import absolute_import, division, unicode_literals
- 
- 
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- from xml.dom import minidom, Node
- import weakref
- 
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py	2021-11-05 15:29:12.000000000 -0400
-@@ -940,7 +940,7 @@
-     def __dir__(self):
-         return (dir(type(self)) + list(self.keys()))
- 
--collections.MutableMapping.register(ParseResults)
-+collections.abc.MutableMapping.register(ParseResults)
- 
- def col (loc,strg):
-     """Returns current column within a string, counting newlines as line separators.
-@@ -3223,7 +3223,7 @@
- 
-         if isinstance( exprs, basestring ):
-             self.exprs = [ ParserElement._literalStringClass( exprs ) ]
--        elif isinstance( exprs, collections.Iterable ):
-+        elif isinstance( exprs, collections.abc.Iterable ):
-             exprs = list(exprs)
-             # if sequence of strings provided, wrap with Literal
-             if all(isinstance(expr, basestring) for expr in exprs):
-@@ -4564,7 +4564,7 @@
-     symbols = []
-     if isinstance(strs,basestring):
-         symbols = strs.split()
--    elif isinstance(strs, collections.Iterable):
-+    elif isinstance(strs, collections.abc.Iterable):
-         symbols = list(strs)
-     else:
-         warnings.warn("Invalid argument to oneOf, expected string or iterable",
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -169,7 +169,7 @@
-     """
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py	2021-11-05 15:31:52.397745825 -0400
-@@ -174,10 +174,10 @@
-         if event not in self.hooks:
-             raise ValueError('Unsupported event specified, with event name "%s"' % (event))
- 
--        if isinstance(hook, collections.Callable):
-+        if isinstance(hook, collections.abc.Callable):
-             self.hooks[event].append(hook)
-         elif hasattr(hook, '__iter__'):
--            self.hooks[event].extend(h for h in hook if isinstance(h, collections.Callable))
-+            self.hooks[event].extend(h for h in hook if isinstance(h, collections.abc.Callable))
- 
-     def deregister_hook(self, event, hook):
-         """Deregister a previously registered hook.
-@@ -461,7 +461,7 @@
- 
-         is_stream = all([
-             hasattr(data, '__iter__'),
--            not isinstance(data, (basestring, list, tuple, collections.Mapping))
-+            not isinstance(data, (basestring, list, tuple, collections.abc.Mapping))
-         ])
- 
-         try:
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py	2021-11-05 15:32:02.765743413 -0400
-@@ -12,7 +12,7 @@
- from .compat import OrderedDict
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """A case-insensitive ``dict``-like object.
- 
-     Implements all methods and operations of
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py	2021-11-05 15:31:57.123744724 -0400
-@@ -262,7 +262,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/cookies.py b/third_party/python/pipenv/pipenv/vendor/requests/cookies.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/cookies.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -169,7 +169,7 @@
-     """
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/models.py b/third_party/python/pipenv/pipenv/vendor/requests/models.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/models.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/models.py	2021-11-05 15:32:09.732741793 -0400
-@@ -174,10 +174,10 @@
-         if event not in self.hooks:
-             raise ValueError('Unsupported event specified, with event name "%s"' % (event))
- 
--        if isinstance(hook, collections.Callable):
-+        if isinstance(hook, collections.abc.Callable):
-             self.hooks[event].append(hook)
-         elif hasattr(hook, '__iter__'):
--            self.hooks[event].extend(h for h in hook if isinstance(h, collections.Callable))
-+            self.hooks[event].extend(h for h in hook if isinstance(h, collections.abc.Callable))
- 
-     def deregister_hook(self, event, hook):
-         """Deregister a previously registered hook.
-@@ -461,7 +461,7 @@
- 
-         is_stream = all([
-             hasattr(data, '__iter__'),
--            not isinstance(data, (basestring, list, tuple, collections.Mapping))
-+            not isinstance(data, (basestring, list, tuple, collections.abc.Mapping))
-         ])
- 
-         try:
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/structures.py b/third_party/python/pipenv/pipenv/vendor/requests/structures.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/structures.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/structures.py	2021-11-05 15:29:12.000000000 -0400
-@@ -12,7 +12,7 @@
- from .compat import OrderedDict
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """A case-insensitive ``dict``-like object.
- 
-     Implements all methods and operations of
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/utils.py b/third_party/python/pipenv/pipenv/vendor/requests/utils.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/utils.py	2021-11-05 15:32:13.776740860 -0400
-@@ -262,7 +262,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py b/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py
---- a/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/pyyaml/lib3/yaml/constructor.py b/third_party/python/pyyaml/lib3/yaml/constructor.py
---- a/third_party/python/pyyaml/lib3/yaml/constructor.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pyyaml/lib3/yaml/constructor.py	2021-11-05 15:29:12.000000000 -0400
-@@ -123,7 +123,7 @@
-         mapping = {}
-         for key_node, value_node in node.value:
-             key = self.construct_object(key_node, deep=deep)
--            if not isinstance(key, collections.Hashable):
-+            if not isinstance(key, collections.abc.Hashable):
-                 raise ConstructorError("while constructing a mapping", node.start_mark,
-                         "found unhashable key", key_node.start_mark)
-             value = self.construct_object(value_node, deep=deep)
-diff -ur a/third_party/python/requests/requests/cookies.py b/third_party/python/requests/requests/cookies.py
---- a/third_party/python/requests/requests/cookies.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/third_party/python/requests/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -161,7 +161,7 @@
-     Use .get and .set and include domain and path args in order to be more specific."""
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/requests/requests/packages/urllib3/_collections.py b/third_party/python/requests/requests/packages/urllib3/_collections.py
---- a/third_party/python/requests/requests/packages/urllib3/_collections.py	2021-09-01 13:27:13.000000000 -0400
-+++ b/third_party/python/requests/requests/packages/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/requests/requests/structures.py b/third_party/python/requests/requests/structures.py
---- a/third_party/python/requests/requests/structures.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/requests/requests/structures.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- import collections
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """
-     A case-insensitive ``dict``-like object.
- 
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/requests/requests/utils.py b/third_party/python/requests/requests/utils.py
---- a/third_party/python/requests/requests/utils.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/requests/requests/utils.py	2021-11-05 15:30:55.420759045 -0400
-@@ -189,7 +189,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py b/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py
---- a/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py	2021-11-05 15:29:12.000000000 -0400
-@@ -481,7 +481,7 @@
- try:
-     from collections import ChainMap
- except ImportError: # pragma: no cover
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
- 
-     try:
-         from reprlib import recursive_repr as _recursive_repr
-diff -ur a/third_party/python/voluptuous/voluptuous/schema_builder.py b/third_party/python/voluptuous/voluptuous/schema_builder.py
---- a/third_party/python/voluptuous/voluptuous/schema_builder.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/voluptuous/voluptuous/schema_builder.py	2021-11-05 15:30:32.399764374 -0400
-@@ -280,7 +280,7 @@
-             return schema.__voluptuous_compile__(self)
-         if isinstance(schema, Object):
-             return self._compile_object(schema)
--        if isinstance(schema, collections.Mapping):
-+        if isinstance(schema, collections.abc.Mapping):
-             return self._compile_dict(schema)
-         elif isinstance(schema, list):
-             return self._compile_list(schema)
diff --git a/srcpkgs/firefox-esr/patches/fix-wasm-arm.patch b/srcpkgs/firefox-esr/patches/fix-wasm-arm.patch
deleted file mode 100644
index a6035e876163..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-wasm-arm.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- a/js/src/wasm/WasmSignalHandlers.cpp
-+++ b/js/src/wasm/WasmSignalHandlers.cpp
-@@ -243,9 +243,9 @@
- // If you run into compile problems on a tier-3 platform, you can disable the
- // emulation here.
- 
--#if defined(__linux__) && defined(__arm__)
--#  define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
--#endif
-+// #if defined(__linux__) && defined(__arm__)
-+// #  define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
-+// #endif
- 
- #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
- #  include <sys/user.h>
diff --git a/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch b/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch
index 70910da5861e..5d17021a99f4 100644
--- a/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch
+++ b/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch
@@ -1,5 +1,5 @@
---- a/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:20:52.298793223 +0100
-+++ b/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:21:48.250250850 +0100
+--- a/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:20:52.298793223 +0100
++++ b/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:21:48.250250850 +0100
 @@ -14,7 +14,7 @@
  #ifndef __GLIBC_PREREQ
  #define __GLIBC_PREREQ(a, b) 0
diff --git a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
index 154aad63e33a..ebf48deb9720 100644
--- a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
+++ b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
@@ -12,15 +12,14 @@ index 53fc3c9937f7..b23771ab80fa 100644
  
  namespace mozilla {
  
-@@ -14,6 +15,11 @@ namespace mozilla {
+@@ -14,6 +15,10 @@ 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);
++         platform->SupportsMimeType("audio/flac"_ns);
  #else
    // Until bug 1295886 is fixed.
    return false;
diff --git a/srcpkgs/firefox-esr/patches/musl-rust.configure.patch b/srcpkgs/firefox-esr/patches/musl-rust.configure.patch
deleted file mode 100644
index 0b2f7dee1d3c..000000000000
--- a/srcpkgs/firefox-esr/patches/musl-rust.configure.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- a/build/moz.configure/rust.configure	2019-10-28 12:05:04.930404603 +0700
-+++ b/build/moz.configure/rust.configure	2019-10-28 12:09:42.742338957 +0700
-@@ -297,11 +297,20 @@
-                     suffix = 'hf'
-                 else:
-                     suffix = ''
-+
-+                narrowed = []
-                 for p in prefixes:
-                     for c in candidates:
--                        if c.rust_target.startswith('{}-'.format(p)) and \
--                                c.rust_target.endswith(suffix):
--                            return c.rust_target
-+                        if c.rust_target.startswith('{}-'.format(p)):
-+                            narrowed.append(c.rust_target)
-+
-+                for target in narrowed:
-+                    if target.endswith(host_or_target.raw_os):
-+                        return target
-+
-+                for target in narrowed:
-+                    if target.endswith(suffix):
-+                        return target
- 
-             # See if we can narrow down on the exact alias
-             narrowed = [c for c in candidates if c.target.alias == host_or_target.alias]
diff --git a/srcpkgs/firefox-esr/patches/rust-configure.patch b/srcpkgs/firefox-esr/patches/rust-configure.patch
index 07b98d6c7cae..61fb2ba891d9 100644
--- a/srcpkgs/firefox-esr/patches/rust-configure.patch
+++ b/srcpkgs/firefox-esr/patches/rust-configure.patch
@@ -1,42 +1,112 @@
 Mozilla rustc check does not support crossbuild: let's remove it
 Remove calls to unwrap_rustup, they fail if rustup isn't present
 
---- a/build/moz.configure/rust.configure	2019-10-17 04:19:59.000000000 +0700
-+++ b/build/moz.configure/rust.configure	2019-10-22 11:48:55.616022140 +0700
-@@ -78,9 +78,6 @@
- 
+Do not try to figure out the rust target as it is broken on musl
+instead use what is set in RUST_TARGET
+
+Skip extra checks on cross builds (broken for arm*)
+
+--- a/build/moz.configure/rust.configure	2020-12-12 01:35:33.000000000 +0100
++++ b/build/moz.configure/rust.configure	2020-12-15 19:45:16.467750787 +0100
+@@ -91,9 +91,6 @@
      return unwrap
  
--rustc = unwrap_rustup(rustc, 'rustc')
--cargo = unwrap_rustup(cargo, 'cargo')
+ 
+-rustc = unwrap_rustup(rustc, "rustc")
+-cargo = unwrap_rustup(cargo, "cargo")
 -
  
- set_config('CARGO', cargo)
- set_config('RUSTC', rustc)
-@@ -348,26 +345,6 @@
+ set_config("CARGO", cargo)
+ set_config("RUSTC", rustc)
+@@ -260,7 +257,9 @@
+         data.setdefault(key, []).append(namespace(rust_target=t, target=info))
+     return data
+ 
+-
++@imports('os')
++@imports(_from='mozbuild.util', _import='ensure_unicode')
++@imports(_from='mozbuild.util', _import='system_encoding')
+ def detect_rustc_target(
+     host_or_target, compiler_info, arm_target, rust_supported_targets
+ ):
+@@ -382,12 +381,12 @@
+ 
+         return None
+ 
+-    rustc_target = find_candidate(candidates)
++    rustc_target = os.environ['RUST_TARGET']
  
-             os.write(in_fd, source)
-             os.close(in_fd)
+     if rustc_target is None:
+         die("Don't know how to translate {} for rustc".format(host_or_target.alias))
+ 
+-    return rustc_target
++    return ensure_unicode(rustc_target, system_encoding)
+ 
+ 
+ @imports("os")
+@@ -410,35 +409,6 @@
+ 
+         os.write(in_fd, ensure_binary(source))
+         os.close(in_fd)
 -
--            cmd = [
--                rustc,
--                '--crate-type', 'staticlib',
--                target_arg,
--                '-o', out_path,
--                in_path,
--            ]
+-        cmd = [
+-            rustc,
+-            "--crate-type",
+-            "staticlib",
+-            target_arg,
+-            "-o",
+-            out_path,
+-            in_path,
+-        ]
 -
--            def failed():
--                die(dedent('''\
--                Cannot compile for {} with {}
--                The target may be unsupported, or you may not have
--                a rust std library for that target installed. Try:
+-        def failed():
+-            die(
+-                dedent(
+-                    """\
+-            Cannot compile for {} with {}
+-            The target may be unsupported, or you may not have
+-            a rust std library for that target installed. Try:
 -
--                  rustup target add {}
--                '''.format(host_or_target.alias, rustc, rustc_target)))
--            check_cmd_output(*cmd, onerror=failed)
--            if not os.path.exists(out_path) or os.path.getsize(out_path) == 0:
--                failed()
-         finally:
-             os.remove(in_path)
-             os.remove(out_path)
+-              rustup target add {}
+-            """.format(
+-                        host_or_target.alias, rustc, rustc_target
+-                    )
+-                )
+-            )
+-
+-        check_cmd_output(*cmd, onerror=failed)
+-        if not os.path.exists(out_path) or os.path.getsize(out_path) == 0:
+-            failed()
+     finally:
+         os.remove(in_path)
+         os.remove(out_path)
+@@ -462,28 +432,7 @@
+         host, compiler_info, arm_target, rust_supported_targets
+     )
+     if rustc_target != rustc_host:
+-        if host.alias == rustc_target:
+-            configure_host = host.alias
+-        else:
+-            configure_host = "{}/{}".format(host.alias, rustc_target)
+-        die(
+-            dedent(
+-                """\
+-        The rust compiler host ({rustc}) is not suitable for the configure host ({configure}).
+-
+-        You can solve this by:
+-        * Set your configure host to match the rust compiler host by editing your
+-        mozconfig and adding "ac_add_options --host={rustc}".
+-        * Or, install the rust toolchain for {configure}, if supported, by running
+-        "rustup default stable-{rustc_target}"
+-        """.format(
+-                    rustc=rustc_host,
+-                    configure=configure_host,
+-                    rustc_target=rustc_target,
+-                )
+-            )
+-        )
+-    assert_rust_compile(host, rustc_target, rustc)
++        return rustc_host
+     return rustc_target
+ 
+ 
diff --git a/srcpkgs/firefox-esr/patches/rust-has-i128.patch b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
deleted file mode 100644
index c25a185c1c11..000000000000
--- a/srcpkgs/firefox-esr/patches/rust-has-i128.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-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
-
---- a/third_party/rust/num-traits/build.rs	2020-02-14 23:57:25.985355610 +0100
-+++ b/third_party/rust/num-traits/build.rs	2020-02-14 23:58:36.255710188 +0100
-@@ -1,14 +1,5 @@
--extern crate autocfg;
--
--use std::env;
--
- fn main() {
--    let ac = autocfg::new();
--    if ac.probe_type("i128") {
--        println!("cargo:rustc-cfg=has_i128");
--    } else if env::var_os("CARGO_FEATURE_I128").is_some() {
--        panic!("i128 support was not detected!");
--    }
-+    println!("cargo:rustc-cfg=has_i128");
- 
-     autocfg::rerun_path("build.rs");
- }
diff --git a/srcpkgs/firefox-esr/patches/sandbox-fork.patch b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
index 328943cb0013..d4584e74b91c 100644
--- a/srcpkgs/firefox-esr/patches/sandbox-fork.patch
+++ b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
@@ -2,12 +2,14 @@ make SYS_fork non-fatal, musl uses it for fork(2)
 
 --- a/security/sandbox/linux/SandboxFilter.cpp
 +++ b/security/sandbox/linux/SandboxFilter.cpp
-@@ -1253,6 +1253,8 @@
+@@ -1420,6 +1420,10 @@
          // usually do something reasonable on error.
        case __NR_clone:
          return ClonePolicy(Error(EPERM));
++#  ifdef __NR_fork
 +      case __NR_fork:
 +        return Error(ENOSYS);
++#  endif
  
  #  ifdef __NR_fadvise64
        case __NR_fadvise64:
diff --git a/srcpkgs/firefox-esr/patches/sndio.patch b/srcpkgs/firefox-esr/patches/sndio.patch
index 959fc1ec913a..68628bea8d8f 100644
--- a/srcpkgs/firefox-esr/patches/sndio.patch
+++ b/srcpkgs/firefox-esr/patches/sndio.patch
@@ -42,11 +42,11 @@
  if CONFIG['OS_TARGET'] == 'Darwin':
 --- a/build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
 +++ b/build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
-@@ -210,6 +210,7 @@
+@@ -88,6 +88,7 @@
  @old_configure_options(
-     '--cache-file',
-     '--datadir',
-+    '--enable-sndio',
-     '--enable-crashreporter',
-     '--enable-dbus',
-     '--enable-debug-js-modules',
+     "--cache-file",
+     "--datadir",
++    "--enable-sndio",
+     "--enable-crashreporter",
+     "--enable-dbus",
+     "--enable-debug-js-modules",
diff --git a/srcpkgs/firefox-esr/template b/srcpkgs/firefox-esr/template
index 33fa4dfaf2a0..35e7b0be93c8 100644
--- a/srcpkgs/firefox-esr/template
+++ b/srcpkgs/firefox-esr/template
@@ -3,58 +3,63 @@
 # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-esr-i18n".
 #
 pkgname=firefox-esr
-version=78.14.0
+version=91.3.0
 revision=1
 wrksrc="firefox-${version}"
-build_helper="rust qemu"
+build_helper="rust"
+short_desc="Mozilla Firefox web browser - Extended Support Release"
+maintainer="Orphaned <orphan@voidlinux.org>"
+license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
+homepage="https://www.mozilla.org/firefox/"
+distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
+checksum=128b5349f112d8a0fd8698f3645ed43ea29d4b95047b7c4fd770b95d0661e96c
+
+lib32disabled=yes
+
 hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo
  llvm clang nodejs-lts cbindgen python nasm which tar"
-makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
+makedepends="nss-devel libjpeg-turbo-devel gtk+3-devel icu-devel
  pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
  libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel)
  $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
  $(vopt_if xscreensaver libXScrnSaver-devel)
  $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)"
-depends="nss>=3.53 desktop-file-utils hicolor-icon-theme"
-short_desc="Firefox browser - Extended Support Release"
-maintainer="Orphaned <orphan@voidlinux.org>"
-license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
-homepage="https://www.mozilla.org/firefox/organizations/"
-distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
-checksum=aa0e28a4150c33a165120a24f20e0373e74635c9f812732a08850d71cda3b2fa
-lib32disabled=yes
+depends="nss>=3.66 nspr>=4.32 desktop-file-utils hicolor-icon-theme"
 conflicts="firefox>=0"
 
 build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 
-if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
-	makedepends+=" libatomic-devel"
-fi
-
 case $XBPS_TARGET_MACHINE in
-	armv[56]*) broken="required NEON extensions are not supported on armv[56]" ;;
+	armv[56]*) broken="required NEON extensions are not supported on armv6" ;;
 	ppc64*) ;;
 	ppc*) broken="xptcall bitrot" ;;
 esac
 
-CXXFLAGS="-Wno-class-memaccess -Wno-unused-function"
+if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
+	makedepends+=" libatomic-devel"
+fi
+
+# work around large debug symbols on 32-bit hosts
+# cargo:warning=cc1plus: out of memory allocating 65536 bytes after a total of 1010126848 bytes
+if [ "$XBPS_WORDSIZE" = "32" ]; then
+	nodebug=yes
+fi
 
-# We need this because cargo verifies checksums of all files
-# in vendor crates when it builds and gives us no way to
-# override or update the file sanely... so just clear out the file list
+# we need this because cargo verifies checksums of all files in vendor
+# crates when it builds and gives us no way to override or update the
+# file sanely... so just clear out the file list
 _clear_vendor_checksums() {
 	sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
 }
 
 post_extract() {
-	if [ "$XBPS_TARGET_LIBC" = musl ]; then
+	case "$XBPS_TARGET_MACHINE" in
+	*-musl)
 		cp "${FILESDIR}/stab.h" toolkit/crashreporter/google-breakpad/src/
-	fi
-	# Google API key (see http://www.chromium.org/developers/how-tos/api-keys)
-	# Note: This is for Void Linux use ONLY.
-	echo -n "AIzaSyCIFdBA7eQP43R6kXRwTq7j6Mvj1ITze90" > google-api-key
+		;;
+	esac
 
 	# Mozilla API keys (see https://location.services.mozilla.com/api)
 	# Note: This is for Void Linux use ONLY.
@@ -63,20 +68,20 @@ post_extract() {
 
 post_patch() {
 	_clear_vendor_checksums num-traits
-	_clear_vendor_checksums glslopt
 }
 
 do_build() {
-	cp ${FILESDIR}/mozconfig .mozconfig
+	cp "${FILESDIR}/mozconfig" "${wrksrc}/.mozconfig"
 
-	if [ "$XBPS_TARGET_LIBC" = musl ]; then
+	case "$XBPS_TARGET_MACHINE" in
+	*-musl)
 		echo "ac_add_options --disable-jemalloc" >>.mozconfig
 		echo "ac_add_options --disable-gold" >>.mozconfig
-		echo "ac_add_options --enable-release" >>.mozconfig
-	fi
+		;;
+	esac
 
 	case "$XBPS_TARGET_MACHINE" in
-	arm*|x86_64*|i686*)
+	x86_64*|i686*|arm*)
 		echo "ac_add_options --disable-elf-hack" >>.mozconfig
 		;;
 	esac
@@ -98,16 +103,17 @@ do_build() {
 
 		export BINDGEN_CFLAGS="--target=$XBPS_CROSS_TRIPLET \
 			--sysroot=${XBPS_CROSS_BASE} ${BINDGEN_INCLUDE_FLAGS}"
-		export HOST_CC="${CC_host}"
+		export HOST_CC=cc
 		export TARGET_CC="${CC}"
 		export HOST_CFLAGS="${XBPS_CFLAGS}"
 		export HOST_CXXFLAGS="${XBPS_CXXFLAGS}"
-		echo "ac_cv_sqlite_secure_delete=yes" >> .mozconfig
-		echo "ac_cv_sqlite_threadsafe=yes" >> .mozconfig
-		echo "ac_cv_sqlite_enable_fts3=yes" >> .mozconfig
-		echo "ac_cv_sqlite_dbstat_vtab=yes" >> .mozconfig
-		echo "ac_cv_sqlite_enable_unlock_notify=yes" >> .mozconfig
-		echo "ac_cv_prog_hostcxx_works=1" >> .mozconfig
+		export ac_cv_sqlite_secure_delete=yes \
+			ac_cv_sqlite_threadsafe=yes \
+			ac_cv_sqlite_enable_fts3=yes \
+			ac_cv_sqlite_dbstat_vtab=yes \
+			ac_cv_sqlite_enable_unlock_notify=yes \
+			ac_cv_prog_hostcxx_works=1
+
 		echo "ac_add_options --target=$XBPS_CROSS_TRIPLET" >>.mozconfig
 		echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig
 	else
@@ -126,19 +132,18 @@ do_build() {
 
 	# work around large debug symbols on 32-bit hosts
 	if [ "$XBPS_WORDSIZE" = "32" ]; then
-		export CFLAGS="${CFLAGS/-g/-g1}"
-		export CXXFLAGS="${CXXFLAGS/-g/-g1}"
+		echo "ac_add_options --disable-debug-symbols" >>.mozconfig
+		echo "ac_add_options --disable-debug" >>.mozconfig
 		export LDFLAGS+=" -Wl,--no-keep-memory"
 		# patch the rust debug level, this is hardcoded
-		sed -i "s/debug_info = '2'/debug_info = '1'/" \
+		vsed -i 's/debug_info = "2"/debug_info = "0"/' \
 		build/moz.configure/toolchain.configure
 	fi
 
-	# FIXME: incompatible with rust 1.48 in this release
-	#case "$XBPS_TARGET_MACHINE" in
-	#aarch64*|i686*|x86_64*)
-	#	echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
-	#esac
+	case "$XBPS_TARGET_MACHINE" in
+	aarch64*|i686*|x86_64*)
+		echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
+	esac
 
 	export LDFLAGS+=" -Wl,-rpath=/usr/lib/firefox"
 
@@ -153,9 +158,7 @@ do_build() {
 
 	export AS=$CC
 
-	cat >>.mozconfig <<EOF
-ac_add_options --with-google-location-service-api-keyfile="${wrksrc}/google-api-key"
-ac_add_options --with-google-safebrowsing-api-keyfile="${wrksrc}/google-api-key"
+	cat <<! >>.mozconfig
 ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key"
 ac_add_options $(vopt_enable alsa)
 ac_add_options $(vopt_enable jack)
@@ -164,42 +167,28 @@ ac_add_options $(vopt_enable dbus)
 ac_add_options $(vopt_enable dbus necko-wifi)
 ac_add_options $(vopt_enable pulseaudio)
 ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
-EOF
+!
+
 	rm -f old-configure
 	./mach build
-
-	# Make langpacks for all languages
-	dir=$(ls -d obj-*/browser/locales)
-	cd ${wrksrc}/${dir}
-	for lang in ${languages[*]}; do
-		msg_normal "Making langpack for ${lang} ...\n"
-		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
-	done
 }
-
 do_install() {
 	export MACH_USE_SYSTEM_PYTHON=1
 	DESTDIR="$DESTDIR" ./mach install
 
-	vbin ${FILESDIR}/firefox-wayland
 	vinstall ${FILESDIR}/vendor.js 644 usr/lib/firefox/browser/defaults/preferences
 	vinstall taskcluster/docker/firefox-snap/firefox.desktop 644 usr/share/applications
 
-	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
+	for i in 16x16 22x22 24x24 32x32 48x48 128x128 256x256; do
 		vinstall ${wrksrc}/browser/branding/official/default${i%x*}.png 644 \
 			usr/share/icons/hicolor/${i}/apps firefox.png
 	done
-	vinstall ${wrksrc}/browser/branding/official/default256.png 644 \
-		usr/share/pixmaps firefox.png
 
-	# Use system-provided dictionaries
-	rm -rf ${DESTDIR}/usr/lib/firefox/{dictionaries,hyphenation}
-	ln -s /usr/share/hunspell ${DESTDIR}/usr/lib/firefox/dictionaries
-	ln -s /usr/share/hyphen ${DESTDIR}/usr/lib/firefox/hyphenation
+	# We don't want the development stuff
+	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
 
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf firefox ${DESTDIR}/usr/lib/firefox/firefox-bin
 
-	# Remove the development files - noone uses them
-	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
+	vbin ${FILESDIR}/firefox-wayland
 }
diff --git a/srcpkgs/firefox-esr/update b/srcpkgs/firefox-esr/update
index 61f68de4f42a..946c8a7aaa49 100644
--- a/srcpkgs/firefox-esr/update
+++ b/srcpkgs/firefox-esr/update
@@ -1,2 +1,2 @@
-site="${MOZILLA_SITE}/firefox/releases/"
-pattern="[\d.]+(?=esr)"
+site="${MOZILLA_SITE}/${pkgname}/releases/"
+pattern="\">\K[0-9.]+(?=/</a>)"

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

* Re: [PR REVIEW] firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
@ 2021-11-20 15:05 ` abenson
  2021-11-20 15:06 ` abenson
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: abenson @ 2021-11-20 15:05 UTC (permalink / raw)
  To: ml

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

New review comment by abenson on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#discussion_r753683430

Comment:
why?

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

* Re: firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
  2021-11-20 15:05 ` [PR REVIEW] " abenson
@ 2021-11-20 15:06 ` abenson
  2021-11-21  9:58 ` [PR PATCH] [Updated] " jdnuemm
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: abenson @ 2021-11-20 15:06 UTC (permalink / raw)
  To: ml

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

New comment by abenson on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#issuecomment-974662677

Comment:
I would prefer this and the other PR be combined since they need to be synced anyway.

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

* Re: [PR PATCH] [Updated] firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
  2021-11-20 15:05 ` [PR REVIEW] " abenson
  2021-11-20 15:06 ` abenson
@ 2021-11-21  9:58 ` jdnuemm
  2021-11-21 10:01 ` [PR REVIEW] " jdnuemm
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: jdnuemm @ 2021-11-21  9:58 UTC (permalink / raw)
  To: ml

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

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

https://github.com/jdnuemm/void-packages firefox-esr-91.3.0
https://github.com/void-linux/void-packages/pull/34167

firefox-esr: update to 91.3.0.
Testing the changes:

- I tested the changes in this PR: briefly

Local build testing:

- I built this PR locally for my native architecture, x86_64-glibc

Note:

I use the Patches from Thunderbird and sync the template with Firefox. 

[skip CI]

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

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

From 6384016299464666803cbdc7c29f14cbf041bf7a Mon Sep 17 00:00:00 2001
From: Johannes Daniel Nuemm <daniel.nuemm@blacktre.es>
Date: Thu, 18 Nov 2021 18:33:41 +0100
Subject: [PATCH 1/2] firefox-esr: update to 91.3.0.

---
 srcpkgs/firefox-esr/files/mozconfig           |   1 +
 srcpkgs/firefox-esr/files/vendor.js           |   2 +-
 .../patches/avoid-redefinition.patch          |  15 +
 srcpkgs/firefox-esr/patches/fix-cross.patch   |  16 -
 .../patches/fix-fortify-inline.patch          |  11 -
 .../firefox-esr/patches/fix-i386-fdlibm.patch |  18 +
 .../firefox-esr/patches/fix-python3.10.patch  | 826 ------------------
 .../firefox-esr/patches/fix-wasm-arm.patch    |  15 -
 .../patches/fix-webrtc-glibcisms.patch        |   4 +-
 .../firefox-esr/patches/flac-no-ffvpx.patch   |   5 +-
 .../patches/musl-rust.configure.patch         |  26 -
 .../firefox-esr/patches/rust-configure.patch  | 132 ++-
 .../firefox-esr/patches/rust-has-i128.patch   |  21 -
 .../firefox-esr/patches/sandbox-fork.patch    |   4 +-
 srcpkgs/firefox-esr/patches/sndio.patch       |  14 +-
 srcpkgs/firefox-esr/template                  | 127 ++-
 16 files changed, 208 insertions(+), 1029 deletions(-)
 create mode 100644 srcpkgs/firefox-esr/patches/avoid-redefinition.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-cross.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-fortify-inline.patch
 create mode 100644 srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-python3.10.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/fix-wasm-arm.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/musl-rust.configure.patch
 delete mode 100644 srcpkgs/firefox-esr/patches/rust-has-i128.patch

diff --git a/srcpkgs/firefox-esr/files/mozconfig b/srcpkgs/firefox-esr/files/mozconfig
index 708ee9eded9b..fa5a7a42e04b 100644
--- a/srcpkgs/firefox-esr/files/mozconfig
+++ b/srcpkgs/firefox-esr/files/mozconfig
@@ -32,4 +32,5 @@ ac_add_options --enable-optimize="$CFLAGS"
 
 ac_add_options --enable-official-branding
 ac_add_options --enable-application=browser
+
 ac_add_options --allow-addon-sideload
diff --git a/srcpkgs/firefox-esr/files/vendor.js b/srcpkgs/firefox-esr/files/vendor.js
index d8d606bc15d7..5be4f1b5f3ff 100644
--- a/srcpkgs/firefox-esr/files/vendor.js
+++ b/srcpkgs/firefox-esr/files/vendor.js
@@ -1,5 +1,5 @@
 // Use LANG environment variable to choose locale
-pref("intl.locale.matchOS", true);
+pref("intl.locale.requested", "");
 
 // Disable default browser checking.
 pref("browser.shell.checkDefaultBrowser", false);
diff --git a/srcpkgs/firefox-esr/patches/avoid-redefinition.patch b/srcpkgs/firefox-esr/patches/avoid-redefinition.patch
new file mode 100644
index 000000000000..867d37c62a90
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/avoid-redefinition.patch
@@ -0,0 +1,15 @@
+Author: Rasmus Thomsen <oss@cogitri.dev>
+Reason: FF is mixing userspace net headers (net/if.h) and kernelspace ones
+(linux/if.h), leading to redefinitions. We need to include net/if.h before
+linux/if.h because linux/if.h has redifinition guards whereas net/if.h doesnt
+Upstream: No
+--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c	2020-07-28 19:24:32.359751046 +0200
++++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c	2020-07-28 19:24:37.856343751 +0200
+@@ -31,6 +31,7 @@
+ */
+ 
+ #if defined(LINUX)
++#include <net/if.h>
+ #include "addrs-netlink.h"
+ #include <csi_platform.h>
+ #include <assert.h>
diff --git a/srcpkgs/firefox-esr/patches/fix-cross.patch b/srcpkgs/firefox-esr/patches/fix-cross.patch
deleted file mode 100644
index fad8f9060c46..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-cross.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-terrible hack to fix cross builds
-overwrite HOST_* flags to get rid of -MF
-
-note: this patch was used from firefox-77 until 80, dropped with the update to 81
-
---- a/third_party/rust/glslopt/build.rs
-+++ b/third_party/rust/glslopt/build.rs
-@@ -28,6 +28,8 @@
-     env::remove_var(format!("CXXFLAGS_{}", &target));
-     env::remove_var(format!("CFLAGS_{}", target.replace("-", "_")));
-     env::remove_var(format!("CXXFLAGS_{}", target.replace("-", "_")));
-+    env::set_var("HOST_CFLAGS", "-O2");
-+    env::set_var("HOST_CXXFLAGS", "-O2");
-
-     configure(&mut cc::Build::new())
-         .warnings(false)
diff --git a/srcpkgs/firefox-esr/patches/fix-fortify-inline.patch b/srcpkgs/firefox-esr/patches/fix-fortify-inline.patch
deleted file mode 100644
index 2498c57fc738..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-fortify-inline.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h
-+++ b/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h
-@@ -27,8 +27,5 @@
- typedef int16_t    int16;
- typedef unsigned short ushort;
- typedef unsigned long  ulong;
--#ifndef __GNUC_STDC_INLINE__
--#define inline
--#endif
- 
- #endif /* _SDP_OS_DEFS_H_ */
diff --git a/srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch b/srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch
new file mode 100644
index 000000000000..831e5e03678d
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-i386-fdlibm.patch
@@ -0,0 +1,18 @@
+# error: typedef redefinition with different types ('__double_t' (aka 'double') vs 'long double')
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1729459
+
+--- a/modules/fdlibm/src/math_private.h
++++ b/modules/fdlibm/src/math_private.h
+@@ -30,7 +30,12 @@
+  * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+  */
+ 
++#if defined(__linux__) && defined(__i386__)
++// rely on glibc's double_t
++typedef long double __double_t;
++#else
+ typedef double      __double_t;
++#endif
+ typedef __double_t  double_t;
+ 
+ /*
diff --git a/srcpkgs/firefox-esr/patches/fix-python3.10.patch b/srcpkgs/firefox-esr/patches/fix-python3.10.patch
deleted file mode 100644
index 143e58782581..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-python3.10.patch
+++ /dev/null
@@ -1,826 +0,0 @@
-diff -ur a/python/mach/mach/config.py b/python/mach/mach/config.py
---- a/python/mach/mach/config.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mach/mach/config.py	2021-11-05 15:29:12.000000000 -0400
-@@ -144,7 +144,7 @@
-     return _
- 
- 
--class ConfigSettings(collections.Mapping):
-+class ConfigSettings(collections.abc.Mapping):
-     """Interface for configuration settings.
- 
-     This is the main interface to the configuration.
-@@ -190,7 +190,7 @@
-     will result in exceptions being raised.
-     """
- 
--    class ConfigSection(collections.MutableMapping, object):
-+    class ConfigSection(collections.abc.MutableMapping, object):
-         """Represents an individual config section."""
-         def __init__(self, config, name, settings):
-             object.__setattr__(self, '_config', config)
-diff -ur a/python/mach/mach/decorators.py b/python/mach/mach/decorators.py
---- a/python/mach/mach/decorators.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mach/mach/decorators.py	2021-11-05 15:29:12.000000000 -0400
-@@ -140,7 +140,7 @@
-               'Conditions argument must take a list ' + \
-               'of functions. Found %s instead.'
- 
--        if not isinstance(command.conditions, collections.Iterable):
-+        if not isinstance(command.conditions, collections.abc.Iterable):
-             msg = msg % (command.name, type(command.conditions))
-             raise MachError(msg)
- 
-diff -ur a/python/mach/mach/main.py b/python/mach/mach/main.py
---- a/python/mach/mach/main.py	2021-09-01 13:26:23.000000000 -0400
-+++ b/python/mach/mach/main.py	2021-11-05 15:29:12.000000000 -0400
-@@ -16,7 +16,7 @@
- import sys
- import traceback
- import uuid
--from collections import Iterable
-+from collections.abc import Iterable
- 
- from six import string_types
- 
-diff -ur a/python/mozbuild/mozbuild/backend/configenvironment.py b/python/mozbuild/mozbuild/backend/configenvironment.py
---- a/python/mozbuild/mozbuild/backend/configenvironment.py	2021-09-01 13:26:34.000000000 -0400
-+++ b/python/mozbuild/mozbuild/backend/configenvironment.py	2021-11-05 15:29:12.000000000 -0400
-@@ -9,7 +9,8 @@
- import sys
- import json
- 
--from collections import Iterable, OrderedDict
-+from collections import OrderedDict
-+from collections.abc import Iterable
- from types import ModuleType
- 
- import mozpack.path as mozpath
-diff -ur a/python/mozbuild/mozbuild/makeutil.py b/python/mozbuild/mozbuild/makeutil.py
---- a/python/mozbuild/mozbuild/makeutil.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mozbuild/mozbuild/makeutil.py	2021-11-05 15:29:12.000000000 -0400
-@@ -7,7 +7,7 @@
- import os
- import re
- import six
--from collections import Iterable
-+from collections.abc import Iterable
- 
- 
- class Makefile(object):
-diff -ur a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
---- a/python/mozbuild/mozbuild/util.py	2021-09-01 13:26:18.000000000 -0400
-+++ b/python/mozbuild/mozbuild/util.py	2021-11-05 15:29:12.000000000 -0400
-@@ -782,7 +782,7 @@
-         self._strings = StrictOrderingOnAppendList()
-         self._children = {}
- 
--    class StringListAdaptor(collections.Sequence):
-+    class StringListAdaptor(collections.abc.Sequence):
-         def __init__(self, hsl):
-             self._hsl = hsl
- 
-diff -ur a/testing/marionette/client/marionette_driver/wait.py b/testing/marionette/client/marionette_driver/wait.py
---- a/testing/marionette/client/marionette_driver/wait.py	2021-09-01 13:26:30.000000000 -0400
-+++ b/testing/marionette/client/marionette_driver/wait.py	2021-11-05 15:29:12.000000000 -0400
-@@ -82,7 +82,7 @@
- 
-         exceptions = []
-         if ignored_exceptions is not None:
--            if isinstance(ignored_exceptions, collections.Iterable):
-+            if isinstance(ignored_exceptions, collections.abc.Iterable):
-                 exceptions.extend(iter(ignored_exceptions))
-             else:
-                 exceptions.append(ignored_exceptions)
-diff -ur a/testing/mozbase/manifestparser/manifestparser/filters.py b/testing/mozbase/manifestparser/manifestparser/filters.py
---- a/testing/mozbase/manifestparser/manifestparser/filters.py	2021-09-01 13:26:23.000000000 -0400
-+++ b/testing/mozbase/manifestparser/manifestparser/filters.py	2021-11-05 15:29:12.000000000 -0400
-@@ -12,7 +12,8 @@
- 
- import itertools
- import os
--from collections import defaultdict, MutableSequence
-+from collections import defaultdict
-+from collections.abc import MutableSequence
- 
- import six
- from six import string_types
-diff -ur a/testing/mozbase/versioninfo.py b/testing/mozbase/versioninfo.py
---- a/testing/mozbase/versioninfo.py	2021-09-01 13:26:23.000000000 -0400
-+++ b/testing/mozbase/versioninfo.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- 
- from __future__ import absolute_import, print_function
- 
--from collections import Iterable
-+from collections.abc import Iterable
- from distutils.version import StrictVersion
- import argparse
- import os
-diff -ur a/testing/web-platform/tests/tools/manifest/typedata.py b/testing/web-platform/tests/tools/manifest/typedata.py
---- a/testing/web-platform/tests/tools/manifest/typedata.py	2021-09-01 13:26:40.000000000 -0400
-+++ b/testing/web-platform/tests/tools/manifest/typedata.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,4 +1,4 @@
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- 
- from six import itervalues, iteritems
- 
-diff -ur a/testing/web-platform/tests/tools/manifest/vcs.py b/testing/web-platform/tests/tools/manifest/vcs.py
---- a/testing/web-platform/tests/tools/manifest/vcs.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/manifest/vcs.py	2021-11-05 15:29:12.000000000 -0400
-@@ -3,7 +3,7 @@
- import os
- import stat
- from collections import deque
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- 
- from six import with_metaclass, PY2
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py b/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py
---- a/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py	2021-09-01 13:26:56.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/attrs/tests/test_funcs.py	2021-11-05 15:29:12.000000000 -0400
-@@ -4,7 +4,8 @@
- 
- from __future__ import absolute_import, division, print_function
- 
--from collections import Mapping, OrderedDict, Sequence
-+from collections import OrderedDict
-+from collections.abc import Mapping, Sequence
- 
- import pytest
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
---- a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py	2021-11-05 15:32:28.817737357 -0400
-@@ -88,7 +88,7 @@
-         )
- 
- 
--class Settings(collections.MutableMapping):
-+class Settings(collections.abc.MutableMapping):
-     """
-     An object that encapsulates HTTP/2 settings state.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py
---- a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,6 +1,6 @@
- from __future__ import absolute_import, division, unicode_literals
- 
--from collections import Mapping
-+from collections.abc import Mapping
- 
- 
- class Trie(Mapping):
-diff -ur a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py
---- a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,7 +1,7 @@
- from __future__ import absolute_import, division, unicode_literals
- 
- 
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- from xml.dom import minidom, Node
- import weakref
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py	2021-11-05 15:29:12.000000000 -0400
-@@ -10,7 +10,7 @@
- from hyper.common.util import to_bytestring, to_bytestring_tuple
- 
- 
--class HTTPHeaderMap(collections.MutableMapping):
-+class HTTPHeaderMap(collections.abc.MutableMapping):
-     """
-     A structure that contains HTTP headers.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py	2021-09-01 13:26:56.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py	2021-11-05 15:29:12.000000000 -0400
-@@ -151,7 +151,7 @@
-         )
- 
- 
--class Settings(collections.MutableMapping):
-+class Settings(collections.abc.MutableMapping):
-     """
-     An object that encapsulates HTTP/2 settings state.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py	2021-11-05 15:29:12.000000000 -0400
-@@ -10,7 +10,7 @@
- import socket
- import base64
- 
--from collections import Iterable, Mapping
-+from collections.abc import Iterable, Mapping
- 
- import collections
- from hyperframe.frame import SettingsFrame
-@@ -295,7 +295,7 @@
-                 return
- 
-             # Iterables that set a specific content length.
--            elif isinstance(body, collections.Iterable):
-+            elif isinstance(body, collections.abc.Iterable):
-                 for item in body:
-                     try:
-                         self._sock.send(item)
-diff -ur a/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py
---- a/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- Flag = collections.namedtuple("Flag", ["name", "bit"])
- 
- 
--class Flags(collections.MutableSet):
-+class Flags(collections.abc.MutableSet):
-     """
-     A simple MutableSet implementation that will only accept known flags as elements.
- 
-diff -ur a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
---- a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py	2021-09-01 13:26:39.000000000 -0400
-+++ b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- Flag = collections.namedtuple("Flag", ["name", "bit"])
- 
- 
--class Flags(collections.MutableSet):
-+class Flags(collections.abc.MutableSet):
-     """
-     A simple MutableSet implementation that will only accept known flags as
-     elements.
-diff -ur a/testing/web-platform/tests/tools/wptserve/wptserve/config.py b/testing/web-platform/tests/tools/wptserve/wptserve/config.py
---- a/testing/web-platform/tests/tools/wptserve/wptserve/config.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/tools/wptserve/wptserve/config.py	2021-11-05 15:29:12.000000000 -0400
-@@ -2,7 +2,8 @@
- import logging
- import os
- 
--from collections import defaultdict, Mapping
-+from collections import defaultdict
-+from collections.abc import Mapping
- from six import integer_types, iteritems, itervalues, string_types
- 
- from . import sslutils
-diff -ur a/testing/web-platform/tests/webdriver/tests/support/sync.py b/testing/web-platform/tests/webdriver/tests/support/sync.py
---- a/testing/web-platform/tests/webdriver/tests/support/sync.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/testing/web-platform/tests/webdriver/tests/support/sync.py	2021-11-05 15:29:12.000000000 -0400
-@@ -81,7 +81,7 @@
- 
-         exceptions = []
-         if ignored_exceptions is not None:
--            if isinstance(ignored_exceptions, collections.Iterable):
-+            if isinstance(ignored_exceptions, collections.abc.Iterable):
-                 exceptions.extend(iter(ignored_exceptions))
-             else:
-                 exceptions.append(ignored_exceptions)
-diff -ur a/third_party/python/gyp/pylib/gyp/common.py b/third_party/python/gyp/pylib/gyp/common.py
---- a/third_party/python/gyp/pylib/gyp/common.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/gyp/pylib/gyp/common.py	2021-11-05 15:29:12.000000000 -0400
-@@ -494,7 +494,7 @@
- 
- 
- # Based on http://code.activestate.com/recipes/576694/.
--class OrderedSet(collections.MutableSet):
-+class OrderedSet(collections.abc.MutableSet):
-   def __init__(self, iterable=None):
-     self.end = end = []
-     end += [None, end, end]         # sentinel node for doubly linked list
-diff -ur a/third_party/python/gyp/pylib/gyp/msvs_emulation.py b/third_party/python/gyp/pylib/gyp/msvs_emulation.py
---- a/third_party/python/gyp/pylib/gyp/msvs_emulation.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/gyp/pylib/gyp/msvs_emulation.py	2021-11-05 15:30:47.757760820 -0400
-@@ -91,7 +91,7 @@
-   """Add |prefix| to |element| or each subelement if element is iterable."""
-   if element is None:
-     return element
--  if (isinstance(element, collections.Iterable) and
-+  if (isinstance(element, collections.abc.Iterable) and
-       not isinstance(element, basestring)):
-     return [prefix + e for e in element]
-   else:
-@@ -104,7 +104,7 @@
-   if map is not None and element is not None:
-     if not callable(map):
-       map = map.get # Assume it's a dict, otherwise a callable to do the remap.
--    if (isinstance(element, collections.Iterable) and
-+    if (isinstance(element, collections.abc.Iterable) and
-         not isinstance(element, basestring)):
-       element = filter(None, [map(elem) for elem in element])
-     else:
-@@ -117,7 +117,7 @@
-   then add |element| to it, adding each item in |element| if it's a list or
-   tuple."""
-   if append is not None and element is not None:
--    if (isinstance(element, collections.Iterable) and
-+    if (isinstance(element, collections.abc.Iterable) and
-         not isinstance(element, basestring)):
-       append.extend(element)
-     else:
-diff -ur a/third_party/python/gyp/test/lib/TestGyp.py b/third_party/python/gyp/test/lib/TestGyp.py
---- a/third_party/python/gyp/test/lib/TestGyp.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/gyp/test/lib/TestGyp.py	2021-11-05 15:30:37.671763157 -0400
-@@ -496,7 +496,7 @@
-     if status is None:
-       kw['status'] = None
-     else:
--      if not isinstance(status, collections.Iterable): status = (status,)
-+      if not isinstance(status, collections.abc.Iterable): status = (status,)
-       kw['status'] = list(itertools.chain((0,), status))
-     self.cmake_build(gyp_file, target, **kw)
-     kw['status'] = status
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/distlib/compat.py	2021-11-05 15:29:12.000000000 -0400
-@@ -319,7 +319,7 @@
- try:
-     callable = callable
- except NameError:   # pragma: no cover
--    from collections import Callable
-+    from collections.abc import Callable
- 
-     def callable(obj):
-         return isinstance(obj, Callable)
-@@ -475,7 +475,7 @@
- try:
-     from collections import ChainMap
- except ImportError: # pragma: no cover
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
- 
-     try:
-         from reprlib import recursive_repr as _recursive_repr
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/html5lib/treebuilders/dom.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,7 +1,7 @@
- from __future__ import absolute_import, division, unicode_literals
- 
- 
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- from xml.dom import minidom, Node
- import weakref
- 
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/pyparsing.py	2021-11-05 15:29:12.000000000 -0400
-@@ -940,7 +940,7 @@
-     def __dir__(self):
-         return (dir(type(self)) + list(self.keys()))
- 
--collections.MutableMapping.register(ParseResults)
-+collections.abc.MutableMapping.register(ParseResults)
- 
- def col (loc,strg):
-     """Returns current column within a string, counting newlines as line separators.
-@@ -3223,7 +3223,7 @@
- 
-         if isinstance( exprs, basestring ):
-             self.exprs = [ ParserElement._literalStringClass( exprs ) ]
--        elif isinstance( exprs, collections.Iterable ):
-+        elif isinstance( exprs, collections.abc.Iterable ):
-             exprs = list(exprs)
-             # if sequence of strings provided, wrap with Literal
-             if all(isinstance(expr, basestring) for expr in exprs):
-@@ -4564,7 +4564,7 @@
-     symbols = []
-     if isinstance(strs,basestring):
-         symbols = strs.split()
--    elif isinstance(strs, collections.Iterable):
-+    elif isinstance(strs, collections.abc.Iterable):
-         symbols = list(strs)
-     else:
-         warnings.warn("Invalid argument to oneOf, expected string or iterable",
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -169,7 +169,7 @@
-     """
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/models.py	2021-11-05 15:31:35.745749692 -0400
-@@ -174,10 +174,10 @@
-         if event not in self.hooks:
-             raise ValueError('Unsupported event specified, with event name "%s"' % (event))
- 
--        if isinstance(hook, collections.Callable):
-+        if isinstance(hook, collections.abc.Callable):
-             self.hooks[event].append(hook)
-         elif hasattr(hook, '__iter__'):
--            self.hooks[event].extend(h for h in hook if isinstance(h, collections.Callable))
-+            self.hooks[event].extend(h for h in hook if isinstance(h, collections.abc.Callable))
- 
-     def deregister_hook(self, event, hook):
-         """Deregister a previously registered hook.
-@@ -461,7 +461,7 @@
- 
-         is_stream = all([
-             hasattr(data, '__iter__'),
--            not isinstance(data, (basestring, list, tuple, collections.Mapping))
-+            not isinstance(data, (basestring, list, tuple, collections.abc.Mapping))
-         ])
- 
-         try:
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/structures.py	2021-11-05 15:29:12.000000000 -0400
-@@ -12,7 +12,7 @@
- from .compat import OrderedDict
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """A case-insensitive ``dict``-like object.
- 
-     Implements all methods and operations of
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/requests/utils.py	2021-11-05 15:31:40.157748665 -0400
-@@ -262,7 +262,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py
---- a/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/patched/notpip/_vendor/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py b/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py
---- a/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/jinja2/sandbox.py	2021-11-05 15:29:12.000000000 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur a/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py b/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py
---- a/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/jinja2/utils.py	2021-11-05 15:29:12.000000000 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/distlib/compat.py	2021-11-05 15:29:12.000000000 -0400
-@@ -319,7 +319,7 @@
- try:
-     callable = callable
- except NameError:   # pragma: no cover
--    from collections import Callable
-+    from collections.abc import Callable
- 
-     def callable(obj):
-         return isinstance(obj, Callable)
-@@ -475,7 +475,7 @@
- try:
-     from collections import ChainMap
- except ImportError: # pragma: no cover
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
- 
-     try:
-         from reprlib import recursive_repr as _recursive_repr
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/html5lib/treebuilders/dom.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,7 +1,7 @@
- from __future__ import absolute_import, division, unicode_literals
- 
- 
--from collections import MutableMapping
-+from collections.abc import MutableMapping
- from xml.dom import minidom, Node
- import weakref
- 
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/pyparsing.py	2021-11-05 15:29:12.000000000 -0400
-@@ -940,7 +940,7 @@
-     def __dir__(self):
-         return (dir(type(self)) + list(self.keys()))
- 
--collections.MutableMapping.register(ParseResults)
-+collections.abc.MutableMapping.register(ParseResults)
- 
- def col (loc,strg):
-     """Returns current column within a string, counting newlines as line separators.
-@@ -3223,7 +3223,7 @@
- 
-         if isinstance( exprs, basestring ):
-             self.exprs = [ ParserElement._literalStringClass( exprs ) ]
--        elif isinstance( exprs, collections.Iterable ):
-+        elif isinstance( exprs, collections.abc.Iterable ):
-             exprs = list(exprs)
-             # if sequence of strings provided, wrap with Literal
-             if all(isinstance(expr, basestring) for expr in exprs):
-@@ -4564,7 +4564,7 @@
-     symbols = []
-     if isinstance(strs,basestring):
-         symbols = strs.split()
--    elif isinstance(strs, collections.Iterable):
-+    elif isinstance(strs, collections.abc.Iterable):
-         symbols = list(strs)
-     else:
-         warnings.warn("Invalid argument to oneOf, expected string or iterable",
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -169,7 +169,7 @@
-     """
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/models.py	2021-11-05 15:31:52.397745825 -0400
-@@ -174,10 +174,10 @@
-         if event not in self.hooks:
-             raise ValueError('Unsupported event specified, with event name "%s"' % (event))
- 
--        if isinstance(hook, collections.Callable):
-+        if isinstance(hook, collections.abc.Callable):
-             self.hooks[event].append(hook)
-         elif hasattr(hook, '__iter__'):
--            self.hooks[event].extend(h for h in hook if isinstance(h, collections.Callable))
-+            self.hooks[event].extend(h for h in hook if isinstance(h, collections.abc.Callable))
- 
-     def deregister_hook(self, event, hook):
-         """Deregister a previously registered hook.
-@@ -461,7 +461,7 @@
- 
-         is_stream = all([
-             hasattr(data, '__iter__'),
--            not isinstance(data, (basestring, list, tuple, collections.Mapping))
-+            not isinstance(data, (basestring, list, tuple, collections.abc.Mapping))
-         ])
- 
-         try:
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/structures.py	2021-11-05 15:32:02.765743413 -0400
-@@ -12,7 +12,7 @@
- from .compat import OrderedDict
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """A case-insensitive ``dict``-like object.
- 
-     Implements all methods and operations of
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/requests/utils.py	2021-11-05 15:31:57.123744724 -0400
-@@ -262,7 +262,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py
---- a/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/pip9/_vendor/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/cookies.py b/third_party/python/pipenv/pipenv/vendor/requests/cookies.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/cookies.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -169,7 +169,7 @@
-     """
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/models.py b/third_party/python/pipenv/pipenv/vendor/requests/models.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/models.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/models.py	2021-11-05 15:32:09.732741793 -0400
-@@ -174,10 +174,10 @@
-         if event not in self.hooks:
-             raise ValueError('Unsupported event specified, with event name "%s"' % (event))
- 
--        if isinstance(hook, collections.Callable):
-+        if isinstance(hook, collections.abc.Callable):
-             self.hooks[event].append(hook)
-         elif hasattr(hook, '__iter__'):
--            self.hooks[event].extend(h for h in hook if isinstance(h, collections.Callable))
-+            self.hooks[event].extend(h for h in hook if isinstance(h, collections.abc.Callable))
- 
-     def deregister_hook(self, event, hook):
-         """Deregister a previously registered hook.
-@@ -461,7 +461,7 @@
- 
-         is_stream = all([
-             hasattr(data, '__iter__'),
--            not isinstance(data, (basestring, list, tuple, collections.Mapping))
-+            not isinstance(data, (basestring, list, tuple, collections.abc.Mapping))
-         ])
- 
-         try:
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/structures.py b/third_party/python/pipenv/pipenv/vendor/requests/structures.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/structures.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/structures.py	2021-11-05 15:29:12.000000000 -0400
-@@ -12,7 +12,7 @@
- from .compat import OrderedDict
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """A case-insensitive ``dict``-like object.
- 
-     Implements all methods and operations of
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/pipenv/pipenv/vendor/requests/utils.py b/third_party/python/pipenv/pipenv/vendor/requests/utils.py
---- a/third_party/python/pipenv/pipenv/vendor/requests/utils.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/requests/utils.py	2021-11-05 15:32:13.776740860 -0400
-@@ -262,7 +262,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py b/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py
---- a/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py	2021-09-01 13:26:46.000000000 -0400
-+++ b/third_party/python/pipenv/pipenv/vendor/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/pyyaml/lib3/yaml/constructor.py b/third_party/python/pyyaml/lib3/yaml/constructor.py
---- a/third_party/python/pyyaml/lib3/yaml/constructor.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/pyyaml/lib3/yaml/constructor.py	2021-11-05 15:29:12.000000000 -0400
-@@ -123,7 +123,7 @@
-         mapping = {}
-         for key_node, value_node in node.value:
-             key = self.construct_object(key_node, deep=deep)
--            if not isinstance(key, collections.Hashable):
-+            if not isinstance(key, collections.abc.Hashable):
-                 raise ConstructorError("while constructing a mapping", node.start_mark,
-                         "found unhashable key", key_node.start_mark)
-             value = self.construct_object(value_node, deep=deep)
-diff -ur a/third_party/python/requests/requests/cookies.py b/third_party/python/requests/requests/cookies.py
---- a/third_party/python/requests/requests/cookies.py	2021-09-01 13:27:05.000000000 -0400
-+++ b/third_party/python/requests/requests/cookies.py	2021-11-05 15:29:12.000000000 -0400
-@@ -161,7 +161,7 @@
-     Use .get and .set and include domain and path args in order to be more specific."""
- 
- 
--class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
-+class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
-     """Compatibility class; is a cookielib.CookieJar, but exposes a dict
-     interface.
- 
-diff -ur a/third_party/python/requests/requests/packages/urllib3/_collections.py b/third_party/python/requests/requests/packages/urllib3/_collections.py
---- a/third_party/python/requests/requests/packages/urllib3/_collections.py	2021-09-01 13:27:13.000000000 -0400
-+++ b/third_party/python/requests/requests/packages/urllib3/_collections.py	2021-11-05 15:29:12.000000000 -0400
-@@ -1,5 +1,5 @@
- from __future__ import absolute_import
--from collections import Mapping, MutableMapping
-+from collections.abc import Mapping, MutableMapping
- try:
-     from threading import RLock
- except ImportError:  # Platform-specific: No threads available
-diff -ur a/third_party/python/requests/requests/structures.py b/third_party/python/requests/requests/structures.py
---- a/third_party/python/requests/requests/structures.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/requests/requests/structures.py	2021-11-05 15:29:12.000000000 -0400
-@@ -11,7 +11,7 @@
- import collections
- 
- 
--class CaseInsensitiveDict(collections.MutableMapping):
-+class CaseInsensitiveDict(collections.abc.MutableMapping):
-     """
-     A case-insensitive ``dict``-like object.
- 
-@@ -71,7 +71,7 @@
-         )
- 
-     def __eq__(self, other):
--        if isinstance(other, collections.Mapping):
-+        if isinstance(other, collections.abc.Mapping):
-             other = CaseInsensitiveDict(other)
-         else:
-             return NotImplemented
-diff -ur a/third_party/python/requests/requests/utils.py b/third_party/python/requests/requests/utils.py
---- a/third_party/python/requests/requests/utils.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/requests/requests/utils.py	2021-11-05 15:30:55.420759045 -0400
-@@ -189,7 +189,7 @@
-     if isinstance(value, (str, bytes, bool, int)):
-         raise ValueError('cannot encode objects that are not 2-tuples')
- 
--    if isinstance(value, collections.Mapping):
-+    if isinstance(value, collections.abc.Mapping):
-         value = value.items()
- 
-     return list(value)
-diff -ur a/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py b/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py
---- a/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py	2021-09-01 13:27:00.000000000 -0400
-+++ b/third_party/python/virtualenv/__virtualenv__/distlib-0.3.1-py2.py3-none-any/distlib/compat.py	2021-11-05 15:29:12.000000000 -0400
-@@ -481,7 +481,7 @@
- try:
-     from collections import ChainMap
- except ImportError: # pragma: no cover
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
- 
-     try:
-         from reprlib import recursive_repr as _recursive_repr
-diff -ur a/third_party/python/voluptuous/voluptuous/schema_builder.py b/third_party/python/voluptuous/voluptuous/schema_builder.py
---- a/third_party/python/voluptuous/voluptuous/schema_builder.py	2021-09-01 13:27:09.000000000 -0400
-+++ b/third_party/python/voluptuous/voluptuous/schema_builder.py	2021-11-05 15:30:32.399764374 -0400
-@@ -280,7 +280,7 @@
-             return schema.__voluptuous_compile__(self)
-         if isinstance(schema, Object):
-             return self._compile_object(schema)
--        if isinstance(schema, collections.Mapping):
-+        if isinstance(schema, collections.abc.Mapping):
-             return self._compile_dict(schema)
-         elif isinstance(schema, list):
-             return self._compile_list(schema)
diff --git a/srcpkgs/firefox-esr/patches/fix-wasm-arm.patch b/srcpkgs/firefox-esr/patches/fix-wasm-arm.patch
deleted file mode 100644
index a6035e876163..000000000000
--- a/srcpkgs/firefox-esr/patches/fix-wasm-arm.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- a/js/src/wasm/WasmSignalHandlers.cpp
-+++ b/js/src/wasm/WasmSignalHandlers.cpp
-@@ -243,9 +243,9 @@
- // If you run into compile problems on a tier-3 platform, you can disable the
- // emulation here.
- 
--#if defined(__linux__) && defined(__arm__)
--#  define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
--#endif
-+// #if defined(__linux__) && defined(__arm__)
-+// #  define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
-+// #endif
- 
- #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
- #  include <sys/user.h>
diff --git a/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch b/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch
index 70910da5861e..5d17021a99f4 100644
--- a/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch
+++ b/srcpkgs/firefox-esr/patches/fix-webrtc-glibcisms.patch
@@ -1,5 +1,5 @@
---- a/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:20:52.298793223 +0100
-+++ b/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:21:48.250250850 +0100
+--- a/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:20:52.298793223 +0100
++++ b/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c	2019-01-29 11:21:48.250250850 +0100
 @@ -14,7 +14,7 @@
  #ifndef __GLIBC_PREREQ
  #define __GLIBC_PREREQ(a, b) 0
diff --git a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
index 154aad63e33a..ebf48deb9720 100644
--- a/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
+++ b/srcpkgs/firefox-esr/patches/flac-no-ffvpx.patch
@@ -12,15 +12,14 @@ index 53fc3c9937f7..b23771ab80fa 100644
  
  namespace mozilla {
  
-@@ -14,6 +15,11 @@ namespace mozilla {
+@@ -14,6 +15,10 @@ 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);
++         platform->SupportsMimeType("audio/flac"_ns);
  #else
    // Until bug 1295886 is fixed.
    return false;
diff --git a/srcpkgs/firefox-esr/patches/musl-rust.configure.patch b/srcpkgs/firefox-esr/patches/musl-rust.configure.patch
deleted file mode 100644
index 0b2f7dee1d3c..000000000000
--- a/srcpkgs/firefox-esr/patches/musl-rust.configure.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- a/build/moz.configure/rust.configure	2019-10-28 12:05:04.930404603 +0700
-+++ b/build/moz.configure/rust.configure	2019-10-28 12:09:42.742338957 +0700
-@@ -297,11 +297,20 @@
-                     suffix = 'hf'
-                 else:
-                     suffix = ''
-+
-+                narrowed = []
-                 for p in prefixes:
-                     for c in candidates:
--                        if c.rust_target.startswith('{}-'.format(p)) and \
--                                c.rust_target.endswith(suffix):
--                            return c.rust_target
-+                        if c.rust_target.startswith('{}-'.format(p)):
-+                            narrowed.append(c.rust_target)
-+
-+                for target in narrowed:
-+                    if target.endswith(host_or_target.raw_os):
-+                        return target
-+
-+                for target in narrowed:
-+                    if target.endswith(suffix):
-+                        return target
- 
-             # See if we can narrow down on the exact alias
-             narrowed = [c for c in candidates if c.target.alias == host_or_target.alias]
diff --git a/srcpkgs/firefox-esr/patches/rust-configure.patch b/srcpkgs/firefox-esr/patches/rust-configure.patch
index 07b98d6c7cae..61fb2ba891d9 100644
--- a/srcpkgs/firefox-esr/patches/rust-configure.patch
+++ b/srcpkgs/firefox-esr/patches/rust-configure.patch
@@ -1,42 +1,112 @@
 Mozilla rustc check does not support crossbuild: let's remove it
 Remove calls to unwrap_rustup, they fail if rustup isn't present
 
---- a/build/moz.configure/rust.configure	2019-10-17 04:19:59.000000000 +0700
-+++ b/build/moz.configure/rust.configure	2019-10-22 11:48:55.616022140 +0700
-@@ -78,9 +78,6 @@
- 
+Do not try to figure out the rust target as it is broken on musl
+instead use what is set in RUST_TARGET
+
+Skip extra checks on cross builds (broken for arm*)
+
+--- a/build/moz.configure/rust.configure	2020-12-12 01:35:33.000000000 +0100
++++ b/build/moz.configure/rust.configure	2020-12-15 19:45:16.467750787 +0100
+@@ -91,9 +91,6 @@
      return unwrap
  
--rustc = unwrap_rustup(rustc, 'rustc')
--cargo = unwrap_rustup(cargo, 'cargo')
+ 
+-rustc = unwrap_rustup(rustc, "rustc")
+-cargo = unwrap_rustup(cargo, "cargo")
 -
  
- set_config('CARGO', cargo)
- set_config('RUSTC', rustc)
-@@ -348,26 +345,6 @@
+ set_config("CARGO", cargo)
+ set_config("RUSTC", rustc)
+@@ -260,7 +257,9 @@
+         data.setdefault(key, []).append(namespace(rust_target=t, target=info))
+     return data
+ 
+-
++@imports('os')
++@imports(_from='mozbuild.util', _import='ensure_unicode')
++@imports(_from='mozbuild.util', _import='system_encoding')
+ def detect_rustc_target(
+     host_or_target, compiler_info, arm_target, rust_supported_targets
+ ):
+@@ -382,12 +381,12 @@
+ 
+         return None
+ 
+-    rustc_target = find_candidate(candidates)
++    rustc_target = os.environ['RUST_TARGET']
  
-             os.write(in_fd, source)
-             os.close(in_fd)
+     if rustc_target is None:
+         die("Don't know how to translate {} for rustc".format(host_or_target.alias))
+ 
+-    return rustc_target
++    return ensure_unicode(rustc_target, system_encoding)
+ 
+ 
+ @imports("os")
+@@ -410,35 +409,6 @@
+ 
+         os.write(in_fd, ensure_binary(source))
+         os.close(in_fd)
 -
--            cmd = [
--                rustc,
--                '--crate-type', 'staticlib',
--                target_arg,
--                '-o', out_path,
--                in_path,
--            ]
+-        cmd = [
+-            rustc,
+-            "--crate-type",
+-            "staticlib",
+-            target_arg,
+-            "-o",
+-            out_path,
+-            in_path,
+-        ]
 -
--            def failed():
--                die(dedent('''\
--                Cannot compile for {} with {}
--                The target may be unsupported, or you may not have
--                a rust std library for that target installed. Try:
+-        def failed():
+-            die(
+-                dedent(
+-                    """\
+-            Cannot compile for {} with {}
+-            The target may be unsupported, or you may not have
+-            a rust std library for that target installed. Try:
 -
--                  rustup target add {}
--                '''.format(host_or_target.alias, rustc, rustc_target)))
--            check_cmd_output(*cmd, onerror=failed)
--            if not os.path.exists(out_path) or os.path.getsize(out_path) == 0:
--                failed()
-         finally:
-             os.remove(in_path)
-             os.remove(out_path)
+-              rustup target add {}
+-            """.format(
+-                        host_or_target.alias, rustc, rustc_target
+-                    )
+-                )
+-            )
+-
+-        check_cmd_output(*cmd, onerror=failed)
+-        if not os.path.exists(out_path) or os.path.getsize(out_path) == 0:
+-            failed()
+     finally:
+         os.remove(in_path)
+         os.remove(out_path)
+@@ -462,28 +432,7 @@
+         host, compiler_info, arm_target, rust_supported_targets
+     )
+     if rustc_target != rustc_host:
+-        if host.alias == rustc_target:
+-            configure_host = host.alias
+-        else:
+-            configure_host = "{}/{}".format(host.alias, rustc_target)
+-        die(
+-            dedent(
+-                """\
+-        The rust compiler host ({rustc}) is not suitable for the configure host ({configure}).
+-
+-        You can solve this by:
+-        * Set your configure host to match the rust compiler host by editing your
+-        mozconfig and adding "ac_add_options --host={rustc}".
+-        * Or, install the rust toolchain for {configure}, if supported, by running
+-        "rustup default stable-{rustc_target}"
+-        """.format(
+-                    rustc=rustc_host,
+-                    configure=configure_host,
+-                    rustc_target=rustc_target,
+-                )
+-            )
+-        )
+-    assert_rust_compile(host, rustc_target, rustc)
++        return rustc_host
+     return rustc_target
+ 
+ 
diff --git a/srcpkgs/firefox-esr/patches/rust-has-i128.patch b/srcpkgs/firefox-esr/patches/rust-has-i128.patch
deleted file mode 100644
index c25a185c1c11..000000000000
--- a/srcpkgs/firefox-esr/patches/rust-has-i128.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-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
-
---- a/third_party/rust/num-traits/build.rs	2020-02-14 23:57:25.985355610 +0100
-+++ b/third_party/rust/num-traits/build.rs	2020-02-14 23:58:36.255710188 +0100
-@@ -1,14 +1,5 @@
--extern crate autocfg;
--
--use std::env;
--
- fn main() {
--    let ac = autocfg::new();
--    if ac.probe_type("i128") {
--        println!("cargo:rustc-cfg=has_i128");
--    } else if env::var_os("CARGO_FEATURE_I128").is_some() {
--        panic!("i128 support was not detected!");
--    }
-+    println!("cargo:rustc-cfg=has_i128");
- 
-     autocfg::rerun_path("build.rs");
- }
diff --git a/srcpkgs/firefox-esr/patches/sandbox-fork.patch b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
index 328943cb0013..d4584e74b91c 100644
--- a/srcpkgs/firefox-esr/patches/sandbox-fork.patch
+++ b/srcpkgs/firefox-esr/patches/sandbox-fork.patch
@@ -2,12 +2,14 @@ make SYS_fork non-fatal, musl uses it for fork(2)
 
 --- a/security/sandbox/linux/SandboxFilter.cpp
 +++ b/security/sandbox/linux/SandboxFilter.cpp
-@@ -1253,6 +1253,8 @@
+@@ -1420,6 +1420,10 @@
          // usually do something reasonable on error.
        case __NR_clone:
          return ClonePolicy(Error(EPERM));
++#  ifdef __NR_fork
 +      case __NR_fork:
 +        return Error(ENOSYS);
++#  endif
  
  #  ifdef __NR_fadvise64
        case __NR_fadvise64:
diff --git a/srcpkgs/firefox-esr/patches/sndio.patch b/srcpkgs/firefox-esr/patches/sndio.patch
index 959fc1ec913a..68628bea8d8f 100644
--- a/srcpkgs/firefox-esr/patches/sndio.patch
+++ b/srcpkgs/firefox-esr/patches/sndio.patch
@@ -42,11 +42,11 @@
  if CONFIG['OS_TARGET'] == 'Darwin':
 --- a/build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
 +++ b/build/moz.configure/old.configure	2020-06-30 12:17:04.087609070 +0200
-@@ -210,6 +210,7 @@
+@@ -88,6 +88,7 @@
  @old_configure_options(
-     '--cache-file',
-     '--datadir',
-+    '--enable-sndio',
-     '--enable-crashreporter',
-     '--enable-dbus',
-     '--enable-debug-js-modules',
+     "--cache-file",
+     "--datadir",
++    "--enable-sndio",
+     "--enable-crashreporter",
+     "--enable-dbus",
+     "--enable-debug-js-modules",
diff --git a/srcpkgs/firefox-esr/template b/srcpkgs/firefox-esr/template
index 33fa4dfaf2a0..35e7b0be93c8 100644
--- a/srcpkgs/firefox-esr/template
+++ b/srcpkgs/firefox-esr/template
@@ -3,58 +3,63 @@
 # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-esr-i18n".
 #
 pkgname=firefox-esr
-version=78.14.0
+version=91.3.0
 revision=1
 wrksrc="firefox-${version}"
-build_helper="rust qemu"
+build_helper="rust"
+short_desc="Mozilla Firefox web browser - Extended Support Release"
+maintainer="Orphaned <orphan@voidlinux.org>"
+license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
+homepage="https://www.mozilla.org/firefox/"
+distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
+checksum=128b5349f112d8a0fd8698f3645ed43ea29d4b95047b7c4fd770b95d0661e96c
+
+lib32disabled=yes
+
 hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo
  llvm clang nodejs-lts cbindgen python nasm which tar"
-makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel
+makedepends="nss-devel libjpeg-turbo-devel gtk+3-devel icu-devel
  pixman-devel libevent-devel libnotify-devel libvpx-devel
  libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std
  libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel)
  $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
  $(vopt_if xscreensaver libXScrnSaver-devel)
  $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)"
-depends="nss>=3.53 desktop-file-utils hicolor-icon-theme"
-short_desc="Firefox browser - Extended Support Release"
-maintainer="Orphaned <orphan@voidlinux.org>"
-license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
-homepage="https://www.mozilla.org/firefox/organizations/"
-distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
-checksum=aa0e28a4150c33a165120a24f20e0373e74635c9f812732a08850d71cda3b2fa
-lib32disabled=yes
+depends="nss>=3.66 nspr>=4.32 desktop-file-utils hicolor-icon-theme"
 conflicts="firefox>=0"
 
 build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"
 
-if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
-	makedepends+=" libatomic-devel"
-fi
-
 case $XBPS_TARGET_MACHINE in
-	armv[56]*) broken="required NEON extensions are not supported on armv[56]" ;;
+	armv[56]*) broken="required NEON extensions are not supported on armv6" ;;
 	ppc64*) ;;
 	ppc*) broken="xptcall bitrot" ;;
 esac
 
-CXXFLAGS="-Wno-class-memaccess -Wno-unused-function"
+if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
+	makedepends+=" libatomic-devel"
+fi
+
+# work around large debug symbols on 32-bit hosts
+# cargo:warning=cc1plus: out of memory allocating 65536 bytes after a total of 1010126848 bytes
+if [ "$XBPS_WORDSIZE" = "32" ]; then
+	nodebug=yes
+fi
 
-# We need this because cargo verifies checksums of all files
-# in vendor crates when it builds and gives us no way to
-# override or update the file sanely... so just clear out the file list
+# we need this because cargo verifies checksums of all files in vendor
+# crates when it builds and gives us no way to override or update the
+# file sanely... so just clear out the file list
 _clear_vendor_checksums() {
 	sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
 }
 
 post_extract() {
-	if [ "$XBPS_TARGET_LIBC" = musl ]; then
+	case "$XBPS_TARGET_MACHINE" in
+	*-musl)
 		cp "${FILESDIR}/stab.h" toolkit/crashreporter/google-breakpad/src/
-	fi
-	# Google API key (see http://www.chromium.org/developers/how-tos/api-keys)
-	# Note: This is for Void Linux use ONLY.
-	echo -n "AIzaSyCIFdBA7eQP43R6kXRwTq7j6Mvj1ITze90" > google-api-key
+		;;
+	esac
 
 	# Mozilla API keys (see https://location.services.mozilla.com/api)
 	# Note: This is for Void Linux use ONLY.
@@ -63,20 +68,20 @@ post_extract() {
 
 post_patch() {
 	_clear_vendor_checksums num-traits
-	_clear_vendor_checksums glslopt
 }
 
 do_build() {
-	cp ${FILESDIR}/mozconfig .mozconfig
+	cp "${FILESDIR}/mozconfig" "${wrksrc}/.mozconfig"
 
-	if [ "$XBPS_TARGET_LIBC" = musl ]; then
+	case "$XBPS_TARGET_MACHINE" in
+	*-musl)
 		echo "ac_add_options --disable-jemalloc" >>.mozconfig
 		echo "ac_add_options --disable-gold" >>.mozconfig
-		echo "ac_add_options --enable-release" >>.mozconfig
-	fi
+		;;
+	esac
 
 	case "$XBPS_TARGET_MACHINE" in
-	arm*|x86_64*|i686*)
+	x86_64*|i686*|arm*)
 		echo "ac_add_options --disable-elf-hack" >>.mozconfig
 		;;
 	esac
@@ -98,16 +103,17 @@ do_build() {
 
 		export BINDGEN_CFLAGS="--target=$XBPS_CROSS_TRIPLET \
 			--sysroot=${XBPS_CROSS_BASE} ${BINDGEN_INCLUDE_FLAGS}"
-		export HOST_CC="${CC_host}"
+		export HOST_CC=cc
 		export TARGET_CC="${CC}"
 		export HOST_CFLAGS="${XBPS_CFLAGS}"
 		export HOST_CXXFLAGS="${XBPS_CXXFLAGS}"
-		echo "ac_cv_sqlite_secure_delete=yes" >> .mozconfig
-		echo "ac_cv_sqlite_threadsafe=yes" >> .mozconfig
-		echo "ac_cv_sqlite_enable_fts3=yes" >> .mozconfig
-		echo "ac_cv_sqlite_dbstat_vtab=yes" >> .mozconfig
-		echo "ac_cv_sqlite_enable_unlock_notify=yes" >> .mozconfig
-		echo "ac_cv_prog_hostcxx_works=1" >> .mozconfig
+		export ac_cv_sqlite_secure_delete=yes \
+			ac_cv_sqlite_threadsafe=yes \
+			ac_cv_sqlite_enable_fts3=yes \
+			ac_cv_sqlite_dbstat_vtab=yes \
+			ac_cv_sqlite_enable_unlock_notify=yes \
+			ac_cv_prog_hostcxx_works=1
+
 		echo "ac_add_options --target=$XBPS_CROSS_TRIPLET" >>.mozconfig
 		echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig
 	else
@@ -126,19 +132,18 @@ do_build() {
 
 	# work around large debug symbols on 32-bit hosts
 	if [ "$XBPS_WORDSIZE" = "32" ]; then
-		export CFLAGS="${CFLAGS/-g/-g1}"
-		export CXXFLAGS="${CXXFLAGS/-g/-g1}"
+		echo "ac_add_options --disable-debug-symbols" >>.mozconfig
+		echo "ac_add_options --disable-debug" >>.mozconfig
 		export LDFLAGS+=" -Wl,--no-keep-memory"
 		# patch the rust debug level, this is hardcoded
-		sed -i "s/debug_info = '2'/debug_info = '1'/" \
+		vsed -i 's/debug_info = "2"/debug_info = "0"/' \
 		build/moz.configure/toolchain.configure
 	fi
 
-	# FIXME: incompatible with rust 1.48 in this release
-	#case "$XBPS_TARGET_MACHINE" in
-	#aarch64*|i686*|x86_64*)
-	#	echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
-	#esac
+	case "$XBPS_TARGET_MACHINE" in
+	aarch64*|i686*|x86_64*)
+		echo "ac_add_options --enable-rust-simd" >>.mozconfig ;;
+	esac
 
 	export LDFLAGS+=" -Wl,-rpath=/usr/lib/firefox"
 
@@ -153,9 +158,7 @@ do_build() {
 
 	export AS=$CC
 
-	cat >>.mozconfig <<EOF
-ac_add_options --with-google-location-service-api-keyfile="${wrksrc}/google-api-key"
-ac_add_options --with-google-safebrowsing-api-keyfile="${wrksrc}/google-api-key"
+	cat <<! >>.mozconfig
 ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key"
 ac_add_options $(vopt_enable alsa)
 ac_add_options $(vopt_enable jack)
@@ -164,42 +167,28 @@ ac_add_options $(vopt_enable dbus)
 ac_add_options $(vopt_enable dbus necko-wifi)
 ac_add_options $(vopt_enable pulseaudio)
 ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3')
-EOF
+!
+
 	rm -f old-configure
 	./mach build
-
-	# Make langpacks for all languages
-	dir=$(ls -d obj-*/browser/locales)
-	cd ${wrksrc}/${dir}
-	for lang in ${languages[*]}; do
-		msg_normal "Making langpack for ${lang} ...\n"
-		make ${makejobs} langpack-${lang} LOCALE_MERGEDIR=.
-	done
 }
-
 do_install() {
 	export MACH_USE_SYSTEM_PYTHON=1
 	DESTDIR="$DESTDIR" ./mach install
 
-	vbin ${FILESDIR}/firefox-wayland
 	vinstall ${FILESDIR}/vendor.js 644 usr/lib/firefox/browser/defaults/preferences
 	vinstall taskcluster/docker/firefox-snap/firefox.desktop 644 usr/share/applications
 
-	for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
+	for i in 16x16 22x22 24x24 32x32 48x48 128x128 256x256; do
 		vinstall ${wrksrc}/browser/branding/official/default${i%x*}.png 644 \
 			usr/share/icons/hicolor/${i}/apps firefox.png
 	done
-	vinstall ${wrksrc}/browser/branding/official/default256.png 644 \
-		usr/share/pixmaps firefox.png
 
-	# Use system-provided dictionaries
-	rm -rf ${DESTDIR}/usr/lib/firefox/{dictionaries,hyphenation}
-	ln -s /usr/share/hunspell ${DESTDIR}/usr/lib/firefox/dictionaries
-	ln -s /usr/share/hyphen ${DESTDIR}/usr/lib/firefox/hyphenation
+	# We don't want the development stuff
+	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
 
 	# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
 	ln -sf firefox ${DESTDIR}/usr/lib/firefox/firefox-bin
 
-	# Remove the development files - noone uses them
-	rm -rf ${DESTDIR}/usr/{include,lib/firefox-devel,share/idl}
+	vbin ${FILESDIR}/firefox-wayland
 }

From 6ec1e0398557f34ad2d470f1c37ae0db57cbef8d Mon Sep 17 00:00:00 2001
From: Johannes Daniel Nuemm <daniel.nuemm@blacktre.es>
Date: Sat, 20 Nov 2021 15:13:43 +0100
Subject: [PATCH 2/2] firefox-esr-i18n: update to 91.3.0.

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

diff --git a/srcpkgs/firefox-esr-i18n/template b/srcpkgs/firefox-esr-i18n/template
index 258494c4a723..51583fb80e9b 100644
--- a/srcpkgs/firefox-esr-i18n/template
+++ b/srcpkgs/firefox-esr-i18n/template
@@ -1,6 +1,6 @@
 # Template file for 'firefox-esr-i18n'
 pkgname=firefox-esr-i18n
-version=78.14.0
+version=91.3.0
 revision=1
 build_style=meta
 short_desc="Firefox ESR language packs"
@@ -135,96 +135,96 @@ _pkgtmpl() {
 	}
 }
 
-checksum="6e91070c0ee58852ac3b8c8f0ac9620289ca4e200b8074dee8449374301616d1
- 764a7f3a61f0d1b50fdc6dc313f7651e8aa62df4e8883af1a6ef4d18750909c7
- 941ab61c6cb0d52c0e348e080e769cfebe2364eb8cf24a94f625b57f84ba17f1
- a0e0649532c34ccdc1abe1cc1215e66186df8d9d484dfc4337df92151629e04d
- 6c21635e8b1293f9b6b8acdcebd372574610ba535d35f21cf77c73bffb88dd92
- 71d4a6b25d6f18e207c7749f8e50a70a122acea8208c9940c8c882cea7435e0d
- 37209366ed7a66ad7710f268d326a79198c0e9459f751776cf74cb5e5b181d08
- 7638eafa83ac00c88f4410bd67d997570f2635cfc9e7448389ad73e9330b2141
- 3d0e276f98253020935fdec54d906633992848acd4a14d3c48f30fbc6d58c752
- 0b8073a34cd6c62ed8a32c5a0d04a715839b7421a4a681c69bcf9c5d3b0b257d
- 39ee3a5be8fead6f9d69e151107402e234ba6ccd6052573ec48ce71c7d63c964
- 04d517783ec518afc6550b7ca7b591fb17967d8f1c47cfd552b7aeab3d7239c1
- d87112e2791a3fc49c33e4a4be445bebe64d69894a472d0c3f063129294c321f
- e8ab1a8f936f9f8b554573b9b65d8b3377f6fcc6256087424866d3c93dc4bd31
- 518232ababbf0a4f8d5c9aea0e21a2d019b781988bc448a20066b9798bf79a7e
- 50d1fc49591b2a4211337034f036725bf6d0d1816cf54b5a7c4091af504541bc
- f61902d98456796d545a9cfcc3362c682b9938bdfdb6b5d4b9184cc33efbb481
- c254eed182b5c49b52dcea39f8a4af0c14ecece14ea1fb02fe75770fda4dcec1
- 8c9ba5f38c939166fa557e7fc2de1e7880719e4671d3e35d7f0902d7367a759e
- a76a8263887dc89c4f5cc4cfd70eb36406fddd8e9d569bb62ab82fc68849a655
- e6d33c3f1d0173886bf9118695fa9b613b99fdb5777b2582c2d43827e08732fa
- f524faec3cbf044e2082306decd1f6c4737a6babc4a5886b50de71c6a1482de2
- e1ad21912117ed7019498a2a0f65db03ebace025fbd7119f2632f580e1bfdfc6
- 586538a8b5a643329e21a0e66244dc30c5b065684c37c06d92ccfc244bb117a6
- 741c5c34ef55bdd3484f32aa11ce96230a4ad94be929fc3219935d09c22dac09
- 557233773969799d2b946a68e732c55ff4b901d5a1cf45552ab1bb6801024e01
- 8aa1bf00d7e97981dc0933dbe4f886ac9f9e1569f5b60ae219c50a7e82d6e81f
- 1cffa9258de8c892eaf13dc6fcb0883b2bcd418af567d6685eb0b89ada1b6260
- c5b3271069de86cc1713c9a93d4be1941792a55b7831a191369935b18d450fd1
- 00338ba5f470c3d4171d271b97692f6e66f94579709395f7409f4b535cbee1c3
- 1708326197664159d86812e28084975f63ae8112b2d805e62f4acb741bae803b
- 1c86c059ec1ca13904d40fe121cab5ed502f829533fb0ef649396cd5d94e074e
- 6b7885a7cb52c6a74064bc83f7f1d4117994bda1487255f1d91cb6d663149073
- d3b14f75fc0da0940a540afb402f41f097ecaa281f5decbcbc6a05ca0e102283
- c2dd8a7920c1baa2a13af9cc13b523c9162c213c79b063e1b2bb41290c5938f2
- ef7e94deeb31bfc0edec3265de05bf1881bf4c9b348f9ba539f0e4b74368225e
- f8031fbc3b85324ad05e415a0cdf8c189ed95bf6fd4a793e3d5f7b8e1e361966
- 138c430787462e3e77e87ae86178a663777a970c5a3bcc6236d0e5042a958c1e
- 49d98fdbbee4998a856634e4556a4ea1bda13ee60ea328accd381a3eb0ce1196
- 27ed18424e42b98b213714f864216be9eff08a5ed910be69b6dd82b9ec592ca9
- dc4cf3f9d0c9104d615e1760eae09326605b31a4efb69938cffbf553dec0d0a2
- 6db58cccd8cc96014ce481225b34a5d2bcbe4766ceca676bb6b56ee53a31fcd1
- ac10d3163d8d50746d3f2bbee8309508297654a5f5f40d003631cecd9920e8ce
- d4c03de6fce7abc8ce0c98547c45fed6c44229fe0737dd514c0681dc31e37cde
- 8ea5624f13b33073b704a5f967075c29ccfa64b9985432407b656a66a6e47b64
- f7b8654b8d5d0b5513bfaa4ce1ab171ce4b63aed297be7c416df42a5e127c370
- a7e805711ef4fdbe402bef807a5a8af92af99448366f34d61ba9e3d8d267c1f8
- 4fb10b2d88af4ce05b685562a07cb8fd29cfe0a479472d6c156799c83e2bf579
- 4398447f5f86446095f5f361ecc80750d0d6fbed6aa1cf85afe594beb2687c88
- fd87b2fda7d00d6e981d5eba8dccce8d1a30a5582a2c7dcf746d06233b45c18b
- 0436bf7c162632dbe4c64d15401b5f5c42feaf723ea67cf05a9e316dea14abaf
- f8998bb3b5761a00a57ae042422779f05034dd69f3196fb828aaf75e5e3b6337
- c37bb2c9bc3184d7ad4ecd5849d0c2a5e77c4d7ec4afc0844feb9f3ad757d1d5
- f371deedf56b3f255379ca97aa6dafa47dceee58fd6d16193f186dbab7465ad1
- c76bc59d2208494f09bdfb4d96ac9a7ed5f1a638e54dbfeea450a69b58880f6d
- 16bb969ac6361be47396433559096a37d6cca1f05bedd9e366515b8a34ad8c1b
- e1c1100b75b1a15616e646289785673b3e8f8a7e22386dc77aa18016f7ea4934
- a5b8b2baff1adf9eda601210d86aacc933c4228611bc45d1a6df8433ca6ef946
- 0b3fea009c5add84a640fbae307d591714f01229f57f43257fa6c2e19b464b5f
- 9d30fa8a25a24c524d1e23a06689dd2f830aebbca92f0f77f72c3728efa1d960
- 4591f36f1ee21dfe64710f5027549591cecb952c1d4e67d4ef70038c63194874
- 716ad69bb9e3f06e6d00acc34be816072e0dd1d96715ee0d7906beed94ee4732
- 316d93e9dd34495b156cc625b5a4077d427cf809ade0e0f810ae35bb16766bf6
- 30ea50cd8518bb7e5339111eafd0af87a35dd930efc1e635760d3e4627ef7554
- d99bf09e2cc94cbf752a144e6c0cb47f51eb5f6785709af2410ce6177dee20de
- 6355fd36f28b81ef08b6a038cf6b3dc7bd22b36bb135473fc259453bd73c1432
- ef8b8b7d79e8d9ea8c2a44193498d4887d1ce1ed5bd66373422b68e86f81b3d1
- 5607e93a36a9dcf78000fab7b69e4bba868654a6a1b0f9d516ed4463c490f57a
- e0ecd0dd559c050f4f1e8db8e94b7db84ab73e3417658ef8374b5f116050d530
- c5fe51c00538aa8241b94c1a4297a66ea10cd54bdf71d90253ace7c731ba9fbe
- a335ec53c6dcdf7a464d3b5277921c53461f91e2f9a03ec5d08daa72b1600efc
- 8f8a52f9e80c985ac16cae526a68aa08e2869fcaf1acfef9438b587ccc51941f
- 56fc9691d438f2d120a8d769896cba6132ce2c1b4a1a36b64eb8504987c6579b
- 10ba83c6355c6f7ffee301c28940d98249c06e8f36d0c728d448244b144d4f3c
- 407a2137aecb233bcb357cfe20c798e3fb37c1d715d98d5f290fdd0770c15ef6
- a175a2046c88f70d5758dc8dbe2c418152fe4e4b008ca4cd0c3e5ac6de13290c
- 35c87e3ad5dad7736036edcf35b1c2f33a4f46df41d0b802e136ee13faead1fc
- c56ebb4f1d1b887a829ba460fb03c474cb67b470b8f938ff8a32da1d58fc48fb
- aebab0123ce77668cff72bb095d2ac30621868782c4fc93b52a5f8576d3a8871
- bb08adf26a85f7406dc996b89a487c5fa0d3c0e4305fa4c533841b41076bd507
- c6c8a8307e332639c7bc9ef840b09cd4c861c1bd943b7c66c1b444c245c1cf93
- d0c7ebd30244c515e1be32f623d338cc4d615d36dae162f82c707ba69da3f484
- 947e7d619562722590db3826cf101d778a26e7aed70d8e9ead439c05e6f809bf
- 574b1e04824158e5a0957438ee6286adeb1cb42fe646ca42ff75c1c86e3ad17d
- 099c671e44e2469c0dd346b3d4c51311309628b96b35f1208e0963d8cf3498c4
- 87d11612ee4d7fb05ba8e409b8b26bcf5e0c210a2da12de71aa97d7ff25a1c0a
- bb9d38cfd9f739f0051508527a9a53c6ad45f4c6f6ca1d47cca3b0564e732817
- f9fd22a7b66d45475e817bb9c045b46d4d819b9b608b64987c43935f51de40f8
- b587c932a5c493f4f7572ca15c43af2efb2611f827194b73a695b9d504f5e89e
- 861fe37d11daf1b0d789a910ba951b7826e69e0f8f222df15df156dfb9144821
- e5af78b8e3851e057e36e562914907fe6eab527885f671f8b68b447304c804f8
- 1211d210260ad788b85c72a0ec3eac9904de5c61426ef4fe5ccce5b3e0de536f
- 5d0170365a32c1df7a4504430d547d7b9b7626715ba52d00334717ed5696a7f4"
+checksum="0eee1b17b1f5aed676a2a494cf29b5e5d3d2698728a35eba08e66571d8c84c14
+ bff092f5e1bc8e01e3d88fad4f6121f71c6df9f3f68a0437ef0a14050c7e3b42
+ 71498faef46ff645bbbac526bb66b1cbca34c2b7022ac570a4796c6a39a8975f
+ bd99f9ada2c8248ee1239aa95f448804ec9686a73a28045bf05689d6919fbfcd
+ 467e04bd6eecf14f1b565ee9b89161873d205f54076d94d41a8bfc6fa2a58996
+ 9881874658e6066b366a0a0f6140141caa165c1830f74947270c52c06cb38fa8
+ a9c1c955fb11c7f473ea615c917804cbba1cc1c87b027b581f5c8a738f1a34fb
+ c61f578136c998d7fcfe157dd85637d536da4593a4f8fa90ffc5fe94bba9a803
+ 47ce84a0d744c33049a6e081bd8d65dac515237e5298ff9fc424a1bc4700cc92
+ 08f6eb5779f4399fdf0a8132dc92438e974cd3dcb4c5438fb587db876ee889ec
+ e16ed1906c49edfaaa233338bfd6eaf9e4f2113260a5682d4fdd9e9ce71b017e
+ ddb25de3a9e4cc3e282ffe270e62c13287a016e3c0d676cf8242b6d93afccaf5
+ 9ad51c6346e7d70a94277eaf7146fa11199b2ab40d91653d6abf0d374f7134fd
+ 64ad0267457678a7b6f2b3e452f3678a3aaf14bfb905f4f78ce4d99e06312c37
+ 91df48c9b6ae23e9e94641b98a0ba978f308cfd72236f0a0b9fa712e026cc71d
+ 52e87048120243092d77f79aa33852b57f6aec875b44cc7f321abd50f88afe7d
+ a98a26d0a50af7fec7a95f138d724ef67f309303a0df8067c0755c139b254aee
+ 126894015f17d908062f1600c7d8fa4010b8ed70d206bffc4a408b43356ea3d4
+ 22180f6601376b132f2f46eb08a4ecb3c484e76bb90587764addd5d0647029ea
+ cbb323b2b1133d8290b991b79008ee8471a916c5ba542ca8e359770c19d4759a
+ b3015a7dbf693ce9ef44c6f3b8f7c0f043bb13474e4144159cc26a65cbb23521
+ 2ab851974bdbb5b914acd44edfd6ef2adf4d0d83b872a8adb8b2b64d620b27fc
+ 234ecc57e99be39aa51ab5e5e5b238a9c5857fd366f69cdf160efd25237d0496
+ e627aa9ee85e449ced2e655f45ab60e1372a36f4b9ff8543839a864766718569
+ de9b1a64b01fd15ff6b89d6ccc93451e1f11216b07dc5e6fa05268c3e926cae1
+ 2ca889180191d8183e052c9df3c377600fcae622f7649ab488a3c1a5a1cd8d5b
+ 3b95aace3579b535a55128b9959979a61dba22bcdb195e362ceeb7526407c77a
+ 49154388549a9c5db321ebb7d327708a7bf4b36de39cdf0d93d3b88cee077fb3
+ 9f2b35bc942ca69cb498c2752a234f58a1a765ce30563589c720a755bf29e655
+ e10a8e72f0b6aa267a4a3e51708c86c21d9b92ddfac28d1f2d68a8b21729ca8c
+ 09a1e51ba668959331ac46041a76cc15f345b8634a642918544c0158777dd989
+ 7792bbcc9a1ddcfca8968cea5bcaae250095b5a46fde5d51a48d4426b4c6f5d2
+ 638c665557ef6556a5bbb2c9f79fca780a081226dbd5a465e7615f055a117748
+ 9c3b45900a28ab3efb5b3bb52daebacc1dd3a246936b745fff676e6c3fd251fd
+ 7bcbba3e353cc7a0344302db8a9888f606e28e8c2f11f4f88dde52fba69b43c4
+ 62383ba98a16964ce6ef2bde878515505965cfded17b69e477d3671e1a942fef
+ dcc2212529bea4e8b21bedf3ceefeec1a798818005d526d6d18cabecdff230e1
+ 5d0c64cec6aafcf478b57c26640e18cfae6928d5ae705b9a82337559389a57fe
+ dab730eab216c2cb0a1672a21e78fbf93c672498d5e36781b1c68050ae8431d9
+ e9296fdadb84d3462f63a06e9e72e3d7c1e6df95870a6f303b498fb115e8ac6b
+ 519f1afe2b1a6747e26718f28b39d27f5d0188bc85ed906b54d18cbca6a67ec7
+ e90fdd34d1d4612bd1a7a81ca3275be2dada26862944b4caeb356482596f591a
+ 83142afa82a9db327475afcc3318882fd8a26d81bc946749d57eb3923c5f489b
+ 027604328860d5bc938ac9564aae8957308da5b9ec05cd3984856da1c2af3ea0
+ a7028398816ae2334bf94c66efe429d981a48b790286d27fdc25f3388720e62c
+ 9224a7e0f1ceecdf4c7f77fdeb510100419f9e805e0b204f0c59d36275f6d925
+ 8af990a6fb805f552643b6ee38d178d2f75bd169802cec178175c8005bc77b37
+ b629886a47facaf7fad105b7ee9dc98b470670b25b575e51710d876235209674
+ 31fc7f882b79c4d91d270bcc8e5b2fa7066f21d6c8a5d4d491d7896e49202f06
+ fd7e5dc510770cc601f9ed4e174b8585ef28316f660379235245f10cc0c6bc3e
+ e0ac6d1626c1dfa05bcf6298919aeee4fa6904d4a347608d729e38ead4baf120
+ fe05e00413a2905f3f25d65d635655cf9e37d62fec5d0d235ea5cc7fa08ee1fd
+ 20ff2c930b732082a44020fdebc588ac069264ead48fa0f9ace5aea4210b046f
+ 4346e474009cbb630392ed0583c65448ee577a71403cb164e904a99bf6e819c2
+ f48ac2e2725c83c82af0374b5aa7a1da270bf25ea696c533c981d34518746fbd
+ e520a79ebdec829889a2225079ea7081bfa153ccf71024a9617625b88923d011
+ feb471682e8aa79cdc410c053bd2763878275f1abff17bcb1783798ee264b6be
+ f98a07ccb4806ddfef815712756f06b82543dd13483abe9865434d4c247fa2b0
+ 17f6388807ec48a8419dcc67381f8d8a5aadd467ed7d6c386ff56173e645633c
+ f7aab2c51a78cac47270bd37c9b545fe07b08429299d8fdc27b087ccbb4108f1
+ 0dd59e9a669894d9ae82c50f2ee04495922aa6f45780b51df089706c7ba9cbcc
+ 7579ce83f088693989326b7166f66a3808398be81b922361556c3efbc8a8c08a
+ f07e95eea11c8f6e516c0fdb33038c321ae8aa27ac81f5c6773cf3104e967a19
+ 5e247f86c15a267ac017dfcf73395ed3104f407c96bb606e34070332e2b26050
+ 8b61a367a186feca735487d9f62f0de7865d1a678e7e9f990ad31945bab10eb7
+ 080f150e066508946482e78dcc714c9fb3b63a7975f66ceba018ffc5bc65a833
+ e9f5b74a2856fc009c3139164872ccbe284618d7fc1fa59c16575c82cda8491e
+ 80c50b252b4bc0c00a336a9bdbfb05e7c510f4ad1ae6c64f92f6f6a037f9d762
+ 85596a73a957ff80d403d691cbc96724bae7186e1358f85c3ef21c501b033ad1
+ 81277a3e8b896e760ef75ad90c197818aa3395abf017b7560db5b189302d8e1d
+ 733de2df49762e7c6e16a02acbfe409869ec61f071364d0bbe8cbee43f350c07
+ b8d634c6ce7b03bc78c02480d82a4effbec46119cd8a6c7a0fbfbdbd7f8bee93
+ f68c8c8de23ec4eae407e44176df77b48146a2bd6de4edbcf6eca33f3cf93cb2
+ da5b8d10bfae987051f978f5f5707c9532c124233929402249ac99fe027c4c56
+ 5a00221c264e06b04476acf4098eb9a5813eaebd38d35527652ae757bd7ac819
+ 849872f1edf674b5200c35b05375a23ae56437e8ec1f5cbbd8cd4470127896d1
+ c37075191481a93fd82c3ec12cb5ed81682eff4722e1d519287535e959a46379
+ 286fd2991570be7813a7372b0651ee84de3e94e12b41e906de380573c05b75a9
+ 8f367feebd634b1cdd004c0c448fed8473f780511f525eba7a902753d873b63a
+ f58b3eb8dbf4b214cd6de44ffc23ddddd2a2e61ba4f2b21eb1ae134669e3e19a
+ c527ca276d7c2b676e89030a36b1b0d2eb30eb986849d1ecc3c7fc90ed1b5b22
+ 893484fbfa297fc87733918620f94629f2baee5d747b8cbcef4ff5268d0b8d3e
+ 11a46dde2f4e32c7ba5498195973e26dd757e6eb6f81717259062a92c0bc6cc0
+ 0bca99ff50cb7105bbaba19b345c933b9e4902a92e439bc1bddc8db210a0416e
+ 07536a87813be5de3f2d7b9828b9d846daa4656ed983ef8321496d63d74ed55f
+ bf57e98659c357fb4223d1320d445ad58cb75a5327eceecc9deef4f81b713388
+ 795322220ec8916e15938637d3d0ee0fedc876e6020a5e8d26d8281829b7a609
+ 0b4327c104f159202f4d0ec2c4af3f742551322ea7880194cb4d5eb2e72efb39
+ 9cc3ac6c592f7cc08f5bd0c7285c5de6530a63397212878d69f436f07110049b
+ c63c170c66b39ad9de3f8f6adc5980c7994ea5ee873140654bdcf12c3bc315d1
+ cf94ac6f8728367d485173afc6b17d1687ebb23cb7bc3cf36073ceb0786e6283
+ abceb2f7f9ea142c9029344e502cfad821d32960462b9c1747c289db19a652bc
+ e0eb06bf6818df10345e08ad1431d300bbe26c52f1c1795e95fd157296d3794d"

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

* Re: [PR REVIEW] firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
                   ` (2 preceding siblings ...)
  2021-11-21  9:58 ` [PR PATCH] [Updated] " jdnuemm
@ 2021-11-21 10:01 ` jdnuemm
  2021-11-21 10:09 ` jdnuemm
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: jdnuemm @ 2021-11-21 10:01 UTC (permalink / raw)
  To: ml

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

New review comment by jdnuemm on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#discussion_r753775767

Comment:
I sync the files from src pkg/firefox so it is easier to diff them in the future. 

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

* Re: firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
                   ` (3 preceding siblings ...)
  2021-11-21 10:01 ` [PR REVIEW] " jdnuemm
@ 2021-11-21 10:09 ` jdnuemm
  2021-11-26 14:26 ` Duncaen
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: jdnuemm @ 2021-11-21 10:09 UTC (permalink / raw)
  To: ml

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

New comment by jdnuemm on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#issuecomment-974788164

Comment:
> I would prefer this and the other PR be combined since they need to be synced anyway.

I was not sure about this. Is this for other packages as well? Like bundling dependencies?

Some other Questions:

1. Do i use the [skip CI] wrong? The build process has run and throw some errors.

2. I saw the srrcpkgs/firefox-esr/update file. How is this generated? And Why?


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

* Re: firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
                   ` (4 preceding siblings ...)
  2021-11-21 10:09 ` jdnuemm
@ 2021-11-26 14:26 ` Duncaen
  2021-11-26 14:27 ` Duncaen
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Duncaen @ 2021-11-26 14:26 UTC (permalink / raw)
  To: ml

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

New comment by Duncaen on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#issuecomment-980013722

Comment:
1. yes it should be `[ci skip]`.
2. the update file is not generated, its added if `./xbps-src update-check firefox-esr` does not correctly find if there is a new release. I.e. to change the pattern or the url where to check for new upstream releases. This update check is also used to generate https://alpha.de.repo.voidlinux.org/void-updates/void-updates.txt.

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

* Re: firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
                   ` (5 preceding siblings ...)
  2021-11-26 14:26 ` Duncaen
@ 2021-11-26 14:27 ` Duncaen
  2021-11-28  9:06 ` jdnuemm
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Duncaen @ 2021-11-26 14:27 UTC (permalink / raw)
  To: ml

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

New comment by Duncaen on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#issuecomment-980013722

Comment:
1. yes it should be `[ci skip]`.
2. the update file is not generated, its added if `./xbps-src update-check firefox-esr` does not correctly find if there is a new release. I.e. to change the pattern or the url where to check for new upstream releases. This update check is also used to generate https://alpha.de.repo.voidlinux.org/void-updates/void-updates.txt.

Generally for firefox updates its good to do also a musl and maybe a cross compiled test build just to make sure, if you don't have the resources I can do that.

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

* Re: firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
                   ` (6 preceding siblings ...)
  2021-11-26 14:27 ` Duncaen
@ 2021-11-28  9:06 ` jdnuemm
  2021-11-28 14:01 ` Duncaen
  2021-11-28 14:02 ` [PR PATCH] [Merged]: " Duncaen
  9 siblings, 0 replies; 11+ messages in thread
From: jdnuemm @ 2021-11-28  9:06 UTC (permalink / raw)
  To: ml

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

New comment by jdnuemm on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#issuecomment-981049548

Comment:
@Duncaen if i am helpfull here i will keep this package up to date in the future. But in the moment the whole void package thing is new to me. Anyway i managed to cross compile builds for aarch64-musl,  aarch64 and native for x86_64-musl.

```
./xbps-src -m ~/masterdir-musl binary-bootstrap x86_64-musl
./xbps-src -m ~/masterdir-musl pkg firefox-esr

sudo xbps-install -S cross-aarch64-linux-gnu
./xbps-src -a aarch64 pkg firefox-esr

sudo xbps-install -S cross-aarch64-musl
./xbps-src -a aarch64-musl pkg firefox-esr
```

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

* Re: firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
                   ` (7 preceding siblings ...)
  2021-11-28  9:06 ` jdnuemm
@ 2021-11-28 14:01 ` Duncaen
  2021-11-28 14:02 ` [PR PATCH] [Merged]: " Duncaen
  9 siblings, 0 replies; 11+ messages in thread
From: Duncaen @ 2021-11-28 14:01 UTC (permalink / raw)
  To: ml

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

New comment by Duncaen on void-packages repository

https://github.com/void-linux/void-packages/pull/34167#issuecomment-981090646

Comment:
Ok nice. You don't have to install the cross compilers on the host system, xbps-src installs them into the masterdir.


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

* Re: [PR PATCH] [Merged]: firefox-esr: update to 91.3.0.
  2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
                   ` (8 preceding siblings ...)
  2021-11-28 14:01 ` Duncaen
@ 2021-11-28 14:02 ` Duncaen
  9 siblings, 0 replies; 11+ messages in thread
From: Duncaen @ 2021-11-28 14:02 UTC (permalink / raw)
  To: ml

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

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

firefox-esr: update to 91.3.0.
https://github.com/void-linux/void-packages/pull/34167

Description:
Testing the changes:

- I tested the changes in this PR: briefly

Local build testing:

- I built this PR locally for my native architecture, x86_64-glibc

Note:

I use the Patches from Thunderbird and sync the template with Firefox. 

[skip CI]

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

end of thread, other threads:[~2021-11-28 14:02 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-20 14:23 [PR PATCH] firefox-esr: update to 91.3.0 jdnuemm
2021-11-20 15:05 ` [PR REVIEW] " abenson
2021-11-20 15:06 ` abenson
2021-11-21  9:58 ` [PR PATCH] [Updated] " jdnuemm
2021-11-21 10:01 ` [PR REVIEW] " jdnuemm
2021-11-21 10:09 ` jdnuemm
2021-11-26 14:26 ` Duncaen
2021-11-26 14:27 ` Duncaen
2021-11-28  9:06 ` jdnuemm
2021-11-28 14:01 ` Duncaen
2021-11-28 14:02 ` [PR PATCH] [Merged]: " Duncaen

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