summaryrefslogtreecommitdiffstats
path: root/debian/patches/debian-hacks
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/debian-hacks')
-rw-r--r--debian/patches/debian-hacks/Add-a-2-minutes-timeout-on-xpcshell-tests.patch47
-rw-r--r--debian/patches/debian-hacks/Add-another-preferences-directory-for-applications-p.patch34
-rw-r--r--debian/patches/debian-hacks/Add-debian-extra-stuff-to-upstream-build-system-dire.patch20
-rw-r--r--debian/patches/debian-hacks/Add-missing-webrtc-directory-for-ppc64el-bz-1775202.patch20
-rw-r--r--debian/patches/debian-hacks/Allow-to-override-rust-LTO-flag.patch31
-rw-r--r--debian/patches/debian-hacks/Avoid-using-vmrs-vmsr-on-armel.patch21
-rw-r--r--debian/patches/debian-hacks/Avoid-wrong-sessionstore-data-to-keep-windows-out-of.patch37
-rw-r--r--debian/patches/debian-hacks/Don-t-build-image-gtests.patch23
-rw-r--r--debian/patches/debian-hacks/Fix-math_private.h-for-i386-FTBFS.patch24
-rw-r--r--debian/patches/debian-hacks/Relax-minimum-supporter-rust-version-to-1.63.patch373
-rw-r--r--debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch21
-rw-r--r--debian/patches/debian-hacks/Remove-workaround-for-old-libstdc-problem-which-now-.patch56
-rw-r--r--debian/patches/debian-hacks/Use-build-id-as-langpack-version-for-reproducibility.patch21
-rw-r--r--debian/patches/debian-hacks/Use-the-Mozilla-Location-Service-key-when-the-Google.patch21
-rw-r--r--debian/patches/debian-hacks/Work-around-bz-1775202-to-fix-FTBFS-on-ppc64el.patch23
15 files changed, 772 insertions, 0 deletions
diff --git a/debian/patches/debian-hacks/Add-a-2-minutes-timeout-on-xpcshell-tests.patch b/debian/patches/debian-hacks/Add-a-2-minutes-timeout-on-xpcshell-tests.patch
new file mode 100644
index 0000000000..2aaafbfd9b
--- /dev/null
+++ b/debian/patches/debian-hacks/Add-a-2-minutes-timeout-on-xpcshell-tests.patch
@@ -0,0 +1,47 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Mon, 27 Dec 2010 10:44:28 +0100
+Subject: Add a 2 minutes timeout on xpcshell tests
+
+---
+ testing/xpcshell/runxpcshelltests.py | 21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/testing/xpcshell/runxpcshelltests.py b/testing/xpcshell/runxpcshelltests.py
+index 8a5378e..42e8255 100755
+--- a/testing/xpcshell/runxpcshelltests.py
++++ b/testing/xpcshell/runxpcshelltests.py
+@@ -10,6 +10,7 @@ import os
+ import pipes
+ import random
+ import re
++import select
+ import shutil
+ import signal
+ import subprocess
+@@ -838,9 +839,23 @@ class XPCShellTestThread(Thread):
+ if self.interactive:
+ self.log.info("%s | Process ID: %d" % (name, self.proc_ident))
+
+- # Communicate returns a tuple of (stdout, stderr), however we always
+- # redirect stderr to stdout, so the second element is ignored.
+- process_output, _ = self.communicate(proc)
++ if self.pStdout == PIPE:
++ process_stdout = ""
++ while True:
++ (r, w, e) = select.select([proc.stdout], [], [], 120)
++ if len(r) == 0:
++ process_stdout += "TEST-UNEXPECTED-FAIL | %s | application timed out after 120 seconds with no output" % (test)
++ proc.kill()
++ break
++ line = proc.stdout.read(1)
++ if line == "":
++ break
++ process_stdout += line
++ proc.wait()
++ else:
++ # Communicate returns a tuple of (stdout, stderr), however we always
++ # redirect stderr to stdout, so the second element is ignored.
++ process_output, _ = self.communicate(proc)
+
+ if self.interactive:
+ # Not sure what else to do here...
diff --git a/debian/patches/debian-hacks/Add-another-preferences-directory-for-applications-p.patch b/debian/patches/debian-hacks/Add-another-preferences-directory-for-applications-p.patch
new file mode 100644
index 0000000000..bd617dff70
--- /dev/null
+++ b/debian/patches/debian-hacks/Add-another-preferences-directory-for-applications-p.patch
@@ -0,0 +1,34 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Sat, 21 Jun 2008 03:09:21 +0200
+Subject: Add another preferences directory for applications:
+ preferences/syspref
+
+It was existing in previous versions of iceweasel as a symlink to
+/etc/iceweasel/pref.
+
+This has the side effect to make these preferences there work again, and
+to disable the "set as default browser" dialog.
+---
+ toolkit/xre/nsXREDirProvider.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+index e8a4f54..83a91dd 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -787,6 +787,7 @@ static const char* const kAppendPrefDir[] = {"defaults", "preferences",
+ static const char* const kAppendBackgroundTasksPrefDir[] = {
+ "defaults", "backgroundtasks", nullptr};
+ #endif
++static const char *const kAppendSysPrefDir[] = { "defaults", "syspref", nullptr };
+
+ nsresult nsXREDirProvider::GetFilesInternal(const char* aProperty,
+ nsISimpleEnumerator** aResult) {
+@@ -803,6 +804,7 @@ nsresult nsXREDirProvider::GetFilesInternal(const char* aProperty,
+ LoadDirIntoArray(mXULAppDir, kAppendBackgroundTasksPrefDir, directories);
+ }
+ #endif
++ LoadDirIntoArray(mXULAppDir, kAppendSysPrefDir, directories);
+
+ rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
+ } else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
diff --git a/debian/patches/debian-hacks/Add-debian-extra-stuff-to-upstream-build-system-dire.patch b/debian/patches/debian-hacks/Add-debian-extra-stuff-to-upstream-build-system-dire.patch
new file mode 100644
index 0000000000..9a854ab73e
--- /dev/null
+++ b/debian/patches/debian-hacks/Add-debian-extra-stuff-to-upstream-build-system-dire.patch
@@ -0,0 +1,20 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Mon, 16 Dec 2013 10:53:58 +0900
+Subject: Add debian/extra-stuff to upstream build system directory traversal
+
+---
+ moz.build | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/moz.build b/moz.build
+index 80e23e9..a7b9599 100644
+--- a/moz.build
++++ b/moz.build
+@@ -210,4 +210,7 @@ SPHINX_TREES["mots"] = "docs/mots"
+
+ SPHINX_TREES["update-infrastructure"] = "docs/update-infrastructure"
+
++if not CONFIG["LIBXUL_SDK"]:
++ DIRS += ["debian/extra-stuff"]
++
+ include("build/templates.mozbuild")
diff --git a/debian/patches/debian-hacks/Add-missing-webrtc-directory-for-ppc64el-bz-1775202.patch b/debian/patches/debian-hacks/Add-missing-webrtc-directory-for-ppc64el-bz-1775202.patch
new file mode 100644
index 0000000000..f6367a51f9
--- /dev/null
+++ b/debian/patches/debian-hacks/Add-missing-webrtc-directory-for-ppc64el-bz-1775202.patch
@@ -0,0 +1,20 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Mon, 15 Aug 2022 15:41:15 +0900
+Subject: Add missing webrtc directory for ppc64el (bz#1775202)
+
+---
+ third_party/libwebrtc/moz.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/third_party/libwebrtc/moz.build b/third_party/libwebrtc/moz.build
+index e405ed6..01cd3d6 100644
+--- a/third_party/libwebrtc/moz.build
++++ b/third_party/libwebrtc/moz.build
+@@ -627,6 +627,7 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CONFIG["OS_TARGET"] == "Linux":
+ "/third_party/libwebrtc/modules/audio_coding/isac_gn",
+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn",
+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
++ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn",
+ ]
+
+ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux":
diff --git a/debian/patches/debian-hacks/Allow-to-override-rust-LTO-flag.patch b/debian/patches/debian-hacks/Allow-to-override-rust-LTO-flag.patch
new file mode 100644
index 0000000000..d18b9360f3
--- /dev/null
+++ b/debian/patches/debian-hacks/Allow-to-override-rust-LTO-flag.patch
@@ -0,0 +1,31 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Sun, 14 Aug 2022 15:05:23 +0900
+Subject: Allow to override rust LTO flag
+
+---
+ config/makefiles/rust.mk | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
+index 9afd7e7..2848d04 100644
+--- a/config/makefiles/rust.mk
++++ b/config/makefiles/rust.mk
+@@ -92,8 +92,9 @@ ifndef rustflags_sancov
+ # Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
+ ifndef MOZ_CODE_COVERAGE
+ ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
+-cargo_rustc_flags += -Clto
++cargo_rustc_flags += $(or $(DEBIAN_RUST_LTO),-Clto)
+ endif
++ifneq (-Clto=off,$(DEBIAN_RUST_LTO))
+ # We need -Cembed-bitcode=yes for all crates when using -Clto.
+ RUSTFLAGS += -Cembed-bitcode=yes
+ endif
+@@ -101,6 +102,7 @@ endif
+ endif
+ endif
+ endif
++endif
+
+ ifdef CARGO_INCREMENTAL
+ export CARGO_INCREMENTAL
diff --git a/debian/patches/debian-hacks/Avoid-using-vmrs-vmsr-on-armel.patch b/debian/patches/debian-hacks/Avoid-using-vmrs-vmsr-on-armel.patch
new file mode 100644
index 0000000000..ffe17912ca
--- /dev/null
+++ b/debian/patches/debian-hacks/Avoid-using-vmrs-vmsr-on-armel.patch
@@ -0,0 +1,21 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Tue, 22 May 2018 07:51:56 +0900
+Subject: Avoid using vmrs/vmsr on armel
+
+---
+ dom/media/webaudio/blink/DenormalDisabler.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dom/media/webaudio/blink/DenormalDisabler.h b/dom/media/webaudio/blink/DenormalDisabler.h
+index 646482b..8803a7d 100644
+--- a/dom/media/webaudio/blink/DenormalDisabler.h
++++ b/dom/media/webaudio/blink/DenormalDisabler.h
+@@ -45,7 +45,7 @@ namespace WebCore {
+ # define HAVE_DENORMAL 1
+ #endif
+
+-#if defined(__arm__) || defined(__aarch64__)
++#if (defined(__arm__) && !defined(__SOFTFP__)) || defined(__aarch64__)
+ # define HAVE_DENORMAL 1
+ #endif
+
diff --git a/debian/patches/debian-hacks/Avoid-wrong-sessionstore-data-to-keep-windows-out-of.patch b/debian/patches/debian-hacks/Avoid-wrong-sessionstore-data-to-keep-windows-out-of.patch
new file mode 100644
index 0000000000..1af4423c17
--- /dev/null
+++ b/debian/patches/debian-hacks/Avoid-wrong-sessionstore-data-to-keep-windows-out-of.patch
@@ -0,0 +1,37 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Thu, 12 Nov 2009 17:18:31 +0100
+Subject: Avoid wrong sessionstore data to keep windows out of user sight
+
+It happens that sessionstore can keep wrong information for the window
+position or minimized state. Workaround this until the real bug is found
+and fixed (probably in xulrunner).
+
+Closes: #552426, #553453
+---
+ browser/components/sessionstore/SessionStore.sys.mjs | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
+index 36d2bb4..a46ea43 100644
+--- a/browser/components/sessionstore/SessionStore.sys.mjs
++++ b/browser/components/sessionstore/SessionStore.sys.mjs
+@@ -5154,7 +5154,7 @@ var SessionStoreInternal = {
+ // _getWindowDimension.
+ let desktopToCssScale =
+ aWindow.desktopToDeviceScale / aWindow.devicePixelRatio;
+- aWindow.moveTo(aLeft * desktopToCssScale, aTop * desktopToCssScale);
++ aWindow.moveTo((aLeft < -aWidth) ? 0 : aLeft * desktopToCssScale, (aTop < -aHeight) ? 0 : aTop * desktopToCssScale);
+ }
+ if (
+ aWidth &&
+@@ -5183,9 +5183,8 @@ var SessionStoreInternal = {
+ case "minimized":
+ if (aSizeModeBeforeMinimized == "maximized") {
+ aWindow.maximize();
++ break;
+ }
+- aWindow.minimize();
+- break;
+ case "normal":
+ aWindow.restore();
+ break;
diff --git a/debian/patches/debian-hacks/Don-t-build-image-gtests.patch b/debian/patches/debian-hacks/Don-t-build-image-gtests.patch
new file mode 100644
index 0000000000..b6884bbd98
--- /dev/null
+++ b/debian/patches/debian-hacks/Don-t-build-image-gtests.patch
@@ -0,0 +1,23 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Thu, 9 Jun 2016 14:45:44 +0900
+Subject: Don't build image/ gtests
+
+Building them causes an ICE with GCC 4.7. As they are not part of what
+is shipped, and not currently run either, just skip building them.
+---
+ image/moz.build | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/image/moz.build b/image/moz.build
+index aab71c1..5f2192c 100644
+--- a/image/moz.build
++++ b/image/moz.build
+@@ -5,8 +5,6 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ DIRS += ["build", "decoders", "encoders"]
+-if CONFIG["ENABLE_TESTS"]:
+- DIRS += ["test/gtest"]
+
+ if CONFIG["FUZZING_INTERFACES"]:
+ DIRS += ["test/fuzzing"]
diff --git a/debian/patches/debian-hacks/Fix-math_private.h-for-i386-FTBFS.patch b/debian/patches/debian-hacks/Fix-math_private.h-for-i386-FTBFS.patch
new file mode 100644
index 0000000000..1da8156de8
--- /dev/null
+++ b/debian/patches/debian-hacks/Fix-math_private.h-for-i386-FTBFS.patch
@@ -0,0 +1,24 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Sat, 27 Nov 2021 06:49:44 +0900
+Subject: Fix math_private.h for i386 FTBFS
+
+---
+ modules/fdlibm/src/math_private.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules/fdlibm/src/math_private.h b/modules/fdlibm/src/math_private.h
+index f4373f2..632d2c4 100644
+--- a/modules/fdlibm/src/math_private.h
++++ b/modules/fdlibm/src/math_private.h
+@@ -30,7 +30,11 @@
+ * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+ */
+
++#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
++typedef long double __double_t;
++#else
+ typedef double __double_t;
++#endif
+ typedef __double_t double_t;
+ typedef float __float_t;
+
diff --git a/debian/patches/debian-hacks/Relax-minimum-supporter-rust-version-to-1.63.patch b/debian/patches/debian-hacks/Relax-minimum-supporter-rust-version-to-1.63.patch
new file mode 100644
index 0000000000..6410524f36
--- /dev/null
+++ b/debian/patches/debian-hacks/Relax-minimum-supporter-rust-version-to-1.63.patch
@@ -0,0 +1,373 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Wed, 1 Mar 2023 07:19:18 +0900
+Subject: Relax minimum supporter rust version to 1.63
+
+This reverts:
+- https://phabricator.services.mozilla.com/D165236
+- https://phabricator.services.mozilla.com/D165332
+---
+ Cargo.lock | 4 ++--
+ python/mozboot/mozboot/util.py | 2 +-
+ servo/components/selectors/context.rs | 2 +-
+ servo/components/selectors/parser.rs | 4 ++--
+ servo/components/style/gecko/selector_parser.rs | 7 ++++---
+ servo/components/style/properties/gecko.mako.rs | 13 ++-----------
+ servo/components/style/style_resolver.rs | 4 ++--
+ .../style/stylesheets/container_rule.rs | 16 ++++++++--------
+ servo/components/style/stylist.rs | 10 +++++-----
+ third_party/rust/cstr/.cargo-checksum.json | 2 +-
+ third_party/rust/cstr/Cargo.toml | 11 ++---------
+ third_party/rust/cstr/README.md | 2 +-
+ third_party/rust/cstr/src/lib.rs | 4 ++--
+ 13 files changed, 33 insertions(+), 48 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index 86617c3..be7d828 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -1128,9 +1128,9 @@ dependencies = [
+
+ [[package]]
+ name = "cstr"
+-version = "0.2.11"
++version = "0.2.10"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "8aa998c33a6d3271e3678950a22134cd7dd27cef86dee1b611b5b14207d1d90b"
++checksum = "a60f0dd132e4b67f20fd764d4835d968f666ff1a2f59e432983d168b98424deb"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+diff --git a/python/mozboot/mozboot/util.py b/python/mozboot/mozboot/util.py
+index 667df3b..bdb5ac1 100644
+--- a/python/mozboot/mozboot/util.py
++++ b/python/mozboot/mozboot/util.py
+@@ -10,7 +10,7 @@ from urllib.request import urlopen
+ from mach.site import PythonVirtualenv
+ from mach.util import get_state_dir
+
+-MINIMUM_RUST_VERSION = "1.65.0"
++MINIMUM_RUST_VERSION = "1.63.0"
+
+
+ def get_tools_dir(srcdir=False):
+diff --git a/servo/components/selectors/context.rs b/servo/components/selectors/context.rs
+index e29abe6..f595389 100644
+--- a/servo/components/selectors/context.rs
++++ b/servo/components/selectors/context.rs
+@@ -145,7 +145,7 @@ where
+ pub pseudo_element_matching_fn: Option<&'a dyn Fn(&Impl::PseudoElement) -> bool>,
+
+ /// Extra implementation-dependent matching data.
+- pub extra_data: Impl::ExtraMatchingData<'a>,
++ pub extra_data: Impl::ExtraMatchingData,
+
+ quirks_mode: QuirksMode,
+ needs_selector_flags: NeedsSelectorFlags,
+diff --git a/servo/components/selectors/parser.rs b/servo/components/selectors/parser.rs
+index b5cbd64..183a4f9 100644
+--- a/servo/components/selectors/parser.rs
++++ b/servo/components/selectors/parser.rs
+@@ -194,7 +194,7 @@ macro_rules! with_all_bounds {
+ /// are parameterized on SelectorImpl. See
+ /// <https://github.com/rust-lang/rust/issues/26925>
+ pub trait SelectorImpl: Clone + Debug + Sized + 'static {
+- type ExtraMatchingData<'a>: Sized + Default;
++ type ExtraMatchingData: Sized + Default + 'static;
+ type AttrValue: $($InSelector)*;
+ type Identifier: $($InSelector)*;
+ type LocalName: $($InSelector)* + Borrow<Self::BorrowedLocalName>;
+@@ -2791,7 +2791,7 @@ pub mod tests {
+ }
+
+ impl SelectorImpl for DummySelectorImpl {
+- type ExtraMatchingData<'a> = std::marker::PhantomData<&'a ()>;
++ type ExtraMatchingData = ();
+ type AttrValue = DummyAttrValue;
+ type Identifier = DummyAtom;
+ type LocalName = DummyAtom;
+diff --git a/servo/components/style/gecko/selector_parser.rs b/servo/components/style/gecko/selector_parser.rs
+index d149cf7..eb1ce3e 100644
+--- a/servo/components/style/gecko/selector_parser.rs
++++ b/servo/components/style/gecko/selector_parser.rs
+@@ -18,6 +18,7 @@ use cssparser::{CowRcStr, SourceLocation, ToCss, Token};
+ use dom::{DocumentState, ElementState};
+ use selectors::parser::SelectorParseErrorKind;
+ use selectors::SelectorList;
++use servo_arc::Arc;
+ use std::fmt;
+ use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss as ToCss_};
+
+@@ -235,7 +236,7 @@ pub struct SelectorImpl;
+ /// A set of extra data to carry along with the matching context, either for
+ /// selector-matching or invalidation.
+ #[derive(Default)]
+-pub struct ExtraMatchingData<'a> {
++pub struct ExtraMatchingData {
+ /// The invalidation data to invalidate doc-state pseudo-classes correctly.
+ pub invalidation_data: InvalidationMatchingData,
+
+@@ -245,11 +246,11 @@ pub struct ExtraMatchingData<'a> {
+
+ /// The style of the originating element in order to evaluate @container
+ /// size queries affecting pseudo-elements.
+- pub originating_element_style: Option<&'a ComputedValues>,
++ pub originating_element_style: Option<Arc<ComputedValues>>,
+ }
+
+ impl ::selectors::SelectorImpl for SelectorImpl {
+- type ExtraMatchingData<'a> = ExtraMatchingData<'a>;
++ type ExtraMatchingData = ExtraMatchingData;
+ type AttrValue = AtomString;
+ type Identifier = AtomIdent;
+ type LocalName = AtomIdent;
+diff --git a/servo/components/style/properties/gecko.mako.rs b/servo/components/style/properties/gecko.mako.rs
+index 63316c0..85afb2c 100644
+--- a/servo/components/style/properties/gecko.mako.rs
++++ b/servo/components/style/properties/gecko.mako.rs
+@@ -103,15 +103,6 @@ impl ComputedValues {
+ ).to_outer(None)
+ }
+
+- /// Converts the computed values to an Arc<> from a reference.
+- pub fn to_arc(&self) -> Arc<Self> {
+- // SAFETY: We're guaranteed to be allocated as an Arc<> since the
+- // functions above are the only ones that create ComputedValues
+- // instances in Gecko (and that must be the case since ComputedValues'
+- // member is private).
+- unsafe { Arc::from_raw_addrefed(self) }
+- }
+-
+ #[inline]
+ pub fn is_pseudo_style(&self) -> bool {
+ self.0.mPseudoType != PseudoStyleType::NotPseudo
+@@ -217,8 +208,8 @@ impl ComputedValuesInner {
+ &self,
+ pseudo_ty,
+ );
+- // We're simulating move semantics by having C++ do a memcpy and
+- // then forgetting it on this end.
++ // We're simulating move semantics by having C++ do a memcpy and then forgetting
++ // it on this end.
+ forget(self);
+ UniqueArc::assume_init(arc).shareable()
+ }
+diff --git a/servo/components/style/style_resolver.rs b/servo/components/style/style_resolver.rs
+index 19a5338..e2ad792 100644
+--- a/servo/components/style/style_resolver.rs
++++ b/servo/components/style/style_resolver.rs
+@@ -507,7 +507,7 @@ where
+
+ fn match_pseudo(
+ &mut self,
+- originating_element_style: &ComputedValues,
++ originating_element_style: &Arc<ComputedValues>,
+ pseudo_element: &PseudoElement,
+ visited_handling: VisitedHandlingMode,
+ ) -> Option<MatchingResults> {
+@@ -544,7 +544,7 @@ where
+ NeedsSelectorFlags::Yes,
+ );
+ matching_context.extra_data.originating_element_style =
+- Some(originating_element_style);
++ Some(originating_element_style.clone());
+
+ // NB: We handle animation rules for ::before and ::after when
+ // traversing them.
+diff --git a/servo/components/style/stylesheets/container_rule.rs b/servo/components/style/stylesheets/container_rule.rs
+index f9d488b..74ea7c5 100644
+--- a/servo/components/style/stylesheets/container_rule.rs
++++ b/servo/components/style/stylesheets/container_rule.rs
+@@ -135,14 +135,14 @@ enum TraversalResult<T> {
+ Done(T),
+ }
+
+-fn traverse_container<E, F, R>(
++fn traverse_container<E, S, F, R>(
+ mut e: E,
+- originating_element_style: Option<&ComputedValues>,
++ originating_element_style: Option<&S>,
+ evaluator: F,
+ ) -> Option<(E, R)>
+ where
+ E: TElement,
+- F: Fn(E, Option<&ComputedValues>) -> TraversalResult<R>,
++ F: Fn(E, Option<&S>) -> TraversalResult<R>,
+ {
+ if originating_element_style.is_some() {
+ match evaluator(e, originating_element_style) {
+@@ -185,7 +185,7 @@ impl ContainerCondition {
+ fn valid_container_info<E>(
+ &self,
+ potential_container: E,
+- originating_element_style: Option<&ComputedValues>,
++ originating_element_style: Option<&Arc<ComputedValues>>,
+ ) -> TraversalResult<ContainerLookupResult<E>>
+ where
+ E: TElement,
+@@ -198,7 +198,7 @@ impl ContainerCondition {
+ Some(d) => d,
+ None => return TraversalResult::InProgress,
+ };
+- &**data.styles.primary()
++ data.styles.primary()
+ },
+ };
+ let wm = style.writing_mode;
+@@ -220,7 +220,7 @@ impl ContainerCondition {
+ }
+
+ let size = potential_container.query_container_size(&box_style.clone_display());
+- let style = style.to_arc();
++ let style = style.clone();
+ TraversalResult::Done(ContainerLookupResult {
+ element: potential_container,
+ info: ContainerInfo { size, wm },
+@@ -232,7 +232,7 @@ impl ContainerCondition {
+ pub fn find_container<E>(
+ &self,
+ e: E,
+- originating_element_style: Option<&ComputedValues>,
++ originating_element_style: Option<&Arc<ComputedValues>>,
+ ) -> Option<ContainerLookupResult<E>>
+ where
+ E: TElement,
+@@ -254,7 +254,7 @@ impl ContainerCondition {
+ &self,
+ device: &Device,
+ element: E,
+- originating_element_style: Option<&ComputedValues>,
++ originating_element_style: Option<&Arc<ComputedValues>>,
+ invalidation_flags: &mut ComputedValueFlags,
+ ) -> KleeneValue
+ where
+diff --git a/servo/components/style/stylist.rs b/servo/components/style/stylist.rs
+index e4d0e79..6a42d87 100644
+--- a/servo/components/style/stylist.rs
++++ b/servo/components/style/stylist.rs
+@@ -966,7 +966,7 @@ impl Stylist {
+ element: E,
+ pseudo: &PseudoElement,
+ rule_inclusion: RuleInclusion,
+- originating_element_style: &ComputedValues,
++ originating_element_style: &Arc<ComputedValues>,
+ parent_style: &Arc<ComputedValues>,
+ is_probe: bool,
+ matching_fn: Option<&dyn Fn(&PseudoElement) -> bool>,
+@@ -1112,7 +1112,7 @@ impl Stylist {
+ &self,
+ guards: &StylesheetGuards,
+ element: E,
+- originating_element_style: &ComputedValues,
++ originating_element_style: &Arc<ComputedValues>,
+ parent_style: &Arc<ComputedValues>,
+ pseudo: &PseudoElement,
+ is_probe: bool,
+@@ -1143,7 +1143,7 @@ impl Stylist {
+
+ matching_context.pseudo_element_matching_fn = matching_fn;
+ matching_context.extra_data.originating_element_style =
+- Some(originating_element_style);
++ Some(originating_element_style.clone());
+
+ self.push_applicable_declarations(
+ element,
+@@ -1175,7 +1175,7 @@ impl Stylist {
+ );
+ matching_context.pseudo_element_matching_fn = matching_fn;
+ matching_context.extra_data.originating_element_style =
+- Some(originating_element_style);
++ Some(originating_element_style.clone());
+
+ self.push_applicable_declarations(
+ element,
+@@ -2385,7 +2385,7 @@ impl CascadeData {
+ .matches(
+ stylist.device(),
+ element,
+- context.extra_data.originating_element_style,
++ context.extra_data.originating_element_style.as_ref(),
+ &mut context.extra_data.cascade_input_flags,
+ )
+ .to_bool(/* unknown = */ false);
+diff --git a/third_party/rust/cstr/.cargo-checksum.json b/third_party/rust/cstr/.cargo-checksum.json
+index 9d9ca8a..d6c4e0e 100644
+--- a/third_party/rust/cstr/.cargo-checksum.json
++++ b/third_party/rust/cstr/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"9766da0dcd235f8d0d4ebdc925050558710adfd4495c123b1f4997666869d524","LICENSE":"5a9bf0e7661617253ca7c12313f51a96aa62dec0bcd15a59c533c88b8093d124","README.md":"8fdfa924e95d7a83f3c032dcc103cb411743c404e7e080b985c97b5db90eea24","src/lib.rs":"ad266f1d5c682943741344d84dba39c516c3b8b26b34a4ff2c858de9934cdfe5","src/parse.rs":"19214fac49af5852b93a37d43af6ee93e62a1e95e3a629f8d5da254925b7d294","tests/clippy_lints.rs":"4398124cd5bc3a7f295f6203d543fc7d99abfd945eb7418ccfa60535586d7e37","tests/compile_fail/empty.rs":"52dc3c0d4d6ee0bd6d89a34d1caf38d159830401f24ba30f5655f9de92697903","tests/compile_fail/empty.stderr":"dbcf3dab8a8638b833df9089d9bc9ff7494f39dbb91e94bdd769912678ccf7f8","tests/compile_fail/interior-nul.rs":"ecc09440020287377ca18e4b8308d1d516620a87612a5381bafc01fe48734d34","tests/compile_fail/interior-nul.stderr":"8bd003a7dfff248411403bdf666f8a0631307f468d589cf01e475b062db4b101","tests/compile_fail/non-str.rs":"e08be18a524a4482fb7f34cbc6e8448a878b41cf2c26dea99268aaabab6c3f3f","tests/compile_fail/non-str.stderr":"8dff245264d9c69dc151f742542a72400d7422f2a0f2b133a9f4d4fc96a4016a","tests/compile_fail/trash-after.rs":"7dff7a301c9087984c5acda183e34492f3d0f2ebec14b8dc0d2b11aab972a111","tests/compile_fail/trash-after.stderr":"487b5d6b687c52b80f9d9cba691a8654067a88f7d03d2d952d7e97d610ab70f3","tests/compile_test.rs":"13e3e0d22ec0dffa4d0be0c4db6381a03feff50cc25aa65c4950cc7e865d122d","tests/pass/byte_str_lit.rs":"9085e1f1e67dae193d33ff59c253cac23c9e23e9d8c7f92f0aba99097ade132e","tests/pass/const.rs":"777aeb93c3030349529a41ac62b3577b36badc4bada4ec46e45b5055d3676dbd","tests/pass/ident.rs":"5116ee71578d479d899345e039e5955b5dee442234dc504e1a9bfb9260cf8f15","tests/pass/macro.rs":"9596c936ed4d963fb40459ecd98b60610d3d90e41918f350ff45b6129b1aa0b7","tests/pass/str_lit.rs":"955fb887ebc01538bafe10fa810381eb53aebaafb8b36053e8712c081862fe7a"},"package":"8aa998c33a6d3271e3678950a22134cd7dd27cef86dee1b611b5b14207d1d90b"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"efcf30ffc92f8247fde5ac01eb17820b53de43d8407fdab0e6ba226e0538e0f2","LICENSE":"5a9bf0e7661617253ca7c12313f51a96aa62dec0bcd15a59c533c88b8093d124","README.md":"6dd83f5c2d0f29317921e2c1050740cb24e273d5d83409f21d5b955026934804","src/lib.rs":"a54a9c9b3ea2346a2b82f4a66f9614f5596278cd20857a502d272a9ce5c4da4e","src/parse.rs":"19214fac49af5852b93a37d43af6ee93e62a1e95e3a629f8d5da254925b7d294","tests/clippy_lints.rs":"4398124cd5bc3a7f295f6203d543fc7d99abfd945eb7418ccfa60535586d7e37","tests/compile_fail/empty.rs":"52dc3c0d4d6ee0bd6d89a34d1caf38d159830401f24ba30f5655f9de92697903","tests/compile_fail/empty.stderr":"dbcf3dab8a8638b833df9089d9bc9ff7494f39dbb91e94bdd769912678ccf7f8","tests/compile_fail/interior-nul.rs":"ecc09440020287377ca18e4b8308d1d516620a87612a5381bafc01fe48734d34","tests/compile_fail/interior-nul.stderr":"8bd003a7dfff248411403bdf666f8a0631307f468d589cf01e475b062db4b101","tests/compile_fail/non-str.rs":"e08be18a524a4482fb7f34cbc6e8448a878b41cf2c26dea99268aaabab6c3f3f","tests/compile_fail/non-str.stderr":"8dff245264d9c69dc151f742542a72400d7422f2a0f2b133a9f4d4fc96a4016a","tests/compile_fail/trash-after.rs":"7dff7a301c9087984c5acda183e34492f3d0f2ebec14b8dc0d2b11aab972a111","tests/compile_fail/trash-after.stderr":"487b5d6b687c52b80f9d9cba691a8654067a88f7d03d2d952d7e97d610ab70f3","tests/compile_test.rs":"13e3e0d22ec0dffa4d0be0c4db6381a03feff50cc25aa65c4950cc7e865d122d","tests/pass/byte_str_lit.rs":"9085e1f1e67dae193d33ff59c253cac23c9e23e9d8c7f92f0aba99097ade132e","tests/pass/const.rs":"777aeb93c3030349529a41ac62b3577b36badc4bada4ec46e45b5055d3676dbd","tests/pass/ident.rs":"5116ee71578d479d899345e039e5955b5dee442234dc504e1a9bfb9260cf8f15","tests/pass/macro.rs":"9596c936ed4d963fb40459ecd98b60610d3d90e41918f350ff45b6129b1aa0b7","tests/pass/str_lit.rs":"955fb887ebc01538bafe10fa810381eb53aebaafb8b36053e8712c081862fe7a"},"package":"a60f0dd132e4b67f20fd764d4835d968f666ff1a2f59e432983d168b98424deb"}
+\ No newline at end of file
+diff --git a/third_party/rust/cstr/Cargo.toml b/third_party/rust/cstr/Cargo.toml
+index 712f393..046519f 100644
+--- a/third_party/rust/cstr/Cargo.toml
++++ b/third_party/rust/cstr/Cargo.toml
+@@ -11,31 +11,24 @@
+
+ [package]
+ edition = "2018"
+-rust-version = "1.64"
+ name = "cstr"
+-version = "0.2.11"
++version = "0.2.10"
+ authors = ["Xidorn Quan <me@upsuper.org>"]
+ description = "Macro for building static CStr reference"
+ readme = "README.md"
+-keywords = [
+- "macro",
+- "cstr",
+-]
++keywords = ["macro", "cstr"]
+ license = "MIT"
+ repository = "https://github.com/upsuper/cstr"
+
+ [lib]
+ proc-macro = true
+-
+ [dependencies.proc-macro2]
+ version = "1"
+
+ [dependencies.quote]
+ version = "1"
+-
+ [dev-dependencies.trybuild]
+ version = "1.0.30"
+-
+ [badges.travis-ci]
+ branch = "master"
+ repository = "upsuper/cstr"
+diff --git a/third_party/rust/cstr/README.md b/third_party/rust/cstr/README.md
+index 7ee3ba2..9ebda24 100644
+--- a/third_party/rust/cstr/README.md
++++ b/third_party/rust/cstr/README.md
+@@ -11,7 +11,7 @@ A macro for getting `&'static CStr` from literal or identifier.
+ This macro checks whether the given literal is valid for `CStr`
+ at compile time, and returns a static reference of `CStr`.
+
+-This macro can be used to to initialize constants on Rust 1.64 and above.
++This macro can be used to to initialize constants on Rust 1.59 and above.
+
+ ## Example
+
+diff --git a/third_party/rust/cstr/src/lib.rs b/third_party/rust/cstr/src/lib.rs
+index c9e69d9..91d83ae 100644
+--- a/third_party/rust/cstr/src/lib.rs
++++ b/third_party/rust/cstr/src/lib.rs
+@@ -3,7 +3,7 @@
+ //! This macro checks whether the given literal is valid for `CStr`
+ //! at compile time, and returns a static reference of `CStr`.
+ //!
+-//! This macro can be used to to initialize constants on Rust 1.64 and above.
++//! This macro can be used to to initialize constants on Rust 1.59 and above.
+ //!
+ //! ## Example
+ //!
+@@ -37,7 +37,7 @@ struct Error(Span, &'static str);
+ #[proc_macro]
+ pub fn cstr(input: RawTokenStream) -> RawTokenStream {
+ let tokens = match build_byte_str(input.into()) {
+- Ok(s) => quote!(unsafe { ::core::ffi::CStr::from_bytes_with_nul_unchecked(#s) }),
++ Ok(s) => quote!(unsafe { ::std::ffi::CStr::from_bytes_with_nul_unchecked(#s) }),
+ Err(Error(span, msg)) => quote_spanned!(span => compile_error!(#msg)),
+ };
+ tokens.into()
diff --git a/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch b/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch
new file mode 100644
index 0000000000..8839a39026
--- /dev/null
+++ b/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch
@@ -0,0 +1,21 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Wed, 21 Sep 2022 08:48:27 +0900
+Subject: Relax nodejs minimum version
+
+---
+ python/mozbuild/mozbuild/nodeutil.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/python/mozbuild/mozbuild/nodeutil.py b/python/mozbuild/mozbuild/nodeutil.py
+index 8ec724a..efc7b7f 100644
+--- a/python/mozbuild/mozbuild/nodeutil.py
++++ b/python/mozbuild/mozbuild/nodeutil.py
+@@ -11,7 +11,7 @@ from mozboot.util import get_tools_dir
+ from mozfile import which
+ from six import PY3
+
+-NODE_MIN_VERSION = StrictVersion("12.22.12")
++NODE_MIN_VERSION = StrictVersion("12.22")
+ NPM_MIN_VERSION = StrictVersion("6.14.16")
+
+
diff --git a/debian/patches/debian-hacks/Remove-workaround-for-old-libstdc-problem-which-now-.patch b/debian/patches/debian-hacks/Remove-workaround-for-old-libstdc-problem-which-now-.patch
new file mode 100644
index 0000000000..27017a8a31
--- /dev/null
+++ b/debian/patches/debian-hacks/Remove-workaround-for-old-libstdc-problem-which-now-.patch
@@ -0,0 +1,56 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Mon, 15 Aug 2022 14:49:40 +0900
+Subject: Remove workaround for old libstdc++ problem, which now causes
+ problems with GCC 12 on arm
+
+---
+ intl/icu/source/common/unicode/std_string.h | 5 -----
+ intl/icu/source/common/utypeinfo.h | 3 ---
+ intl/icu/source/io/unicode/ustream.h | 4 ----
+ 3 files changed, 12 deletions(-)
+
+diff --git a/intl/icu/source/common/unicode/std_string.h b/intl/icu/source/common/unicode/std_string.h
+index bf87230..c8388ef 100644
+--- a/intl/icu/source/common/unicode/std_string.h
++++ b/intl/icu/source/common/unicode/std_string.h
+@@ -29,11 +29,6 @@
+
+ #if U_SHOW_CPLUSPLUS_API
+
+-// Workaround for a libstdc++ bug before libstdc++4.6 (2011).
+-// https://bugs.llvm.org/show_bug.cgi?id=13364
+-#if defined(__GLIBCXX__)
+-namespace std { class type_info; }
+-#endif
+ #include <string>
+
+ #endif /* U_SHOW_CPLUSPLUS_API */
+diff --git a/intl/icu/source/common/utypeinfo.h b/intl/icu/source/common/utypeinfo.h
+index c666373..5d97240 100644
+--- a/intl/icu/source/common/utypeinfo.h
++++ b/intl/icu/source/common/utypeinfo.h
+@@ -24,9 +24,6 @@
+ #include <exception>
+ using std::exception;
+ #endif
+-#if defined(__GLIBCXX__)
+-namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
+-#endif
+ #include <typeinfo> // for 'typeid' to work
+
+ #endif
+diff --git a/intl/icu/source/io/unicode/ustream.h b/intl/icu/source/io/unicode/ustream.h
+index 927342c..93ef51c 100644
+--- a/intl/icu/source/io/unicode/ustream.h
++++ b/intl/icu/source/io/unicode/ustream.h
+@@ -34,10 +34,6 @@
+ * C++ I/O stream API.
+ */
+
+-#if defined(__GLIBCXX__)
+-namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
+-#endif
+-
+ #include <iostream>
+
+ U_NAMESPACE_BEGIN
diff --git a/debian/patches/debian-hacks/Use-build-id-as-langpack-version-for-reproducibility.patch b/debian/patches/debian-hacks/Use-build-id-as-langpack-version-for-reproducibility.patch
new file mode 100644
index 0000000000..463e1683ca
--- /dev/null
+++ b/debian/patches/debian-hacks/Use-build-id-as-langpack-version-for-reproducibility.patch
@@ -0,0 +1,21 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Fri, 12 Jul 2019 18:37:52 +0900
+Subject: Use build id as langpack version for reproducibility
+
+---
+ python/mozbuild/mozbuild/action/langpack_manifest.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/python/mozbuild/mozbuild/action/langpack_manifest.py b/python/mozbuild/mozbuild/action/langpack_manifest.py
+index 598f03e..cb97a9d 100644
+--- a/python/mozbuild/mozbuild/action/langpack_manifest.py
++++ b/python/mozbuild/mozbuild/action/langpack_manifest.py
+@@ -106,7 +106,7 @@ def get_timestamp_for_locale(path):
+ dt = get_dt_from_hg(path)
+
+ if dt is None:
+- dt = datetime.datetime.utcnow()
++ return os.environ['MOZ_BUILD_DATE']
+
+ dt = dt.replace(microsecond=0)
+ return dt.strftime("%Y%m%d%H%M%S")
diff --git a/debian/patches/debian-hacks/Use-the-Mozilla-Location-Service-key-when-the-Google.patch b/debian/patches/debian-hacks/Use-the-Mozilla-Location-Service-key-when-the-Google.patch
new file mode 100644
index 0000000000..a6c73700e3
--- /dev/null
+++ b/debian/patches/debian-hacks/Use-the-Mozilla-Location-Service-key-when-the-Google.patch
@@ -0,0 +1,21 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Sun, 2 Apr 2017 06:33:19 +0900
+Subject: Use the Mozilla Location Service key when the Google Key is not there
+
+---
+ modules/libpref/init/all.js | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
+index 88e7709..bb03e1c 100644
+--- a/modules/libpref/init/all.js
++++ b/modules/libpref/init/all.js
+@@ -3283,7 +3283,7 @@ pref("network.psl.onUpdate_notify", false);
+
+ // All the Geolocation preferences are here.
+ //
+-#ifndef EARLY_BETA_OR_EARLIER
++#if !defined(EARLY_BETA_OR_EARLIER) && defined(GOOGLE_LOCATION_SERVICE_API_KEY)
+ pref("geo.provider.network.url", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_LOCATION_SERVICE_API_KEY%");
+ #else
+ // Use MLS on Nightly and early Beta.
diff --git a/debian/patches/debian-hacks/Work-around-bz-1775202-to-fix-FTBFS-on-ppc64el.patch b/debian/patches/debian-hacks/Work-around-bz-1775202-to-fix-FTBFS-on-ppc64el.patch
new file mode 100644
index 0000000000..e35eb3a973
--- /dev/null
+++ b/debian/patches/debian-hacks/Work-around-bz-1775202-to-fix-FTBFS-on-ppc64el.patch
@@ -0,0 +1,23 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Sun, 14 Aug 2022 07:01:33 +0900
+Subject: Work around bz#1775202 to fix FTBFS on ppc64el
+
+---
+ third_party/libwebrtc/moz.build | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/third_party/libwebrtc/moz.build b/third_party/libwebrtc/moz.build
+index a32d3b3..e405ed6 100644
+--- a/third_party/libwebrtc/moz.build
++++ b/third_party/libwebrtc/moz.build
+@@ -624,7 +624,9 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CONFIG["OS_TARGET"] == "Linux":
+ "/third_party/libwebrtc/api/audio_codecs/isac/audio_decoder_isac_float_gn",
+ "/third_party/libwebrtc/api/audio_codecs/isac/audio_encoder_isac_float_gn",
+ "/third_party/libwebrtc/modules/audio_coding/isac_c_gn",
+- "/third_party/libwebrtc/modules/audio_coding/isac_gn"
++ "/third_party/libwebrtc/modules/audio_coding/isac_gn",
++ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn",
++ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
+ ]
+
+ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux":