summaryrefslogtreecommitdiff
path: root/extra/patches
diff options
context:
space:
mode:
Diffstat (limited to 'extra/patches')
-rw-r--r--extra/patches/clang/10-add-musl-triples.patch35
-rw-r--r--extra/patches/clang/30-Enable-stack-protector-by-default-for-Alpine-Linux.patch81
-rw-r--r--extra/patches/js78/disable-jslint.patch17
-rw-r--r--extra/patches/js78/fd6847c9416f9eebde636e21d794d25d1be8791d.patch37
-rw-r--r--extra/patches/js78/fix-musl-build.patch16
-rw-r--r--extra/patches/js78/fix-python3.10-compilation.patch312
-rw-r--r--extra/patches/js78/fix-rust-target.patch15
-rw-r--r--extra/patches/rustc/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch24
-rw-r--r--extra/patches/rustc/0007-do-not-install-libunwind-source.patch19
-rw-r--r--extra/patches/rustc/alpine-move-py-scripts-to-share.patch23
-rw-r--r--extra/patches/rustc/alpine-target.patch191
-rw-r--r--extra/patches/rustc/install-template-shebang.patch10
-rw-r--r--extra/patches/rustc/link-musl-dynamically.patch17
-rw-r--r--extra/patches/rustc/musl-fix-linux_musl_base.patch23
-rw-r--r--extra/patches/rustc/need-rpath.patch62
-rw-r--r--extra/patches/rustc/need-ssp_nonshared.patch13
16 files changed, 0 insertions, 895 deletions
diff --git a/extra/patches/clang/10-add-musl-triples.patch b/extra/patches/clang/10-add-musl-triples.patch
deleted file mode 100644
index b11ca84..0000000
--- a/extra/patches/clang/10-add-musl-triples.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- a/lib/Driver/ToolChains/Gnu.cpp
-+++ b/lib/Driver/ToolChains/Gnu.cpp
-@@ -2077,6 +2077,7 @@
- static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
- static const char *const AArch64Triples[] = {
- "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux",
-+ "aarch64-linux-musl",
- "aarch64-suse-linux", "aarch64-linux-android"};
- static const char *const AArch64beLibDirs[] = {"/lib"};
- static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
-@@ -2086,6 +2087,8 @@
- static const char *const ARMTriples[] = {"arm-linux-gnueabi",
- "arm-linux-androideabi"};
- static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
-+ "arm-linux-musleabihf",
-+ "armv7l-linux-musleabihf",
- "armv7hl-redhat-linux-gnueabi",
- "armv6hl-suse-linux-gnueabi",
- "armv7hl-suse-linux-gnueabi"};
-@@ -2105,6 +2108,7 @@
- "x86_64-redhat-linux", "x86_64-suse-linux",
- "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
- "x86_64-slackware-linux", "x86_64-unknown-linux",
-+ "x86_64-linux-musl",
- "x86_64-amazon-linux", "x86_64-linux-android"};
- static const char *const X32Triples[] = {"x86_64-linux-gnux32",
- "x86_64-pc-linux-gnux32"};
-@@ -2116,6 +2120,7 @@
- "i686-redhat-linux", "i386-redhat-linux",
- "i586-suse-linux", "i686-montavista-linux",
- "i686-linux-android", "i686-gnu",
-+ "i686-linux-musl",
- };
-
- static const char *const M68kLibDirs[] = {"/lib"};
diff --git a/extra/patches/clang/30-Enable-stack-protector-by-default-for-Alpine-Linux.patch b/extra/patches/clang/30-Enable-stack-protector-by-default-for-Alpine-Linux.patch
deleted file mode 100644
index f2895ce..0000000
--- a/extra/patches/clang/30-Enable-stack-protector-by-default-for-Alpine-Linux.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Based on original patchset from Jakub Jirutka <jakub@jirutka.cz>
-Updated by Eric Molitor <eric@molitor.org>
-Updated by Natanael Copa <ncopa@alpinelinux.org>
-Updated by omni <omni+alpine@hack.org>
-
---- a/lib/Driver/ToolChains/Linux.h
-+++ b/lib/Driver/ToolChains/Linux.h
-@@ -11,6 +11,7 @@
-
- #include "Gnu.h"
- #include "clang/Driver/ToolChain.h"
-+#include "clang/Basic/LangOptions.h"
-
- namespace clang {
- namespace driver {
-@@ -38,6 +39,18 @@
- CXXStdlibType GetDefaultCXXStdlibType() const override;
- bool isPIEDefault() const override;
- bool isNoExecStackDefault() const override;
-+
-+ LangOptions::StackProtectorMode
-+ GetDefaultStackProtectorLevel(bool KernelOrKext) const override {
-+ StringRef VendorName = Linux::getTriple().getVendorName();
-+ if (VendorName.compare("alpine") == 0)
-+ return LangOptions::SSPStrong;
-+
-+ return LangOptions::SSPOff;
-+ }
-+
-+
-+
- bool IsMathErrnoDefault() const override;
- SanitizerMask getSupportedSanitizers() const override;
- void addProfileRTLibs(const llvm::opt::ArgList &Args,
---- a/test/Driver/fsanitize.c
-+++ b/test/Driver/fsanitize.c
-@@ -667,18 +667,17 @@
- // RUN: %clang -fno-sanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NOSP
- // NOSP-NOT: "-fsanitize=safe-stack"
-
--// RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
-+// RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
- // RUN: %clang -target x86_64-linux-gnu -fsanitize=address,safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP-ASAN
- // RUN: %clang -target x86_64-linux-gnu -fstack-protector -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
- // RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -fstack-protector-all -### %s 2>&1 | FileCheck %s -check-prefix=SP
--// RUN: %clang -target arm-linux-androideabi -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
--// RUN: %clang -target aarch64-linux-android -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
-+// RUN: %clang -target arm-linux-androideabi -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
-+// RUN: %clang -target aarch64-linux-android -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
- // RUN: %clang -target i386-contiki-unknown -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
- // NO-SP-NOT: stack-protector
- // NO-SP: "-fsanitize=safe-stack"
- // SP-ASAN: error: invalid argument '-fsanitize=safe-stack' not allowed with '-fsanitize=address'
- // SP: "-fsanitize=safe-stack"
--// SP: -stack-protector
- // NO-SP-NOT: stack-protector
-
- // RUN: %clang -target powerpc64-unknown-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-SANM
---- a/test/Driver/stack-protector.c
-+++ b/test/Driver/stack-protector.c
-@@ -35,6 +35,20 @@
-
- // Test default stack protector values for Darwin platforms
-
-+// RUN: %clang -target x86_64-alpine-linux-musl -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE
-+// ALPINE: "-stack-protector" "2"
-+
-+// RUN: %clang -target x86_64-alpine-linux-musl -fstack-protector -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE_SPS
-+// ALPINE_SPS: "-stack-protector" "2"
-+
-+// RUN: %clang -target x86_64-alpine-linux-musl -fstack-protector-all -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE_ALL
-+// ALPINE_ALL: "-stack-protector" "3"
-+// ALPINE_ALL-NOT: "-stack-protector-buffer-size"
-+
-+// RUN: %clang -target x86_64-alpine-linux-musl -fno-stack-protector -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE_NOSSP
-+// ALPINE_NOSSP-NOT: "-stack-protector"
-+// ALPINE_NOSSP-NOT: "-stack-protector-buffer-size"
-+
- // RUN: %clang -target armv7k-apple-watchos2.0 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_WATCHOS
- // RUN: %clang -ffreestanding -target armv7k-apple-watchos2.0 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_WATCHOS
- // SSP_WATCHOS: "-stack-protector" "1"
diff --git a/extra/patches/js78/disable-jslint.patch b/extra/patches/js78/disable-jslint.patch
deleted file mode 100644
index 04a8b3e..0000000
--- a/extra/patches/js78/disable-jslint.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/js/src/build/moz.build
-+++ b/js/src/build/moz.build
-@@ -80,14 +80,3 @@
- NO_EXPAND_LIBS = True
-
- DIST_INSTALL = True
--
--# Run SpiderMonkey style checker after linking the static library. This avoids
--# running the script for no-op builds.
--GeneratedFile(
-- 'spidermonkey_checks', script='/config/run_spidermonkey_checks.py',
-- inputs=[
-- '!%sjs_static.%s' % (CONFIG['LIB_PREFIX'], CONFIG['LIB_SUFFIX']),
-- '/config/check_spidermonkey_style.py',
-- '/config/check_macroassembler_style.py',
-- '/config/check_js_opcode.py'
-- ])
diff --git a/extra/patches/js78/fd6847c9416f9eebde636e21d794d25d1be8791d.patch b/extra/patches/js78/fd6847c9416f9eebde636e21d794d25d1be8791d.patch
deleted file mode 100644
index 1af68d9..0000000
--- a/extra/patches/js78/fd6847c9416f9eebde636e21d794d25d1be8791d.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-See https://bugzilla.mozilla.org/show_bug.cgi?id=1539739
-
-From fd6847c9416f9eebde636e21d794d25d1be8791d Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Sat, 1 Jun 2019 09:06:01 +0900
-Subject: [PATCH] Bug 1526653 - Include struct definitions for user_vfp and
- user_vfp_exc.
-
----
- js/src/wasm/WasmSignalHandlers.cpp | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
-index 636537f8478..383c380f04c 100644
---- a/js/src/wasm/WasmSignalHandlers.cpp
-+++ b/js/src/wasm/WasmSignalHandlers.cpp
-@@ -248,7 +248,16 @@ using mozilla::DebugOnly;
- #endif
-
- #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
--# include <sys/user.h>
-+struct user_vfp {
-+ unsigned long long fpregs[32];
-+ unsigned long fpscr;
-+};
-+
-+struct user_vfp_exc {
-+ unsigned long fpexc;
-+ unsigned long fpinst;
-+ unsigned long fpinst2;
-+};
- #endif
-
- #if defined(ANDROID)
---
-2.20.1
-
diff --git a/extra/patches/js78/fix-musl-build.patch b/extra/patches/js78/fix-musl-build.patch
deleted file mode 100644
index af39467..0000000
--- a/extra/patches/js78/fix-musl-build.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Upstream: No
-Reason: mozjs60 miscompiles on musl if built with HAVE_THREAD_TLS_KEYWORD:
-https://github.com/void-linux/void-packages/issues/2598
-diff --git a/js/src/old-configure.in b/js/src/old-configure.in
---- a/js/src/old-configure.in
-+++ b/js/src/old-configure.in
-@@ -1272,6 +1272,9 @@
- *-android*|*-linuxandroid*)
- :
- ;;
-+ *-musl*)
-+ :
-+ ;;
- *)
- AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
- ;;
diff --git a/extra/patches/js78/fix-python3.10-compilation.patch b/extra/patches/js78/fix-python3.10-compilation.patch
deleted file mode 100644
index 4473d9b..0000000
--- a/extra/patches/js78/fix-python3.10-compilation.patch
+++ /dev/null
@@ -1,312 +0,0 @@
-#https://src.fedoraproject.org/rpms/mozjs78/blob/rawhide/f/Fixup-compatibility-of-mozbuild-with-Python-3.10.patch
-
-m a88d0c8e27b48344942187c2611bb121bde9332d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= <fzatlouk@redhat.com>
-Date: Tue, 13 Jul 2021 11:46:20 +0200
-Subject: [PATCH] Fixup compatibility of mozbuild with Python 3.10
-
----
- python/mach/mach/config.py | 4 ++--
- python/mach/mach/main.py | 4 ++--
- python/mach/mach/decorators.py | 2 +-
- python/mozbuild/mozbuild/backend/configenvironment.py | 3 ++-
- python/mozbuild/mozbuild/makeutil.py | 2 +-
- python/mozbuild/mozbuild/util.py | 2 +-
- testing/marionette/client/marionette_driver/wait.py | 2 +-
- testing/mozbase/manifestparser/manifestparser/filters.py | 3 ++-
- testing/mozbase/versioninfo.py | 2 +-
- testing/web-platform/tests/tools/manifest/vcs.py | 2 +-
- .../web-platform/tests/tools/third_party/h2/h2/settings.py | 2 +-
- .../tests/tools/third_party/html5lib/html5lib/_trie/_base.py | 2 +-
- .../tools/third_party/html5lib/html5lib/treebuilders/dom.py | 2 +-
- .../tests/tools/third_party/hyper/hyper/common/headers.py | 2 +-
- .../tests/tools/third_party/hyper/hyper/h2/settings.py | 2 +-
- .../tests/tools/third_party/hyper/hyper/http11/connection.py | 4 ++--
- .../third_party/hyper/hyper/packages/hyperframe/flags.py | 2 +-
- .../tests/tools/third_party/hyperframe/hyperframe/flags.py | 2 +-
- testing/web-platform/tests/tools/wptserve/wptserve/config.py | 3 ++-
- testing/web-platform/tests/webdriver/tests/support/sync.py | 2 +-
- 19 files changed, 24 insertions(+), 21 deletions(-)
-
-diff --git a/python/mach/mach/config.py b/python/mach/mach/config.py
-index 7210eca82..edb4d2e93 100644
---- a/python/mach/mach/config.py
-+++ b/python/mach/mach/config.py
-@@ -144,7 +144,7 @@ def reraise_attribute_error(func):
- 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 @@ class ConfigSettings(collections.Mapping):
- 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 --git a/python/mach/mach/decorators.py b/python/mach/mach/decorators.py
-index 27f7f34a6..5f63271a3 100644
---- a/python/mach/mach/decorators.py
-+++ b/python/mach/mach/decorators.py
-@@ -140,7 +140,7 @@ def CommandProvider(cls):
- '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)
-
---- a/python/mach/mach/main.py
-+++ b/python/mach/mach/main.py
-@@ -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 --git a/python/mozbuild/mozbuild/backend/configenvironment.py b/python/mozbuild/mozbuild/backend/configenvironment.py
-index 20d1a9fa6..8747958bd 100644
---- a/python/mozbuild/mozbuild/backend/configenvironment.py
-+++ b/python/mozbuild/mozbuild/backend/configenvironment.py
-@@ -9,7 +9,8 @@ import six
- 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 --git a/python/mozbuild/mozbuild/makeutil.py b/python/mozbuild/mozbuild/makeutil.py
-index 4da1a3b26..4ce56848c 100644
---- a/python/mozbuild/mozbuild/makeutil.py
-+++ b/python/mozbuild/mozbuild/makeutil.py
-@@ -7,7 +7,7 @@ from __future__ import absolute_import, print_function, unicode_literals
- import os
- import re
- import six
--from collections import Iterable
-+from collections.abc import Iterable
-
-
- class Makefile(object):
-diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
-index 044cf645c..98ed3ef52 100644
---- a/python/mozbuild/mozbuild/util.py
-+++ b/python/mozbuild/mozbuild/util.py
-@@ -782,7 +782,7 @@ class HierarchicalStringList(object):
- self._strings = StrictOrderingOnAppendList()
- self._children = {}
-
-- class StringListAdaptor(collections.Sequence):
-+ class StringListAdaptor(collections.abc.Sequence):
- def __init__(self, hsl):
- self._hsl = hsl
-
-diff --git a/testing/marionette/client/marionette_driver/wait.py b/testing/marionette/client/marionette_driver/wait.py
-index eeaa1e23d..c147f463f 100644
---- a/testing/marionette/client/marionette_driver/wait.py
-+++ b/testing/marionette/client/marionette_driver/wait.py
-@@ -82,7 +82,7 @@ class Wait(object):
-
- 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 --git a/testing/mozbase/manifestparser/manifestparser/filters.py b/testing/mozbase/manifestparser/manifestparser/filters.py
-index 287ee033b..b1d608003 100644
---- a/testing/mozbase/manifestparser/manifestparser/filters.py
-+++ b/testing/mozbase/manifestparser/manifestparser/filters.py
-@@ -12,7 +12,8 @@ from __future__ import absolute_import
-
- 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 --git a/testing/mozbase/versioninfo.py b/testing/mozbase/versioninfo.py
-index 91d1a0473..8c1680069 100755
---- a/testing/mozbase/versioninfo.py
-+++ b/testing/mozbase/versioninfo.py
-@@ -11,7 +11,7 @@ from commit messages.
-
- 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 --git a/testing/web-platform/tests/tools/manifest/vcs.py b/testing/web-platform/tests/tools/manifest/vcs.py
-index 7c0feeb81..05ee19c7c 100644
---- a/testing/web-platform/tests/tools/manifest/vcs.py
-+++ b/testing/web-platform/tests/tools/manifest/vcs.py
-@@ -3,7 +3,7 @@ import json
- import os
- import stat
- from collections import deque
--from collections import MutableMapping
-+from collections.abc import MutableMapping
-
- from six import with_metaclass, PY2
-
-diff --git a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
-index 3da720329..e097630e9 100644
---- a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
-+++ b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
-@@ -88,7 +88,7 @@ class ChangedSetting:
- )
-
-
--class Settings(collections.MutableMapping):
-+class Settings(collections.abc.MutableMapping):
- """
- An object that encapsulates HTTP/2 settings state.
-
-diff --git 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
-index a1158bbbf..a9295a2ba 100644
---- 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
-@@ -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 --git 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
-index dcfac220b..818a33433 100644
---- 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
-@@ -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 --git 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
-index 655a591ac..6454f550a 100644
---- 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
-@@ -10,7 +10,7 @@ import collections
- 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 --git 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
-index fedc5e3c4..040afea92 100755
---- 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
-@@ -151,7 +151,7 @@ class ChangedSetting:
- )
-
-
--class Settings(collections.MutableMapping):
-+class Settings(collections.abc.MutableMapping):
- """
- An object that encapsulates HTTP/2 settings state.
-
-diff --git 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
-index 61361c358..a214311d2 100644
---- 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
-@@ -10,7 +10,7 @@ import os
- 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 @@ class HTTP11Connection(object):
- 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 --git 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
-index e8f630056..8f2ea689b 100644
---- 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
-@@ -11,7 +11,7 @@ import collections
- 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 --git a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
-index 05b35017e..14c352e10 100644
---- a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
-+++ b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
-@@ -11,7 +11,7 @@ import collections
- 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 --git a/testing/web-platform/tests/tools/wptserve/wptserve/config.py b/testing/web-platform/tests/tools/wptserve/wptserve/config.py
-index 7766565fe..3c1c36d6f 100644
---- a/testing/web-platform/tests/tools/wptserve/wptserve/config.py
-+++ b/testing/web-platform/tests/tools/wptserve/wptserve/config.py
-@@ -2,7 +2,8 @@ import copy
- 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 --git a/testing/web-platform/tests/webdriver/tests/support/sync.py b/testing/web-platform/tests/webdriver/tests/support/sync.py
-index 3fc77131c..8e8f6b819 100644
---- a/testing/web-platform/tests/webdriver/tests/support/sync.py
-+++ b/testing/web-platform/tests/webdriver/tests/support/sync.py
-@@ -81,7 +81,7 @@ class Poll(object):
-
- 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)
---
-2.31.1
-
-
diff --git a/extra/patches/js78/fix-rust-target.patch b/extra/patches/js78/fix-rust-target.patch
deleted file mode 100644
index f1a98df..0000000
--- a/extra/patches/js78/fix-rust-target.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Allow us to just set RUST_TARGEt ourselves instead of hacking around in mozilla's
-weird custom build system...
-
-diff -upr firefox-68.9.0.orig/build/moz.configure/rust.configure firefox-68.9.0/build/moz.configure/rust.configure
---- firefox-68.9.0.orig/build/moz.configure/rust.configure 2020-06-02 22:54:39.982616128 +0200
-+++ firefox-68.9.0/build/moz.configure/rust.configure 2020-06-02 23:08:37.656332899 +0200
-@@ -345,7 +345,7 @@ def rust_triple_alias(host_or_target):
-
- return None
-
-- rustc_target = find_candidate(candidates)
-+ rustc_target = os.environ['RUST_TARGET']
-
- if rustc_target is None:
- die("Don't know how to translate {} for rustc".format(
diff --git a/extra/patches/rustc/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/extra/patches/rustc/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
deleted file mode 100644
index 30cb66f..0000000
--- a/extra/patches/rustc/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Additions for build.rs by q66, necessary for our musl setup.
-
-From 1eb558f246269606c6d8d73824ef6b44fa10764e Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 9 Sep 2017 00:14:16 -0500
-Subject: [PATCH 06/16] Prefer libgcc_eh over libunwind for musl
-
----
- src/libunwind/lib.rs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs
-index 9182e349b19..0377fbb58fc 100644
---- a/library/unwind/src/lib.rs
-+++ b/library/unwind/src/lib.rs
-@@ -51,7 +51,7 @@
- #[link(name = "unwind", cfg(not(target_feature = "crt-static")))]
- extern "C" {}
- } else {
-- #[link(name = "unwind", kind = "static", modifiers = "-bundle", cfg(target_feature = "crt-static"))]
-+ #[link(name = "gcc_eh", cfg(target_feature = "crt-static"))]
- #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))]
- extern "C" {}
- }
diff --git a/extra/patches/rustc/0007-do-not-install-libunwind-source.patch b/extra/patches/rustc/0007-do-not-install-libunwind-source.patch
deleted file mode 100644
index e8ff8b7..0000000
--- a/extra/patches/rustc/0007-do-not-install-libunwind-source.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From: Dominic Meiser <alpine@msrd0.de>
-Date: Tue, 22 Dec 2020 23:31:28 +0100
-Subject: [PATCH] Do not install libunwind source
-
-This was added in rustc 1.48, but is incompatible with the Alpine Linux package since it removes all bundled
-dependencies prior to building.
-
-diff -Naur rustc-1.48.0-src.orig/src/bootstrap/dist.rs rustc-1.48.0-src/src/bootstrap/dist.rs
---- rustc-1.48.0-src.orig/src/bootstrap/dist.rs 2020-12-22 16:39:30.504249113 +0100
-+++ rustc-1.48.0-src/src/bootstrap/dist.rs 2020-12-22 16:42:08.663006830 +0100
-@@ -1016,7 +1016,7 @@
- copy_src_dirs(
- builder,
- &builder.src,
-- &["library", "src/llvm-project/libunwind"],
-+ &["library"],
- &[
- // not needed and contains symlinks which rustup currently
- // chokes on when unpacking.
diff --git a/extra/patches/rustc/alpine-move-py-scripts-to-share.patch b/extra/patches/rustc/alpine-move-py-scripts-to-share.patch
deleted file mode 100644
index 21be36f..0000000
--- a/extra/patches/rustc/alpine-move-py-scripts-to-share.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/src/etc/rust-gdb
-+++ b/src/etc/rust-gdb
-@@ -12,7 +12,7 @@
-
- # Find out where the pretty printer Python module is
- RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)"
--GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
-+GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/share/rust/etc"
-
- # Run GDB with the additional arguments that load the pretty printers
- # Set the environment variable `RUST_GDB` to overwrite the call to a
- # Set the environment variable `RUST_GDB` to overwrite the call to a
---- a/src/etc/rust-lldb
-+++ b/src/etc/rust-lldb
-@@ -8,7 +8,7 @@
-
- # Find out where to look for the pretty printer Python module
- RUSTC_SYSROOT=$(rustc --print sysroot)
--RUST_LLDB="$RUSTC_SYSROOT/lib/rustlib/$host/bin/lldb"
-+RUST_LLDB="$RUSTC_SYSROOT/share/rust/etc"
-
- lldb=lldb
- if [ -f "$RUST_LLDB" ]; then
diff --git a/extra/patches/rustc/alpine-target.patch b/extra/patches/rustc/alpine-target.patch
deleted file mode 100644
index 2392cdd..0000000
--- a/extra/patches/rustc/alpine-target.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From: Shiz <hi@shiz.me>
-Updated by Rasmus Thomsen <oss@cogitri.dev> on 28th of July 2019
-Updated again by Ariadne Conill <ariadne@dereferenced.org> on 31 October 2020
-Date: Thu, 20 Aug 2017 01:52:36 +0200
-Last-Updated: Sat, 28 Oct 2017 20:23:00 +0200
-Subject: [PATCH] Add Alpine targets
-
-This adds `$arch-alpine-linux-musl` targets to Rust to encode our toolchain
-and distribution-specific quirks instead of polluting the main musl target of
-`$arch-unknown-linux-musl`.
-
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/aarch64_alpine_linux_musl.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::aarch64_unknown_linux_musl::target();
-+
-+ base.llvm_target = "aarch64-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/armv6_alpine_linux_musleabihf.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::arm_unknown_linux_musleabihf::target();
-+
-+ base.llvm_target = "armv6-alpine-linux-musleabihf".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/armv7_alpine_linux_musleabihf.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::armv7_unknown_linux_musleabihf::target();
-+
-+ base.llvm_target = "armv7-alpine-linux-musleabihf".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/i586_alpine_linux_musl.rs
-@@ -0,0 +1,14 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::i686_unknown_linux_musl::target();
-+
-+ base.options.cpu = "pentium4".to_string();
-+ base.llvm_target = "i586-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- rustc-1.48.0-src.orig/compiler/rustc_target/src/spec/mod.rs
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/mod.rs
-@@ -490,6 +490,16 @@
- }
-
- supported_targets! {
-+ ("i586-alpine-linux-musl", i586_alpine_linux_musl),
-+ ("x86_64-alpine-linux-musl", x86_64_alpine_linux_musl),
-+ ("aarch64-alpine-linux-musl", aarch64_alpine_linux_musl),
-+ ("armv6-alpine-linux-musleabihf", armv6_alpine_linux_musleabihf),
-+ ("armv7-alpine-linux-musleabihf", armv7_alpine_linux_musleabihf),
-+ ("powerpc-alpine-linux-musl", powerpc_alpine_linux_musl),
-+ ("powerpc64-alpine-linux-musl", powerpc64_alpine_linux_musl),
-+ ("powerpc64le-alpine-linux-musl", powerpc64le_alpine_linux_musl),
-+ ("s390x-alpine-linux-musl", s390x_alpine_linux_musl),
-+ ("riscv64-alpine-linux-musl", riscv64_alpine_linux_musl),
- ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
- ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
- ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/powerpc64_alpine_linux_musl.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::powerpc64_unknown_linux_musl::target();
-+
-+ base.llvm_target = "powerpc64-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/powerpc64le_alpine_linux_musl.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::powerpc64le_unknown_linux_musl::target();
-+
-+ base.llvm_target = "powerpc64le-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/powerpc_alpine_linux_musl.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::powerpc_unknown_linux_musl::target();
-+
-+ base.llvm_target = "powerpc-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/s390x_alpine_linux_musl.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::s390x_unknown_linux_musl::target();
-+
-+ base.llvm_target = "s390x-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.48.0-src/compiler/rustc_target/src/spec/x86_64_alpine_linux_musl.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::x86_64_unknown_linux_musl::target();
-+
-+ base.llvm_target = "x86_64-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
---- /dev/null
-+++ rustc-1.52.1-src/compiler/rustc_target/src/spec/riscv64_alpine_linux_musl.rs
-@@ -0,0 +1,13 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+ let mut base = super::riscv64gc_unknown_linux_musl::target();
-+
-+ base.llvm_target = "riscv64-alpine-linux-musl".to_string();
-+ base.options.vendor = "alpine".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.static_position_independent_executables = true;
-+ base.options.need_rpath = true;
-+
-+ base
-+}
diff --git a/extra/patches/rustc/install-template-shebang.patch b/extra/patches/rustc/install-template-shebang.patch
deleted file mode 100644
index e81b579..0000000
--- a/extra/patches/rustc/install-template-shebang.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-The script seems to be POSIX-sh (+ local) compatible.
-
---- a/src/tools/rust-installer/install-template.sh
-+++ b/src/tools/rust-installer/install-template.sh
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- # Copyright 2014 The Rust Project Developers. See the COPYRIGHT
- # file at the top-level directory of this distribution and at
- # http://rust-lang.org/COPYRIGHT.
diff --git a/extra/patches/rustc/link-musl-dynamically.patch b/extra/patches/rustc/link-musl-dynamically.patch
deleted file mode 100644
index 55d02a3..0000000
--- a/extra/patches/rustc/link-musl-dynamically.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- rustc-1.58.0-src.orig/vendor/libc/src/unix/mod.rs
-+++ rustc-1.58.0-src/vendor/libc/src/unix/mod.rs
-@@ -329,11 +329,11 @@
- #[link(name = "c", cfg(not(target_feature = "crt-static")))]
- extern {}
- } else if #[cfg(target_env = "musl")] {
-+ #[link(name = "c")]
-+ extern {}
- #[cfg_attr(feature = "rustc-dep-of-std",
-- link(name = "c", kind = "static", modifiers = "-bundle",
-+ link(name = "gcc", kind = "static", modifiers = "-bundle",
- cfg(target_feature = "crt-static")))]
-- #[cfg_attr(feature = "rustc-dep-of-std",
-- link(name = "c", cfg(not(target_feature = "crt-static"))))]
- extern {}
- } else if #[cfg(target_os = "emscripten")] {
- #[link(name = "c")]
diff --git a/extra/patches/rustc/musl-fix-linux_musl_base.patch b/extra/patches/rustc/musl-fix-linux_musl_base.patch
deleted file mode 100644
index 1771ffe..0000000
--- a/extra/patches/rustc/musl-fix-linux_musl_base.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From: Jakub Jirutka <jakub@jirutka.cz>
-Date: Sat, 08 Aug 2016 15:06:00 +0200
-Subject: [PATCH] Fix linux_musl_base for native musl host
-
-See https://github.com/rust-lang/rust/pull/40113
-
---- a/compiler/rustc_target/src/spec/linux_musl_base.rs
-+++ b/compiler/rustc_target/src/spec/linux_musl_base.rs
-@@ -5,12 +5,9 @@
- let mut base = super::linux_base::opts();
-
- base.env = "musl".to_string();
-- base.pre_link_objects_fallback = crt_objects::pre_musl_fallback();
-- base.post_link_objects_fallback = crt_objects::post_musl_fallback();
-- base.crt_objects_fallback = Some(CrtObjectsFallback::Musl);
-
- // These targets statically link libc by default
-- base.crt_static_default = true;
-+ base.crt_static_default = false;
-
- base
- }
-
diff --git a/extra/patches/rustc/need-rpath.patch b/extra/patches/rustc/need-rpath.patch
deleted file mode 100644
index 5ab8377..0000000
--- a/extra/patches/rustc/need-rpath.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From: Shiz <hi@shiz.me>
-Date: Thu, 20 Aug 2017 01:48:22 +0200
-Subject: [PATCH] Add need_rpath target option to force RPATH generation
-
-This adds a `need_rpath` option to the target options in order to implicitly
-have the equivalent of `-C rpath` specified by default for final products
-(executables and dynamic libraries), so that RPATHs are always added.
-
-We have to skip this step in the bootstrap phase as it does its own manual
-RPATH additions, but unfortunately there's no clean way to detect this.
-As such, we have to resort to checking the `RUSTC_BOOTSTRAP` variable.
-Hacky hacky!
-
---- a/compiler/rustc_target/src/spec/mod.rs
-+++ b/compiler/rustc_target/src/spec/mod.rs
-@@ -379,6 +379,8 @@
- pub allows_weak_linkage: bool,
- /// Whether the linker support rpaths or not. Defaults to false.
- pub has_rpath: bool,
-+ /// Whether to force rpath support on by default. Defaults to false.
-+ pub need_rpath: bool,
- /// Whether to disable linking to the default libraries, typically corresponds
- /// to `-nodefaultlibs`. Defaults to true.
- pub no_default_libraries: bool,
-@@ -519,6 +519,7 @@
- linker_is_gnu: false,
- allows_weak_linkage: true,
- has_rpath: false,
-+ need_rpath: false,
- no_default_libraries: true,
- position_independent_executables: false,
- static_position_independent_executables: false,
-@@ -776,6 +776,7 @@
- key!(linker_is_gnu, bool);
- key!(allows_weak_linkage, bool);
- key!(has_rpath, bool);
-+ key!(need_rpath, bool);
- key!(no_default_libraries, bool);
- key!(position_independent_executables, bool);
- key!(static_position_independent_executables, bool);
-@@ -980,6 +980,7 @@
- target_option_val!(linker_is_gnu);
- target_option_val!(allows_weak_linkage);
- target_option_val!(has_rpath);
-+ target_option_val!(need_rpath);
- target_option_val!(no_default_libraries);
- target_option_val!(position_independent_executables);
- target_option_val!(static_position_independent_executables);
---- a/compiler/rustc_codegen_ssa/src/back/link.rs.orig
-+++ b/compiler/rustc_codegen_ssa/src/back/link.rs
-@@ -1675,7 +1675,10 @@
- // FIXME (#2397): At some point we want to rpath our guesses as to
- // where extern libraries might live, based on the
- // add_lib_search_paths
-- if sess.opts.cg.rpath {
-+ // XXX: hacky hacky
-+ let bootstrap = env::var("RUSTC_BOOTSTRAP").is_ok();
-+ if !bootstrap && !sess.crt_static(None) &&
-+ (sess.opts.cg.rpath || sess.target.options.need_rpath) {
- let libs = codegen_results
- .crate_info
- .used_crates
diff --git a/extra/patches/rustc/need-ssp_nonshared.patch b/extra/patches/rustc/need-ssp_nonshared.patch
deleted file mode 100644
index f1adf20..0000000
--- a/extra/patches/rustc/need-ssp_nonshared.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/library/std/src/sys/unix/mod.rs.orig 2021-02-11 18:34:14.479832268 +0100
-+++ b/library/std/src/sys/unix/mod.rs 2021-02-11 18:38:28.078987749 +0100
-@@ -243,6 +243,9 @@
- #[link(name = "log")]
- #[link(name = "gcc")]
- extern "C" {}
-+ } else if #[cfg(all(target_os = "linux", target_env = "musl"))] {
-+ #[link(name = "ssp_nonshared")]
-+ extern "C" {}
- } else if #[cfg(target_os = "freebsd")] {
- #[link(name = "execinfo")]
- #[link(name = "pthread")]
-