summaryrefslogtreecommitdiffstats
path: root/debian/patches
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/debian-hacks/Add-another-preferences-directory-for-applications-p.patch30
-rw-r--r--debian/patches/debian-hacks/Allow-to-build-oxilangtag-ffi-with-rustc-1.65.patch37
-rw-r--r--debian/patches/debian-hacks/Don-t-error-out-when-run-time-libsqlite-is-older-tha.patch48
-rw-r--r--debian/patches/debian-hacks/Relax-minimum-supporter-rust-version-to-1.63.patch378
-rw-r--r--debian/patches/debian-hacks/Set-program-name-from-the-remoting-name.patch26
-rw-r--r--debian/patches/debian-hacks/Strip-version-number-from-application-before-installation.patch24
-rw-r--r--debian/patches/debian-hacks/rnp-Fix-include-for-format-specifiers-for-uint32_t.patch24
-rw-r--r--debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-lockP.patch77
-rw-r--r--debian/patches/fixes/Appdata-Adding-some-German-translations.patch48
-rw-r--r--debian/patches/fixes/Appdata-Fix-up-AppStream-error-by-adding-missing-field.patch21
-rw-r--r--debian/patches/fixes/Fix-math_private.h-for-i386-FTBFS.patch25
-rw-r--r--debian/patches/fixes/Load-dependent-libraries-with-their-real-path.patch22
-rw-r--r--debian/patches/fixes/Properly-launch-applications-set-in-HOME-.mailcap.patch24
-rw-r--r--debian/patches/fixes/skia-Cast-SkEndian_SwapBE32-n-to-uint32_t-on-big-endian.patch25
-rw-r--r--debian/patches/porting-armel/Avoid-using-vmrs-vmsr-on-armel.patch21
-rw-r--r--debian/patches/porting-mips64el/skia-Disable-musttail-on-mips64.patch23
-rw-r--r--debian/patches/porting-ppc64el/Work-around-GCC-ICE-on-ppc64el.patch30
-rw-r--r--debian/patches/porting-ppc64el/skia-Disable-musttail-on-ppc64el.patch22
-rw-r--r--debian/patches/porting/Disable-optimization-on-alpha-for-the-url-classifier.patch21
-rw-r--r--debian/patches/prefs/Don-t-auto-disable-extensions-in-system-directories.patch21
-rw-r--r--debian/patches/prefs/Set-javascript.options.showInConsole.patch33
-rw-r--r--debian/patches/series22
-rw-r--r--debian/patches/thunderbird-l10n/sl-change-Edit-Uredi-to-CTRL-E.patch22
23 files changed, 1024 insertions, 0 deletions
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..2cece0897b
--- /dev/null
+++ b/debian/patches/debian-hacks/Add-another-preferences-directory-for-applications-p.patch
@@ -0,0 +1,30 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Sat, 21 Jun 2008 03:09:21 +0200
+Subject: Add another preferences directory for applications:
+ preferences/syspref
+
+This can be used to symlink to /etc/thunderbird/pref.
+---
+ toolkit/xre/nsXREDirProvider.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+index 41d2353..28d9780 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -676,6 +676,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 };
+
+ NS_IMETHODIMP
+ nsXREDirProvider::GetFiles(const char* aProperty,
+@@ -693,6 +694,7 @@ nsXREDirProvider::GetFiles(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/Allow-to-build-oxilangtag-ffi-with-rustc-1.65.patch b/debian/patches/debian-hacks/Allow-to-build-oxilangtag-ffi-with-rustc-1.65.patch
new file mode 100644
index 0000000000..95731725e8
--- /dev/null
+++ b/debian/patches/debian-hacks/Allow-to-build-oxilangtag-ffi-with-rustc-1.65.patch
@@ -0,0 +1,37 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Wed, 20 Dec 2023 08:47:32 +0900
+Subject: Allow to build oxilangtag-ffi with rustc < 1.65
+
+Cherry picked from firefox.
+
+Forwarded: not-needed
+---
+ intl/locale/rust/oxilangtag-ffi/src/lib.rs | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/intl/locale/rust/oxilangtag-ffi/src/lib.rs b/intl/locale/rust/oxilangtag-ffi/src/lib.rs
+index 5a30e9b..e647fb0 100644
+--- a/intl/locale/rust/oxilangtag-ffi/src/lib.rs
++++ b/intl/locale/rust/oxilangtag-ffi/src/lib.rs
+@@ -85,7 +85,9 @@ pub extern "C" fn lang_tag_matches(attribute: *const LangTag, selector: &nsACStr
+ loop {
+ // 4. When the language range's list has no more subtags, the match
+ // succeeds.
+- let Some(range_subtag_str) = range_subtag else {
++ let range_subtag_str = if let Some(range_subtag_str) = range_subtag {
++ range_subtag_str
++ } else {
+ return true;
+ };
+
+@@ -99,7 +101,9 @@ pub extern "C" fn lang_tag_matches(attribute: *const LangTag, selector: &nsACStr
+
+ // B. Else, if there are no more subtags in the language tag's
+ // list, the match fails.
+- let Some(lang_subtag_str) = lang_subtag else {
++ let lang_subtag_str = if let Some(lang_subtag_str) = lang_subtag {
++ lang_subtag_str
++ } else {
+ return false;
+ };
+
diff --git a/debian/patches/debian-hacks/Don-t-error-out-when-run-time-libsqlite-is-older-tha.patch b/debian/patches/debian-hacks/Don-t-error-out-when-run-time-libsqlite-is-older-tha.patch
new file mode 100644
index 0000000000..19928b9974
--- /dev/null
+++ b/debian/patches/debian-hacks/Don-t-error-out-when-run-time-libsqlite-is-older-tha.patch
@@ -0,0 +1,48 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Mon, 5 Apr 2010 17:58:23 +0200
+Subject: Don't error-out when run-time libsqlite is older than build-time
+ libsqlite
+
+In Debian, we have shlibs to handle this.
+---
+ storage/mozStorageService.cpp | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/storage/mozStorageService.cpp b/storage/mozStorageService.cpp
+index d73a168..4a2eb64 100644
+--- a/storage/mozStorageService.cpp
++++ b/storage/mozStorageService.cpp
+@@ -167,6 +167,33 @@ already_AddRefed<Service> Service::getSingleton() {
+ return do_AddRef(gService);
+ }
+
++#if 0
++ // Ensure that we are using the same version of SQLite that we compiled with
++ // or newer. Our configure check ensures we are using a new enough version
++ // at compile time.
++ if (SQLITE_VERSION_NUMBER > ::sqlite3_libversion_number() ||
++ !::sqlite3_compileoption_used("SQLITE_SECURE_DELETE") ||
++ !::sqlite3_compileoption_used("SQLITE_THREADSAFE=1") ||
++ !::sqlite3_compileoption_used("SQLITE_ENABLE_FTS3") ||
++ !::sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY") ||
++ !::sqlite3_compileoption_used("SQLITE_ENABLE_DBSTAT_VTAB")) {
++ nsCOMPtr<nsIPromptService> ps(do_GetService(NS_PROMPTSERVICE_CONTRACTID));
++ if (ps) {
++ nsAutoString title, message;
++ title.AppendLiteral("SQLite Version Error");
++ message.AppendLiteral(
++ "The application has been updated, but the SQLite "
++ "library wasn't updated properly and the application "
++ "cannot run. Please try to launch the application again. "
++ "If that should still fail, please try reinstalling "
++ "it, or contact the support of where you got the "
++ "application from.");
++ (void)ps->Alert(nullptr, title.get(), message.get());
++ }
++ MOZ_CRASH("SQLite Version Error");
++ }
++#endif
++
+ // The first reference to the storage service must be obtained on the
+ // main thread.
+ NS_ENSURE_TRUE(NS_IsMainThread(), nullptr);
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..c1166c3ba6
--- /dev/null
+++ b/debian/patches/debian-hacks/Relax-minimum-supporter-rust-version-to-1.63.patch
@@ -0,0 +1,378 @@
+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
+
+Cherry picked from firefox.
+---
+ 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 | 5 +++--
+ servo/components/style/stylesheets/container_rule.rs | 16 ++++++++--------
+ servo/components/style/stylist.rs | 12 +++++++-----
+ 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, 36 insertions(+), 48 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index 1cb46da..9e5f122 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -1040,9 +1040,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 583c08b..a15cae2 100644
+--- a/python/mozboot/mozboot/util.py
++++ b/python/mozboot/mozboot/util.py
+@@ -11,7 +11,7 @@ import certifi
+ from mach.site import PythonVirtualenv
+ from mach.util import get_state_dir
+
+-MINIMUM_RUST_VERSION = "1.66.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 fc620ba..bc1a68d 100644
+--- a/servo/components/selectors/context.rs
++++ b/servo/components/selectors/context.rs
+@@ -142,7 +142,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,
+
+ /// The current element we're anchoring on for evaluating the relative selector.
+ current_relative_selector_anchor: Option<OpaqueElement>,
+diff --git a/servo/components/selectors/parser.rs b/servo/components/selectors/parser.rs
+index ca587e9..a15362f 100644
+--- a/servo/components/selectors/parser.rs
++++ b/servo/components/selectors/parser.rs
+@@ -202,7 +202,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>;
+@@ -3344,7 +3344,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 6bf527b..08018fd 100644
+--- a/servo/components/style/gecko/selector_parser.rs
++++ b/servo/components/style/gecko/selector_parser.rs
+@@ -15,6 +15,7 @@ use cssparser::{BasicParseError, BasicParseErrorKind, Parser};
+ use cssparser::{CowRcStr, SourceLocation, ToCss, Token};
+ use dom::{DocumentState, ElementState};
+ use selectors::parser::SelectorParseErrorKind;
++use servo_arc::Arc;
+ use std::fmt;
+ use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss as ToCss_};
+ use thin_vec::ThinVec;
+@@ -239,7 +240,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,
+
+@@ -249,11 +250,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 4fe2909..01f41bb 100644
+--- a/servo/components/style/properties/gecko.mako.rs
++++ b/servo/components/style/properties/gecko.mako.rs
+@@ -99,15 +99,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
+@@ -228,8 +219,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 a082b2c..bc96fb7 100644
+--- a/servo/components/style/style_resolver.rs
++++ b/servo/components/style/style_resolver.rs
+@@ -522,7 +522,7 @@ where
+
+ fn match_pseudo(
+ &mut self,
+- originating_element_style: &ComputedValues,
++ originating_element_style: &Arc<ComputedValues>,
+ pseudo_element: &PseudoElement,
+ visited_handling: VisitedHandlingMode,
+ ) -> Option<MatchingResults> {
+@@ -558,7 +558,8 @@ where
+ self.context.shared.quirks_mode(),
+ NeedsSelectorFlags::Yes,
+ );
+- matching_context.extra_data.originating_element_style = Some(originating_element_style);
++ matching_context.extra_data.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 81f30ee..bbb80e9 100644
+--- a/servo/components/style/stylist.rs
++++ b/servo/components/style/stylist.rs
+@@ -979,7 +979,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>,
+@@ -1125,7 +1125,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,
+@@ -1156,7 +1156,8 @@ impl Stylist {
+ );
+
+ matching_context.pseudo_element_matching_fn = matching_fn;
+- matching_context.extra_data.originating_element_style = Some(originating_element_style);
++ matching_context.extra_data.originating_element_style =
++ Some(originating_element_style.clone());
+
+ self.push_applicable_declarations(
+ element,
+@@ -1189,7 +1190,8 @@ impl Stylist {
+ needs_selector_flags,
+ );
+ matching_context.pseudo_element_matching_fn = matching_fn;
+- matching_context.extra_data.originating_element_style = Some(originating_element_style);
++ matching_context.extra_data.originating_element_style =
++ Some(originating_element_style.clone());
+
+ self.push_applicable_declarations(
+ element,
+@@ -2502,7 +2504,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/Set-program-name-from-the-remoting-name.patch b/debian/patches/debian-hacks/Set-program-name-from-the-remoting-name.patch
new file mode 100644
index 0000000000..baba5fced8
--- /dev/null
+++ b/debian/patches/debian-hacks/Set-program-name-from-the-remoting-name.patch
@@ -0,0 +1,26 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Sun, 5 Feb 2017 08:41:22 +0900
+Subject: Set program name from the remoting name
+
+---
+ toolkit/xre/nsAppRunner.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
+index 14b8c98..961918d 100644
+--- a/toolkit/xre/nsAppRunner.cpp
++++ b/toolkit/xre/nsAppRunner.cpp
+@@ -4624,8 +4624,11 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
+ // consistently.
+
+ // Set program name to the one defined in application.ini.
+- g_set_prgname(gAppData->remotingName);
+-
++ {
++ nsAutoCString program(gAppData->remotingName);
++ ToLowerCase(program);
++ g_set_prgname(program.get());
++ }
+ // Initialize GTK here for splash.
+
+ # if defined(MOZ_WIDGET_GTK) && defined(MOZ_X11)
diff --git a/debian/patches/debian-hacks/Strip-version-number-from-application-before-installation.patch b/debian/patches/debian-hacks/Strip-version-number-from-application-before-installation.patch
new file mode 100644
index 0000000000..1c85d5d9e3
--- /dev/null
+++ b/debian/patches/debian-hacks/Strip-version-number-from-application-before-installation.patch
@@ -0,0 +1,24 @@
+From: =?utf-8?q?Guido_G=C3=BCnther?= <agx@sigxcpu.org>
+Date: Sat, 24 Nov 2012 11:39:58 +0100
+Subject: Strip version number from application before installation
+
+Strip thunderbird's version number from the installation directories so
+we have a fixed location for extensions that build against it.
+---
+ config/baseconfig.mk | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/config/baseconfig.mk b/config/baseconfig.mk
+index 8f3e920..47c442a 100644
+--- a/config/baseconfig.mk
++++ b/config/baseconfig.mk
+@@ -3,6 +3,9 @@
+ # We thus use INCLUDED_AUTOCONF_MK to enable/disable some parts depending
+ # whether a normal build is happening or whether the check is running.
+ installdir = $(libdir)/$(MOZ_APP_NAME)
++includedir := $(includedir)/$(MOZ_APP_NAME)
++idldir = $(datadir)/idl/$(MOZ_APP_NAME)
++sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel
+ ifeq (.,$(DEPTH))
+ DIST = dist
+ else
diff --git a/debian/patches/debian-hacks/rnp-Fix-include-for-format-specifiers-for-uint32_t.patch b/debian/patches/debian-hacks/rnp-Fix-include-for-format-specifiers-for-uint32_t.patch
new file mode 100644
index 0000000000..152e5978f8
--- /dev/null
+++ b/debian/patches/debian-hacks/rnp-Fix-include-for-format-specifiers-for-uint32_t.patch
@@ -0,0 +1,24 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Tue, 18 Jul 2023 19:55:09 +0200
+Subject: rnp: Fix include for format specifiers for uint32_t
+
+The internal rnp library need the header file cinttypes so the format
+definitions in sexp-error.h knows the format of uint32_t.
+
+Forwarded: not-needed
+---
+ comm/third_party/rnp/src/libsexp/include/sexp/sexp-error.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/comm/third_party/rnp/src/libsexp/include/sexp/sexp-error.h b/comm/third_party/rnp/src/libsexp/include/sexp/sexp-error.h
+index 332a63b..6e9dacc 100644
+--- a/comm/third_party/rnp/src/libsexp/include/sexp/sexp-error.h
++++ b/comm/third_party/rnp/src/libsexp/include/sexp/sexp-error.h
+@@ -29,6 +29,7 @@
+
+ #pragma once
+
++#include <cinttypes>
+ #include <cstdint>
+ #include <exception>
+ #include <iostream>
diff --git a/debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-lockP.patch b/debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-lockP.patch
new file mode 100644
index 0000000000..b77465002b
--- /dev/null
+++ b/debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-lockP.patch
@@ -0,0 +1,77 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Sat, 21 Jun 2008 02:48:46 +0200
+Subject: Allow .js preference files to set locked prefs with lockPref()
+
+---
+ modules/libpref/parser/src/lib.rs | 23 ++++++++++++-----------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
+
+diff --git a/modules/libpref/parser/src/lib.rs b/modules/libpref/parser/src/lib.rs
+index 3a0ad2c..ae884a6 100644
+--- a/modules/libpref/parser/src/lib.rs
++++ b/modules/libpref/parser/src/lib.rs
+@@ -11,7 +11,7 @@
+ //! ```text
+ //! <pref-file> = <pref>*
+ //! <pref> = <pref-spec> "(" <pref-name> "," <pref-value> <pref-attrs> ")" ";"
+-//! <pref-spec> = "user_pref" | "pref" | "sticky_pref" // in default pref files
++//! <pref-spec> = "user_pref" | "pref" | "sticky_pref | lockPref" // in default pref files
+ //! <pref-spec> = "user_pref" // in user pref files
+ //! <pref-name> = <string-literal>
+ //! <pref-value> = <string-literal> | "true" | "false" | <int-value>
+@@ -169,6 +169,7 @@ enum Token {
+ // Keywords
+ Pref, // pref
+ StickyPref, // sticky_pref
++ LockPref, // lockPref
+ UserPref, // user_pref
+ True, // true
+ False, // false
+@@ -291,7 +292,7 @@ struct KeywordInfo {
+ token: Token,
+ }
+
+-const KEYWORD_INFOS: [KeywordInfo; 7] = [
++const KEYWORD_INFOS: [KeywordInfo; 8] = [
+ // These are ordered by frequency.
+ KeywordInfo {
+ string: b"pref",
+@@ -321,6 +322,10 @@ const KEYWORD_INFOS: [KeywordInfo; 7] = [
+ string: b"sticky_pref",
+ token: Token::StickyPref,
+ },
++ KeywordInfo {
++ string: b"lock_pref",
++ token: Token::LockPref,
++ },
+ ];
+
+ struct Parser<'t> {
+@@ -373,14 +378,11 @@ impl<'t> Parser<'t> {
+ // this will be either the first token of a new pref, or EOF.
+ loop {
+ // <pref-spec>
+- let (pref_value_kind, mut is_sticky) = match token {
+- Token::Pref if self.kind == PrefValueKind::Default => {
+- (PrefValueKind::Default, false)
+- }
+- Token::StickyPref if self.kind == PrefValueKind::Default => {
+- (PrefValueKind::Default, true)
+- }
+- Token::UserPref => (PrefValueKind::User, false),
++ let (pref_value_kind, mut is_sticky, mut is_locked) = match token {
++ Token::Pref => (PrefValueKind::Default, false, false),
++ Token::StickyPref => (PrefValueKind::Default, true, false),
++ Token::LockPref => (PrefValueKind::Default, false, true),
++ Token::UserPref => (PrefValueKind::User, false, false),
+ Token::SingleChar(EOF) => return !self.has_errors,
+ _ => {
+ token = self.error_and_recover(
+@@ -490,7 +492,6 @@ impl<'t> Parser<'t> {
+ };
+
+ // ("," <pref-attr>)* // default pref files only
+- let mut is_locked = false;
+ let mut has_attrs = false;
+ if self.kind == PrefValueKind::Default {
+ let ok = loop {
diff --git a/debian/patches/fixes/Appdata-Adding-some-German-translations.patch b/debian/patches/fixes/Appdata-Adding-some-German-translations.patch
new file mode 100644
index 0000000000..13088078d8
--- /dev/null
+++ b/debian/patches/fixes/Appdata-Adding-some-German-translations.patch
@@ -0,0 +1,48 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Sun, 18 Oct 2020 08:38:29 +0200
+Subject: Appdata: Adding some German translations
+
+---
+ .../thunderbird/net.thunderbird.Thunderbird.appdata.xml | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml b/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml
+index 30397d1..d31e2dd 100644
+--- a/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml
++++ b/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml
+@@ -3,7 +3,9 @@
+ <id>net.thunderbird.Thunderbird</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <name>Thunderbird</name>
++ <name xml:lang="de">Thunderbird</name>
+ <summary>Thunderbird is a free and open source email, newsfeed, chat, and calendaring client</summary>
++ <summary xml:lang="de">Thunderbird ist ein freier und Quelloffener Klient für E-Mail-, Newsfeed-, Chat- und Kalender</summary>
+ <description>
+ <!-- From https://www.thunderbird.net/en-US/about/ -->
+ <p>
+@@ -14,10 +16,25 @@
+ that can’t communicate with each other. We want our users to have freedom
+ and choice in how they communicate.
+ </p>
++ <!-- Von https://www.thunderbird.net/de/about/ -->
++ <p xml:lang="de">
++ Thunderbird ist ein kostenloses E-Mail-, Newsfeed-, Chat- und
++ Kalender-Programm, das einfach einzurichten und anzupassen ist. Eines
++ der Kernprinzipien von Thunderbird ist die Verwendung und Förderung
++ offener Standards – durch diesen Fokus lehnen wir die geschlossenen
++ Plattformen und Dienste unserer Welt ab, die nicht miteinander
++ kommunizieren können. Wir möchten, dass unsere Benutzer die Freiheit
++ und Wahl haben, wie sie kommunizieren.
++ </p>
++
+ <p>
+ Thunderbird is an open source project, which means anyone can contribute
+ ideas, designs, code, and time helping fellow users.
+ </p>
++ <p xml:lang="de">
++ Thunderbird ist ein Freies Softwareprojekt, jede Person kann Ideen,
++ Designs, Code und Zeit einbringen um anderen Benutzern zu helfen.
++ </p>
+ </description>
+ <categories>
+ <category>Calendar</category>
diff --git a/debian/patches/fixes/Appdata-Fix-up-AppStream-error-by-adding-missing-field.patch b/debian/patches/fixes/Appdata-Fix-up-AppStream-error-by-adding-missing-field.patch
new file mode 100644
index 0000000000..0472ed9173
--- /dev/null
+++ b/debian/patches/fixes/Appdata-Fix-up-AppStream-error-by-adding-missing-field.patch
@@ -0,0 +1,21 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Sun, 18 Oct 2020 08:39:44 +0200
+Subject: Appdata: Fix up AppStream error by adding missing field
+
+The AppStream data is missing the lauchable element.
+---
+ comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml b/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml
+index d31e2dd..1f20e06 100644
+--- a/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml
++++ b/comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml
+@@ -2,6 +2,7 @@
+ <component type="desktop-application">
+ <id>net.thunderbird.Thunderbird</id>
+ <metadata_license>CC0-1.0</metadata_license>
++ <launchable type="desktop-id">thunderbird.desktop</launchable>
+ <name>Thunderbird</name>
+ <name xml:lang="de">Thunderbird</name>
+ <summary>Thunderbird is a free and open source email, newsfeed, chat, and calendaring client</summary>
diff --git a/debian/patches/fixes/Fix-math_private.h-for-i386-FTBFS.patch b/debian/patches/fixes/Fix-math_private.h-for-i386-FTBFS.patch
new file mode 100644
index 0000000000..ff53126401
--- /dev/null
+++ b/debian/patches/fixes/Fix-math_private.h-for-i386-FTBFS.patch
@@ -0,0 +1,25 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Sat, 27 Nov 2021 06:49:44 +0900
+Subject: Fix math_private.h for i386 FTBFS
+
+Cherry picked from firefox.
+---
+ 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/fixes/Load-dependent-libraries-with-their-real-path.patch b/debian/patches/fixes/Load-dependent-libraries-with-their-real-path.patch
new file mode 100644
index 0000000000..088c79b0b8
--- /dev/null
+++ b/debian/patches/fixes/Load-dependent-libraries-with-their-real-path.patch
@@ -0,0 +1,22 @@
+From: Christoph Goehre <chris@sigxcpu.org>
+Date: Mon, 16 Sep 2013 20:40:57 +0200
+Subject: Load dependent libraries with their real path
+
+---
+ xpcom/glue/standalone/nsXPCOMGlue.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/xpcom/glue/standalone/nsXPCOMGlue.cpp b/xpcom/glue/standalone/nsXPCOMGlue.cpp
+index 09edef1..6930417 100644
+--- a/xpcom/glue/standalone/nsXPCOMGlue.cpp
++++ b/xpcom/glue/standalone/nsXPCOMGlue.cpp
+@@ -140,6 +140,9 @@ static ReadDependentCBResult ReadDependentCB(
+ ReadAheadLib(aDependentLib);
+ }
+ #endif
++ char lib[MAXPATHLEN];
++ if (realpath(aDependentLib, lib))
++ aDependentLib = lib;
+ LibHandleType libHandle;
+ MOZ_TRY_VAR(libHandle, GetLibHandle(aDependentLib));
+
diff --git a/debian/patches/fixes/Properly-launch-applications-set-in-HOME-.mailcap.patch b/debian/patches/fixes/Properly-launch-applications-set-in-HOME-.mailcap.patch
new file mode 100644
index 0000000000..0b05f7adc9
--- /dev/null
+++ b/debian/patches/fixes/Properly-launch-applications-set-in-HOME-.mailcap.patch
@@ -0,0 +1,24 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Sat, 22 Nov 2008 09:35:23 +0100
+Subject: Properly launch applications set in $HOME/.mailcap
+
+https://bugzilla.mozilla.org/show_bug.cgi?id=444440
+---
+ uriloader/exthandler/unix/nsMIMEInfoUnix.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
+index 330c441..ff9d78b 100644
+--- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
++++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
+@@ -57,6 +57,10 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWithFile(nsIFile* aFile) {
+ }
+
+ nsAutoCString nativePath;
++/* the name of the function has changed
++ * the old was the following:
++ nsCAutoString nativePath;
++ */
+ aFile->GetNativePath(nativePath);
+
+ nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
diff --git a/debian/patches/fixes/skia-Cast-SkEndian_SwapBE32-n-to-uint32_t-on-big-endian.patch b/debian/patches/fixes/skia-Cast-SkEndian_SwapBE32-n-to-uint32_t-on-big-endian.patch
new file mode 100644
index 0000000000..1afb5dab63
--- /dev/null
+++ b/debian/patches/fixes/skia-Cast-SkEndian_SwapBE32-n-to-uint32_t-on-big-endian.patch
@@ -0,0 +1,25 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Tue, 18 Jul 2023 16:02:48 +0200
+Subject: skia: Cast SkEndian_SwapBE32(n) to uint32_t on big-endian
+
+On BE the byte-swapping needs to be unint32_t so cast that to that.
+We have ppc64 and s390x which are Big Endian platforms.
+
+Based on https://cgit.freebsd.org/ports/commit/?id=3110f3a0dcfdf1d5be165bbbb1ff08d720c63c48
+---
+ gfx/skia/skia/src/base/SkEndian.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gfx/skia/skia/src/base/SkEndian.h b/gfx/skia/skia/src/base/SkEndian.h
+index 732c248..ea35557 100644
+--- a/gfx/skia/skia/src/base/SkEndian.h
++++ b/gfx/skia/skia/src/base/SkEndian.h
+@@ -131,7 +131,7 @@ static inline void SkEndianSwap64s(uint64_t array[], int count) {
+ #define SkTEndian_SwapLE64(n) (n)
+ #else // SK_CPU_BENDIAN
+ #define SkEndian_SwapBE16(n) (n)
+- #define SkEndian_SwapBE32(n) (n)
++ #define SkEndian_SwapBE32(n) uint32_t(n)
+ #define SkEndian_SwapBE64(n) (n)
+ #define SkEndian_SwapLE16(n) SkEndianSwap16(n)
+ #define SkEndian_SwapLE32(n) SkEndianSwap32(n)
diff --git a/debian/patches/porting-armel/Avoid-using-vmrs-vmsr-on-armel.patch b/debian/patches/porting-armel/Avoid-using-vmrs-vmsr-on-armel.patch
new file mode 100644
index 0000000000..ffe17912ca
--- /dev/null
+++ b/debian/patches/porting-armel/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/porting-mips64el/skia-Disable-musttail-on-mips64.patch b/debian/patches/porting-mips64el/skia-Disable-musttail-on-mips64.patch
new file mode 100644
index 0000000000..b18380ec6c
--- /dev/null
+++ b/debian/patches/porting-mips64el/skia-Disable-musttail-on-mips64.patch
@@ -0,0 +1,23 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Sun, 23 Jul 2023 09:01:29 +0200
+Subject: skia: Disable musttail on mips64
+
+Basically also based on https://cgit.freebsd.org/ports/commit/?id=8efc1c41f45d0d7c7fe2b9c05128bd00db9c397d
+just extended about the macro __mips64
+---
+ gfx/skia/skia/src/core/SkRasterPipeline.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gfx/skia/skia/src/core/SkRasterPipeline.h b/gfx/skia/skia/src/core/SkRasterPipeline.h
+index 88c6cb2..41ae2e8 100644
+--- a/gfx/skia/skia/src/core/SkRasterPipeline.h
++++ b/gfx/skia/skia/src/core/SkRasterPipeline.h
+@@ -24,7 +24,7 @@ enum SkColorType : int;
+ struct SkImageInfo;
+ struct skcms_TransferFunction;
+
+-#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && !defined(__powerpc__)
++#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && !defined(__powerpc__) && !defined(__mips64)
+ #define SK_HAS_MUSTTAIL 1
+ #else
+ #define SK_HAS_MUSTTAIL 0
diff --git a/debian/patches/porting-ppc64el/Work-around-GCC-ICE-on-ppc64el.patch b/debian/patches/porting-ppc64el/Work-around-GCC-ICE-on-ppc64el.patch
new file mode 100644
index 0000000000..911ad79b63
--- /dev/null
+++ b/debian/patches/porting-ppc64el/Work-around-GCC-ICE-on-ppc64el.patch
@@ -0,0 +1,30 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Tue, 11 Jul 2023 06:34:59 +0900
+Subject: Work around GCC ICE on ppc64el
+
+Cherry picked from firefox.
+---
+ gfx/skia/moz.build | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build
+index 1d92936..ac0e0b2 100644
+--- a/gfx/skia/moz.build
++++ b/gfx/skia/moz.build
+@@ -359,7 +359,15 @@ UNIFIED_SOURCES += [
+ 'skia/src/sksl/SkSLConstantFolder.cpp',
+ 'skia/src/sksl/SkSLContext.cpp',
+ 'skia/src/sksl/SkSLErrorReporter.cpp',
+- 'skia/src/sksl/SkSLInliner.cpp',
++]
++
++# Work around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110606
++if CONFIG['CC_TYPE'] == 'gcc' and CONFIG['CPU_ARCH'] == 'ppc64':
++ SOURCES += ['skia/src/sksl/SkSLInliner.cpp']
++else:
++ UNIFIED_SOURCES += ['skia/src/sksl/SkSLInliner.cpp']
++
++UNIFIED_SOURCES += [
+ 'skia/src/sksl/SkSLIntrinsicList.cpp',
+ 'skia/src/sksl/SkSLMangler.cpp',
+ 'skia/src/sksl/SkSLModuleLoader.cpp',
diff --git a/debian/patches/porting-ppc64el/skia-Disable-musttail-on-ppc64el.patch b/debian/patches/porting-ppc64el/skia-Disable-musttail-on-ppc64el.patch
new file mode 100644
index 0000000000..9e06c27ff7
--- /dev/null
+++ b/debian/patches/porting-ppc64el/skia-Disable-musttail-on-ppc64el.patch
@@ -0,0 +1,22 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Tue, 18 Jul 2023 16:20:51 +0200
+Subject: skia: Disable musttail on ppc64el
+
+Based on https://cgit.freebsd.org/ports/commit/?id=8efc1c41f45d0d7c7fe2b9c05128bd00db9c397d
+---
+ gfx/skia/skia/src/core/SkRasterPipeline.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gfx/skia/skia/src/core/SkRasterPipeline.h b/gfx/skia/skia/src/core/SkRasterPipeline.h
+index 766bb0c..88c6cb2 100644
+--- a/gfx/skia/skia/src/core/SkRasterPipeline.h
++++ b/gfx/skia/skia/src/core/SkRasterPipeline.h
+@@ -24,7 +24,7 @@ enum SkColorType : int;
+ struct SkImageInfo;
+ struct skcms_TransferFunction;
+
+-#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32)
++#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && !defined(__powerpc__)
+ #define SK_HAS_MUSTTAIL 1
+ #else
+ #define SK_HAS_MUSTTAIL 0
diff --git a/debian/patches/porting/Disable-optimization-on-alpha-for-the-url-classifier.patch b/debian/patches/porting/Disable-optimization-on-alpha-for-the-url-classifier.patch
new file mode 100644
index 0000000000..3cf2b0062f
--- /dev/null
+++ b/debian/patches/porting/Disable-optimization-on-alpha-for-the-url-classifier.patch
@@ -0,0 +1,21 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Sun, 2 Nov 2008 17:56:24 +0100
+Subject: Disable optimization on alpha for the url-classifier component
+
+The use of this component leads to crashes when built with optimizations.
+---
+ comm/suite/components/build/Makefile.in | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/comm/suite/components/build/Makefile.in b/comm/suite/components/build/Makefile.in
+index 2387227..d5ca1ba 100644
+--- a/comm/suite/components/build/Makefile.in
++++ b/comm/suite/components/build/Makefile.in
+@@ -6,3 +6,7 @@ include $(topsrcdir)/config/rules.mk
+
+ # Ensure that we don't embed a manifest referencing the CRT.
+ EMBED_MANIFEST_AT =
++
++ifeq ($(OS_TEST),alpha)
++MOZ_OPTIMIZE_FLAGS := -O0
++endif
diff --git a/debian/patches/prefs/Don-t-auto-disable-extensions-in-system-directories.patch b/debian/patches/prefs/Don-t-auto-disable-extensions-in-system-directories.patch
new file mode 100644
index 0000000000..7c9c7b7fcf
--- /dev/null
+++ b/debian/patches/prefs/Don-t-auto-disable-extensions-in-system-directories.patch
@@ -0,0 +1,21 @@
+From: Christoph Goehre <chris@sigxcpu.org>
+Date: Sat, 24 Mar 2012 11:54:43 +0100
+Subject: Don't auto-disable extensions in system directories
+
+---
+ comm/mail/app/profile/all-thunderbird.js | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/comm/mail/app/profile/all-thunderbird.js b/comm/mail/app/profile/all-thunderbird.js
+index cacc159..06ecfc9 100644
+--- a/comm/mail/app/profile/all-thunderbird.js
++++ b/comm/mail/app/profile/all-thunderbird.js
+@@ -189,7 +189,7 @@ pref("extensions.systemAddon.update.enabled", true); // See bug 1462160.
+ // Disable add-ons installed into the shared user and shared system areas by
+ // default. This does not include the application directory. See the SCOPE
+ // constants in AddonManager.jsm for values to use here
+-pref("extensions.autoDisableScopes", 15);
++pref("extensions.autoDisableScopes", 3);
+
+ // Enable add-ons installed and owned by the application, like the default theme.
+ pref("extensions.startupScanScopes", 4);
diff --git a/debian/patches/prefs/Set-javascript.options.showInConsole.patch b/debian/patches/prefs/Set-javascript.options.showInConsole.patch
new file mode 100644
index 0000000000..33f8fdd487
--- /dev/null
+++ b/debian/patches/prefs/Set-javascript.options.showInConsole.patch
@@ -0,0 +1,33 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Sat, 8 Dec 2007 19:24:40 +0100
+Subject: Set javascript.options.showInConsole
+
+---
+ modules/libpref/init/all.js | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
+index c7c6f0c..3823047 100644
+--- a/modules/libpref/init/all.js
++++ b/modules/libpref/init/all.js
+@@ -976,11 +976,20 @@ pref("javascript.options.throw_on_asmjs_validation_failure", false);
+ // memory, but makes things like Function.prototype.toSource()
+ // fail.
+ pref("javascript.options.discardSystemSource", false);
++pref("javascript.options.showInConsole", true);
+
+ // Many of the the following preferences tune the SpiderMonkey GC, if you
+ // change the defaults here please also consider changing them in
+ // js/src/jsgc.cpp. They're documented in js/src/jsapi.h.
+
++// JSGC_MAX_MALLOC_BYTES
++// How much malloc memory can be allocated before triggering a GC, in MB.
++// This preference limits the memory usage of javascript.
++// If you want to change these values for your device,
++// please find Bug 417052 comment 17 and Bug 456721
++// Comment 32 and Bug 613551.
++pref("javascript.options.mem.high_water_mark", 128);
++
+ // JSGC_MAX_BYTES
+ // SpiderMonkey defaults to 2^32-1 bytes, but this is measured in MB so that
+ // cannot be represented directly in order to show it in about:config.
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000000..8577a991dd
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,22 @@
+thunderbird-l10n/sl-change-Edit-Uredi-to-CTRL-E.patch
+debian-hacks/Strip-version-number-from-application-before-installation.patch
+debian-hacks/Add-another-preferences-directory-for-applications-p.patch
+porting/Disable-optimization-on-alpha-for-the-url-classifier.patch
+fixes/Properly-launch-applications-set-in-HOME-.mailcap.patch
+fixes/Appdata-Adding-some-German-translations.patch
+fixes/Appdata-Fix-up-AppStream-error-by-adding-missing-field.patch
+debian-hacks/Don-t-error-out-when-run-time-libsqlite-is-older-tha.patch
+fixes/Load-dependent-libraries-with-their-real-path.patch
+prefs/Set-javascript.options.showInConsole.patch
+prefs/Don-t-auto-disable-extensions-in-system-directories.patch
+porting-armel/Avoid-using-vmrs-vmsr-on-armel.patch
+fixes/Allow-.js-preference-files-to-set-locked-prefs-with-lockP.patch
+debian-hacks/Set-program-name-from-the-remoting-name.patch
+fixes/Fix-math_private.h-for-i386-FTBFS.patch
+porting-ppc64el/Work-around-GCC-ICE-on-ppc64el.patch
+debian-hacks/Relax-minimum-supporter-rust-version-to-1.63.patch
+fixes/skia-Cast-SkEndian_SwapBE32-n-to-uint32_t-on-big-endian.patch
+porting-ppc64el/skia-Disable-musttail-on-ppc64el.patch
+debian-hacks/rnp-Fix-include-for-format-specifiers-for-uint32_t.patch
+porting-mips64el/skia-Disable-musttail-on-mips64.patch
+debian-hacks/Allow-to-build-oxilangtag-ffi-with-rustc-1.65.patch
diff --git a/debian/patches/thunderbird-l10n/sl-change-Edit-Uredi-to-CTRL-E.patch b/debian/patches/thunderbird-l10n/sl-change-Edit-Uredi-to-CTRL-E.patch
new file mode 100644
index 0000000000..23792bd48c
--- /dev/null
+++ b/debian/patches/thunderbird-l10n/sl-change-Edit-Uredi-to-CTRL-E.patch
@@ -0,0 +1,22 @@
+From: Christoph Goehre <chris@sigxcpu.org>
+Date: Mon, 5 Sep 2011 19:21:25 +0200
+Subject: sl: change Edit (Uredi) to CTRL+E
+
+Closes: #601331
+---
+ thunderbird-l10n/sl/chrome/sl/locale/sl/communicator/utilityOverlay.dtd | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/thunderbird-l10n/sl/chrome/sl/locale/sl/communicator/utilityOverlay.dtd b/thunderbird-l10n/sl/chrome/sl/locale/sl/communicator/utilityOverlay.dtd
+index e586ac4..6572acf 100644
+--- a/thunderbird-l10n/sl/chrome/sl/locale/sl/communicator/utilityOverlay.dtd
++++ b/thunderbird-l10n/sl/chrome/sl/locale/sl/communicator/utilityOverlay.dtd
+@@ -10,7 +10,7 @@
+ <!ENTITY newMenu.accesskey "N">
+
+ <!ENTITY editMenu.label "Uredi">
+-<!ENTITY editMenu.accesskey "U">
++<!ENTITY editMenu.accesskey "e">
+ <!ENTITY undoCmd.label "Razveljavi">
+ <!ENTITY undoCmd.accesskey "R">
+ <!ENTITY redoCmd.label "Uveljavi">