From 2e8cec705628956bce135cac82c646ae21780dbb Mon Sep 17 00:00:00 2001 From: Jan Horak Date: Mon, 18 Sep 2023 16:52:05 +0200 Subject: [PATCH] Update to 115.2.0 Resolves: RHEL-2848 --- .gitignore | 20 +- 0001-GLIBCXX-fix-for-GCC-12.patch | 44 - D158770.diff | 25 - D87019-thin-vec-big-endian.diff | 681 -------- ...t-rnp-0.16.2-to-esr102-b-bug-1790446.patch | 118 -- build-aarch64-skia.patch | 45 - build-arm-libaom.patch | 12 - build-arm-libopus.patch | 12 - build-ascii-decode-fail-rhel7.patch | 45 - build-disable-elfhack.patch | 20 +- build-ppc64-abiv2.patch | 12 + build-remove-dav1d-from-wayland-dep.patch | 49 - build-rhel7-lower-node-min-version.patch | 8 +- build-tb-rnp-openssl.patch | 12 + disable-openh264-download.patch | 39 - fedora-shebang-build.patch | 9 - firefox-nss-version.patch | 11 - get_rust_bundled_provides.sh | 14 + mozilla-1516803.patch | 15 - mozilla-1669639.patch | 14 - mozilla-1775202.patch | 17 - mozilla-bmo1005535.patch | 30 - ...-1170092.patch => mozilla-bmo1170092.patch | 58 +- mozilla-bmo1504834-part1.patch | 90 +- mozilla-bmo1504834-part3.patch | 57 +- ...-1670333.patch => mozilla-bmo1670333.patch | 41 +- ...ring.patch => mozilla-bmo1716707-svg.patch | 0 ....patch => mozilla-bmo1716707-swizzle.patch | 0 mozilla-bmo1789216-disable-av1.patch | 89 + mozilla-bmo849632.patch | 19 +- mozilla-build-arm.patch | 14 - mozilla-s390-context.patch | 53 - mozilla-s390x-skia-gradient.patch | 51 - pgo.patch | 115 -- rhbz-1219542-s390-build.patch | 23 - sources | 11 +- thunderbird-mozconfig | 40 +- thunderbird.sh.in | 10 +- thunderbird.spec | 1430 ++++++++++------- 39 files changed, 1083 insertions(+), 2270 deletions(-) delete mode 100644 0001-GLIBCXX-fix-for-GCC-12.patch delete mode 100644 D158770.diff delete mode 100644 D87019-thin-vec-big-endian.diff delete mode 100644 backport-rnp-0.16.2-to-esr102-b-bug-1790446.patch delete mode 100644 build-aarch64-skia.patch delete mode 100644 build-arm-libaom.patch delete mode 100644 build-arm-libopus.patch delete mode 100644 build-ascii-decode-fail-rhel7.patch create mode 100644 build-ppc64-abiv2.patch delete mode 100644 build-remove-dav1d-from-wayland-dep.patch create mode 100644 build-tb-rnp-openssl.patch delete mode 100644 disable-openh264-download.patch delete mode 100644 fedora-shebang-build.patch delete mode 100644 firefox-nss-version.patch create mode 100755 get_rust_bundled_provides.sh delete mode 100644 mozilla-1516803.patch delete mode 100644 mozilla-1669639.patch delete mode 100644 mozilla-1775202.patch delete mode 100644 mozilla-bmo1005535.patch rename mozilla-1170092.patch => mozilla-bmo1170092.patch (55%) rename mozilla-1670333.patch => mozilla-bmo1670333.patch (52%) rename svg-rendering.patch => mozilla-bmo1716707-svg.patch (100%) rename one_swizzle_to_rule_them_all.patch => mozilla-bmo1716707-swizzle.patch (100%) create mode 100644 mozilla-bmo1789216-disable-av1.patch delete mode 100644 mozilla-build-arm.patch delete mode 100644 mozilla-s390-context.patch delete mode 100644 mozilla-s390x-skia-gradient.patch delete mode 100644 pgo.patch delete mode 100644 rhbz-1219542-s390-build.patch diff --git a/.gitignore b/.gitignore index 622fa60..8dd17b7 100644 --- a/.gitignore +++ b/.gitignore @@ -70,15 +70,11 @@ /thunderbird-langpacks-102.10.0-20230411.tar.xz /thunderbird-102.11.0.processed-source.tar.xz /thunderbird-langpacks-102.11.0-20230504.tar.xz -/thunderbird-102.12.0.processed-source.tar.xz -/thunderbird-langpacks-102.12.0-20230605.tar.xz -/thunderbird-102.13.0.processed-source.tar.xz -/thunderbird-langpacks-102.13.0-20230705.tar.xz -/thunderbird-102.13.0.b2.processed-source.tar.xz -/thunderbird-langpacks-102.13.0-20230707.tar.xz -/thunderbird-102.14.0.processed-source.tar.xz -/thunderbird-langpacks-102.14.0-20230801.tar.xz -/thunderbird-102.15.0.processed-source.tar.xz -/thunderbird-langpacks-102.15.0-20230828.tar.xz -/thunderbird-102.15.1.processed-source.tar.xz -/thunderbird-langpacks-102.15.1-20230913.tar.xz +/thunderbird-115.1.0.processed-source.tar.xz +/thunderbird-langpacks-115.1.0-20230804.tar.xz +/nspr-4.35.0-1.el8_1.src.rpm +/nss-3.90.0-2.el8_1.src.rpm +/thunderbird-115.2.1.processed-source.tar.xz +/thunderbird-langpacks-115.2.1-20230908.tar.xz +/nss-3.90.0-3.el9_0.src.rpm +/nss-3.90.0-3-no-buildid.el9_0.src.rpm diff --git a/0001-GLIBCXX-fix-for-GCC-12.patch b/0001-GLIBCXX-fix-for-GCC-12.patch deleted file mode 100644 index 37d6f50..0000000 --- a/0001-GLIBCXX-fix-for-GCC-12.patch +++ /dev/null @@ -1,44 +0,0 @@ -From efd5bc0715e5477318be95a76811cda0a89e8289 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= -Date: Fri, 4 Mar 2022 12:00:26 +0100 -Subject: [PATCH] GLIBCXX fix for GCC 12? - ---- - build/unix/stdc++compat/stdc++compat.cpp | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/build/unix/stdc++compat/stdc++compat.cpp b/build/unix/stdc++compat/stdc++compat.cpp -index 0180f6bcfa998..8d7a542ff11f0 100644 ---- a/build/unix/stdc++compat/stdc++compat.cpp -+++ b/build/unix/stdc++compat/stdc++compat.cpp -@@ -24,6 +24,7 @@ - GLIBCXX_3.4.27 is from gcc 10 - GLIBCXX_3.4.28 is from gcc 10 - GLIBCXX_3.4.29 is from gcc 11 -+ GLIBCXX_3.4.30 is from gcc 12 - - This file adds the necessary compatibility tricks to avoid symbols with - version GLIBCXX_3.4.20 and bigger, keeping binary compatibility with -@@ -69,6 +70,19 @@ void __attribute__((weak)) __throw_bad_array_new_length() { MOZ_CRASH(); } - } // namespace std - #endif - -+#if _GLIBCXX_RELEASE >= 12 -+namespace std { -+ -+/* This avoids the GLIBCXX_3.4.30 symbol version. */ -+void __attribute__((weak)) -+__glibcxx_assert_fail(const char* __file, int __line, const char* __function, -+ const char* __condition) { -+ MOZ_CRASH(); -+} -+ -+} // namespace std -+#endif -+ - /* While we generally don't build with exceptions, we have some host tools - * that do use them. libstdc++ from GCC 5.0 added exception constructors with - * char const* argument. Older versions only have a constructor with --- -2.35.1 - diff --git a/D158770.diff b/D158770.diff deleted file mode 100644 index 1d76995..0000000 --- a/D158770.diff +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/parser/expat/lib/xmlparse.c b/parser/expat/lib/xmlparse.c ---- a/parser/expat/lib/xmlparse.c -+++ b/parser/expat/lib/xmlparse.c -@@ -5652,12 +5652,18 @@ - else - #endif /* XML_DTD */ - { - processor = contentProcessor; - /* see externalEntityContentProcessor vs contentProcessor */ -- return doContent(parser, parentParser ? 1 : 0, encoding, s, end, -- nextPtr, (XML_Bool)!ps_finalBuffer); -+ result = doContent(parser, parser->m_parentParser ? 1 : 0, -+ parser->m_encoding, s, end, nextPtr, -+ (XML_Bool)! parser->m_parsingStatus.finalBuffer); -+ if (result == XML_ERROR_NONE) { -+ if (! storeRawNames(parser)) -+ return XML_ERROR_NO_MEMORY; -+ } -+ return result; - } - } - - static enum XML_Error PTRCALL - errorProcessor(XML_Parser parser, - diff --git a/D87019-thin-vec-big-endian.diff b/D87019-thin-vec-big-endian.diff deleted file mode 100644 index d4c2a7e..0000000 --- a/D87019-thin-vec-big-endian.diff +++ /dev/null @@ -1,681 +0,0 @@ ---- thunderbird-78.9.0/Cargo.lock.D87019-thin-vec-big-endian.diff 2021-03-22 11:34:35.584716638 +0100 -+++ thunderbird-78.9.0/Cargo.lock 2021-03-22 12:29:14.140624979 +0100 -@@ -4792,9 +4792,9 @@ checksum = "8eaa81235c7058867fa8c0e7314f - - [[package]] - name = "thin-vec" --version = "0.1.2" -+version = "0.2.1" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "3a93c9ade36a827a69257925808463db46ffcf193442fad01eb9bdc1d31aed81" -+checksum = "dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0" - - [[package]] - name = "thiserror" ---- thunderbird-78.9.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/gfx/webrender_bindings/Cargo.toml 2021-03-22 11:34:35.587716631 +0100 -@@ -20,7 +20,7 @@ nsstring = { path = "../../xpcom/rust/ns - bincode = "1.0" - uuid = { version = "0.8", features = ["v4"] } - fxhash = "0.2.1" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - swgl = { path = "../wr/swgl" } - - [dependencies.webrender] ---- thunderbird-78.9.0/intl/l10n/rust/fluent-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/intl/l10n/rust/fluent-ffi/Cargo.toml 2021-03-22 11:34:35.589716625 +0100 -@@ -10,4 +10,4 @@ fluent-pseudo = "0.2" - intl-memoizer = "0.4" - unic-langid = "0.8" - nsstring = { path = "../../../../xpcom/rust/nsstring" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } ---- thunderbird-78.9.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml 2021-03-22 11:34:35.590716623 +0100 -@@ -9,7 +9,7 @@ edition = "2018" - nserror = { path = "../../../../xpcom/rust/nserror" } - nsstring = { path = "../../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../../xpcom/rust/xpcom" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - fluent-langneg = { version = "0.12.1", features = ["cldr"] } - unic-langid = "0.8" - unic-langid-ffi = { path = "../unic-langid-ffi" } ---- thunderbird-78.9.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/intl/locale/rust/unic-langid-ffi/Cargo.toml 2021-03-22 11:34:35.591716620 +0100 -@@ -9,5 +9,5 @@ edition = "2018" - nserror = { path = "../../../../xpcom/rust/nserror" } - nsstring = { path = "../../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../../xpcom/rust/xpcom" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - unic-langid = { version = "0.8", features = ["likelysubtags"] } ---- thunderbird-78.9.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:40.000000000 +0100 -+++ thunderbird-78.9.0/netwerk/socket/neqo_glue/Cargo.toml 2021-03-22 11:34:35.600716597 +0100 -@@ -14,7 +14,7 @@ neqo-common = { tag = "v0.2.4", git = "h - nserror = { path = "../../../xpcom/rust/nserror" } - nsstring = { path = "../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../xpcom/rust/xpcom" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - - [dependencies.neqo-crypto] - tag = "v0.2.4" ---- thunderbird-78.9.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:52.000000000 +0100 -+++ thunderbird-78.9.0/security/manager/ssl/cert_storage/Cargo.toml 2021-03-22 11:34:35.601716594 +0100 -@@ -18,6 +18,6 @@ rust_cascade = "0.6.0" - sha2 = "^0.8" - storage_variant = { path = "../../../../storage/variant" } - tempfile = "3" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - time = "0.1" - xpcom = { path = "../../../../xpcom/rust/xpcom" } ---- thunderbird-78.9.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:49.000000000 +0100 -+++ thunderbird-78.9.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml 2021-03-22 11:34:35.603716589 +0100 -@@ -20,5 +20,5 @@ nserror = { path = "../../../../xpcom/ru - nsstring = { path = "../../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../../xpcom/rust/xpcom" } - storage_variant = { path = "../../../../storage/variant" } --thin-vec = { version = "0.1", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - fxa-client = { git = "https://github.com/mozilla/application-services", rev = "61dcc364ac0d6d0816ab88a494bbf20d824b009b", features = ["gecko"] } ---- thunderbird-78.9.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:53.000000000 +0100 -+++ thunderbird-78.9.0/services/sync/golden_gate/Cargo.toml 2021-03-22 11:34:35.605716584 +0100 -@@ -19,5 +19,5 @@ sync15-traits = { git = "https://github. - xpcom = { path = "../../../xpcom/rust/xpcom" } - - [dependencies.thin-vec] --version = "0.1.0" -+version = "0.2.1" - features = ["gecko-ffi"] ---- thunderbird-78.9.0/third_party/rust/thin-vec/.cargo-checksum.json.D87019-thin-vec-big-endian.diff 2021-03-22 11:34:35.606716581 +0100 -+++ thunderbird-78.9.0/third_party/rust/thin-vec/.cargo-checksum.json 2021-03-22 12:30:38.588587238 +0100 -@@ -1 +1 @@ --{"files":{"Cargo.toml":"7b164cc8a702a204a4732cb4da2940711b8e3be915c258e2a972d4874d767b4c","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/lib.rs":"9f2a087cabfe0b6f83818323bb9004b45fe7548c51376816fd8d4572256bd0e8","src/range.rs":"bac59bcb6230367a39c7e28ac15263e4526f966cd8c72015873017f17c115aaa"},"package":"3a93c9ade36a827a69257925808463db46ffcf193442fad01eb9bdc1d31aed81"} -\ No newline at end of file -+{"files":{"Cargo.toml":"754c05523d17eb7591c3ea2c9294e47c05fbb257fed04b78546fb2ec7cafa8b4","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/lib.rs":"627c6094c3f0286dba25bc73f5672c06c5061c25b01c513d213cbdda100673a2"},"package":"dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0"} ---- thunderbird-78.9.0/third_party/rust/thin-vec/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/third_party/rust/thin-vec/Cargo.toml 2021-03-22 12:32:38.577621737 +0100 -@@ -11,8 +11,9 @@ - # will likely look very different (and much more reasonable) - - [package] -+edition = "2018" - name = "thin-vec" --version = "0.1.2" -+version = "0.2.1" - authors = ["Alexis Beingessner "] - description = "a vec that takes up less space on the stack" - homepage = "https://github.com/gankro/thin-vec" ---- thunderbird-78.9.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:28.000000000 +0100 -+++ thunderbird-78.9.0/third_party/rust/thin-vec/src/lib.rs 2021-03-22 12:34:10.271595434 +0100 -@@ -1,47 +1,252 @@ --mod range; -+//! ThinVec is exactly the same as Vec, except that it stores its `len` and `capacity` in the buffer -+//! it allocates. -+//! -+//! This makes the memory footprint of ThinVecs lower; notably in cases where space is reserved for -+//! a non-existence ThinVec. So `Vec>` and `Option>::None` will waste less -+//! space. Being pointer-sized also means it can be passed/stored in registers. -+//! -+//! Of course, any actually constructed ThinVec will theoretically have a bigger allocation, but -+//! the fuzzy nature of allocators means that might not actually be the case. -+//! -+//! Properties of Vec that are preserved: -+//! * `ThinVec::new()` doesn't allocate (it points to a statically allocated singleton) -+//! * reallocation can be done in place -+//! * `size_of::>()` == `size_of::>>()` -+//! -+//! Properties of Vec that aren't preserved: -+//! * `ThinVec` can't ever be zero-cost roundtripped to a `Box<[T]>`, `String`, or `*mut T` -+//! * `from_raw_parts` doesn't exist -+//! * ThinVec currently doesn't bother to not-allocate for Zero Sized Types (e.g. `ThinVec<()>`), -+//! but it could be done if someone cared enough to implement it. -+//! -+//! -+//! -+//! # Gecko FFI -+//! -+//! If you enable the gecko-ffi feature, ThinVec will verbatim bridge with the nsTArray type in -+//! Gecko (Firefox). That is, ThinVec and nsTArray have identical layouts *but not ABIs*, -+//! so nsTArrays/ThinVecs an be natively manipulated by C++ and Rust, and ownership can be -+//! transferred across the FFI boundary (**IF YOU ARE CAREFUL, SEE BELOW!!**). -+//! -+//! While this feature is handy, it is also inherently dangerous to use because Rust and C++ do not -+//! know about eachother. Specifically, this can be an issue with non-POD types (types which -+//! have destructors, move constructors, or are `!Copy`). -+//! -+//! ## Do Not Pass By Value -+//! -+//! The biggest thing to keep in mind is that **FFI functions cannot pass ThinVec/nsTArray -+//! by-value**. That is, these are busted APIs: -+//! -+//! ```rust,ignore -+//! // BAD WRONG -+//! extern fn process_data(data: ThinVec) { ... } -+//! // BAD WRONG -+//! extern fn get_data() -> ThinVec { ... } -+//! ``` -+//! -+//! You must instead pass by-reference: -+//! -+//! ```rust -+//! # use thin_vec::*; -+//! # use std::mem; -+//! -+//! // Read-only access, ok! -+//! extern fn process_data(data: &ThinVec) { -+//! for val in data { -+//! println!("{}", val); -+//! } -+//! } -+//! -+//! // Replace with empty instance to take ownership, ok! -+//! extern fn consume_data(data: &mut ThinVec) { -+//! let owned = mem::replace(data, ThinVec::new()); -+//! mem::drop(owned); -+//! } -+//! -+//! // Mutate input, ok! -+//! extern fn add_data(dataset: &mut ThinVec) { -+//! dataset.push(37); -+//! dataset.push(12); -+//! } -+//! -+//! // Return via out-param, usually ok! -+//! // -+//! // WARNING: output must be initialized! (Empty nsTArrays are free, so just do it!) -+//! extern fn get_data(output: &mut ThinVec) { -+//! *output = thin_vec![1, 2, 3, 4, 5]; -+//! } -+//! ``` -+//! -+//! Ignorable Explanation For Those Who Really Want To Know Why: -+//! -+//! > The fundamental issue is that Rust and C++ can't currently communicate about destructors, and -+//! > the semantics of C++ require destructors of function arguments to be run when the function -+//! > returns. Whether the callee or caller is responsible for this is also platform-specific, so -+//! > trying to hack around it manually would be messy. -+//! > -+//! > Also a type having a destructor changes its C++ ABI, because that type must actually exist -+//! > in memory (unlike a trivial struct, which is often passed in registers). We don't currently -+//! > have a way to communicate to Rust that this is happening, so even if we worked out the -+//! > destructor issue with say, MaybeUninit, it would still be a non-starter without some RFCs -+//! > to add explicit rustc support. -+//! > -+//! > Realistically, the best answer here is to have a "heavier" bindgen that can secretly -+//! > generate FFI glue so we can pass things "by value" and have it generate by-reference code -+//! > behind our back (like the cxx crate does). This would muddy up debugging/searchfox though. -+//! -+//! ## Types Should Be Trivially Relocatable -+//! -+//! Types in Rust are always trivially relocatable (unless suitably borrowed/[pinned][]/hidden). -+//! This means all Rust types are legal to relocate with a bitwise copy, you cannot provide -+//! copy or move constructors to execute when this happens, and the old location won't have its -+//! destructor run. This will cause problems for types which have a significant location -+//! (types that intrusively point into themselves or have their location registered with a service). -+//! -+//! While relocations are generally predictable if you're very careful, **you should avoid using -+//! types with significant locations with Rust FFI**. -+//! -+//! Specifically, ThinVec will trivially relocate its contents whenever it needs to reallocate its -+//! buffer to change its capacity. This is the default reallocation strategy for nsTArray, and is -+//! suitable for the vast majority of types. Just be aware of this limitation! -+//! -+//! ## Auto Arrays Are Dangerous -+//! -+//! ThinVec has *some* support for handling auto arrays which store their buffer on the stack, -+//! but this isn't well tested. -+//! -+//! Regardless of how much support we provide, Rust won't be aware of the buffer's limited lifetime, -+//! so standard auto array safety caveats apply about returning/storing them! ThinVec won't ever -+//! produce an auto array on its own, so this is only an issue for transferring an nsTArray into -+//! Rust. -+//! -+//! ## Other Issues -+//! -+//! Standard FFI caveats also apply: -+//! -+//! * Rust is more strict about POD types being initialized (use MaybeUninit if you must) -+//! * `ThinVec` has no idea if the C++ version of `T` has move/copy/assign/delete overloads -+//! * `nsTArray` has no idea if the Rust version of `T` has a Drop/Clone impl -+//! * C++ can do all sorts of unsound things that Rust can't catch -+//! * C++ and Rust don't agree on how zero-sized/empty types should be handled -+//! -+//! The gecko-ffi feature will not work if you aren't linking with code that has nsTArray -+//! defined. Specifically, we must share the symbol for nsTArray's empty singleton. You will get -+//! linking errors if that isn't defined. -+//! -+//! The gecko-ffi feature also limits ThinVec to the legacy behaviors of nsTArray. Most notably, -+//! nsTArray has a maximum capacity of i32::MAX (~2.1 billion items). Probably not an issue. -+//! Probably. -+//! -+//! [pinned]: https://doc.rust-lang.org/std/pin/index.html - - use std::{fmt, io, ptr, mem, slice}; - use std::collections::Bound; - use std::iter::FromIterator; - use std::slice::IterMut; --use std::ops::{Deref, DerefMut}; -+use std::ops::{Deref, DerefMut, RangeBounds}; - use std::marker::PhantomData; - use std::alloc::*; - use std::cmp::*; - use std::hash::*; - use std::borrow::*; --use range::RangeArgument; - use std::ptr::NonNull; - --#[cfg(not(feature = "gecko-ffi"))] --type SizeType = usize; --#[cfg(feature = "gecko-ffi")] --type SizeType = u32; -+use impl_details::*; - --#[cfg(feature = "gecko-ffi")] --const AUTO_MASK: u32 = 1 << 31; --#[cfg(feature = "gecko-ffi")] --const CAP_MASK: u32 = !AUTO_MASK; -+// modules: a simple way to cfg a whole bunch of impl details at once - - #[cfg(not(feature = "gecko-ffi"))] --const MAX_CAP: usize = !0; --#[cfg(feature = "gecko-ffi")] --const MAX_CAP: usize = i32::max_value() as usize; -+mod impl_details { -+ pub type SizeType = usize; -+ pub const MAX_CAP: usize = !0; - --#[cfg(not(feature = "gecko-ffi"))] --#[inline(always)] --fn assert_size(x: usize) -> SizeType { x } -+ #[inline(always)] -+ pub fn assert_size(x: usize) -> SizeType { x } -+} - - #[cfg(feature = "gecko-ffi")] --#[inline] --fn assert_size(x: usize) -> SizeType { -- if x > MAX_CAP as usize { -- panic!("nsTArray size may not exceed the capacity of a 32-bit sized int"); -+mod impl_details { -+ // Support for briding a gecko nsTArray verbatim into a ThinVec. -+ // -+ // ThinVec can't see copy/move/delete implementations -+ // from C++ -+ // -+ // The actual layout of an nsTArray is: -+ // -+ // ```cpp -+ // struct { -+ // uint32_t mLength; -+ // uint32_t mCapacity: 31; -+ // uint32_t mIsAutoArray: 1; -+ // } -+ // ``` -+ // -+ // Rust doesn't natively support bit-fields, so we manually mask -+ // and shift the bit. When the "auto" bit is set, the header and buffer -+ // are actually on the stack, meaning the ThinVec pointer-to-header -+ // is essentially an "owned borrow", and therefore dangerous to handle. -+ // There are no safety guards for this situation. -+ // -+ // On little-endian platforms, the auto bit will be the high-bit of -+ // our capacity u32. On big-endian platforms, it will be the low bit. -+ // Hence we need some platform-specific CFGs for the necessary masking/shifting. -+ // -+ // ThinVec won't ever construct an auto array. They only happen when -+ // bridging from C++. This means we don't need to ever set/preserve the bit. -+ // We just need to be able to read and handle it if it happens to be there. -+ // -+ // Handling the auto bit mostly just means not freeing/reallocating the buffer. -+ -+ pub type SizeType = u32; -+ -+ pub const MAX_CAP: usize = i32::max_value() as usize; -+ -+ // Little endian: the auto bit is the high bit, and the capacity is -+ // verbatim. So we just need to mask off the high bit. Note that -+ // this masking is unnecessary when packing, because assert_size -+ // guards against the high bit being set. -+ #[cfg(target_endian = "little")] -+ pub fn pack_capacity(cap: SizeType) -> SizeType { -+ cap as SizeType -+ } -+ #[cfg(target_endian = "little")] -+ pub fn unpack_capacity(cap: SizeType) -> usize { -+ (cap as usize) & !(1 << 31) -+ } -+ #[cfg(target_endian = "little")] -+ pub fn is_auto(cap: SizeType) -> bool { -+ (cap & (1 << 31)) != 0 -+ } -+ -+ // Big endian: the auto bit is the low bit, and the capacity is -+ // shifted up one bit. Masking out the auto bit is unnecessary, -+ // as rust shifts always shift in 0's for unsigned integers. -+ #[cfg(target_endian = "big")] -+ pub fn pack_capacity(cap: SizeType) -> SizeType { -+ (cap as SizeType) << 1 -+ } -+ #[cfg(target_endian = "big")] -+ pub fn unpack_capacity(cap: SizeType) -> usize { -+ (cap >> 1) as usize -+ } -+ #[cfg(target_endian = "big")] -+ pub fn is_auto(cap: SizeType) -> bool { -+ (cap & 1) != 0 - } -- x as SizeType -+ -+ #[inline] -+ pub fn assert_size(x: usize) -> SizeType { -+ if x > MAX_CAP as usize { -+ panic!("nsTArray size may not exceed the capacity of a 32-bit sized int"); -+ } -+ x as SizeType -+ } -+ - } - --/// The header of a ThinVec -+/// The header of a ThinVec. -+/// -+/// The _cap can be a bitfield, so use accessors to avoid trouble. - #[repr(C)] - struct Header { - _len: SizeType, -@@ -53,38 +258,10 @@ impl Header { - self._len as usize - } - -- #[cfg(feature = "gecko-ffi")] -- fn cap(&self) -> usize { -- (self._cap & CAP_MASK) as usize -- } -- -- #[cfg(not(feature = "gecko-ffi"))] -- fn cap(&self) -> usize { -- self._cap as usize -- } -- - fn set_len(&mut self, len: usize) { - self._len = assert_size(len); - } - -- #[cfg(feature = "gecko-ffi")] -- fn set_cap(&mut self, cap: usize) { -- debug_assert!(cap & (CAP_MASK as usize) == cap); -- // FIXME: this is busted because it reads uninit memory -- // debug_assert!(!self.uses_stack_allocated_buffer()); -- self._cap = assert_size(cap) & CAP_MASK; -- } -- -- #[cfg(feature = "gecko-ffi")] -- fn uses_stack_allocated_buffer(&self) -> bool { -- self._cap & AUTO_MASK != 0 -- } -- -- #[cfg(not(feature = "gecko-ffi"))] -- fn set_cap(&mut self, cap: usize) { -- self._cap = assert_size(cap); -- } -- - fn data(&self) -> *mut T { - let header_size = mem::size_of::
(); - let padding = padding::(); -@@ -102,6 +279,41 @@ impl Header { - } - } - -+ -+#[cfg(feature = "gecko-ffi")] -+impl Header { -+ fn cap(&self) -> usize { -+ unpack_capacity(self._cap) -+ } -+ -+ fn set_cap(&mut self, cap: usize) { -+ // debug check that our packing is working -+ debug_assert_eq!(unpack_capacity(pack_capacity(cap as SizeType)), cap); -+ // FIXME: this assert is busted because it reads uninit memory -+ // debug_assert!(!self.uses_stack_allocated_buffer()); -+ -+ // NOTE: this always stores a cleared auto bit, because set_cap -+ // is only invoked by Rust, and Rust doesn't create auto arrays. -+ self._cap = pack_capacity(assert_size(cap)); -+ } -+ -+ fn uses_stack_allocated_buffer(&self) -> bool { -+ is_auto(self._cap) -+ } -+} -+ -+#[cfg(not(feature = "gecko-ffi"))] -+impl Header { -+ fn cap(&self) -> usize { -+ self._cap as usize -+ } -+ -+ fn set_cap(&mut self, cap: usize) { -+ self._cap = assert_size(cap); -+ } -+} -+ -+ - /// Singleton that all empty collections share. - /// Note: can't store non-zero ZSTs, we allocate in that case. We could - /// optimize everything to not do that (basically, make ptr == len and branch -@@ -118,9 +330,7 @@ extern { - - // TODO: overflow checks everywhere - --// Utils -- --fn oom() -> ! { std::process::abort() } -+// Utils for computing layouts of allocations - - fn alloc_size(cap: usize) -> usize { - // Compute "real" header size with pointer math -@@ -165,9 +375,10 @@ fn layout(cap: usize) -> Layout { - fn header_with_capacity(cap: usize) -> NonNull
{ - debug_assert!(cap > 0); - unsafe { -- let header = alloc(layout::(cap)) as *mut Header; -+ let layout = layout::(cap); -+ let header = alloc(layout) as *mut Header; - -- if header.is_null() { oom() } -+ if header.is_null() { handle_alloc_error(layout) } - - // "Infinite" capacity for zero-sized types: - (*header).set_cap(if mem::size_of::() == 0 { MAX_CAP } else { cap }); -@@ -179,28 +390,8 @@ fn header_with_capacity(cap: usize) - - - - --/// ThinVec is exactly the same as Vec, except that it stores its `len` and `capacity` in the buffer --/// it allocates. --/// --/// This makes the memory footprint of ThinVecs lower; notably in cases where space is reserved for --/// a non-existence ThinVec. So `Vec>` and `Option>::None` will waste less --/// space. Being pointer-sized also means it can be passed/stored in registers. --/// --/// Of course, any actually constructed ThinVec will theoretically have a bigger allocation, but --/// the fuzzy nature of allocators means that might not actually be the case. --/// --/// Properties of Vec that are preserved: --/// * `ThinVec::new()` doesn't allocate (it points to a statically allocated singleton) --/// * reallocation can be done in place --/// * `size_of::>()` == `size_of::>>()` --/// * NOTE: This is only possible when the `unstable` feature is used. --/// --/// Properties of Vec that aren't preserved: --/// * `ThinVec` can't ever be zero-cost roundtripped to a `Box<[T]>`, `String`, or `*mut T` --/// * `from_raw_parts` doesn't exist --/// * ThinVec currently doesn't bother to not-allocate for Zero Sized Types (e.g. `ThinVec<()>`), --/// but it could be done if someone cared enough to implement it. --#[cfg_attr(feature = "gecko-ffi", repr(C))] -+/// See the crate's top level documentation for a description of this type. -+#[repr(C)] - pub struct ThinVec { - ptr: NonNull
, - boo: PhantomData, -@@ -630,15 +821,15 @@ impl ThinVec { - } - - pub fn drain(&mut self, range: R) -> Drain -- where R: RangeArgument -+ where R: RangeBounds - { - let len = self.len(); -- let start = match range.start() { -+ let start = match range.start_bound() { - Bound::Included(&n) => n, - Bound::Excluded(&n) => n + 1, - Bound::Unbounded => 0, - }; -- let end = match range.end() { -+ let end = match range.end_bound() { - Bound::Included(&n) => n + 1, - Bound::Excluded(&n) => n, - Bound::Unbounded => len, -@@ -688,11 +879,30 @@ impl ThinVec { - alloc_size::(new_cap), - ) as *mut Header; - -- if ptr.is_null() { oom() } -+ if ptr.is_null() { handle_alloc_error(layout::(new_cap)) } - (*ptr).set_cap(new_cap); - self.ptr = NonNull::new_unchecked(ptr); - } else { -- self.ptr = header_with_capacity::(new_cap); -+ let mut new_header = header_with_capacity::(new_cap); -+ -+ // If we get here and have a non-zero len, then we must be handling -+ // a gecko auto array, and we have items in a stack buffer. We shouldn't -+ // free it, but we should memcopy the contents out of it and mark it as empty. -+ // -+ // T is assumed to be trivially relocatable, as this is ~required -+ // for Rust compatibility anyway. Furthermore, we assume C++ won't try -+ // to unconditionally destroy the contents of the stack allocated buffer -+ // (i.e. it's obfuscated behind a union). -+ // -+ // In effect, we are partially reimplementing the auto array move constructor -+ // by leaving behind a valid empty instance. -+ let len = self.len(); -+ if cfg!(feature = "gecko-ffi") && len > 0 { -+ new_header.as_mut().data::().copy_from_nonoverlapping(self.data_raw(), len); -+ self.set_len(0); -+ } -+ -+ self.ptr = new_header; - } - } - -@@ -1093,10 +1303,7 @@ mod tests { - use std::mem::size_of; - assert_eq!(size_of::>(), size_of::<&u8>()); - -- // We don't perform the null-pointer optimization on stable rust. -- if cfg!(feature = "unstable") { -- assert_eq!(size_of::>>(), size_of::<&u8>()); -- } -+ assert_eq!(size_of::>>(), size_of::<&u8>()); - } - - #[test] -@@ -1731,7 +1938,6 @@ mod std_tests { - assert_eq!(v, &[(), ()]); - } - --/* TODO: support inclusive ranges - #[test] - fn test_drain_inclusive_range() { - let mut v = thin_vec!['a', 'b', 'c', 'd', 'e']; -@@ -1761,6 +1967,7 @@ mod std_tests { - } - - #[test] -+ #[cfg(not(feature = "gecko-ffi"))] - fn test_drain_max_vec_size() { - let mut v = ThinVec::<()>::with_capacity(usize::max_value()); - unsafe { v.set_len(usize::max_value()); } -@@ -1781,7 +1988,6 @@ mod std_tests { - let mut v = thin_vec![1, 2, 3, 4, 5]; - v.drain(5..=5); - } --*/ - - /* TODO: implement splice? - #[test] -@@ -2187,7 +2393,7 @@ mod std_tests { - assert!(v.capacity() >= 33) - } - --/* TODO: implement try_reserve -+/* TODO: implement try_reserve - #[test] - fn test_try_reserve() { - ---- thunderbird-78.9.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:12.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/cascade_bloom_filter/Cargo.toml 2021-03-22 11:37:44.287130273 +0100 -@@ -8,5 +8,5 @@ nserror = { path = "../../../xpcom/rust/ - nsstring = { path = "../../../xpcom/rust/nsstring" } - rental = "0.5.5" - rust_cascade = "0.6.0" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - xpcom = { path = "../../../xpcom/rust/xpcom" } ---- thunderbird-78.9.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:28.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml 2021-03-22 11:37:44.288130270 +0100 -@@ -13,7 +13,7 @@ moz_task = { path = "../../../../../xpco - nserror = { path = "../../../../../xpcom/rust/nserror" } - nsstring = { path = "../../../../../xpcom/rust/nsstring" } - once_cell = "1" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - xpcom = { path = "../../../../../xpcom/rust/xpcom" } - serde = "1" - serde_json = "1" ---- thunderbird-78.9.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/kvstore/Cargo.toml 2021-03-22 11:37:44.289130267 +0100 -@@ -18,7 +18,7 @@ rkv = "0.10.2" - storage_variant = { path = "../../../storage/variant" } - xpcom = { path = "../../../xpcom/rust/xpcom" } - tempfile = "3" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - - # Get rid of failure's dependency on backtrace. Eventually - # backtrace will move into Rust core, but we don't need it here. ---- thunderbird-78.9.0/toolkit/components/places/bookmark_sync/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:25.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/places/bookmark_sync/Cargo.toml 2021-03-22 11:37:44.289130267 +0100 -@@ -19,5 +19,5 @@ url = "2.0" - xpcom = { path = "../../../../xpcom/rust/xpcom" } - - [dependencies.thin-vec] --version = "0.1.0" -+version = "0.2.1" - features = ["gecko-ffi"] ---- thunderbird-78.9.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/tools/profiler/rust-helper/Cargo.toml 2021-03-22 11:37:44.290130265 +0100 -@@ -23,7 +23,7 @@ features = ["endian_fd", "elf32", "elf64 - default-features = false - - [dependencies.thin-vec] --version = "0.1.0" -+version = "0.2.1" - features = ["gecko-ffi"] - - [features] ---- thunderbird-78.9.0/xpcom/rust/xpcom/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/xpcom/rust/xpcom/Cargo.toml 2021-03-22 11:37:44.291130262 +0100 -@@ -9,4 +9,4 @@ nsstring = { path = "../nsstring" } - nserror = { path = "../nserror" } - threadbound = "0.1" - xpcom_macros = { path = "xpcom_macros" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } diff --git a/backport-rnp-0.16.2-to-esr102-b-bug-1790446.patch b/backport-rnp-0.16.2-to-esr102-b-bug-1790446.patch deleted file mode 100644 index ebad418..0000000 --- a/backport-rnp-0.16.2-to-esr102-b-bug-1790446.patch +++ /dev/null @@ -1,118 +0,0 @@ -# HG changeset patch -# User Rob Lemley -# Date 1662996130 0 -# Mon Sep 12 15:22:10 2022 +0000 -# Node ID 5dfb405f325609c62215f9d74e01dba029b84611 -# Parent 9998ed5c2bcee289b03828eba670053614fa26da -Bug 1790446 - Stop rewriting RNP config.h.in when updating the source from upstream. r=dandarnell - -Differential Revision: https://phabricator.services.mozilla.com/D157151 - -diff --git a/comm/python/thirdroc/thirdroc/rnp.py b/comm/python/thirdroc/thirdroc/rnp.py ---- a/comm/python/thirdroc/thirdroc/rnp.py -+++ b/comm/python/thirdroc/thirdroc/rnp.py -@@ -11,19 +11,18 @@ import re - from packaging.version import parse - - from mozbuild.preprocessor import Preprocessor - - --def rnp_source_update(rnp_root, version_str, revision, timestamp, bug_report): -+def rnp_source_update(rnp_root, version_str, revision, timestamp): - """ - Update RNP source files: generate version.h and mangle config.h.in - :param rnp_root: - :type rnp_root: - :param string version_str: latest version - :param string revision: revision hash (short form) - :param float timestamp: UNIX timestamp from revision -- :param string bug_report: where to report bugs for this RNP build - """ - version = parse(version_str) - version_major = version.major - version_minor = version.minor - version_patch = version.micro -@@ -36,20 +35,17 @@ def rnp_source_update(rnp_root, version_ - RNP_VERSION_MINOR=version_minor, - RNP_VERSION_PATCH=version_patch, - RNP_VERSION=version_str, - RNP_VERSION_FULL=version_full, - RNP_VERSION_COMMIT_TIMESTAMP=str(timestamp), -- BUGREPORT_EMAIL=bug_report, - ) - src_lib = os.path.join(rnp_root, "src", "lib") - version_h_in = os.path.join(src_lib, "version.h.in") - version_h = os.path.join(src_lib, "version.h") -- config_h_in = os.path.join(src_lib, "config.h.in") - readme_rnp = os.path.join(rnp_root, "..", "README.rnp") - - generate_version_h(version_h_in, version_h, defines) -- mangle_config_h_in(config_h_in, defines) - update_readme(readme_rnp, revision) - - - def rnp_preprocess(tmpl, dest, defines): - """ -@@ -79,30 +75,10 @@ def generate_version_h(template, destina - with open(template) as tmpl: - with open(destination, "w") as dest: - rnp_preprocess(tmpl, dest, defines) - - --def mangle_config_h_in(template, defines): -- """ -- Mangle RNP's config.h.in so that it will work with CONFIGURE_DEFINE_FILES -- :param string template: path to config.h.in -- :param dict defines: result of get_defines() -- """ -- with open(template) as tmpl: -- tmp_string = StringIO() -- rnp_preprocess(tmpl, tmp_string, defines) -- -- tmp_string.seek(0) -- -- with open(template, "w") as dest: -- for line in tmp_string: -- if line.startswith("#cmakedefine"): -- line = line.replace("#cmakedefine", "#undef") -- dest.write(line) -- dest.write("\n") -- -- - def update_readme(path, revision): - """ - Updates the commit hash in README.rnp - :param string path: Path to README.rnp - :param string revision: revision to insert -diff --git a/comm/third_party/update_rnp.sh b/comm/third_party/update_rnp.sh ---- a/comm/third_party/update_rnp.sh -+++ b/comm/third_party/update_rnp.sh -@@ -42,26 +42,23 @@ TAGLIST=$(git -C "${RNPgit}" tag --list - - LATEST_VERSION=$($THIRDROC latest_version $TAGLIST) - REVISION=$(git -C "${RNPgit}" rev-parse --verify HEAD) - TIMESTAMP=$(git -C "${RNPgit}" show -s --format=%ct) - --BUGREPORT="https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird" -- - # Cleanup rnp checkout - rm -rf ${RNPgit}/{.git,.github,.cirrus.yml,.clang-format,.gitignore} - rm -rf ${RNPgit}/{_config.yml,docker.sh,ci,cmake,git-hooks,travis.sh,vcpkg.txt} - rm -rf ${RNPgit}/{Brewfile,CMakeLists.txt,CMakeSettings.json} - - # Do the switch - rm -rf rnp - mv "${RNPgit}" rnp --# Build version.h/config.h.in -+# Build version.h - $THIRDROC rnp_source_update rnp/ \ - "${LATEST_VERSION}" \ - "${REVISION}" \ -- "${TIMESTAMP}" \ -- "${BUGREPORT}" -+ "${TIMESTAMP}" - - # Restore moz.build - hg revert rnp/moz.build rnp/module.ver rnp/rnp.symbols rnp/src/lib/rnp/rnp_export.h \ - rnp/src/rnp/moz.build rnp/src/rnpkeys/moz.build - diff --git a/build-aarch64-skia.patch b/build-aarch64-skia.patch deleted file mode 100644 index a63e3e8..0000000 --- a/build-aarch64-skia.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -up firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia firefox-72.0/gfx/skia/skia/include/private/SkHalf.h ---- firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia 2020-01-02 22:33:02.000000000 +0100 -+++ firefox-72.0/gfx/skia/skia/include/private/SkHalf.h 2020-01-03 09:00:37.537296105 +0100 -@@ -40,7 +40,7 @@ static inline Sk4h SkFloatToHalf_finite_ - - static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) { - Sk4h hs = Sk4h::Load(&rgba); --#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) -+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) - float32x4_t fs; - asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...) - : [fs] "=w" (fs) // =w: write-only NEON register -@@ -62,7 +62,7 @@ static inline Sk4f SkHalfToFloat_finite_ - } - - static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f& fs) { --#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) -+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) - float32x4_t vec = fs.fVec; - asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec) - : [vec] "+w" (vec)); // +w: read-write NEON register -diff -up firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h ---- firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 -+++ firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2020-01-03 10:11:41.259219508 +0100 -@@ -1087,7 +1087,7 @@ SI F from_half(U16 h) { - } - - SI U16 to_half(F f) { --#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ -+#if 0 //defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ - && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. - return vcvt_f16_f32(f); - -diff -up firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h ---- firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 -+++ firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2020-01-03 10:11:53.513250979 +0100 -@@ -183,8 +183,6 @@ SI F F_from_Half(U16 half) { - SI U16 Half_from_F(F f) { - #if defined(USING_NEON_FP16) - return bit_pun(f); --#elif defined(USING_NEON_F16C) -- return (U16)vcvt_f16_f32(f); - #elif defined(USING_AVX512F) - return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION ); - #elif defined(USING_AVX_F16C) diff --git a/build-arm-libaom.patch b/build-arm-libaom.patch deleted file mode 100644 index 985f01d..0000000 --- a/build-arm-libaom.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-73.0/media/libaom/moz.build.old firefox-73.0/media/libaom/moz.build ---- firefox-73.0/media/libaom/moz.build.old 2020-02-07 23:13:28.000000000 +0200 -+++ firefox-73.0/media/libaom/moz.build 2020-02-17 10:30:08.509805092 +0200 -@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm': - - for f in SOURCES: - if f.endswith('neon.c'): -- SOURCES[f].flags += CONFIG['VPX_ASFLAGS'] -+ SOURCES[f].flags += CONFIG['NEON_FLAGS'] - - if CONFIG['OS_TARGET'] == 'Android': - # For cpu-features.h diff --git a/build-arm-libopus.patch b/build-arm-libopus.patch deleted file mode 100644 index 1b3f31b..0000000 --- a/build-arm-libopus.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old firefox-66.0/media/libopus/silk/arm/arm_silk_map.c ---- firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old 2019-03-12 21:07:35.356677522 +0100 -+++ firefox-66.0/media/libopus/silk/arm/arm_silk_map.c 2019-03-12 21:07:42.937693394 +0100 -@@ -28,7 +28,7 @@ POSSIBILITY OF SUCH DAMAGE. - # include "config.h" - #endif - --#include "main_FIX.h" -+#include "fixed/main_FIX.h" - #include "NSQ.h" - #include "SigProc_FIX.h" - diff --git a/build-ascii-decode-fail-rhel7.patch b/build-ascii-decode-fail-rhel7.patch deleted file mode 100644 index 1bc1630..0000000 --- a/build-ascii-decode-fail-rhel7.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -up firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py.build-ascii-decode-fail-rhel7 firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py ---- firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py.build-ascii-decode-fail-rhel7 2022-06-23 09:11:39.000000000 +0200 -+++ firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py 2022-08-16 13:24:31.697757209 +0200 -@@ -73,6 +73,8 @@ class Reader(object): - self.name = "" - self.check_printable(stream) - self.buffer = stream+'\0' -+ #self.encoding = 'utf-8' -+ #self.raw_decode = codecs.utf_8_decode - elif isinstance(stream, bytes): - self.name = "" - self.raw_buffer = stream -@@ -83,6 +85,11 @@ class Reader(object): - self.eof = False - self.raw_buffer = None - self.determine_encoding() -+ print("DEBUG_OUTPUT:") -+ print(self.name) -+ print(self.encoding) -+ print(self.stream) -+ #print(self.stream.read()) - - def peek(self, index=0): - try: -diff -up firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py.build-ascii-decode-fail-rhel7 firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py ---- firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py.build-ascii-decode-fail-rhel7 2022-08-16 14:16:33.432529817 +0200 -+++ firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py 2022-08-17 08:01:38.175878171 +0200 -@@ -37,7 +37,7 @@ def generate_feature_manifest(fd, input_ - write_fm_js_headers(fd) - nimbus_dir_path = pathlib.Path(input_file).parent - try: -- with open(input_file, "r") as yaml_input: -+ with open(input_file, "r", encoding="utf-8") as yaml_input: - data = yaml.safe_load(yaml_input) - with pathlib.Path(nimbus_dir_path, FEATURE_MANIFEST_SCHEMA).open() as f: - schema = json.load(f) -@@ -92,7 +92,7 @@ def generate_platform_feature_manifest(f - ) - - try: -- with open(input_file, "r") as yaml_input: -+ with open(input_file, "r", encoding="utf-8") as yaml_input: - data = yaml.safe_load(yaml_input) - fd.write(file_structure(data)) - except (IOError) as e: diff --git a/build-disable-elfhack.patch b/build-disable-elfhack.patch index 04d49f2..67bb731 100644 --- a/build-disable-elfhack.patch +++ b/build-disable-elfhack.patch @@ -1,12 +1,12 @@ -diff -up firefox-97.0/toolkit/moz.configure.disable-elfhack firefox-97.0/toolkit/moz.configure ---- firefox-97.0/toolkit/moz.configure.disable-elfhack 2022-02-08 09:58:47.518047952 +0100 -+++ firefox-97.0/toolkit/moz.configure 2022-02-08 10:17:49.552945956 +0100 -@@ -1273,7 +1273,7 @@ with only_when("--enable-compile-environ - help="{Enable|Disable} elf hacks", - ) +diff -up firefox-115.0.2/toolkit/moz.configure.disable-elfhack firefox-115.0.2/toolkit/moz.configure +--- firefox-115.0.2/toolkit/moz.configure.disable-elfhack 2023-07-18 12:21:22.507358334 +0200 ++++ firefox-115.0.2/toolkit/moz.configure 2023-07-18 12:52:55.972727498 +0200 +@@ -1520,7 +1520,7 @@ with only_when("--enable-compile-environ + "Cannot enable elfhack with lld." + " Use --enable-linker=bfd, --enable-linker=gold, or --disable-elf-hack" + ) +- return True ++ return False -- set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: True)) -+ set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: False)) + set_config("USE_ELF_HACK", use_elf_hack) - - @depends(build_environment) diff --git a/build-ppc64-abiv2.patch b/build-ppc64-abiv2.patch new file mode 100644 index 0000000..7a68390 --- /dev/null +++ b/build-ppc64-abiv2.patch @@ -0,0 +1,12 @@ +diff -up firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s.ppc-abiv2 firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s +--- firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s.ppc-abiv2 2023-07-25 09:01:42.602375809 +0200 ++++ firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s 2023-07-25 09:01:48.273373924 +0200 +@@ -3,7 +3,7 @@ + # See the full LICENSE under scripts/. + + .machine "any" +-.abiversion 2 ++.abiversion 1 + .text + + .globl sha512_block_p8 diff --git a/build-remove-dav1d-from-wayland-dep.patch b/build-remove-dav1d-from-wayland-dep.patch deleted file mode 100644 index d073acd..0000000 --- a/build-remove-dav1d-from-wayland-dep.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff -up firefox-102.0/media/ffvpx/config_common.h.dav1d-remove firefox-102.0/media/ffvpx/config_common.h ---- firefox-102.0/media/ffvpx/config_common.h.dav1d-remove 2022-08-08 12:48:33.218128539 +0200 -+++ firefox-102.0/media/ffvpx/config_common.h 2022-08-08 12:48:52.986003374 +0200 -@@ -24,15 +24,11 @@ - #undef CONFIG_VP8_VAAPI_HWACCEL - #undef CONFIG_VP9_VAAPI_HWACCEL - #undef CONFIG_AV1_VAAPI_HWACCEL --#undef CONFIG_LIBDAV1D --#undef CONFIG_AV1_DECODER - #define CONFIG_VAAPI 1 - #define CONFIG_VAAPI_1 1 - #define CONFIG_VP8_VAAPI_HWACCEL 1 - #define CONFIG_VP9_VAAPI_HWACCEL 1 - #define CONFIG_AV1_VAAPI_HWACCEL 1 --#define CONFIG_LIBDAV1D 1 --#define CONFIG_AV1_DECODER 1 - #endif - - #endif -diff -up firefox-102.0/media/ffvpx/libavcodec/moz.build.dav1d-remove firefox-102.0/media/ffvpx/libavcodec/moz.build ---- firefox-102.0/media/ffvpx/libavcodec/moz.build.dav1d-remove 2022-08-08 12:44:24.098710736 +0200 -+++ firefox-102.0/media/ffvpx/libavcodec/moz.build 2022-08-08 12:46:42.635828719 +0200 -@@ -104,17 +104,23 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: - ] - if CONFIG['MOZ_WAYLAND']: - LOCAL_INCLUDES += ['/media/mozva'] -+ if CONFIG['MOZ_DAV1D_ASM']: -+ SOURCES += [ -+ 'libdav1d.c', -+ ] - SOURCES += [ - 'atsc_a53.c', -- 'libdav1d.c', - 'vaapi_av1.c', - 'vaapi_decode.c', - 'vaapi_vp8.c', - 'vaapi_vp9.c', - ] -+ if CONFIG['MOZ_DAV1D_ASM']: -+ USE_LIBS += [ -+ 'dav1d', -+ 'media_libdav1d_asm', -+ ] - USE_LIBS += [ -- 'dav1d', -- 'media_libdav1d_asm', - 'mozva' - ] - diff --git a/build-rhel7-lower-node-min-version.patch b/build-rhel7-lower-node-min-version.patch index 3dce244..2bb39c8 100644 --- a/build-rhel7-lower-node-min-version.patch +++ b/build-rhel7-lower-node-min-version.patch @@ -1,11 +1,11 @@ ---- thunderbird-102.4.0/python/mozbuild/mozbuild/nodeutil.py.build-rhel7-lower-node-min-version 2022-10-14 21:42:10.000000000 +0200 -+++ thunderbird-102.4.0/python/mozbuild/mozbuild/nodeutil.py 2022-10-17 18:49:44.490667820 +0200 +--- firefox-102.4.0/python/mozbuild/mozbuild/nodeutil.py.lower-node-min-version 2022-10-10 17:55:56.000000000 +0200 ++++ firefox-102.4.0/python/mozbuild/mozbuild/nodeutil.py 2022-10-17 14:57:47.476182627 +0200 @@ -13,7 +13,7 @@ from mozboot.util import get_tools_dir from mozfile import which from six import PY3 --NODE_MIN_VERSION = StrictVersion("10.24.1") +-NODE_MIN_VERSION = StrictVersion("12.22.12") +NODE_MIN_VERSION = StrictVersion("10.24.0") - NPM_MIN_VERSION = StrictVersion("6.14.12") + NPM_MIN_VERSION = StrictVersion("6.14.16") diff --git a/build-tb-rnp-openssl.patch b/build-tb-rnp-openssl.patch new file mode 100644 index 0000000..d0d9346 --- /dev/null +++ b/build-tb-rnp-openssl.patch @@ -0,0 +1,12 @@ +diff -up thunderbird-115.1.0/comm/third_party/rnp/moz.build.rnp-openssl thunderbird-115.1.0/comm/third_party/rnp/moz.build +--- thunderbird-115.1.0/comm/third_party/rnp/moz.build.rnp-openssl 2023-08-07 16:38:39.272780256 +0200 ++++ thunderbird-115.1.0/comm/third_party/rnp/moz.build 2023-08-07 16:38:42.822780087 +0200 +@@ -93,7 +93,7 @@ elif CONFIG["MZLA_LIBRNP_BACKEND"] == "o + # Supported, but not with RHEL's OpenSSL, disabled for now; + "ENABLE_BRAINPOOL": False, + }) +- rnp_defines["PACKAGE_STRING"] = rnp_defines["PACKAGE_STRING"][:-1] + '-openssl"' ++ #rnp_defines["PACKAGE_STRING"] = rnp_defines["PACKAGE_STRING"][:-1] + '-openssl"' + if CONFIG["MZLA_LIBRNP_OPENSSL_VERSION"][0] == "3": + rnp_defines["CRYPTO_BACKEND_OPENSSL3"] = True + diff --git a/disable-openh264-download.patch b/disable-openh264-download.patch deleted file mode 100644 index 028b730..0000000 --- a/disable-openh264-download.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff -up firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old firefox-81.0/toolkit/modules/GMPInstallManager.jsm ---- firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old 2020-09-25 10:39:04.769458703 +0200 -+++ firefox-81.0/toolkit/modules/GMPInstallManager.jsm 2020-09-25 10:39:22.038504747 +0200 -@@ -54,10 +54,6 @@ function getScopedLogger(prefix) { - - const LOCAL_GMP_SOURCES = [ - { -- id: "gmp-gmpopenh264", -- src: "chrome://global/content/gmp-sources/openh264.json", -- }, -- { - id: "gmp-widevinecdm", - src: "chrome://global/content/gmp-sources/widevinecdm.json", - }, -diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn ---- a/toolkit/content/jar.mn -+++ b/toolkit/content/jar.mn -@@ -108,7 +108,6 @@ toolkit.jar: - #ifdef XP_MACOSX - content/global/macWindowMenu.js - #endif -- content/global/gmp-sources/openh264.json (gmp-sources/openh264.json) - content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json) - - # Third party files -diff --git a/toolkit/modules/GMPInstallManager.jsm b/toolkit/modules/GMPInstallManager.jsm ---- a/toolkit/modules/GMPInstallManager.jsm -+++ b/toolkit/modules/GMPInstallManager.jsm -@@ -238,6 +234,9 @@ GMPInstallManager.prototype = { - * downloaderr, verifyerr or previouserrorencountered - */ - installAddon(gmpAddon) { -+ if (gmpAddon.isOpenH264) { -+ return Promise.reject({ type: "disabled" }); -+ } - if (this._deferred) { - let log = getScopedLogger("GMPInstallManager.installAddon"); - log.error("previous error encountered"); - diff --git a/fedora-shebang-build.patch b/fedora-shebang-build.patch deleted file mode 100644 index 9ade86c..0000000 --- a/fedora-shebang-build.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -up firefox-73.0/build/unix/run-mozilla.sh.old firefox-73.0/build/unix/run-mozilla.sh ---- firefox-73.0/build/unix/run-mozilla.sh.old 2020-02-12 09:58:00.150895904 +0100 -+++ firefox-73.0/build/unix/run-mozilla.sh 2020-02-12 09:58:06.505860696 +0100 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/usr/bin/sh - # - # This Source Code Form is subject to the terms of the Mozilla Public - # License, v. 2.0. If a copy of the MPL was not distributed with this diff --git a/firefox-nss-version.patch b/firefox-nss-version.patch deleted file mode 100644 index 73eafc6..0000000 --- a/firefox-nss-version.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- thunderbird-102.6.0/build/moz.configure/nss.configure.firefox-nss-version 2022-12-09 19:00:45.849518718 +0100 -+++ thunderbird-102.6.0/build/moz.configure/nss.configure 2022-12-09 19:02:47.739198796 +0100 -@@ -9,7 +9,7 @@ system_lib_option("--with-system-nss", h - imply_option("--with-system-nspr", True, when="--with-system-nss") - - nss_pkg = pkg_check_modules( -- "NSS", "nss >= 3.79.2", when="--with-system-nss", config=False -+ "NSS", "nss >= 3.79", when="--with-system-nss", config=False - ) - - set_config("MOZ_SYSTEM_NSS", True, when="--with-system-nss") diff --git a/get_rust_bundled_provides.sh b/get_rust_bundled_provides.sh new file mode 100755 index 0000000..618680e --- /dev/null +++ b/get_rust_bundled_provides.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# Get the list of the compiled bundled rust crates. +# Usage: $0 build.log + +if [ -z $1 ]; then + echo Get the list of the compiled bundled rust crates. + echo Usage: $0 build.log + exit +fi +while read LINE; do + name=`echo $LINE | cut -d\ -f1` + version=`echo $LINE | cut -d\ -f2|sed -e 's/^v//g'` + echo "Provides: bundled(crate($name)) = $version" +done < <(cat $1 |grep "[0-9]\+[ ]*Compiling [a-z]"|sed -e 's/.*Compiling //'g| sort|uniq) diff --git a/mozilla-1516803.patch b/mozilla-1516803.patch deleted file mode 100644 index 5053e51..0000000 --- a/mozilla-1516803.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up firefox-84.0/security/sandbox/linux/moz.build.1516803 firefox-84.0/security/sandbox/linux/moz.build ---- firefox-84.0/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100 -+++ firefox-84.0/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100 -@@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc") - # gcc lto likes to put the top level asm in syscall.cc in a different partition - # from the function using it which breaks the build. Work around that by - # forcing there to be only one partition. --for f in CONFIG["OS_CXXFLAGS"]: -- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang": -- LDFLAGS += ["--param lto-partitions=1"] -+if CONFIG['CC_TYPE'] != 'clang': -+ LDFLAGS += ['--param', 'lto-partitions=1'] - - DEFINES["NS_NO_XPCOM"] = True - DisableStlWrapping() diff --git a/mozilla-1669639.patch b/mozilla-1669639.patch deleted file mode 100644 index cd04aab..0000000 --- a/mozilla-1669639.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- firefox-81.0.1/build/mach_initialize.py.old 2020-10-06 14:16:06.212974910 +0200 -+++ firefox-81.0.1/build/mach_initialize.py 2020-10-06 14:19:03.313179557 +0200 -@@ -507,7 +507,10 @@ class ImportHook(object): - # doesn't happen or because it doesn't matter). - if not os.path.exists(module.__file__[:-1]): - if os.path.exists(module.__file__): -- os.remove(module.__file__) -+ try: -+ os.remove(module.__file__) -+ except: -+ pass - del sys.modules[module.__name__] - module = self(name, globals, locals, fromlist, level) - diff --git a/mozilla-1775202.patch b/mozilla-1775202.patch deleted file mode 100644 index b1748de..0000000 --- a/mozilla-1775202.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/third_party/libwebrtc/moz.build b/third_party/libwebrtc/moz.build -index 8579f8bb3622..d9ca79d4fcb8 100644 ---- a/third_party/libwebrtc/moz.build -+++ b/third_party/libwebrtc/moz.build -@@ -520,7 +520,10 @@ 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", -+ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn" - ] - - if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux": - diff --git a/mozilla-bmo1005535.patch b/mozilla-bmo1005535.patch deleted file mode 100644 index d20d812..0000000 --- a/mozilla-bmo1005535.patch +++ /dev/null @@ -1,30 +0,0 @@ -# HG changeset patch -# User Steve Singer -# Date 1558451540 -7200 -# Tue May 21 17:12:20 2019 +0200 -# Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad -# Parent c0fdccc716e80a6d289c94f5d507ae141c62a3bf -Bug 1005535 - Get skia GPU building on big endian. - -diff --git a/gfx/skia/skia/src/gpu/GrColor.h b/gfx/skia/skia/src/gpu/GrColor.h ---- a/gfx/skia/skia/src/gpu/GrColor.h -+++ b/gfx/skia/skia/src/gpu/GrColor.h -@@ -59,17 +59,17 @@ static inline GrColor GrColorPackRGBA(un - #define GrColorUnpackG(color) (((color) >> GrColor_SHIFT_G) & 0xFF) - #define GrColorUnpackB(color) (((color) >> GrColor_SHIFT_B) & 0xFF) - #define GrColorUnpackA(color) (((color) >> GrColor_SHIFT_A) & 0xFF) - - /** - * Since premultiplied means that alpha >= color, we construct a color with - * each component==255 and alpha == 0 to be "illegal" - */ --#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A)) -+#define GrColor_ILLEGAL ((uint32_t)(~(0xFF << GrColor_SHIFT_A))) - - /** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */ - static inline float GrNormalizeByteToFloat(uint8_t value) { - static const float ONE_OVER_255 = 1.f / 255.f; - return value * ONE_OVER_255; - } - - /** Used to pick vertex attribute types. */ diff --git a/mozilla-1170092.patch b/mozilla-bmo1170092.patch similarity index 55% rename from mozilla-1170092.patch rename to mozilla-bmo1170092.patch index d4cd582..36d2b00 100644 --- a/mozilla-1170092.patch +++ b/mozilla-bmo1170092.patch @@ -1,7 +1,7 @@ -diff -up firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp ---- firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2021-03-18 14:48:36.000000000 +0100 -+++ firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2021-03-22 19:20:02.429310184 +0100 -@@ -249,8 +249,20 @@ nsresult nsReadConfig::openAndEvaluateJS +diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp +--- firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2023-07-10 21:08:53.000000000 +0200 ++++ firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp 2023-07-17 10:33:23.443355156 +0200 +@@ -263,8 +263,20 @@ nsresult nsReadConfig::openAndEvaluateJS if (NS_FAILED(rv)) return rv; rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile); @@ -23,10 +23,10 @@ diff -up firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 fi } else { nsAutoCString location("resource://gre/defaults/autoconfig/"); location += aFileName; -diff -up firefox-87.0/modules/libpref/Preferences.cpp.1170092 firefox-87.0/modules/libpref/Preferences.cpp ---- firefox-87.0/modules/libpref/Preferences.cpp.1170092 2021-03-18 14:48:54.000000000 +0100 -+++ firefox-87.0/modules/libpref/Preferences.cpp 2021-03-22 19:20:02.429310184 +0100 -@@ -4499,6 +4499,9 @@ nsresult Preferences::InitInitialObjects +diff -up firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2/modules/libpref/Preferences.cpp +--- firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 2023-07-10 21:09:00.000000000 +0200 ++++ firefox-115.0.2/modules/libpref/Preferences.cpp 2023-07-17 10:33:23.444355156 +0200 +@@ -4825,6 +4825,9 @@ nsresult Preferences::InitInitialObjects // // Thus, in the omni.jar case, we always load app-specific default // preferences from omni.jar, whether or not `$app == $gre`. @@ -36,10 +36,10 @@ diff -up firefox-87.0/modules/libpref/Preferences.cpp.1170092 firefox-87.0/modul nsresult rv = NS_ERROR_FAILURE; UniquePtr find; -diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/toolkit/xre/nsXREDirProvider.cpp ---- firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2021-03-18 14:52:00.000000000 +0100 -+++ firefox-87.0/toolkit/xre/nsXREDirProvider.cpp 2021-03-22 19:37:56.574480347 +0100 -@@ -65,6 +65,7 @@ +diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp +--- firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 2023-07-10 22:57:20.000000000 +0200 ++++ firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp 2023-07-17 10:56:25.309692121 +0200 +@@ -72,6 +72,7 @@ #endif #ifdef XP_UNIX # include @@ -47,13 +47,11 @@ diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/tool #endif #ifdef XP_IOS # include "UIKitDirProvider.h" -@@ -552,6 +553,21 @@ nsXREDirProvider::GetFile(const char* aP - } - } - } -+ -+#if defined(XP_UNIX) -+ if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) { +@@ -478,6 +479,17 @@ nsXREDirProvider::GetFile(const char* aP + rv = file->AppendNative(nsLiteralCString(PREF_OVERRIDE_DIRNAME)); + NS_ENSURE_SUCCESS(rv, rv); + rv = EnsureDirectoryExists(file); ++ } else if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) { + nsCString sysConfigDir = nsLiteralCString("/etc/"); + nsCOMPtr appInfo = do_GetService("@mozilla.org/xre/app-info;1"); + if (!appInfo) @@ -62,14 +60,12 @@ diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/tool + appInfo->GetName(appName); + ToLowerCase(appName); + sysConfigDir.Append(appName); -+ return NS_NewNativeLocalFile(sysConfigDir, false, aFile); -+ } -+#endif -+ - if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE; - - if (ensureFilePermissions) { -@@ -874,6 +890,16 @@ nsresult nsXREDirProvider::GetFilesInter ++ NS_NewNativeLocalFile(sysConfigDir, false, getter_AddRefs(file)); ++ rv = EnsureDirectoryExists(file); + } else { + // We don't know anything about this property. Fail without warning, because + // otherwise we'll get too much warning spam due to +@@ -694,6 +706,16 @@ nsXREDirProvider::GetFiles(const char* a } #endif @@ -86,10 +82,10 @@ diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/tool rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile)); } else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) { // NS_APP_CHROME_DIR_LIST is only used to get default (native) icons -diff -up firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h ---- firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2021-03-18 14:51:58.000000000 +0100 -+++ firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h 2021-03-22 19:20:02.430310213 +0100 -@@ -59,6 +59,7 @@ +diff -up firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h +--- firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2023-07-10 21:09:13.000000000 +0200 ++++ firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h 2023-07-17 10:33:23.444355156 +0200 +@@ -58,6 +58,7 @@ #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" #define NS_APP_PREFS_OVERRIDE_DIR \ "PrefDOverride" // Directory for per-profile defaults diff --git a/mozilla-bmo1504834-part1.patch b/mozilla-bmo1504834-part1.patch index 1afe3aa..cc66dd4 100644 --- a/mozilla-bmo1504834-part1.patch +++ b/mozilla-bmo1504834-part1.patch @@ -1,43 +1,34 @@ # HG changeset patch -# Parent b5471d23321d16a0bacc25b7afd27d2e16adba1a +# Parent 9fcbd287056a40084b1e679f787bf683b291f323 Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp -@@ -130,18 +130,17 @@ static IntRect CalculateSurfaceBounds(co - Rect sampledBounds = inverse.TransformBounds(*aBounds); - if (!sampledBounds.ToIntRect(&bounds)) { - return surfaceBounds; - } - - return surfaceBounds.Intersect(bounds); +@@ -156,7 +156,8 @@ static IntRect CalculateSurfaceBounds(co } --static const int kARGBAlphaOffset = + static const int kARGBAlphaOffset = - SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; -+static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; ++ 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == ++ // SurfaceFormat::B8G8R8A8 ? 3 : 0; static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, const int32_t aStride, SurfaceFormat aFormat) { - if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) { - return true; - } - // We should've initialized the data to be opaque already - // On debug builds, verify that this is actually true. diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h --- a/gfx/2d/Types.h +++ b/gfx/2d/Types.h -@@ -84,25 +84,18 @@ enum class SurfaceFormat : int8_t { - Depth, - +@@ -89,18 +89,11 @@ enum class SurfaceFormat : int8_t { // This represents the unknown format. - UNKNOWN, + UNKNOWN, // TODO: Replace uses with Maybe. - // The following values are endian-independent synonyms. The _UINT32 suffix - // indicates that the name reflects the layout when viewed as a uint32_t - // value. +-// The following values are endian-independent synonyms. The _UINT32 suffix +-// indicates that the name reflects the layout when viewed as a uint32_t +-// value. -#if MOZ_LITTLE_ENDIAN() ++ // The following values are endian-independent synonyms. The _UINT32 suffix ++ // indicates that the name reflects the layout when viewed as a uint32_t ++ // value. A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB -#elif MOZ_BIG_ENDIAN() @@ -49,20 +40,10 @@ diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h // The following values are OS and endian-independent synonyms. // - // TODO(aosmond): When everything blocking bug 1581828 has been resolved, we - // can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms. - OS_RGBA = A8R8G8B8_UINT32, - OS_RGBX = X8R8G8B8_UINT32 - }; -diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc ---- a/gfx/skia/skia/third_party/skcms/skcms.cc -+++ b/gfx/skia/skia/third_party/skcms/skcms.cc -@@ -25,16 +25,18 @@ - // it'd be a lot slower. But we want all those headers included so we - // can use their features after runtime checks later. - #include - #include - #include +diff --git a/gfx/skia/skia/modules/skcms/skcms.cc b/gfx/skia/skia/modules/skcms/skcms.cc +--- a/gfx/skia/skia/modules/skcms/skcms.cc ++++ b/gfx/skia/skia/modules/skcms/skcms.cc +@@ -30,6 +30,8 @@ #include #include #endif @@ -70,30 +51,21 @@ diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_part + #define SKCMS_PORTABLE #endif - // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. - // We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. - // - // Please do not use sizeof() directly, and size_t only when required. - // (We have no way of enforcing these requests...) - #define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) -@@ -275,30 +277,38 @@ enum { - skcms_Signature_sf32 = 0x73663332, - // XYZ is also a PCS signature, so it's defined in skcms.h - // skcms_Signature_XYZ = 0x58595A20, - }; - + static bool runtime_cpu_detection = true; +@@ -324,20 +326,28 @@ enum { static uint16_t read_big_u16(const uint8_t* ptr) { uint16_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +- return _byteswap_ushort(be); +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + return be; -+#else + #else +- return __builtin_bswap16(be); + #if defined(_MSC_VER) - return _byteswap_ushort(be); --#else ++ return _byteswap_ushort(be); + #else - return __builtin_bswap16(be); ++ return __builtin_bswap16(be); + #endif #endif } @@ -102,20 +74,16 @@ diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_part uint32_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +- return _byteswap_ulong(be); +#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__ + return be; -+#else + #else +- return __builtin_bswap32(be); + #if defined(_MSC_VER) - return _byteswap_ulong(be); --#else ++ return _byteswap_ulong(be); + #else - return __builtin_bswap32(be); ++ return __builtin_bswap32(be); + #endif #endif } - static int32_t read_big_i32(const uint8_t* ptr) { - return (int32_t)read_big_u32(ptr); - } - - static float read_big_fixed(const uint8_t* ptr) { diff --git a/mozilla-bmo1504834-part3.patch b/mozilla-bmo1504834-part3.patch index d07702e..9c2ece0 100644 --- a/mozilla-bmo1504834-part3.patch +++ b/mozilla-bmo1504834-part3.patch @@ -1,64 +1,17 @@ # HG changeset patch -# Parent d1d66f7e4d0e7fd45e91e4fcee07555e72046d48 +# Parent 09cd4ac2cc607e85aa572425b824fbab386af607 For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white). -diff --git a/gfx/skia/skia/include/private/SkNx.h b/gfx/skia/skia/include/private/SkNx.h ---- a/gfx/skia/skia/include/private/SkNx.h -+++ b/gfx/skia/skia/include/private/SkNx.h -@@ -233,17 +233,28 @@ struct SkNx<1,T> { - AI SkNx operator<<(int bits) const { return fVal << bits; } - AI SkNx operator>>(int bits) const { return fVal >> bits; } - - AI SkNx operator+(const SkNx& y) const { return fVal + y.fVal; } - AI SkNx operator-(const SkNx& y) const { return fVal - y.fVal; } - AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; } - AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; } - -+ // On Big endian the commented out variant doesn't work, -+ // and honestly, I have no idea why it exists in the first place. -+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits() -+ // which gets a 64-bit integer, and FromBits returns 32-bit, -+ // cutting off the wrong half again. -+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles). -+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system) -+#ifdef SK_CPU_BENDIAN -+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; } -+#else - AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); } -+#endif - AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); } - AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); } - - AI SkNx operator==(const SkNx& y) const { return FromBits(fVal == y.fVal ? ~0 : 0); } - AI SkNx operator!=(const SkNx& y) const { return FromBits(fVal != y.fVal ? ~0 : 0); } - AI SkNx operator<=(const SkNx& y) const { return FromBits(fVal <= y.fVal ? ~0 : 0); } - AI SkNx operator>=(const SkNx& y) const { return FromBits(fVal >= y.fVal ? ~0 : 0); } - AI SkNx operator< (const SkNx& y) const { return FromBits(fVal < y.fVal ? ~0 : 0); } diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h --- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h +++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h -@@ -198,17 +198,23 @@ namespace SK_OPTS_NS { - const SkAlpha* mask, size_t maskRB, - int w, int h) { - auto fn = [](const Sk4px& d, const Sk4px& aa) { - // = (s + d(1-sa))aa + d(1-aa) - // = s*aa + d(1-sa*aa) +@@ -210,6 +210,8 @@ namespace SK_OPTS_NS { // ~~~> // a = 1*aa + d(1-1*aa) = aa + d(1-aa) // c = 0*aa + d(1-1*aa) = d(1-aa) -+ -+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0 -+#ifdef SK_CPU_BENDIAN -+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0)) -+#else - return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255)) -+#endif ++ // TODO: Check this for endian-issues! ++ // Do we need to switch 255 to the front for all of those tuples? + return (aa & Sk4px(skvx::byte16{0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255})) + d.approxMulDiv255(aa.inv()); }; - while (h --> 0) { - Sk4px::MapDstAlpha(w, dst, mask, fn); - dst += dstRB / sizeof(*dst); - mask += maskRB / sizeof(*mask); - } - } diff --git a/mozilla-1670333.patch b/mozilla-bmo1670333.patch similarity index 52% rename from mozilla-1670333.patch rename to mozilla-bmo1670333.patch index 1c5c476..7126d43 100644 --- a/mozilla-1670333.patch +++ b/mozilla-bmo1670333.patch @@ -1,7 +1,7 @@ -diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/media/mp4/MP4Demuxer.cpp ---- firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2022-03-31 01:24:44.000000000 +0200 -+++ firefox-99.0/dom/media/mp4/MP4Demuxer.cpp 2022-04-04 09:58:35.606351546 +0200 -@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re +diff -up firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-115.0/dom/media/mp4/MP4Demuxer.cpp +--- firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2023-06-06 23:14:43.000000000 +0200 ++++ firefox-115.0/dom/media/mp4/MP4Demuxer.cpp 2023-06-08 08:15:48.214109403 +0200 +@@ -32,6 +32,8 @@ mozilla::LogModule* GetDemuxerLog() { re DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \ __func__, ##__VA_ARGS__) @@ -9,8 +9,8 @@ diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/medi + namespace mozilla { - DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer); -@@ -394,6 +396,12 @@ already_AddRefed MP4TrackD + using TimeUnit = media::TimeUnit; +@@ -404,6 +406,12 @@ already_AddRefed MP4TrackD [[fallthrough]]; case H264::FrameType::OTHER: { bool keyframe = type == H264::FrameType::I_FRAME; @@ -23,19 +23,19 @@ diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/medi if (sample->mKeyframe != keyframe) { NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe " "@ pts:%" PRId64 " dur:%" PRId64 -diff -up firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-99.0/dom/media/platforms/PDMFactory.cpp ---- firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 2022-03-31 01:24:44.000000000 +0200 -+++ firefox-99.0/dom/media/platforms/PDMFactory.cpp 2022-04-04 10:09:57.383419125 +0200 -@@ -58,6 +58,8 @@ +diff -up firefox-115.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-115.0/dom/media/platforms/PDMFactory.cpp +--- firefox-115.0/dom/media/platforms/PDMFactory.cpp.1670333 2023-06-06 23:14:44.000000000 +0200 ++++ firefox-115.0/dom/media/platforms/PDMFactory.cpp 2023-06-08 08:09:33.145289602 +0200 +@@ -67,6 +67,8 @@ #include +bool gUseKeyframeFromContainer = false; + - namespace mozilla { - - #define PDM_INIT_LOG(msg, ...) \ -@@ -495,7 +497,7 @@ void PDMFactory::CreateRddPDMs() { + using DecodeSupport = mozilla::media::DecodeSupport; + using DecodeSupportSet = mozilla::media::DecodeSupportSet; + using MediaCodec = mozilla::media::MediaCodec; +@@ -562,7 +564,7 @@ void PDMFactory::CreateRddPDMs() { #ifdef MOZ_FFMPEG if (StaticPrefs::media_ffmpeg_enabled() && StaticPrefs::media_rdd_ffmpeg_enabled() && @@ -44,21 +44,22 @@ diff -up firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-99.0/do mFailureFlags += GetFailureFlagBasedOnFFmpegStatus( FFmpegRuntimeLinker::LinkStatusCode()); } -@@ -602,8 +604,9 @@ void PDMFactory::CreateDefaultPDMs() { +@@ -738,9 +740,10 @@ void PDMFactory::CreateDefaultPDMs() { CreateAndStartupPDM(); - if (StaticPrefs::media_gmp_decoder_enabled() && + if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed && - !CreateAndStartupPDM()) { + !StartupPDM(GMPDecoderModule::Create(), + StaticPrefs::media_gmp_decoder_preferred())) { + gUseKeyframeFromContainer = true; mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup; } } -diff -up firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 firefox-99.0/dom/media/platforms/PDMFactory.h ---- firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 2022-03-31 01:24:44.000000000 +0200 -+++ firefox-99.0/dom/media/platforms/PDMFactory.h 2022-04-04 09:58:35.606351546 +0200 -@@ -121,6 +121,7 @@ class PDMFactory final { +diff -up firefox-115.0/dom/media/platforms/PDMFactory.h.1670333 firefox-115.0/dom/media/platforms/PDMFactory.h +--- firefox-115.0/dom/media/platforms/PDMFactory.h.1670333 2023-06-06 23:14:42.000000000 +0200 ++++ firefox-115.0/dom/media/platforms/PDMFactory.h 2023-06-08 08:09:33.145289602 +0200 +@@ -103,6 +103,7 @@ class PDMFactory final { RefPtr mNullPDM; DecoderDoctorDiagnostics::FlagsSet mFailureFlags; diff --git a/svg-rendering.patch b/mozilla-bmo1716707-svg.patch similarity index 100% rename from svg-rendering.patch rename to mozilla-bmo1716707-svg.patch diff --git a/one_swizzle_to_rule_them_all.patch b/mozilla-bmo1716707-swizzle.patch similarity index 100% rename from one_swizzle_to_rule_them_all.patch rename to mozilla-bmo1716707-swizzle.patch diff --git a/mozilla-bmo1789216-disable-av1.patch b/mozilla-bmo1789216-disable-av1.patch new file mode 100644 index 0000000..ce91a12 --- /dev/null +++ b/mozilla-bmo1789216-disable-av1.patch @@ -0,0 +1,89 @@ +diff --git a/media/ffvpx/libavcodec/allcodecs.c b/media/ffvpx/libavcodec/allcodecs.c +--- a/media/ffvpx/libavcodec/allcodecs.c ++++ b/media/ffvpx/libavcodec/allcodecs.c +@@ -755,12 +755,15 @@ + extern FFCodec ff_libaom_av1_encoder; + extern const FFCodec ff_libaribb24_decoder; + extern const FFCodec ff_libcelt_decoder; + extern const FFCodec ff_libcodec2_encoder; + extern const FFCodec ff_libcodec2_decoder; ++#if CONFIG_MOZ_AV1 + extern const FFCodec ff_libdav1d_decoder; + extern const FFCodec ff_libdavs2_decoder; ++extern const FFCodec ff_libuavs3d_decoder; ++#endif + extern const FFCodec ff_libfdk_aac_encoder; + extern const FFCodec ff_libfdk_aac_decoder; + extern const FFCodec ff_libgsm_encoder; + extern const FFCodec ff_libgsm_decoder; + extern const FFCodec ff_libgsm_ms_encoder; +@@ -783,11 +786,10 @@ + extern const FFCodec ff_libspeex_encoder; + extern const FFCodec ff_libspeex_decoder; + extern const FFCodec ff_libsvtav1_encoder; + extern const FFCodec ff_libtheora_encoder; + extern const FFCodec ff_libtwolame_encoder; +-extern const FFCodec ff_libuavs3d_decoder; + extern const FFCodec ff_libvo_amrwbenc_encoder; + extern const FFCodec ff_libvorbis_encoder; + extern const FFCodec ff_libvorbis_decoder; + extern const FFCodec ff_libvpx_vp8_encoder; + extern const FFCodec ff_libvpx_vp8_decoder; +diff --git a/media/ffvpx/libavcodec/codec_list.c b/media/ffvpx/libavcodec/codec_list.c +--- a/media/ffvpx/libavcodec/codec_list.c ++++ b/media/ffvpx/libavcodec/codec_list.c +@@ -9,12 +9,14 @@ + &ff_flac_decoder, + #endif + #if CONFIG_MP3_DECODER + &ff_mp3_decoder, + #endif ++#if CONFIG_MOZ_AV1 + #if CONFIG_LIBDAV1D + &ff_libdav1d_decoder, + #endif + #if CONFIG_AV1_DECODER + &ff_av1_decoder, + #endif ++#endif + NULL }; +diff --git a/media/ffvpx/libavcodec/moz.build b/media/ffvpx/libavcodec/moz.build +--- a/media/ffvpx/libavcodec/moz.build ++++ b/media/ffvpx/libavcodec/moz.build +@@ -84,11 +84,10 @@ + 'cbs.c', + 'cbs_av1.c', + 'golomb.c', + 'h264pred.c', + 'imgconvert.c', +- 'libdav1d.c', + 'mathtables.c', + 'qsv_api.c', + 'raw.c', + 'videodsp.c', + 'vp8.c', +@@ -107,14 +106,19 @@ + 'vp9mvs.c', + 'vp9prob.c', + 'vp9recon.c', + 'vpx_rac.c', + ] +- USE_LIBS += [ +- 'dav1d', +- 'media_libdav1d_asm', +- ] ++ if CONFIG['MOZ_AV1']: ++ USE_LIBS += [ ++ 'dav1d', ++ 'media_libdav1d_asm', ++ ] ++ SOURCES += [ ++ 'libdav1d.c', ++ ] ++ + if CONFIG['MOZ_WAYLAND']: + LOCAL_INCLUDES += ['/media/mozva'] + SOURCES += [ + 'vaapi_av1.c', + 'vaapi_decode.c', + diff --git a/mozilla-bmo849632.patch b/mozilla-bmo849632.patch index 9de64b9..913d6bc 100644 --- a/mozilla-bmo849632.patch +++ b/mozilla-bmo849632.patch @@ -6,15 +6,11 @@ Solution: Problem is with skia once again. Output of webgl seems endian-correct, So we swizzle the output of webgl after reading it from readpixels() Note: This does not fix all webGL sites, but is a step in the right direction -diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h ---- a/gfx/gl/GLContext.h -+++ b/gfx/gl/GLContext.h -@@ -1548,16 +1548,23 @@ class GLContext : public GenericAtomicRe - AFTER_GL_CALL; - } - - void raw_fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLvoid* pixels) { +Index: firefox-115.0/gfx/gl/GLContext.h +=================================================================== +--- firefox-115.0.orig/gfx/gl/GLContext.h ++++ firefox-115.0/gfx/gl/GLContext.h +@@ -1560,6 +1560,13 @@ class GLContext : public GenericAtomicRe BEFORE_GL_CALL; mSymbols.fReadPixels(x, y, width, height, format, type, pixels); OnSyncCall(); @@ -28,8 +24,3 @@ diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h AFTER_GL_CALL; mHeavyGLCallsSinceLastFlush = true; } - - void fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLvoid* pixels); - - public: diff --git a/mozilla-build-arm.patch b/mozilla-build-arm.patch deleted file mode 100644 index e390a28..0000000 --- a/mozilla-build-arm.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h ---- firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm 2017-03-03 13:53:52.480754536 +0100 -+++ firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h 2017-03-03 13:56:01.476018102 +0100 -@@ -203,6 +203,10 @@ - #define SK_ARM_HAS_CRC32 - #endif - -+#if defined(__aarch64__) -+ #undef SK_ARM_HAS_NEON -+#endif -+ - ////////////////////////////////////////////////////////////////////// - - #if !defined(SKIA_IMPLEMENTATION) diff --git a/mozilla-s390-context.patch b/mozilla-s390-context.patch deleted file mode 100644 index 34b2357..0000000 --- a/mozilla-s390-context.patch +++ /dev/null @@ -1,53 +0,0 @@ -# HG changeset patch -# User msirringhaus@suse.de -# Date 1558452408 -7200 -# Tue May 21 17:26:48 2019 +0200 -# Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4 -# Parent 136e1f2c44a3099b3e49a576fa62c8ad77aa431e -[mq]: mozilla-s390-context.patch - -diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp ---- a/js/src/wasm/WasmSignalHandlers.cpp -+++ b/js/src/wasm/WasmSignalHandlers.cpp -@@ -157,16 +157,20 @@ using mozilla::DebugOnly; - # define R32_sig(p) ((p)->uc_mcontext.gp_regs[32]) - # endif - # if defined(__linux__) && defined(__loongarch__) - # define EPC_sig(p) ((p)->uc_mcontext.pc) - # define RRA_sig(p) ((p)->uc_mcontext.gregs[1]) - # define RSP_sig(p) ((p)->uc_mcontext.gregs[3]) - # define RFP_sig(p) ((p)->uc_mcontext.gregs[22]) - # endif -+# if defined(__linux__) && defined(__s390x__) -+# define GR_sig(p,x) ((p)->uc_mcontext.gregs[x]) -+# define PSWa_sig(p) ((p)->uc_mcontext.psw.addr) -+# endif - # elif defined(__NetBSD__) - # define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP]) - # define EBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EBP]) - # define ESP_sig(p) ((p)->uc_mcontext.__gregs[_REG_ESP]) - # define RIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RIP]) - # define RSP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSP]) - # define RBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBP]) - # define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11]) -@@ -399,16 +403,20 @@ struct macos_aarch64_context { - # define PC_sig(p) R32_sig(p) - # define SP_sig(p) R01_sig(p) - # define FP_sig(p) R01_sig(p) - # elif defined(__loongarch__) - # define PC_sig(p) EPC_sig(p) - # define FP_sig(p) RFP_sig(p) - # define SP_sig(p) RSP_sig(p) - # define LR_sig(p) RRA_sig(p) -+# elif defined(__s390x__) -+# define PC_sig(p) PSWa_sig(p) -+# define SP_sig(p) GR_sig(p, 15) -+# define FP_sig(p) GR_sig(p, 11) - # endif - - static void SetContextPC(CONTEXT* context, uint8_t* pc) { - # ifdef PC_sig - *reinterpret_cast(&PC_sig(context)) = pc; - # else - MOZ_CRASH(); - # endif diff --git a/mozilla-s390x-skia-gradient.patch b/mozilla-s390x-skia-gradient.patch deleted file mode 100644 index a5e5d95..0000000 --- a/mozilla-s390x-skia-gradient.patch +++ /dev/null @@ -1,51 +0,0 @@ -# HG changeset patch -# Parent acf59ea86dd1d878b43920832093f082dcfc61c0 - -diff -r acf59ea86dd1 gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp ---- a/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Mon Mar 09 08:26:10 2020 +0100 -+++ b/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Fri Mar 27 13:30:28 2020 +0100 -@@ -7,7 +7,7 @@ - - #include "include/core/SkPaint.h" - #include "src/shaders/gradients/Sk4fLinearGradient.h" -- -+#include "src/core/SkEndian.h" - #include - #include - -@@ -28,6 +28,9 @@ - - while (n >= 4) { - DstTraits::store4x(c0, c1, c2, c3, dst, bias0, bias1); -+#ifdef SK_CPU_BENDIAN -+ SkEndianSwap32s(dst, 4); -+#endif - dst += 4; - - c0 = c0 + dc4; -@@ -37,12 +40,23 @@ - n -= 4; - } - if (n & 2) { -- DstTraits::store(c0, dst++, bias0); -- DstTraits::store(c1, dst++, bias1); -+ DstTraits::store(c0, dst, bias0); -+#ifdef SK_CPU_BENDIAN -+ *dst = SkEndianSwap32(*dst); -+#endif -+ ++dst; -+ DstTraits::store(c1, dst, bias1); -+#ifdef SK_CPU_BENDIAN -+ *dst = SkEndianSwap32(*dst); -+#endif -+ ++dst; - c0 = c0 + dc2; - } - if (n & 1) { - DstTraits::store(c0, dst, bias0); -+#ifdef SK_CPU_BENDIAN -+ *dst = SkEndianSwap32(*dst); -+#endif - } - } - diff --git a/pgo.patch b/pgo.patch deleted file mode 100644 index eec103c..0000000 --- a/pgo.patch +++ /dev/null @@ -1,115 +0,0 @@ -diff -up firefox-99.0/build/moz.configure/lto-pgo.configure.pgo firefox-99.0/build/moz.configure/lto-pgo.configure ---- firefox-99.0/build/moz.configure/lto-pgo.configure.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/moz.configure/lto-pgo.configure 2022-04-04 10:15:45.387694143 +0200 -@@ -247,8 +247,8 @@ def lto( - cflags.append("-flto") - ldflags.append("-flto") - else: -- cflags.append("-flto=thin") -- ldflags.append("-flto=thin") -+ cflags.append("-flto") -+ ldflags.append("-flto") - - if target.os == "Android" and value == "cross": - # Work around https://github.com/rust-lang/rust/issues/90088 -@@ -264,7 +264,7 @@ def lto( - if value == "full": - cflags.append("-flto") - else: -- cflags.append("-flto=thin") -+ cflags.append("-flto") - # With clang-cl, -flto can only be used with -c or -fuse-ld=lld. - # AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld. - cflags.append("-fuse-ld=lld") -diff -up firefox-99.0/build/pgo/profileserver.py.pgo firefox-99.0/build/pgo/profileserver.py ---- firefox-99.0/build/pgo/profileserver.py.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/pgo/profileserver.py 2022-04-04 10:15:45.387694143 +0200 -@@ -11,7 +11,7 @@ import glob - import subprocess - - import mozcrash --from mozbuild.base import MozbuildObject, BinaryNotFoundException -+from mozbuild.base import MozbuildObject, BinaryNotFoundException, BuildEnvironmentNotFoundException - from mozfile import TemporaryDirectory - from mozhttpd import MozHttpd - from mozprofile import FirefoxProfile, Preferences -@@ -87,9 +87,22 @@ if __name__ == "__main__": - locations = ServerLocations() - locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") - -- old_profraw_files = glob.glob("*.profraw") -- for f in old_profraw_files: -- os.remove(f) -+ using_gcc = False -+ try: -+ if build.config_environment.substs.get('CC_TYPE') == 'gcc': -+ using_gcc = True -+ except BuildEnvironmentNotFoundException: -+ pass -+ -+ if using_gcc: -+ for dirpath, _, filenames in os.walk('.'): -+ for f in filenames: -+ if f.endswith('.gcda'): -+ os.remove(os.path.join(dirpath, f)) -+ else: -+ old_profraw_files = glob.glob('*.profraw') -+ for f in old_profraw_files: -+ os.remove(f) - - with TemporaryDirectory() as profilePath: - # TODO: refactor this into mozprofile -@@ -212,6 +225,10 @@ if __name__ == "__main__": - print("Firefox exited successfully, but produced a crashreport") - sys.exit(1) - -+ print('Copying profile data....') -+ os.system('pwd'); -+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;'); -+ - llvm_profdata = env.get("LLVM_PROFDATA") - if llvm_profdata: - profraw_files = glob.glob("*.profraw") -diff -up firefox-99.0/build/unix/mozconfig.unix.pgo firefox-99.0/build/unix/mozconfig.unix ---- firefox-99.0/build/unix/mozconfig.unix.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/unix/mozconfig.unix 2022-04-04 10:15:45.387694143 +0200 -@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then - CC="$MOZ_FETCHES_DIR/gcc/bin/gcc" - CXX="$MOZ_FETCHES_DIR/gcc/bin/g++" - -+ if [ -n "$MOZ_PGO" ]; then -+ if [ -z "$USE_ARTIFACT" ]; then -+ ac_add_options --enable-lto -+ fi -+ export AR="$topsrcdir/gcc/bin/gcc-ar" -+ export NM="$topsrcdir/gcc/bin/gcc-nm" -+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib" -+ fi -+ - # We want to make sure we use binutils and other binaries in the tooltool - # package. - mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH" -diff -up firefox-99.0/extensions/spellcheck/src/moz.build.pgo firefox-99.0/extensions/spellcheck/src/moz.build ---- firefox-99.0/extensions/spellcheck/src/moz.build.pgo 2022-03-31 01:24:50.000000000 +0200 -+++ firefox-99.0/extensions/spellcheck/src/moz.build 2022-04-04 10:15:45.387694143 +0200 -@@ -28,3 +28,5 @@ EXPORTS.mozilla += [ - "mozInlineSpellChecker.h", - "mozSpellChecker.h", - ] -+ -+CXXFLAGS += ['-fno-devirtualize'] -diff -up firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-99.0/toolkit/components/terminator/nsTerminator.cpp ---- firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-04-04 10:15:45.387694143 +0200 -+++ firefox-99.0/toolkit/components/terminator/nsTerminator.cpp 2022-04-04 10:19:07.022239556 +0200 -@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() { - } - #endif - -+ // Disable watchdog for PGO train builds - writting profile information at -+ // exit may take time and it is better to make build hang rather than -+ // silently produce poorly performing binary. -+ crashAfterMS = INT32_MAX; -+ - UniquePtr options(new Options()); - // crashAfterTicks is guaranteed to be > 0 as - // crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS diff --git a/rhbz-1219542-s390-build.patch b/rhbz-1219542-s390-build.patch deleted file mode 100644 index f94e43a..0000000 --- a/rhbz-1219542-s390-build.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -up firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 firefox-55.0/js/src/old-configure.in ---- firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 2017-07-31 18:20:48.000000000 +0200 -+++ firefox-55.0/js/src/old-configure.in 2017-08-02 14:31:32.190243669 +0200 -@@ -541,7 +541,7 @@ case "$host" in - - *-linux*|*-kfreebsd*-gnu|*-gnu*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" -- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" -+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O1}" - ;; - - *) -@@ -617,8 +617,8 @@ case "$target" in - - *-*linux*) - if test "$GNU_CC" -o "$GNU_CXX"; then -- MOZ_PGO_OPTIMIZE_FLAGS="-O3" -- MOZ_OPTIMIZE_FLAGS="-O3" -+ MOZ_PGO_OPTIMIZE_FLAGS="-O1" -+ MOZ_OPTIMIZE_FLAGS="-O1" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi diff --git a/sources b/sources index 217dbca..cde6f30 100644 --- a/sources +++ b/sources @@ -1,5 +1,6 @@ -SHA512 (nspr-4.34.0-3.el8_1.src.rpm) = fe4715694c297cd8cefa577946358a90103bde73e78a3fdf13d202a3791736e8a48fbece09ee3d15f6d81ae051e26d96400b03bb6bf8630715746c5e1a643543 -SHA512 (cbindgen-vendor.tar.xz) = 590e27b6c093a5c1bd839ca39c68537097d0849087a4a385ee6d7b180e9ceadbbb8974fa997f5f75af03e2c243a2f232d0d4c4c46e253ea464521b76c6886067 -SHA512 (nss-3.79.0-11.el8_1.src.rpm) = c4516e7917a45ac2d401700b6a7e23d5942d62fe2307cf130c526eea5a924516f82c2d2426b919c89004c4466c78061ea050721c1889a01fcd436cb562d4b1bd -SHA512 (thunderbird-102.15.1.processed-source.tar.xz) = 8f138662403623f1259592bdd6c67a7d0293e6e1599508987a83b9f12253747e8a60a285e2dddb57d062f176fb2e63f9ce7f312a3cf91c31f8e918f1f2ee96b6 -SHA512 (thunderbird-langpacks-102.15.1-20230913.tar.xz) = aac5cf22f11b8c788b067ad71cb8ae61455b26b964956d7bf604c1b7ec5770454678b2544de05ef7e76cfcb440992dc1735221824955e10ad63655a290b47a96 +SHA512 (cbindgen-vendor.tar.xz) = 161811f4adfc74e5d92871c78139704d32e1e1ad6b615c85353de300d9647a68f1ca8b1c953f7cc5539d861e9e8d8e42892cae757a3eafea78804e19bc323c16 +SHA512 (nspr-4.35.0-1.el8_1.src.rpm) = 5123a443fcc42602e31104999be339ae899eb7b1f1e2f1ea87ba4f283eb894d08ab568e421dba1df4770f23be91ff88aa6a0748bce7feef31ed88bee5bdecb2c +SHA512 (nss-3.90.0-2.el8_1.src.rpm) = 850cd6a343e62d34ad28ac356db03371f0b1f018274901cc700cc4f8138c9929eb159bbb1ebe167f727a69f6499423a54581ca65ed655ee468f1cae8450df85c +SHA512 (thunderbird-115.2.1.processed-source.tar.xz) = 6dd93c0a78c2e69c7b6b82ba842f0786f7ea9a45596ebf2e146b957a2089be1613d418146b5c2f9865da12b144505a0685ae2d555b4b8c025d7983a13af7ac2e +SHA512 (thunderbird-langpacks-115.2.1-20230908.tar.xz) = 1b1d0dd6679b0c8783dd8489aeb8329d08be75055edb0462b29f3418de76a0cb42b8427e20265edf8eaecee42d54c2686112d4d1d71c218ddfc02cb176547881 +SHA512 (nss-3.90.0-3.el9_0.src.rpm) = f321b9c1bda0b09eee564e2903023435851a4ff2e55bdd5b03012ca51be7999b18d85061f874065d0b25913721eb574f49746a3111f8f1cdd5b21268dddd8367 diff --git a/thunderbird-mozconfig b/thunderbird-mozconfig index c8e9d53..c7b2c9e 100644 --- a/thunderbird-mozconfig +++ b/thunderbird-mozconfig @@ -1,31 +1,35 @@ ac_add_options --enable-application=comm/mail -ac_add_options --prefix="$PREFIX" -ac_add_options --libdir="$LIBDIR" -ac_add_options --with-system-zlib +ac_add_options --allow-addon-sideload +ac_add_options --disable-bootstrap +ac_add_options --disable-crashreporter +#ac_add_options --disable-elf-hack +ac_add_options --disable-jemalloc ac_add_options --disable-strip ac_add_options --disable-tests -#ac_add_options --enable-libnotify -ac_add_options --enable-necko-wifi ac_add_options --disable-updater ac_add_options --enable-chrome-format=omni -ac_add_options --enable-pulseaudio -ac_add_options --without-system-icu -ac_add_options --enable-release -ac_add_options --allow-addon-sideload -ac_add_options --with-system-jpeg +ac_add_options --enable-default-toolkit=cairo-gtk3-wayland ac_add_options --enable-js-shell -ac_add_options --with-unsigned-addon-scopes=app,system -ac_add_options --without-sysroot +ac_add_options --enable-necko-wifi +ac_add_options --enable-official-branding +ac_add_options --enable-official-branding +ac_add_options --enable-pulseaudio +ac_add_options --enable-release +ac_add_options --enable-system-ffi +ac_add_options --libdir="$LIBDIR" +ac_add_options --prefix="$PREFIX" ac_add_options --update-channel=release -# investigate this one: -ac_add_options --without-wasm-sandboxed-libraries -ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key ac_add_options --with-google-location-service-api-keyfile=../google-api-key ac_add_options --with-google-safebrowsing-api-keyfile=../google-api-key -ac_add_options --disable-crashreporter -ac_add_options --enable-official-branding -ac_add_options --disable-bootstrap +ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key +ac_add_options --without-sysroot +ac_add_options --without-system-icu +ac_add_options --without-wasm-sandboxed-libraries +ac_add_options --with-system-jpeg +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +ac_add_options --with-unsigned-addon-scopes=app,system export BUILD_OFFICIAL=1 export MOZILLA_OFFICIAL=1 diff --git a/thunderbird.sh.in b/thunderbird.sh.in index 84ed613..88024b3 100644 --- a/thunderbird.sh.in +++ b/thunderbird.sh.in @@ -10,12 +10,12 @@ MOZ_ARCH=$(uname -m) case $MOZ_ARCH in x86_64 | s390x | sparc64 ) - MOZ_LIB_DIR="%PREFIX%/lib64" - SECONDARY_LIB_DIR="%PREFIX%/lib" + MOZ_LIB_DIR="__PREFIX__/lib64" + SECONDARY_LIB_DIR="__PREFIX__/lib" ;; * ) - MOZ_LIB_DIR="%PREFIX%/lib" - SECONDARY_LIB_DIR="%PREFIX%/lib64" + MOZ_LIB_DIR="__PREFIX__/lib" + SECONDARY_LIB_DIR="__PREFIX__/lib64" ;; esac @@ -61,7 +61,7 @@ fi ## ## Set MOZ_APP_LAUNCHER for gnome-session ## -export MOZ_APP_LAUNCHER="%PREFIX%/bin/thunderbird" +export MOZ_APP_LAUNCHER="__PREFIX__/bin/thunderbird" ## ## Disable the GNOME crash dialog, Moz has it's own diff --git a/thunderbird.spec b/thunderbird.spec index b414455..6083508 100644 --- a/thunderbird.spec +++ b/thunderbird.spec @@ -1,14 +1,18 @@ # Set for local builds only %global disable_toolsets 0 -%if 0%{?fedora} > 35 || 0%{?rhel} > 9 +# Produce debug (non-optimized) package build. Suitable for debugging only +# as the build is *very* slow. +%global debug_build 0 + +%if 0%{?rhel} > 9 %global dictionarydir hunspell %else %global dictionarydir myspell %endif %{lua: -function dist_to_rhel8_minor(str, start) +function dist_to_rhel_minor(str, start) match = string.match(str, ".module%+el8.%d+") if match then return string.sub(match, 13) @@ -21,11 +25,6 @@ function dist_to_rhel8_minor(str, start) if match then return 9 end - return -1 -end} - -%{lua: -function dist_to_rhel9_minor(str, start) match = string.match(str, ".module%+el9.%d+") if match then return string.sub(match, 13) @@ -41,141 +40,93 @@ function dist_to_rhel9_minor(str, start) return -1 end} -%global rhel8_minor_version %{lua:print(dist_to_rhel8_minor(rpm.expand("%dist")))} -%global rhel9_minor_version %{lua:print(dist_to_rhel9_minor(rpm.expand("%dist")))} - -# Produce debug (non-optimized) package build. Suitable for debugging only -# as the build is *very* slow. -%global debug_build 0 +%global rhel_minor_version %{lua:print(dist_to_rhel_minor(rpm.expand("%dist")))} +# System libraries options %global system_nss 1 %global bundle_nss 0 -%global build_langpacks 1 + +%if 0%{?rhel} == 8 + %if %{rhel_minor_version} <= 6 + %global bundle_nss 1 + %global system_nss 1 + %global _build_id_links none + %endif +%endif +%if 0%{?rhel} == 9 + %if %{rhel_minor_version} <= 0 + %global bundle_nss 1 + %global system_nss 1 + %global _build_id_links none + %endif +%endif + +%global dts_version 10 +%global llvm_version 7.0 +%global nspr_version 4.35 +%global nspr_version_max 4.36 +%global nss_version 3.90 +%global nss_version_max 3.91 +%global rust_version 1.66 +%global system_libvpx 0 + +# Toolsets setup +%global use_dts 0 +%global use_gcc_ts 0 +%global use_llvm_ts 0 +%global use_nodejs_scl 0 +%global use_rust_ts 1 +%global use_python3_scl 0 + +%global nodejs_build_req nodejs + +%if 0%{?rhel} >= 8 + %global use_rust_ts 0 +%endif + +%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 + %ifarch aarch64 +%global use_gcc_ts 1 + %endif +%endif + +%if 0%{?rhel} == 7 + %global use_dts 1 + %global use_llvm_ts 1 + %global use_nodejs_scl 1 + %global nodejs_build_req rh-nodejs10-nodejs + %global llvm_version 11.0 + %global use_python3_scl 1 +%endif + +%if 0%{?disable_toolsets} +%global use_dts 0 +%global use_llvm_ts 0 +%global use_nodejs_scl 0 +%global use_rust_ts 0 +%global use_python3_scl 0 +%endif # librnp with openssl support, not available in RHEL7 because it requires openssl >= 1.1.1e, # nor in rhel-8.1.0 or rhel-8.2.0 %global use_openssl_for_librnp 1 -%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} < 4) -%global use_openssl_for_librnp 0 -%endif - -%if 0%{?rhel} == 8 - %if %{rhel8_minor_version} <= 4 - %global bundle_nss 1 - %global system_nss 1 - %endif -%endif - -%global build_with_asan 0 - -%global use_llvmts 0 -%global use_nodejsts 0 -%if 0%{?rhel} < 8 -%global use_llvmts 1 -%global use_nodejsts 1 +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel_minor_version} < 4) + %global use_openssl_for_librnp 0 %endif -%global nodejs_rb nodejs -%global llvm_version 7.0 -%if "%{toolchain}" == "clang" -%global build_with_clang 1 -%else -%global build_with_clang 0 -%endif - -%ifarch armv7hl -%global create_debuginfo 0 -%endif -%if 0%{?rhel} == 7 - %global use_dts 1 - %global nodejs_rb rh-nodejs10-nodejs - %global llvm_version 11.0 -%endif - -# Temporary disabled due to -# https://bugzilla.redhat.com/show_bug.cgi?id=1951606 -%global enable_mozilla_crashreporter 0 - -%global system_ffi 1 -%ifarch armv7hl -%global system_libvpx 1 -%else -%global system_libvpx 0 -%endif -%global hardened_build 1 -%global system_jpeg 1 -%global disable_elfhack 1 -%global use_bundled_cbindgen 1 -%if %{debug_build} -%global release_build 0 -%endif -# Build PGO+LTO on x86_64 only due to build issues -# on other arches. -%global build_with_pgo 0 -%ifarch x86_64 -%if 0%{?release_build} -%global build_with_pgo 0 -%endif -%endif -%global use_rustts 1 -%global dts_version 10 -%global rust_version 1.62 -%if 0%{?rhel} >= 8 - %global use_rustts 0 -%endif -%if 0%{?flatpak} -%global build_with_pgo 0 -%endif - -%if 0%{?disable_toolsets} -%global use_rustts 0 -%global use_dts 0 -%global use_llvmts 0 -%global use_nodejsts 0 -%global nodejs_rb nodejs -%endif - -# Big endian platforms -%ifarch ppc64 s390x -%global big_endian 1 -%endif - -%if 0%{?build_with_pgo} -%global use_xvfb 1 -%global build_tests 1 -%endif -# Minimal required versions -%global cairo_version 1.13.1 -%global freetype_version 2.1.9 -%global libnotify_version 0.7.0 -%if %{?system_libvpx} -%global libvpx_version 1.8.2 -%endif - -%if %{?system_nss} -%global nspr_version 4.34 -%global nspr_build_version %{nspr_version} -%global nss_version 3.79 -%global nss_build_version %{nss_version} -%endif %define thunderbird_app_id \{3550f703-e582-4d05-9a08-453d09bdfdc6\} -%global langpackdir %{mozappdir}/extensions - -# The tarball is pretty inconsistent with directory structure. -# Sometimes there is a top level directory. That goes here. -# -# IMPORTANT: If there is no top level directory, this should be -# set to the cwd, ie: '.' -%define objdir objdir %define mozappdir %{_libdir}/thunderbird - +%global langpackdir %{mozappdir}/extensions %define bundled_install_path %{mozappdir}/bundled -%define official_branding 1 -# We could use %%include, but in %%files, %%post and other sections, but in these -# sections it could lead to syntax errors about unclosed %%if. Work around it by -# using the following macro -%define include_file() %{expand:%(cat '%1')} +##global pre_version b2 +# Workaround the dreaded "upstream source file changed content" rpminspect failure. +# If set to .b2 or .b3 ... the processed source file needs to be renamed before upload, e.g. +# thunderbird-102.8.0.b2.processed-source.tar.xz +# When unset use processed source file name as is. +##global buildnum .b2 + +%bcond_without langpacks # Exclude private libraries from autogenerated provides and requires %global __provides_exclude_from ^%{mozappdir} @@ -183,22 +134,16 @@ end} Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 102.15.1 -Release: 1%{?dist} +Version: 115.2.1 +Release: 5%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ -# Workaround the dreaded "upstream source file changed content" rpminspect failure. -# If set to .b2 or .b3 ... the processed source file needs to be renamed before upload, e.g. -# thunderbird-102.8.0.b2.processed-source.tar.xz -# When unset use processed source file name as is. -#%%global buildnum .b2 - %if 0%{?rhel} == 9 ExcludeArch: %{ix86} %endif %if 0%{?rhel} == 8 - %if %{rhel8_minor_version} == 1 + %if %{rhel_minor_version} == 1 ExcludeArch: %{ix86} aarch64 s390x %else ExcludeArch: %{ix86} @@ -208,10 +153,14 @@ ExcludeArch: %{ix86} ExcludeArch: aarch64 s390 ppc %endif -#Source0: https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.processed-source.tar.xz +# We can't use the official tarball as it contains some test files that use +# licenses that are rejected by Red Hat Legal. +# The official tarball has to be always processed by the process-official-tarball +# script +#Source0: https://archive.mozilla.org/pub/thunderbird/releases/%%{version}%%{?pre_version}/source/thunderbird-%%{version}%%{?pre_version}.processed-source.tar.xz Source0: thunderbird-%{version}%{?pre_version}%{?buildnum}.processed-source.tar.xz -%if %{build_langpacks} -Source1: thunderbird-langpacks-%{version}-20230913.tar.xz +%if %{with langpacks} +Source1: thunderbird-langpacks-%{version}-20230908.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball @@ -224,298 +173,219 @@ Source25: thunderbird-symbolic.svg Source27: google-api-key Source32: node-stdout-nonblocking-wrapper Source35: google-loc-api-key -Source403: nss-3.79.0-11.el8_1.src.rpm Source401: nss-setup-flags-env.inc -Source402: nspr-4.34.0-3.el8_1.src.rpm +Source402: nspr-4.35.0-1.el8_1.src.rpm +Source403: nss-3.90.0-2.el8_1.src.rpm +Source404: nss-3.90.0-3.el9_0.src.rpm -# Build patches -Patch3: mozilla-build-arm.patch -Patch25: rhbz-1219542-s390-build.patch -# Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x) -Patch40: build-aarch64-skia.patch -Patch41: build-disable-elfhack.patch -Patch44: build-arm-libopus.patch -Patch47: fedora-shebang-build.patch -Patch49: build-arm-libaom.patch -Patch53: firefox-gcc-build.patch -Patch54: mozilla-1669639.patch -Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch -Patch72: build-remove-dav1d-from-wayland-dep.patch -Patch73: build-ascii-decode-fail-rhel7.patch -Patch75: build-big-endian-errors.patch -Patch76: firefox-nss-version.patch -Patch77: mozilla-1775202.patch -Patch78: build-rhel7-lower-node-min-version.patch +# ---- RHEL specific patches --- +# -- Downstream only -- +Patch01: build-disable-elfhack.patch +Patch02: firefox-gcc-build.patch +Patch03: build-big-endian-errors.patch +Patch05: build-rhel7-lower-node-min-version.patch +Patch06: build-ppc64-abiv2.patch +Patch07: build-rhel7-nasm-dwarf.patch +Patch08: build-tb-rnp-openssl.patch +Patch09: disable-openpgp-in-thunderbird.patch -# Fedora specific patches -Patch215: firefox-enable-addons.patch -Patch219: rhbz-1173156.patch -Patch224: mozilla-1170092.patch -#ARM run-time patch -Patch226: rhbz-1354671.patch -Patch228: disable-openh264-download.patch -Patch229: firefox-nss-addon-hack.patch -Patch230: disable-openpgp-in-thunderbird.patch +# -- Upstreamed patches -- +Patch51: mozilla-bmo1170092.patch -# Upstream patches -Patch415: mozilla-1670333.patch -Patch416: mozilla-bmo1005535.patch -Patch417: mozilla-bmo1504834-part1.patch -Patch418: mozilla-bmo1504834-part3.patch -Patch419: mozilla-bmo849632.patch -Patch420: mozilla-bmo998749.patch -Patch421: mozilla-s390-context.patch -Patch422: mozilla-s390x-skia-gradient.patch -Patch423: one_swizzle_to_rule_them_all.patch -Patch424: svg-rendering.patch -Patch425: D158770.diff +# -- Submitted upstream, not merged -- +Patch101: mozilla-bmo1670333.patch +# Big endian fix +Patch102: mozilla-bmo1504834-part1.patch +Patch103: mozilla-bmo1504834-part3.patch +# Big endian fix +Patch104: mozilla-bmo849632.patch +# Big endian fix +Patch105: mozilla-bmo998749.patch +# Big endian fix +Patch106: mozilla-bmo1716707-swizzle.patch +Patch107: mozilla-bmo1716707-svg.patch +Patch108: mozilla-bmo1789216-disable-av1.patch -# PGO/LTO patches -Patch600: pgo.patch -Patch602: mozilla-1516803.patch +# ---- Fedora specific patches ---- +Patch151: firefox-enable-addons.patch +Patch152: rhbz-1173156.patch +Patch154: firefox-nss-addon-hack.patch +# ARM run-time patch +Patch155: rhbz-1354671.patch -# Backported WebRTC changes for PipeWire/Wayland screen sharing support -Patch1008: build-rhel7-nasm-dwarf.patch - -%if %{?system_nss} -%if !0%{?bundle_nss} +# BUILD REQURES/REQUIRES +%if %{?system_nss} && !0%{?bundle_nss} BuildRequires: pkgconfig(nspr) >= %{nspr_version} +BuildRequires: pkgconfig(nspr) < %{nspr_version_max} BuildRequires: pkgconfig(nss) >= %{nss_version} +BuildRequires: pkgconfig(nss) < %{nss_version_max} BuildRequires: nss-static >= %{nss_version} +BuildRequires: nss-static < %{nss_version_max} %endif + +%if %{?system_libvpx} +BuildRequires: libvpx-devel >= 1.8.2 %endif -BuildRequires: pkgconfig(libpng) -%if %{?system_jpeg} -BuildRequires: libjpeg-devel -%endif -BuildRequires: zip + BuildRequires: bzip2-devel -BuildRequires: pkgconfig(zlib) -BuildRequires: pkgconfig(gtk+-3.0) -BuildRequires: pkgconfig(gtk+-2.0) -BuildRequires: pkgconfig(krb5) -BuildRequires: pkgconfig(pango) -BuildRequires: pkgconfig(freetype2) >= %{freetype_version} -BuildRequires: pkgconfig(xt) -BuildRequires: pkgconfig(xtst) -BuildRequires: pkgconfig(xrender) -BuildRequires: pkgconfig(libstartup-notification-1.0) -BuildRequires: pkgconfig(libnotify) >= %{libnotify_version} -BuildRequires: pkgconfig(dri) -BuildRequires: pkgconfig(libcurl) -BuildRequires: pkgconfig(alsa) -%if %{?use_openssl_for_librnp} -BuildRequires: pkgconfig(openssl) -%endif +BuildRequires: dbus-glib-devel +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib +BuildRequires: libjpeg-devel BuildRequires: libstdc++-devel BuildRequires: libstdc++-static -BuildRequires: dbus-glib-devel -%if %{?system_libvpx} -BuildRequires: libvpx-devel >= %{libvpx_version} -%endif -%if %{?system_ffi} -BuildRequires: libffi-devel -%endif -BuildRequires: startup-notification-devel -BuildRequires: alsa-lib-devel BuildRequires: m4 +BuildRequires: make +BuildRequires: nasm >= 1.13 +BuildRequires: %{nodejs_build_req} >= 10.21 +BuildRequires: pciutils-libs +BuildRequires: perl-interpreter +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(dri) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(krb5) +BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(libffi) +BuildRequires: pkgconfig(libnotify) +BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libstartup-notification-1.0) +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(xrender) +BuildRequires: pkgconfig(xt) +BuildRequires: pkgconfig(xtst) +BuildRequires: pkgconfig(zlib) +BuildRequires: zip -%if 0%{?use_dts} -BuildRequires: devtoolset-%{dts_version}-gcc-c++ -BuildRequires: devtoolset-%{dts_version}-gcc -BuildRequires: devtoolset-%{dts_version}-libatomic-devel -%endif -%if 0%{?rhel} == 9 -BuildRequires: gcc -BuildRequires: gcc-c++ -BuildRequires: cargo -BuildRequires: rust -BuildRequires: clang clang-libs llvm -%endif -BuildRequires: %{nodejs_rb} >= 10.21 %if 0%{?rhel} == 7 +%if 0%{?use_python3_scl} +BuildRequires: rh-python38-python-devel +BuildRequires: rh-python38-python-setuptools BuildRequires: scl-utils +%endif BuildRequires: findutils -%endif -%if 0%{?rhel} == 8 -BuildRequires: cargo -BuildRequires: rust >= %{rust_version} -BuildRequires: llvm >= %{llvm_version} -BuildRequires: llvm-devel >= %{llvm_version} -BuildRequires: clang >= %{llvm_version} -BuildRequires: clang-devel >= %{llvm_version} -BuildRequires: rustfmt >= %{rust_version} -%endif - -%if 0%{?use_rustts} -BuildRequires: rust-toolset-%{rust_version} -%endif - -%if 0%{?use_llvmts} -BuildRequires: llvm-toolset-%{llvm_version} -BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel -BuildRequires: llvm-toolset-%{llvm_version}-clang -BuildRequires: llvm-toolset-%{llvm_version}-clang-devel -%endif - - -%if 0%{?rhel} > 7 +%else BuildRequires: pipewire-devel %endif -%if !0%{?use_bundled_cbindgen} -BuildRequires: cbindgen -%endif -BuildRequires: nasm >= 1.13 -BuildRequires: libappstream-glib - -%if 0%{?big_endian} -BuildRequires: icu -%endif -# Bundled nss/nspr requirement -%if 0%{?bundle_nss} -BuildRequires: nss-softokn -BuildRequires: sqlite-devel -BuildRequires: zlib-devel -BuildRequires: pkgconfig -BuildRequires: gawk -BuildRequires: psmisc -BuildRequires: perl-interpreter -BuildRequires: gcc-c++ -BuildRequires: xmlto +%if 0%{?rhel} == 8 +BuildRequires: cargo +BuildRequires: clang-devel >= %{llvm_version} +BuildRequires: clang >= %{llvm_version} +BuildRequires: llvm-devel >= %{llvm_version} +BuildRequires: llvm >= %{llvm_version} + %if 0%{?disable_toolsets} == 0 +BuildRequires: python38-devel +BuildRequires: python38-setuptools + %endif +BuildRequires: rustfmt >= %{rust_version} +BuildRequires: rust >= %{rust_version} %endif -# Don't require any OpenPGP backend with the librnp interface, because RHEL does not have it -#Requires: thunderbird-librnp%{?_isa} -# prefer the librnp implementation bundled with thunderbird -#Not in RHEL7 Suggests: thunderbird-librnp-rnp%{?_isa} -Requires: p11-kit-trust -Requires: pciutils-libs -%if %{?system_nss} -%if !0%{?bundle_nss} -Requires: nspr >= %{nspr_build_version} -Requires: nss >= %{nss_build_version} -%endif -%endif +%if 0%{?rhel} == 9 +BuildRequires: cargo +BuildRequires: clang clang-libs llvm +BuildRequires: gcc +BuildRequires: gcc-c++ BuildRequires: python3-devel BuildRequires: python3-setuptools - -BuildRequires: desktop-file-utils -%if %{?system_ffi} -BuildRequires: pkgconfig(libffi) +BuildRequires: rust %endif -%if 0%{?use_xvfb} -BuildRequires: xorg-x11-server-Xvfb +%if 0%{?use_dts} +BuildRequires: devtoolset-%{dts_version}-gcc +BuildRequires: devtoolset-%{dts_version}-gcc-c++ +BuildRequires: devtoolset-%{dts_version}-libatomic-devel %endif -%if %{build_with_asan} -BuildRequires: libasan -BuildRequires: libasan-static + +%if 0%{?use_llvm_ts} +BuildRequires: llvm-toolset-%{llvm_version} +BuildRequires: llvm-toolset-%{llvm_version}-clang +BuildRequires: llvm-toolset-%{llvm_version}-clang-devel +BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel %endif -BuildRequires: perl-interpreter -#BuildRequires: fdk-aac-free-devel not on rhel8 -%if 0%{?test_on_wayland} -BuildRequires: mutter -BuildRequires: gsettings-desktop-schemas -BuildRequires: gnome-settings-daemon -BuildRequires: mesa-dri-drivers -BuildRequires: xorg-x11-server-Xwayland -BuildRequires: dbus-x11 -BuildRequires: gnome-keyring + +%if 0%{?use_rust_ts} +BuildRequires: rust-toolset-%{rust_version} %endif -%if 0%{?run_firefox_tests} -BuildRequires: procps-ng -BuildRequires: nss-tools -BuildRequires: dejavu-sans-mono-fonts -BuildRequires: dejavu-sans-fonts -BuildRequires: dejavu-serif-fonts -BuildRequires: dbus-x11 -BuildRequires: gnome-keyring -BuildRequires: mesa-dri-drivers -# ---------------------------------------- -BuildRequires: liberation-fonts-common -BuildRequires: liberation-mono-fonts -BuildRequires: liberation-sans-fonts -BuildRequires: liberation-serif-fonts -# ---------------------------------- -# Missing on f32 -%if 0%{?fedora} > 33 -BuildRequires: google-carlito-fonts + +# Bundled nss/nspr requirement +%if 0%{?bundle_nss} +BuildRequires: gawk +BuildRequires: gcc-c++ +BuildRequires: nss-softokn +BuildRequires: perl-interpreter +BuildRequires: pkgconfig +BuildRequires: psmisc +BuildRequires: sqlite-devel +BuildRequires: xmlto +BuildRequires: zlib-devel %endif -BuildRequires: google-droid-sans-fonts -BuildRequires: google-noto-fonts-common -BuildRequires: google-noto-cjk-fonts-common -BuildRequires: google-noto-sans-cjk-ttc-fonts -BuildRequires: google-noto-sans-gurmukhi-fonts -BuildRequires: google-noto-sans-fonts -BuildRequires: google-noto-emoji-color-fonts -BuildRequires: google-noto-sans-sinhala-vf-fonts -# ----------------------------------- -BuildRequires: thai-scalable-fonts-common -BuildRequires: thai-scalable-waree-fonts -BuildRequires: khmeros-base-fonts -BuildRequires: jomolhari-fonts -# ---------------------------------- -BuildRequires: lohit-tamil-fonts -BuildRequires: lohit-telugu-fonts -# ---------------------------------- -BuildRequires: paktype-naskh-basic-fonts -# faild to build in Koji / f32 -%if 0%{?fedora} > 33 -BuildRequires: pt-sans-fonts + +%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 + %ifarch aarch64 +BuildRequires: gcc-toolset-12-gcc-plugin-annobin + %endif %endif -BuildRequires: smc-meera-fonts -BuildRequires: stix-fonts -BuildRequires: abattis-cantarell-fonts -BuildRequires: xorg-x11-fonts-ISO8859-1-100dpi -BuildRequires: xorg-x11-fonts-misc + +%if %{?use_openssl_for_librnp} +BuildRequires: pkgconfig(openssl) +%endif + +Requires: p11-kit-trust +Requires: pciutils-libs + +%if %{?system_nss} && !0%{?bundle_nss} +Requires: nspr >= %{nspr_version} +Requires: nss >= %{nss_version} %endif -BuildRequires: make -BuildRequires: pciutils-libs Obsoletes: mozilla <= 37:1.7.13 Provides: webclient -%if 0%{?rhel} == 8 && %{rhel8_minor_version} < 6 -%ifarch aarch64 -BuildRequires: gcc-toolset-12-annobin-plugin-gcc -%endif -%endif - # Bundled libraries +#Provides: bundled(libjxl) it's used only on nightly builds Provides: bundled(angle) +Provides: bundled(aom) Provides: bundled(audioipc-2) +Provides: bundled(bergamot-translator) Provides: bundled(brotli) Provides: bundled(bzip2) Provides: bundled(cairo) Provides: bundled(cfworker) +Provides: bundled(cld2) +Provides: bundled(cubeb) Provides: bundled(d3.js) Provides: bundled(double-conversion) Provides: bundled(expat) +Provides: bundled(fastText) +Provides: bundled(fathom) Provides: bundled(fdlibm) Provides: bundled(ffvpx) Provides: bundled(freetype2) +Provides: bundled(function2) +Provides: bundled(gemmology) Provides: bundled(graphite2) Provides: bundled(harfbuzz) Provides: bundled(highway) +Provides: bundled(hunspell) Provides: bundled(intgemm) -Provides: bundled(json-c) +Provides: bundled(irregexp) +Provides: bundled(jpeg-xl) Provides: bundled(kissfft) Provides: bundled(libaom) Provides: bundled(libcubeb) Provides: bundled(libdav1d) -Provides: bundled(libgcrypt) -Provides: bundled(libgpg-error) +Provides: bundled(libdrm) +Provides: bundled(libepoxy) +Provides: bundled(libgbm) Provides: bundled(libjpeg) -Provides: bundled(libjxl) -Provides: bundled(libjxl) Provides: bundled(libmar) Provides: bundled(libmkv) Provides: bundled(libnestegg) Provides: bundled(libogg) Provides: bundled(libopus) -Provides: bundled(libotr) Provides: bundled(libpng) Provides: bundled(libprio) Provides: bundled(libsoundtouch) @@ -528,145 +398,555 @@ Provides: bundled(libvpx) Provides: bundled(libwebp) Provides: bundled(libwebrtc) Provides: bundled(libyuv) +Provides: bundled(lit) Provides: bundled(mp4parse-rust) -Provides: bundled(mp4parse-rust) -Provides: bundled(msgpack-c) Provides: bundled(msgpack-c) Provides: bundled(mtransport) -Provides: bundled(niwcompat) +Provides: bundled(nestegg) +Provides: bundled(nICEr) +Provides: bundled(nimbus) Provides: bundled(openmax_dl) Provides: bundled(openmax_il) -Provides: bundled(openmax_il) Provides: bundled(ots) +Provides: bundled(pdf.js) +Provides: bundled(picosha2) +Provides: bundled(PKI) Provides: bundled(qcms) +Provides: bundled(rlbox) Provides: bundled(rlbox_sandboxing_api) Provides: bundled(rnp) Provides: bundled(sfntly) Provides: bundled(sipcc) Provides: bundled(skia) +Provides: bundled(soundtouch) Provides: bundled(sqlite3) Provides: bundled(thebes) +Provides: bundled(theora) +Provides: bundled(usrsctp) +Provides: bundled(wabt) Provides: bundled(wasm2c) Provides: bundled(WebRender) +Provides: bundled(wgpu) Provides: bundled(woff2) +Provides: bundled(xsimd) Provides: bundled(xz-embedded) Provides: bundled(ycbcr) Provides: bundled(zlib) +# Thunderbird third party libraries +Provides: bundled(ANS1.js) +Provides: bundled(bzip2) +Provides: bundled(json-c) +Provides: bundled(libgcrypt) +Provides: bundled(libgpg-error) +Provides: bundled(libotr) + %if 0%{?bundle_nss} -Provides: bundled(nss) = 3.79.0 -Provides: bundled(nspr) = 4.34.0 +Provides: bundled(nss) = %{nss_version} +Provides: bundled(nspr) = %{nspr_version} %endif +# Rust third parties: +# List obtained by `get_rust_bundled_provides.sh build.log` script:: +Provides: bundled(crate(aa-stroke)) = 0.1.0 +Provides: bundled(crate(adler)) = 1.0.2 +Provides: bundled(crate(ahash)) = 0.7.6 +Provides: bundled(crate(aho-corasick)) = 0.7.20 +Provides: bundled(crate(alsa)) = 0.7.0 +Provides: bundled(crate(alsa-sys)) = 0.3.1 +Provides: bundled(crate(anyhow)) = 1.0.69 +Provides: bundled(crate(app_services_logger)) = 0.1.0 +Provides: bundled(crate(app_units)) = 0.7.2 +Provides: bundled(crate(arrayref)) = 0.3.6 +Provides: bundled(crate(arrayvec)) = 0.7.2 +Provides: bundled(crate(ash)) = 0.37.2+1.3.238 +Provides: bundled(crate(askama)) = 0.11.1 +Provides: bundled(crate(askama_derive)) = 0.11.2 +Provides: bundled(crate(askama_escape)) = 0.10.3 +Provides: bundled(crate(askama_shared)) = 0.12.2 +Provides: bundled(crate(async-task)) = 4.3.0 +Provides: bundled(crate(async-trait)) = 0.1.64 +Provides: bundled(crate(atomic_refcell)) = 0.1.9 +Provides: bundled(crate(audioipc2)) = 0.5.0 +Provides: bundled(crate(audioipc2-client)) = 0.5.0 +Provides: bundled(crate(audioipc2-server)) = 0.5.0 +Provides: bundled(crate(audio_thread_priority)) = 0.26.1 +Provides: bundled(crate(authenticator)) = 0.4.0-alpha.15 +Provides: bundled(crate(authrs_bridge)) = 0.1.0 +Provides: bundled(crate(autocfg)) = 1.1.0 +Provides: bundled(crate(base64)) = 0.13.999 +Provides: bundled(crate(base64)) = 0.21.0 +Provides: bundled(crate(bhttp)) = 0.3.1 +Provides: bundled(crate(binary_http)) = 0.1.0 +Provides: bundled(crate(bincode)) = 1.3.3 +Provides: bundled(crate(bindgen)) = 0.63.999 +Provides: bundled(crate(bindgen)) = 0.64.0 +Provides: bundled(crate(bitflags)) = 1.3.2 +Provides: bundled(crate(bitflags)) = 2.999.999 +Provides: bundled(crate(bitreader)) = 0.3.6 +Provides: bundled(crate(bit-set)) = 0.5.3 +Provides: bundled(crate(bit-vec)) = 0.6.3 +Provides: bundled(crate(block-buffer)) = 0.10.3 +Provides: bundled(crate(bookmark_sync)) = 0.1.0 +Provides: bundled(crate(build-parallel)) = 0.1.2 +Provides: bundled(crate(builtins-static)) = 0.1.0 +Provides: bundled(crate(byteorder)) = 1.4.3 +Provides: bundled(crate(bytes)) = 1.4.0 +Provides: bundled(crate(cache-padded)) = 1.2.0 +Provides: bundled(crate(camino)) = 1.1.2 +Provides: bundled(crate(cargo_metadata)) = 0.15.3 +Provides: bundled(crate(cargo-platform)) = 0.1.2 +Provides: bundled(crate(cascade_bloom_filter)) = 0.1.0 +Provides: bundled(crate(cc)) = 1.0.73 +Provides: bundled(crate(cert_storage)) = 0.0.1 +Provides: bundled(crate(cexpr)) = 0.6.0 +Provides: bundled(crate(cfg-if)) = 0.1.999 +Provides: bundled(crate(cfg-if)) = 1.0.0 +Provides: bundled(crate(chardetng)) = 0.1.9 +Provides: bundled(crate(chardetng_c)) = 0.1.2 +Provides: bundled(crate(chrono)) = 0.4.19 +Provides: bundled(crate(chunky-vec)) = 0.1.0 +Provides: bundled(crate(clang-sys)) = 1.6.0 +Provides: bundled(crate(cmake)) = 0.1.999 +Provides: bundled(crate(codespan-reporting)) = 0.11.1 +Provides: bundled(crate(cose)) = 0.1.4 +Provides: bundled(crate(cose-c)) = 0.1.5 +Provides: bundled(crate(cpufeatures)) = 0.2.5 +Provides: bundled(crate(crc32fast)) = 1.3.2 +Provides: bundled(crate(crossbeam-channel)) = 0.5.6 +Provides: bundled(crate(crossbeam-deque)) = 0.8.2 +Provides: bundled(crate(crossbeam-epoch)) = 0.9.14 +Provides: bundled(crate(crossbeam-queue)) = 0.3.8 +Provides: bundled(crate(crossbeam-utils)) = 0.8.14 +Provides: bundled(crate(crypto-common)) = 0.1.6 +Provides: bundled(crate(crypto_hash)) = 0.1.0 +Provides: bundled(crate(cssparser)) = 0.31.0 +Provides: bundled(crate(cssparser-macros)) = 0.6.0 +Provides: bundled(crate(cstr)) = 0.2.11 +Provides: bundled(crate(cty)) = 0.2.2 +Provides: bundled(crate(cubeb)) = 0.10.3 +Provides: bundled(crate(cubeb-backend)) = 0.10.3 +Provides: bundled(crate(cubeb-core)) = 0.10.3 +Provides: bundled(crate(cubeb-pulse)) = 0.4.1 +Provides: bundled(crate(cubeb-sys)) = 0.10.3 +Provides: bundled(crate(dap_ffi)) = 0.1.0 +Provides: bundled(crate(darling)) = 0.13.99 +Provides: bundled(crate(darling)) = 0.14.3 +Provides: bundled(crate(darling_core)) = 0.14.3 +Provides: bundled(crate(darling_macro)) = 0.14.3 +Provides: bundled(crate(data-encoding)) = 2.3.3 +Provides: bundled(crate(data-encoding-ffi)) = 0.1.0 +Provides: bundled(crate(dbus)) = 0.6.5 +Provides: bundled(crate(derive_common)) = 0.0.1 +Provides: bundled(crate(derive_more)) = 0.99.17 +Provides: bundled(crate(digest)) = 0.10.6 +Provides: bundled(crate(dirs)) = 4.0.0 +Provides: bundled(crate(dirs-sys)) = 0.3.7 +Provides: bundled(crate(displaydoc)) = 0.2.3 +Provides: bundled(crate(dns-parser)) = 0.8.0 +Provides: bundled(crate(dogear)) = 0.5.0 +Provides: bundled(crate(dom)) = 0.1.0 +Provides: bundled(crate(dtoa)) = 0.4.8 +Provides: bundled(crate(dtoa-short)) = 0.3.3 +Provides: bundled(crate(either)) = 1.8.1 +Provides: bundled(crate(encoding_c)) = 0.9.8 +Provides: bundled(crate(encoding_c_mem)) = 0.2.6 +Provides: bundled(crate(encoding_glue)) = 0.1.0 +Provides: bundled(crate(encoding_rs)) = 0.8.32 +Provides: bundled(crate(enumset)) = 1.0.12 +Provides: bundled(crate(enumset_derive)) = 0.6.1 +Provides: bundled(crate(env_logger)) = 0.10.0 +Provides: bundled(crate(env_logger)) = 0.9.999 +Provides: bundled(crate(error-chain)) = 0.12.4 +Provides: bundled(crate(error-support)) = 0.1.0 +Provides: bundled(crate(error-support-macros)) = 0.1.0 +Provides: bundled(crate(etagere)) = 0.2.7 +Provides: bundled(crate(euclid)) = 0.22.7 +Provides: bundled(crate(fallible_collections)) = 0.4.6 +Provides: bundled(crate(fallible-iterator)) = 0.2.0 +Provides: bundled(crate(fallible-streaming-iterator)) = 0.1.9 +Provides: bundled(crate(fastrand)) = 1.9.0 +Provides: bundled(crate(ffi-support)) = 0.4.4 +Provides: bundled(crate(firefox-on-glean)) = 0.1.0 +Provides: bundled(crate(flate2)) = 1.0.25 +Provides: bundled(crate(fluent)) = 0.16.0 +Provides: bundled(crate(fluent-bundle)) = 0.15.2 +Provides: bundled(crate(fluent-fallback)) = 0.7.0 +Provides: bundled(crate(fluent-ffi)) = 0.1.0 +Provides: bundled(crate(fluent-langneg)) = 0.13.0 +Provides: bundled(crate(fluent-langneg-ffi)) = 0.1.0 +Provides: bundled(crate(fluent-pseudo)) = 0.3.1 +Provides: bundled(crate(fluent-syntax)) = 0.11.0 +Provides: bundled(crate(fnv)) = 1.0.7 +Provides: bundled(crate(fog_control)) = 0.1.0 +Provides: bundled(crate(freetype)) = 0.7.0 +Provides: bundled(crate(fs-err)) = 2.9.0 +Provides: bundled(crate(futures)) = 0.3.26 +Provides: bundled(crate(futures-channel)) = 0.3.26 +Provides: bundled(crate(futures-core)) = 0.3.26 +Provides: bundled(crate(futures-executor)) = 0.3.26 +Provides: bundled(crate(futures-io)) = 0.3.26 +Provides: bundled(crate(futures-macro)) = 0.3.26 +Provides: bundled(crate(futures-sink)) = 0.3.26 +Provides: bundled(crate(futures-task)) = 0.3.26 +Provides: bundled(crate(futures-util)) = 0.3.26 +Provides: bundled(crate(fxhash)) = 0.2.1 +Provides: bundled(crate(gecko_logger)) = 0.1.0 +Provides: bundled(crate(gecko-profiler)) = 0.1.0 +Provides: bundled(crate(geckoservo)) = 0.0.1 +Provides: bundled(crate(generic-array)) = 0.14.6 +Provides: bundled(crate(getrandom)) = 0.2.9 +Provides: bundled(crate(gkrust)) = 0.1.0 +Provides: bundled(crate(gkrust-shared)) = 0.1.0 +Provides: bundled(crate(gkrust_utils)) = 0.1.0 +Provides: bundled(crate(gleam)) = 0.15.0 +Provides: bundled(crate(glean)) = 52.7.0 +Provides: bundled(crate(glean-core)) = 52.7.0 +Provides: bundled(crate(gl_generator)) = 0.14.0 +Provides: bundled(crate(glob)) = 0.3.1 +Provides: bundled(crate(glsl)) = 6.0.2 +Provides: bundled(crate(glslopt)) = 0.1.9 +Provides: bundled(crate(glsl-to-cxx)) = 0.1.0 +Provides: bundled(crate(goblin)) = 0.6.0 +Provides: bundled(crate(golden_gate)) = 0.1.0 +Provides: bundled(crate(gpu-alloc)) = 0.5.3 +Provides: bundled(crate(gpu-alloc-types)) = 0.2.0 +Provides: bundled(crate(gpu-descriptor)) = 0.2.3 +Provides: bundled(crate(gpu-descriptor-types)) = 0.1.1 +Provides: bundled(crate(half)) = 1.8.2 +Provides: bundled(crate(hashbrown)) = 0.12.3 +Provides: bundled(crate(hashlink)) = 0.8.1 +Provides: bundled(crate(heck)) = 0.4.1 +Provides: bundled(crate(hex)) = 0.4.3 +Provides: bundled(crate(hexf-parse)) = 0.2.1 +Provides: bundled(crate(http_sfv)) = 0.1.0 +Provides: bundled(crate(id-arena)) = 2.2.1 +Provides: bundled(crate(ident_case)) = 1.0.1 +Provides: bundled(crate(idna)) = 0.2.3 +Provides: bundled(crate(indexmap)) = 1.9.2 +Provides: bundled(crate(inherent)) = 1.0.4 +Provides: bundled(crate(instant)) = 0.1.12 +Provides: bundled(crate(interrupt-support)) = 0.1.0 +Provides: bundled(crate(intl-memoizer)) = 0.5.1 +Provides: bundled(crate(intl_pluralrules)) = 7.0.2 +Provides: bundled(crate(iovec)) = 0.1.4 +Provides: bundled(crate(ipcclientcerts-static)) = 0.1.0 +Provides: bundled(crate(itertools)) = 0.10.5 +Provides: bundled(crate(itoa)) = 1.0.5 +Provides: bundled(crate(jobserver)) = 0.1.25 +Provides: bundled(crate(jog)) = 0.1.0 +Provides: bundled(crate(jsrust)) = 0.1.0 +Provides: bundled(crate(jsrust_shared)) = 0.1.0 +Provides: bundled(crate(khronos_api)) = 3.1.0 +Provides: bundled(crate(kvstore)) = 0.1.0 +Provides: bundled(crate(l10nregistry)) = 0.3.0 +Provides: bundled(crate(l10nregistry-ffi)) = 0.1.0 +Provides: bundled(crate(lazycell)) = 1.3.0 +Provides: bundled(crate(lazy_static)) = 1.4.0 +Provides: bundled(crate(leb128)) = 0.2.5 +Provides: bundled(crate(libc)) = 0.2.139 +Provides: bundled(crate(libdbus-sys)) = 0.2.2 +Provides: bundled(crate(libloading)) = 0.7.4 +Provides: bundled(crate(libsqlite3-sys)) = 0.25.2 +Provides: bundled(crate(libudev)) = 0.2.0 +Provides: bundled(crate(libudev-sys)) = 0.1.3 +Provides: bundled(crate(lmdb-rkv)) = 0.14.0 +Provides: bundled(crate(lmdb-rkv-sys)) = 0.11.2 +Provides: bundled(crate(localization-ffi)) = 0.1.0 +Provides: bundled(crate(lock_api)) = 0.4.9 +Provides: bundled(crate(log)) = 0.4.17 +Provides: bundled(crate(malloc_size_of)) = 0.0.1 +Provides: bundled(crate(malloc_size_of_derive)) = 0.1.2 +Provides: bundled(crate(mapped_hyph)) = 0.4.3 +Provides: bundled(crate(matches)) = 0.1.10 +Provides: bundled(crate(md-5)) = 0.10.5 +Provides: bundled(crate(mdns_service)) = 0.1.1 +Provides: bundled(crate(memalloc)) = 0.1.0 +Provides: bundled(crate(memchr)) = 2.5.0 +Provides: bundled(crate(memmap2)) = 0.5.9 +Provides: bundled(crate(memoffset)) = 0.8.0 +Provides: bundled(crate(midir)) = 0.7.0 +Provides: bundled(crate(midir_impl)) = 0.1.0 +Provides: bundled(crate(mime)) = 0.3.16 +Provides: bundled(crate(mime_guess)) = 2.0.4 +Provides: bundled(crate(mime-guess-ffi)) = 0.1.0 +Provides: bundled(crate(minimal-lexical)) = 0.2.1 +Provides: bundled(crate(miniz_oxide)) = 0.6.2 +Provides: bundled(crate(mio)) = 0.8.0 +Provides: bundled(crate(moz_asserts)) = 0.1.0 +Provides: bundled(crate(mozbuild)) = 0.1.0 +Provides: bundled(crate(moz_cbor)) = 0.1.2 +Provides: bundled(crate(mozglue-static)) = 0.1.0 +Provides: bundled(crate(mozilla-central-workspace-hack)) = 0.1.0 +Provides: bundled(crate(moz_task)) = 0.1.0 +Provides: bundled(crate(mozurl)) = 0.0.1 +Provides: bundled(crate(mp4parse)) = 0.17.0 +Provides: bundled(crate(mp4parse_capi)) = 0.17.0 +Provides: bundled(crate(murmurhash3)) = 0.0.5 +Provides: bundled(crate(naga)) = 0.12.0 +Provides: bundled(crate(neqo-common)) = 0.6.4 +Provides: bundled(crate(neqo-crypto)) = 0.6.4 +Provides: bundled(crate(neqo_glue)) = 0.1.0 +Provides: bundled(crate(neqo-http3)) = 0.6.4 +Provides: bundled(crate(neqo-qpack)) = 0.6.4 +Provides: bundled(crate(neqo-transport)) = 0.6.4 +Provides: bundled(crate(netwerk_helper)) = 0.0.1 +Provides: bundled(crate(new_debug_unreachable)) = 1.0.4 +Provides: bundled(crate(nix)) = 0.24.99 +Provides: bundled(crate(nix)) = 0.26.2 +Provides: bundled(crate(nom)) = 7.1.3 +Provides: bundled(crate(nserror)) = 0.1.0 +Provides: bundled(crate(nss_build_common)) = 0.1.0 +Provides: bundled(crate(nss-gk-api)) = 0.2.1 +Provides: bundled(crate(nsstring)) = 0.1.0 +Provides: bundled(crate(num_cpus)) = 1.15.0 +Provides: bundled(crate(num-derive)) = 0.3.3 +Provides: bundled(crate(num-integer)) = 0.1.45 +Provides: bundled(crate(num-traits)) = 0.2.15 +Provides: bundled(crate(object)) = 0.30.3 +Provides: bundled(crate(oblivious_http)) = 0.1.0 +Provides: bundled(crate(ohttp)) = 0.3.1 +Provides: bundled(crate(once_cell)) = 1.17.1 +Provides: bundled(crate(ordered-float)) = 3.4.0 +Provides: bundled(crate(origin-trials-ffi)) = 0.1.0 +Provides: bundled(crate(origin-trial-token)) = 0.1.1 +Provides: bundled(crate(owning_ref)) = 0.4.1 +Provides: bundled(crate(parking_lot)) = 0.11.2 +Provides: bundled(crate(parking_lot)) = 0.12.999 +Provides: bundled(crate(parking_lot_core)) = 0.8.6 +Provides: bundled(crate(paste)) = 1.0.11 +Provides: bundled(crate(peeking_take_while)) = 0.1.2 +Provides: bundled(crate(peek-poke)) = 0.3.0 +Provides: bundled(crate(peek-poke-derive)) = 0.3.0 +Provides: bundled(crate(percent-encoding)) = 2.2.0 +Provides: bundled(crate(phf)) = 0.10.1 +Provides: bundled(crate(phf_codegen)) = 0.10.0 +Provides: bundled(crate(phf_generator)) = 0.10.0 +Provides: bundled(crate(phf_macros)) = 0.10.0 +Provides: bundled(crate(phf_shared)) = 0.10.0 +Provides: bundled(crate(pin-project-lite)) = 0.2.9 +Provides: bundled(crate(pin-utils)) = 0.1.0 +Provides: bundled(crate(pkcs11-bindings)) = 0.1.5 +Provides: bundled(crate(pkg-config)) = 0.3.26 +Provides: bundled(crate(plain)) = 0.2.3 +Provides: bundled(crate(plane-split)) = 0.18.0 +Provides: bundled(crate(ppv-lite86)) = 0.2.17 +Provides: bundled(crate(precomputed-hash)) = 0.1.1 +Provides: bundled(crate(prefs_parser)) = 0.0.1 +Provides: bundled(crate(prio)) = 0.9.1 +Provides: bundled(crate(processtools)) = 0.1.0 +Provides: bundled(crate(proc-macro2)) = 1.0.51 +Provides: bundled(crate(proc-macro-hack)) = 0.5.20+deprecated +Provides: bundled(crate(profiler_helper)) = 0.1.0 +Provides: bundled(crate(profiler-macros)) = 0.1.0 +Provides: bundled(crate(profiling)) = 1.0.7 +Provides: bundled(crate(prost)) = 0.8.0 +Provides: bundled(crate(prost-derive)) = 0.8.0 +Provides: bundled(crate(pulse)) = 0.3.0 +Provides: bundled(crate(pulse-ffi)) = 0.1.0 +Provides: bundled(crate(qcms)) = 0.2.0 +Provides: bundled(crate(qlog)) = 0.4.0 +Provides: bundled(crate(quick-error)) = 1.2.3 +Provides: bundled(crate(quote)) = 1.0.23 +Provides: bundled(crate(rand)) = 0.8.5 +Provides: bundled(crate(rand_chacha)) = 0.3.1 +Provides: bundled(crate(rand_core)) = 0.6.4 +Provides: bundled(crate(raw-window-handle)) = 0.5.0 +Provides: bundled(crate(rayon)) = 1.6.1 +Provides: bundled(crate(rayon-core)) = 1.10.2 +Provides: bundled(crate(regex)) = 1.7.1 +Provides: bundled(crate(regex-syntax)) = 0.6.28 +Provides: bundled(crate(remove_dir_all)) = 0.5.3 +Provides: bundled(crate(replace_with)) = 0.1.7 +Provides: bundled(crate(ringbuf)) = 0.2.8 +Provides: bundled(crate(rkv)) = 0.18.4 +Provides: bundled(crate(ron)) = 0.8.0 +Provides: bundled(crate(rsclientcerts)) = 0.1.0 +Provides: bundled(crate(rsdparsa_capi)) = 0.1.0 +Provides: bundled(crate(runloop)) = 0.1.0 +Provides: bundled(crate(rure)) = 0.2.2 +Provides: bundled(crate(rusqlite)) = 0.28.0 +Provides: bundled(crate(rust_cascade)) = 1.5.0 +Provides: bundled(crate(rustc-demangle)) = 0.1.21 +Provides: bundled(crate(rustc-hash)) = 1.1.0 +Provides: bundled(crate(rustc_version)) = 0.4.0 +Provides: bundled(crate(rust_decimal)) = 1.28.1 +Provides: bundled(crate(ryu)) = 1.0.12 +Provides: bundled(crate(same-file)) = 1.0.6 +Provides: bundled(crate(scopeguard)) = 1.1.0 +Provides: bundled(crate(scroll)) = 0.11.0 +Provides: bundled(crate(scroll_derive)) = 0.11.0 +Provides: bundled(crate(selectors)) = 0.22.0 +Provides: bundled(crate(self_cell)) = 0.10.2 +Provides: bundled(crate(semver)) = 1.0.16 +Provides: bundled(crate(serde)) = 1.0.152 +Provides: bundled(crate(serde_bytes)) = 0.11.9 +Provides: bundled(crate(serde_cbor)) = 0.11.2 +Provides: bundled(crate(serde_derive)) = 1.0.152 +Provides: bundled(crate(serde_json)) = 1.0.93 +Provides: bundled(crate(serde_with)) = 1.14.0 +Provides: bundled(crate(serde_with_macros)) = 1.5.2 +Provides: bundled(crate(servo_arc)) = 0.1.1 +Provides: bundled(crate(sfv)) = 0.9.3 +Provides: bundled(crate(sha1)) = 0.10.5 +Provides: bundled(crate(sha2)) = 0.10.6 +Provides: bundled(crate(shlex)) = 1.1.0 +Provides: bundled(crate(siphasher)) = 0.3.10 +Provides: bundled(crate(slab)) = 0.4.8 +Provides: bundled(crate(smallbitvec)) = 2.5.1 +Provides: bundled(crate(smallvec)) = 1.10.0 +Provides: bundled(crate(socket2)) = 0.4.7 +Provides: bundled(crate(spirv)) = 0.2.0+1.5.4 +Provides: bundled(crate(sql-support)) = 0.1.0 +Provides: bundled(crate(stable_deref_trait)) = 1.2.0 +Provides: bundled(crate(static_assertions)) = 1.1.0 +Provides: bundled(crate(static_prefs)) = 0.1.0 +Provides: bundled(crate(storage)) = 0.1.0 +Provides: bundled(crate(storage_variant)) = 0.1.0 +Provides: bundled(crate(strsim)) = 0.10.0 +Provides: bundled(crate(style)) = 0.0.1 +Provides: bundled(crate(style_derive)) = 0.0.1 +Provides: bundled(crate(style_traits)) = 0.0.1 +Provides: bundled(crate(svg_fmt)) = 0.4.1 +Provides: bundled(crate(swgl)) = 0.1.0 +Provides: bundled(crate(syn)) = 1.0.107 +Provides: bundled(crate(sync15)) = 0.1.0 +Provides: bundled(crate(sync-guid)) = 0.1.0 +Provides: bundled(crate(synstructure)) = 0.12.6 +Provides: bundled(crate(tabs)) = 0.1.0 +Provides: bundled(crate(tempfile)) = 3.3.0 +Provides: bundled(crate(termcolor)) = 1.2.0 +Provides: bundled(crate(thin-vec)) = 0.2.12 +Provides: bundled(crate(thiserror)) = 1.0.38 +Provides: bundled(crate(thiserror-impl)) = 1.0.38 +Provides: bundled(crate(threadbound)) = 0.1.5 +Provides: bundled(crate(time)) = 0.1.45 +Provides: bundled(crate(tinystr)) = 0.7.1 +Provides: bundled(crate(tinyvec)) = 1.999.999 +Provides: bundled(crate(toml)) = 0.5.11 +Provides: bundled(crate(topological-sort)) = 0.1.0 +Provides: bundled(crate(to_shmem)) = 0.0.1 +Provides: bundled(crate(to_shmem_derive)) = 0.0.1 +Provides: bundled(crate(tracy-rs)) = 0.1.2 +Provides: bundled(crate(typed-arena-nomut)) = 0.1.0 +Provides: bundled(crate(type-map)) = 0.4.0 +Provides: bundled(crate(typenum)) = 1.16.0 +Provides: bundled(crate(uluru)) = 3.0.0 +Provides: bundled(crate(unicase)) = 2.6.0 +Provides: bundled(crate(unic-langid)) = 0.9.1 +Provides: bundled(crate(unic-langid-ffi)) = 0.1.0 +Provides: bundled(crate(unic-langid-impl)) = 0.9.1 +Provides: bundled(crate(unicode-bidi)) = 0.3.8 +Provides: bundled(crate(unicode-ident)) = 1.0.6 +Provides: bundled(crate(unicode-normalization)) = 0.1.22 +Provides: bundled(crate(unicode-segmentation)) = 1.10.0 +Provides: bundled(crate(unicode-width)) = 0.1.10 +Provides: bundled(crate(unicode-xid)) = 0.2.4 +Provides: bundled(crate(uniffi)) = 0.23.0 +Provides: bundled(crate(uniffi_bindgen)) = 0.23.0 +Provides: bundled(crate(uniffi_build)) = 0.23.0 +Provides: bundled(crate(uniffi_checksum_derive)) = 0.23.0 +Provides: bundled(crate(uniffi_core)) = 0.23.0 +Provides: bundled(crate(uniffi_macros)) = 0.23.0 +Provides: bundled(crate(uniffi_meta)) = 0.23.0 +Provides: bundled(crate(uniffi_testing)) = 0.23.0 +Provides: bundled(crate(url)) = 2.1.0 +Provides: bundled(crate(uuid)) = 1.3.0 +Provides: bundled(crate(vcpkg)) = 0.2.999 +Provides: bundled(crate(version_check)) = 0.9.4 +Provides: bundled(crate(viaduct)) = 0.1.0 +Provides: bundled(crate(void)) = 1.0.2 +Provides: bundled(crate(walkdir)) = 2.3.2 +Provides: bundled(crate(wasm-encoder)) = 0.25.0 +Provides: bundled(crate(wast)) = 56.0.0 +Provides: bundled(crate(webext-storage)) = 0.1.0 +Provides: bundled(crate(webext_storage_bridge)) = 0.1.0 +Provides: bundled(crate(webrender)) = 0.62.0 +Provides: bundled(crate(webrender_api)) = 0.62.0 +Provides: bundled(crate(webrender_bindings)) = 0.1.0 +Provides: bundled(crate(webrender_build)) = 0.0.2 +Provides: bundled(crate(webrtc-sdp)) = 0.3.10 +Provides: bundled(crate(weedle2)) = 4.0.0 +Provides: bundled(crate(wgpu_bindings)) = 0.1.0 +Provides: bundled(crate(wgpu-core)) = 0.16.0 +Provides: bundled(crate(wgpu-hal)) = 0.16.0 +Provides: bundled(crate(wgpu-types)) = 0.16.0 +Provides: bundled(crate(whatsys)) = 0.3.1 +Provides: bundled(crate(wpf-gpu-raster)) = 0.1.0 +Provides: bundled(crate(wr_glyph_rasterizer)) = 0.1.0 +Provides: bundled(crate(wr_malloc_size_of)) = 0.0.2 +Provides: bundled(crate(xmldecl)) = 0.2.0 +Provides: bundled(crate(xml-rs)) = 0.8.4 +Provides: bundled(crate(xpcom)) = 0.1.0 +Provides: bundled(crate(xpcom_macros)) = 0.1.0 +Provides: bundled(crate(zeitstempel)) = 0.1.1 + + %description Mozilla Thunderbird is a standalone mail and newsgroup client. -#%package librnp-rnp -#Summary: OpenPGP implementation for Thunderbird based on RNP -#Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} -#Provides: thunderbird-librnp -#Provides: thunderbird-librnp%{?_isa} -#Conflicts: thunderbird-librnp%{?_isa} -#%description librnp-rnp -#The thunderbird-librnp-rnp package contains an OpenPGP implementation -#based on RNP. -#%files librnp-rnp -#%{mozappdir}/librnp.so -#%{mozappdir}/rnp-cli -#%{mozappdir}/rnpkeys - %prep echo "Build environment" +echo "--------------------------------------------" echo "dist %{?dist}" -echo "RHEL 8 minor version: %{?rhel8_minor_version}" -echo "RHEL 9 minor version: %{?rhel9_minor_version}" -echo "use_bundled_ffi %{?use_bundled_ffi}" +echo "RHEL 8 minor version: %{?rhel_minor_version}" echo "bundle_nss %{?bundle_nss}" echo "system_nss %{?system_nss}" -echo "use_rustts %{?use_rustts}" +echo "use_rust_ts %{?use_rust_ts}" +echo "use_dts %{?use_dts}" +echo "use_nodejs_scl %{?use_nodejs_scl}" +echo "use_llvm_ts %{?use_llvm_ts}" +echo "use_python3_scl %{?use_python3_scl}" +echo "--------------------------------------------" %setup -q -# Build patches -%ifarch s390 -%patch25 -p1 -b .rhbz-1219542-s390 -%endif -%patch40 -p1 -b .aarch64-skia -%if 0%{?disable_elfhack} -%patch41 -p1 -b .disable-elfhack -%endif -%patch3 -p1 -b .arm -%patch44 -p1 -b .build-arm-libopus -%patch47 -p1 -b .fedora-shebang -%patch49 -p1 -b .build-arm-libaom -%patch53 -p1 -b .firefox-gcc-build -%patch54 -p1 -b .1669639 -%patch71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12 -%patch72 -p1 -b .build-remove-dav1d-from-wayland-dep - -%patch75 -p1 -b .build-big-endian-errors -%patch76 -p1 -b .firefox-nss-version -#ppc64le build failure because of webrtc -%patch77 -p1 -b .mozilla-1775202 - -%patch73 -p1 -b .build-ascii-decode-fail-rhel7 -%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} >= 9) -# Also c8s/rhel-8.9.0 has only node 10.24.0, this is build-only. -%patch78 -p1 -b .build-rhel7-lower-node-min-version -%endif - -# Test patches - -# Fedora patches -%patch215 -p1 -b .addons -%patch219 -p1 -b .rhbz-1173156 -%patch224 -p1 -b .1170092 -#ARM run-time patch -%ifarch aarch64 -%patch226 -p1 -b .1354671 -%endif -%patch228 -p1 -b .disable-openh264-download -%patch229 -p1 -b .firefox-nss-addon-hack - -%patch415 -p1 -b .1670333 -%patch416 -p1 -b .mozilla-bmo1005535 -%patch417 -p1 -b .mozilla-bmo1504834-part1 -%patch418 -p1 -b .mozilla-bmo1504834-part3 -%patch419 -p1 -b .mozilla-bmo849632 -%patch420 -p1 -b .mozilla-bmo998749 -%patch421 -p1 -b .mozilla-s390-context -%patch422 -p1 -b .mozilla-s390x-skia-gradient -%patch423 -p1 -b .one_swizzle_to_rule_them_all -%patch424 -p1 -b .svg-rendering -%patch425 -p1 -b .D158770.diff - -%if !%{?use_openssl_for_librnp} -%patch230 -p1 -b .disable-openpgp-in-thunderbird -%endif - -# PGO patches -%if %{build_with_pgo} -%if !%{build_with_clang} -%patch600 -p1 -b .pgo -%patch602 -p1 -b .1516803 -%endif -%endif - +# ---- RHEL specific patches --- +# -- Downstream only -- +%patch -P1 -p1 -b .disable-elfhack +%patch -P2 -p1 -b .firefox-gcc-build +%patch -P3 -p1 -b .build-big-endian-errors %if 0%{?rhel} == 7 +%patch -P5 -p1 -b .build-rhel7-lower-node-min-version + %ifarch ppc64 + # abiv2 version not available in RHEL7 ppc + # TODO most likely not needed with system nss +%patch -P6 -p1 -b .ppc64-abiv2 + %endif %ifarch %{ix86} -# -F dwarf not available in RHEL7's nasm -%patch1008 -p1 -b .build-rhel7-nasm-dwarf + # -F dwarf not available in RHEL7's nasm +%patch -P7 -p1 -b .build-rhel7-nasm-dwarf %endif %endif +%patch -P8 -p1 -b .build-rnp-openssl +%if !%{?use_openssl_for_librnp} +%patch -P9 -p1 -b .disable-openpgp-in-thunderbird +%endif +# -- Upstreamed patches -- +%patch -P51 -p1 -b .mozilla-bmo1170092 +# -- Submitted upstream, not merged -- +%patch -P101 -p1 -b .mozilla-bmo1670333 +%patch -P102 -p1 -b .mozilla-bmo1504834-part1 +%patch -P103 -p1 -b .mozilla-bmo1504834-part3 +%patch -P104 -p1 -b .mozilla-bmo849632 +%patch -P105 -p1 -b .mozilla-bmo998749 +%patch -P106 -p1 -b .mozilla-bmo1716707-swizzle +%patch -P107 -p1 -b .mozilla-bmo1716707-svg +%patch -P108 -p1 -b .mozilla-bmo1789216-disable-av1 + +# ---- Fedora specific patches ---- +%patch -P151 -p1 -b .addons +%patch -P152 -p1 -b .rhbz-1173156 +%patch -P154 -p1 -b .addons-nss-hack +# ARM run-time patch +%ifarch aarch64 +%patch -P155 -p1 -b .rhbz-1354671 +%endif %{__rm} -f .mozconfig %{__cp} %{SOURCE10} .mozconfig -echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig -%if %{official_branding} -echo "ac_add_options --enable-official-branding" >> .mozconfig -%endif %{__cp} %{SOURCE24} mozilla-api-key %{__cp} %{SOURCE27} google-api-key %{__cp} %{SOURCE35} google-loc-api-key @@ -682,14 +962,6 @@ echo "ac_add_options --without-system-nspr" >> .mozconfig echo "ac_add_options --without-system-nss" >> .mozconfig %endif -%if %{?system_ffi} -echo "ac_add_options --enable-system-ffi" >> .mozconfig -%endif - -%ifarch %{arm} -echo "ac_add_options --disable-elf-hack" >> .mozconfig -%endif - %if %{?debug_build} echo "ac_add_options --enable-debug" >> .mozconfig echo "ac_add_options --disable-optimize" >> .mozconfig @@ -709,47 +981,22 @@ echo 'ac_add_options --enable-optimize' >> .mozconfig echo "ac_add_options --disable-debug" >> .mozconfig %endif -# Second arches fail to start with jemalloc enabled -%ifnarch %{ix86} x86_64 -echo "ac_add_options --disable-jemalloc" >> .mozconfig -%endif - -%if 0%{?build_tests} -echo "ac_add_options --enable-tests" >> .mozconfig -%else -echo "ac_add_options --disable-tests" >> .mozconfig -%endif - -%if !%{?system_jpeg} -echo "ac_add_options --without-system-jpeg" >> .mozconfig -%else -echo "ac_add_options --with-system-jpeg" >> .mozconfig -%endif - %if %{?system_libvpx} echo "ac_add_options --with-system-libvpx" >> .mozconfig %else echo "ac_add_options --without-system-libvpx" >> .mozconfig %endif -%ifarch s390 s390x +%ifarch s390x echo "ac_add_options --disable-jit" >> .mozconfig %endif -%if %{build_with_asan} -echo "ac_add_options --enable-address-sanitizer" >> .mozconfig -echo "ac_add_options --disable-jemalloc" >> .mozconfig -%endif - -%if !%{enable_mozilla_crashreporter} -echo "ac_add_options --disable-crashreporter" >> .mozconfig -%endif %if %{?use_openssl_for_librnp} echo "ac_add_options --with-librnp-backend=openssl" >> .mozconfig %endif # AV1 requires newer nasm that was rebased in 8.4 -%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel8_minor_version} < 4) +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel_minor_version} < 4) echo "ac_add_options --disable-av1" >> .mozconfig %endif @@ -767,8 +1014,10 @@ find third_party -type f -iname "*.rs"|xargs chmod a-x #=============================================================================== %build +# TODO: causes SIGSEGV on the webrender compilation, we might remove it with newer rust version # Disable LTO to work around rhbz#1883904 %define _lto_cflags %{nil} + export PATH="%{_buildrootdir}/bin:$PATH" # Cleanup buildroot for existing rpms from bundled nss/nspr and other packages rm -rf %{_buildrootdir}/* @@ -792,9 +1041,9 @@ function install_rpms_to_current_dir() { rpm2cpio "$package" | cpio -idu done } + %if 0%{?bundle_nss} rpm -ivh %{SOURCE402} - #rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec pushd %{_buildrootdir} install_rpms_to_current_dir nspr-4*.rpm @@ -816,7 +1065,11 @@ function install_rpms_to_current_dir() { export PATH=%{_buildrootdir}/%{bundled_install_path}/bin:$PATH echo $PKG_CONFIG_PATH +%if 0%{?rhel} == 8 rpm -ivh %{SOURCE403} +%else + rpm -ivh %{SOURCE404} +%endif rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nss.spec pushd %{_buildrootdir} #cleanup @@ -840,24 +1093,28 @@ function install_rpms_to_current_dir() { find %{_buildrootdir} %endif +# Enable toolsets set +e -%if 0%{?rhel} == 8 && %{rhel8_minor_version} < 6 -%ifarch aarch64 +%if 0%{?rhel} == 8 && %{rhel_minor_version} < 6 + %ifarch aarch64 source scl_source enable gcc-toolset-12 -%endif + %endif %endif %if 0%{?use_dts} source scl_source enable devtoolset-%{dts_version} %endif -%if 0%{?use_rustts} +%if 0%{?use_rust_ts} source scl_source enable rust-toolset-%{rust_version} %endif -%if 0%{?use_nodejsts} +%if 0%{?use_nodejs_scl} source scl_source enable rh-nodejs10 %endif -%if 0%{?use_llvmts} +%if 0%{?use_llvm_ts} source scl_source enable llvm-toolset-%{llvm_version} %endif +%if 0%{?use_python3_scl} +source scl_source enable rh-python38 +%endif set -e env @@ -867,7 +1124,8 @@ which g++ which ld which nasm which node -%if 0%{?use_bundled_cbindgen} +which python3 +# Bundled cbindgen mkdir -p my_rust_vendor cd my_rust_vendor %{__tar} xf %{SOURCE2} @@ -887,7 +1145,8 @@ EOL env CARGO_HOME=.cargo cargo install cbindgen export PATH=`pwd`/.cargo/bin:$PATH cd - -%endif + +# end of Bundled cbindgen mkdir %{_buildrootdir}/bin || : cp %{SOURCE32} %{_buildrootdir}/bin || : @@ -908,53 +1167,34 @@ MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security # Workaround for mozbz#1531309 MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//') %endif + %if 0%{?fedora} > 30 MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive" %endif -%if %{?hardened_build} + MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" -%endif %if %{?debug_build} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') %endif -%ifarch s390 -MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') -# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which -# overrides the -g1 from line above and breaks building on s390/arm -# (OOM when linking, rhbz#1238225) -export MOZ_DEBUG_FLAGS=" " -%endif -%ifarch %{arm} %{ix86} +%ifarch %{ix86} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/') export MOZ_DEBUG_FLAGS=" " %endif -%if !%{build_with_clang} -%ifarch s390x ppc aarch64 %{ix86} + +%ifarch s390x aarch64 %{ix86} MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %endif -%ifarch %{arm} -MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug" -echo "ac_add_options --enable-linker=gold" >> .mozconfig -%endif -%endif + %if 0%{?flatpak} # Make sure the linker can find libraries in /app/lib64 as we don't use # __global_ldflags that normally sets this. MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -L%{_libdir}" %endif -%ifarch %{arm} %{ix86} %{s390x} +%ifarch %{ix86} %{s390x} export RUSTFLAGS="-Cdebuginfo=0" echo 'export RUSTFLAGS="-Cdebuginfo=0"' >> .mozconfig %endif -#%ifarch aarch64 -#export RUSTFLAGS="-Cdebuginfo=0 -Clinker=/opt/rh/gcc-toolset-12/root/usr/bin/gcc" -#echo 'export RUSTFLAGS="-Cdebuginfo=0 -Clinker=/opt/rh/gcc-toolset-12/root/usr/bin/gcc"' >> .mozconfig -#%endif -%if %{build_with_asan} -MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fsanitize=address -Dxmalloc=myxmalloc" -MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl" -%endif %if 0%{?bundle_nss} mkdir -p %{_buildrootdir}%{bundled_install_path}/%{_lib} @@ -969,35 +1209,21 @@ MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT" echo "export CFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig echo "export CXXFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig echo "export LDFLAGS=\"$MOZ_LINK_FLAGS\"" >> .mozconfig - -%if %{build_with_clang} -echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig -echo "export AR=\"llvm-ar\"" >> .mozconfig -echo "export NM=\"llvm-nm\"" >> .mozconfig -echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig -echo "ac_add_options --enable-linker=lld" >> .mozconfig -%else echo "export CC=gcc" >> .mozconfig echo "export CXX=g++" >> .mozconfig echo "export AR=\"gcc-ar\"" >> .mozconfig echo "export NM=\"gcc-nm\"" >> .mozconfig echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig -%endif -%if 0%{?build_with_pgo} -echo "ac_add_options MOZ_PGO=1" >> .mozconfig -# PGO build doesn't work with ccache -export CCACHE_DISABLE=1 -%endif MOZ_SMP_FLAGS=-j1 # On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel, # however builds tend to fail on other arches when building in parallel. -#%ifarch %{ix86} s390x %{arm} aarch64 ppc64le +#%ifarch %{ix86} s390x aarch64 ppc64le #[ -z "$RPM_BUILD_NCPUS" ] && \ # RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" #[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 #%endif -#%ifarch x86_64 ppc ppc64 ppc64le +#%ifarch x86_64 ppc64 ppc64le [ -z "$RPM_BUILD_NCPUS" ] && \ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 @@ -1009,7 +1235,11 @@ MOZ_SMP_FLAGS=-j1 echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig echo "export STRIP=/bin/true" >> .mozconfig -#export MACH_USE_SYSTEM_PYTHON=1 + +# We could use %%include, but in %%files, %%post and other sections, but in these +# sections it could lead to syntax errors about unclosed %%if. Work around it by +# using the following macro +%define include_file() %{expand:%(cat '%1')} %if 0%{?bundle_nss} echo "Setting nss flags" @@ -1019,14 +1249,11 @@ echo "export STRIP=/bin/true" >> .mozconfig echo $PKG_CONFIG_PATH %endif - -export MACH_USE_SYSTEM_PYTHON=1 -./mach build -v || exit 1 - +./mach build -v 2>&1 || exit 1 #--------------------------------------------------------------------- %install -export MACH_USE_SYSTEM_PYTHON=1 +export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) PACKAGE_DIR=%{_rpmdir} @@ -1049,7 +1276,6 @@ function install_rpms_to_current_dir() { %if 0%{?bundle_nss} pushd %{buildroot} - #install_rpms_to_current_dir nss-*.rpm install_rpms_to_current_dir nspr-4*.rpm install_rpms_to_current_dir nss-3*.rpm install_rpms_to_current_dir nss-softokn-3*.rpm @@ -1057,11 +1283,8 @@ function install_rpms_to_current_dir() { install_rpms_to_current_dir nss-util-3*.rpm # cleanup unecessary nss files - #rm -rf %{_buildrootdir}/%{bundled_install_path}/bin - #rm -rf %{_buildrootdir}/%{bundled_install_path}/include rm -rf %{buildroot}/%{bundled_install_path}/lib/dracut rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/nss - #rm -rf %{_buildrootdir}/%{bundled_install_path}/%{_lib}/pkgconfig rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/share rm -rf %{buildroot}/%{bundled_install_path}/share rm -rf %{buildroot}/etc/pki @@ -1072,26 +1295,21 @@ function install_rpms_to_current_dir() { DESTDIR=%{buildroot} make -C objdir install - -# install icons -for s in 16 22 24 32 48 64 128 256; do - %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps - %{__cp} -p comm/mail/branding/%{name}/default${s}.png \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/thunderbird.png -done - -# Install high contrast icon -%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps -%{__cp} -p %{SOURCE25} \ - %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps +%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications} desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} # set up the thunderbird start script -rm -f $RPM_BUILD_ROOT/%{_bindir}/thunderbird -%{__cat} %{SOURCE21} | %{__sed} -e 's,%PREFIX%,%{_prefix},g' > \ - $RPM_BUILD_ROOT/%{_bindir}/thunderbird -%{__chmod} 755 $RPM_BUILD_ROOT/%{_bindir}/thunderbird +%{__rm} -rf %{buildroot}%{_bindir}/thunderbird +%{__sed} -e 's,__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/thunderbird +%{__chmod} 755 %{buildroot}%{_bindir}/thunderbird + +%if 0%{?flatpak} +sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/thunderbird +%else +sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/thunderbird +%endif + # Run firefox under wayland only on RHEL9 and newer %if 0%{?rhel} < 9 sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%|export MOZ_DISABLE_WAYLAND=1|' %{buildroot}%{_bindir}/thunderbird @@ -1108,6 +1326,19 @@ sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%||' %{buildroot}%{_bindir}/thunderbird %{__rm} $RPM_BUILD_ROOT/rh-default-prefs %{__rm} -f $RPM_BUILD_ROOT%{_bindir}/thunderbird-config +%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini + +# install icons +for s in 16 22 24 32 48 64 128 256; do + %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps + %{__cp} -p comm/mail/branding/%{name}/default${s}.png \ + %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/thunderbird.png +done + +# Install high contrast icon +%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps +%{__cp} -p %{SOURCE25} \ + %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps # own mozilla plugin dir (#135050) %{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/mozilla/plugins @@ -1120,10 +1351,8 @@ sed -i -e 's|%DISABLE_WAYLAND_PLACEHOLDER%||' %{buildroot}%{_bindir}/thunderbird %{__mkdir_p} %{buildroot}%{_sysconfdir}/%{name}/pref # Install langpacks -%{__rm} -f %{name}.lang # Delete for --short-circuit option -touch %{name}.lang - -%if 0%{?build_langpacks} +echo > %{name}.lang +%if %{with langpacks} %{__mkdir_p} %{buildroot}%{langpackdir} %{__tar} xf %{SOURCE1} for langpack in `ls thunderbird-langpacks/*.xpi`; do @@ -1160,12 +1389,6 @@ ln -s $(pkg-config --variable prefix hunspell)/share/%{dictionarydir} $RPM_BUILD touch $RPM_BUILD_ROOT%{mozappdir}/components/compreg.dat touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat -# Add debuginfo for crash-stats.mozilla.com -%if %{enable_mozilla_crashreporter} -%{__mkdir_p} $RPM_BUILD_ROOT/%{moz_debug_dir} -%{__cp} %{objdir}/dist/%{symbols_file_name} $RPM_BUILD_ROOT/%{moz_debug_dir} -%endif - # Removing librnp.so - we cannot deliver librnp with botan crypto backend RHELs %if !%{?use_openssl_for_librnp} %{__rm} -rf %{buildroot}%{mozappdir}/librnp.so %{buildroot}%{mozappdir}/rnp-cli %{buildroot}%{mozappdir}/rnpkeys @@ -1197,6 +1420,7 @@ update-desktop-database &> /dev/null || : if [ $1 -eq 0 ] ; then touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + %{__rm} -rf %{langpackdir} fi %posttrans @@ -1222,7 +1446,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/plugin-container %{mozappdir}/defaults %{mozappdir}/dictionaries -%if %{build_langpacks} +%if %{with langpacks} %dir %{langpackdir} %endif %{mozappdir}/greprefs @@ -1242,11 +1466,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_datadir}/icons/hicolor/64x64/apps/thunderbird.png %{_datadir}/icons/hicolor/128x128/apps/thunderbird.png %{_datadir}/icons/hicolor/symbolic/apps/thunderbird-symbolic.svg -%if %{enable_mozilla_crashreporter} -%{mozappdir}/crashreporter -%{mozappdir}/crashreporter.ini -%{mozappdir}/Throbber-small.gif -%endif %if !%{?system_nss} %{mozappdir}/*.chk %endif @@ -1258,12 +1477,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/rnp-cli %{mozappdir}/rnpkeys %endif +%{mozappdir}/glxtest +%{mozappdir}/vaapitest %if 0%{?bundle_nss} %{mozappdir}/bundled/%{_lib}/libfreebl* -%{mozappdir}/bundled/%{_lib}/libnss3* -%{mozappdir}/bundled/%{_lib}/libnssdbm3* -%{mozappdir}/bundled/%{_lib}/libnssutil3* +%{mozappdir}/bundled/%{_lib}/libnss* %{mozappdir}/bundled/%{_lib}/libsmime3* %{mozappdir}/bundled/%{_lib}/libsoftokn* %{mozappdir}/bundled/%{_lib}/libssl3* @@ -1275,29 +1494,8 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #=============================================================================== %changelog -* Wed Sep 13 2023 Eike Rathke - 102.15.1-1 -- Update to 102.15.1 - -* Mon Aug 28 2023 Eike Rathke - 102.15.0-1 -- Update to 102.15.0 build1 - -* Wed Aug 09 2023 Eike Rathke - 102.14.0-3 -- Bump NVR to rebuild - -* Wed Aug 09 2023 Jan Horak - 102.14.0-2 -- Rebuild due to rhbz#2228948 - -* Tue Aug 01 2023 Eike Rathke - 102.14.0-1 -- Update to 102.14.0 build1 - -* Fri Jul 07 2023 Eike Rathke - 102.13.0-2 -- Update to 102.13.0 build2 - -* Wed Jul 05 2023 Eike Rathke - 102.13.0-1 -- Update to 102.13.0 build1 - -* Mon Jun 05 2023 Eike Rathke - 102.12.0-1 -- Update to 102.12.0 build1 +* Fri Sep 8 2023 Jan Horak - 115.2.1-5 +- Update to 115.2.1 * Thu May 04 2023 Eike Rathke - 102.11.0-1 - Update to 102.11.0 build1