import firefox-78.7.0-2.el8_3
This commit is contained in:
parent
26b37ee221
commit
8d4fa5fa40
@ -1,10 +1,12 @@
|
||||
18a8f30a0356c751b8d0ea6f76e764cab13ee046 SOURCES/Python-2.7.13.tar.xz
|
||||
e86c38c48960b95353503b78e1de9ddca1ed34d7 SOURCES/cbindgen-vendor.tar.xz
|
||||
ee6406ec1280afc24d4a90c392ff09ff5060686e SOURCES/firefox-68.9.0esr.source.tar.xz
|
||||
cbb1c23ae26fc81578036403dbceef7cd10fc98b SOURCES/firefox-langpacks-68.9.0esr-20200529.tar.xz
|
||||
a9effcc06cf80eaa22f12c1f7d6aa4266a1c4966 SOURCES/cbindgen-vendor-0.14.3.tar.xz
|
||||
d2c776e31de71a091c6f3c15772ea51d9623e437 SOURCES/firefox-78.7.0esr.source.tar.xz
|
||||
44cf71a4cbbffe9278ca35a7319ce70abb5737fb SOURCES/firefox-langpacks-78.7.0esr-20210122.tar.xz
|
||||
6724218efbb1f3fa14541cb2f255970b98446a45 SOURCES/firefox-symbolic.svg
|
||||
0de63f863b158454b9429234b52ed28a397ec45c SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
|
||||
e188ab1a444697bc649e223c28389d82ca94c472 SOURCES/libffi-3.0.13-18.el7_3.src.rpm
|
||||
4f8d3bf2483d95261ff90742ecec82d6a899eca3 SOURCES/nodejs-8.11.4-1.3.fc27.src.rpm
|
||||
5715f987bc0024ce5d72993cb101b8268350033b SOURCES/nodejs-10.21.0-5.fc32.src.rpm
|
||||
07d67c90367c3ec0d6cebc1a5793c21076d34b78 SOURCES/nspr-4.25.0-1.el8_0.src.rpm
|
||||
223c02166b1cb9863b9f453ef687d7805a93e7af SOURCES/nss-3.53.1-3.fc32.src.rpm
|
||||
a379070abf5000cde61411c97af7e733b267a4d3 SOURCES/openssl-1.0.2k-19.6.bundle.el7_7.src.rpm
|
||||
77fd30f7ebc12a629a31c1e252cec06af55a71fe SOURCES/yasm-1.2.0-3.el5.src.rpm
|
||||
|
10
.gitignore
vendored
10
.gitignore
vendored
@ -1,10 +1,12 @@
|
||||
SOURCES/Python-2.7.13.tar.xz
|
||||
SOURCES/cbindgen-vendor.tar.xz
|
||||
SOURCES/firefox-68.9.0esr.source.tar.xz
|
||||
SOURCES/firefox-langpacks-68.9.0esr-20200529.tar.xz
|
||||
SOURCES/cbindgen-vendor-0.14.3.tar.xz
|
||||
SOURCES/firefox-78.7.0esr.source.tar.xz
|
||||
SOURCES/firefox-langpacks-78.7.0esr-20210122.tar.xz
|
||||
SOURCES/firefox-symbolic.svg
|
||||
SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
|
||||
SOURCES/libffi-3.0.13-18.el7_3.src.rpm
|
||||
SOURCES/nodejs-8.11.4-1.3.fc27.src.rpm
|
||||
SOURCES/nodejs-10.21.0-5.fc32.src.rpm
|
||||
SOURCES/nspr-4.25.0-1.el8_0.src.rpm
|
||||
SOURCES/nss-3.53.1-3.fc32.src.rpm
|
||||
SOURCES/openssl-1.0.2k-19.6.bundle.el7_7.src.rpm
|
||||
SOURCES/yasm-1.2.0-3.el5.src.rpm
|
||||
|
767
SOURCES/D87019-thin-vec-big-endian.diff
Normal file
767
SOURCES/D87019-thin-vec-big-endian.diff
Normal file
@ -0,0 +1,767 @@
|
||||
diff -up firefox-78.1.0/Cargo.lock.D87019-thin-vec-big-endian.diff firefox-78.1.0/Cargo.lock
|
||||
--- firefox-78.1.0/Cargo.lock.D87019-thin-vec-big-endian.diff 2020-07-22 19:56:54.000000000 +0200
|
||||
+++ firefox-78.1.0/Cargo.lock 2020-08-17 17:04:24.133598583 +0200
|
||||
@@ -4792,12 +4792,9 @@ checksum = "8eaa81235c7058867fa8c0e7314f
|
||||
|
||||
[[package]]
|
||||
name = "thin-vec"
|
||||
-version = "0.1.0"
|
||||
+version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "73fdf4b84c65a85168477b7fb6c498e0716bc9487fba24623389ea7f51708044"
|
||||
-dependencies = [
|
||||
- "libc",
|
||||
-]
|
||||
+checksum = "dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0"
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
diff -up firefox-78.1.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/gfx/webrender_bindings/Cargo.toml
|
||||
--- firefox-78.1.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-08-17 17:04:24.133598583 +0200
|
||||
+++ firefox-78.1.0/gfx/webrender_bindings/Cargo.toml 2020-08-17 17:05:26.984805590 +0200
|
||||
@@ -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]
|
||||
diff -up firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml
|
||||
--- firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:20.000000000 +0200
|
||||
+++ firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml 2020-08-17 17:04:24.134598587 +0200
|
||||
@@ -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"] }
|
||||
diff -up firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml
|
||||
--- firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:20.000000000 +0200
|
||||
+++ firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml 2020-08-17 17:04:24.134598587 +0200
|
||||
@@ -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" }
|
||||
diff -up firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml
|
||||
--- firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:20.000000000 +0200
|
||||
+++ firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml 2020-08-17 17:04:24.134598587 +0200
|
||||
@@ -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"] }
|
||||
diff -up firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml
|
||||
--- firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-08-17 17:04:24.134598587 +0200
|
||||
+++ firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml 2020-08-17 17:05:10.352750807 +0200
|
||||
@@ -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"
|
||||
diff -up firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml
|
||||
--- firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 19:56:55.000000000 +0200
|
||||
+++ firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml 2020-08-17 17:04:24.134598587 +0200
|
||||
@@ -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" }
|
||||
diff -up firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml
|
||||
--- firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-08-17 17:04:24.134598587 +0200
|
||||
+++ firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml 2020-08-17 17:04:52.432691786 +0200
|
||||
@@ -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"] }
|
||||
diff -up firefox-78.1.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/services/sync/golden_gate/Cargo.toml
|
||||
--- firefox-78.1.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:24.000000000 +0200
|
||||
+++ firefox-78.1.0/services/sync/golden_gate/Cargo.toml 2020-08-17 17:04:24.134598587 +0200
|
||||
@@ -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"]
|
||||
diff -up firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json
|
||||
--- firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:29.000000000 +0200
|
||||
+++ firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json 2020-08-17 17:04:24.134598587 +0200
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.toml":"fb96cad605ae48215811808c1cc1b9a50248f2b14542058094b23983e2f8d8a0","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/heap.rs":"fe84a4ff433568d5713685456d87597ac5dcdb9d5190061a3da8074240ba1bc3","src/lib.rs":"ce36db8e3464dddade7c1ddbe3ee1f5e525af5be492ea51a0d8a0776c1adfc28","src/range.rs":"bac59bcb6230367a39c7e28ac15263e4526f966cd8c72015873017f17c115aaa"},"package":"73fdf4b84c65a85168477b7fb6c498e0716bc9487fba24623389ea7f51708044"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.toml":"754c05523d17eb7591c3ea2c9294e47c05fbb257fed04b78546fb2ec7cafa8b4","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/lib.rs":"627c6094c3f0286dba25bc73f5672c06c5061c25b01c513d213cbdda100673a2"},"package":"dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0"}
|
||||
\ No newline at end of file
|
||||
diff -up firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml
|
||||
--- firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:29.000000000 +0200
|
||||
+++ firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml 2020-08-17 17:04:24.135598590 +0200
|
||||
@@ -3,7 +3,7 @@
|
||||
# When uploading crates to the registry Cargo will automatically
|
||||
# "normalize" Cargo.toml files for maximal compatibility
|
||||
# with all versions of Cargo and also rewrite `path` dependencies
|
||||
-# to registry (e.g. crates.io) dependencies
|
||||
+# to registry (e.g., crates.io) dependencies
|
||||
#
|
||||
# If you believe there's an error in this file please file an
|
||||
# issue against the rust-lang/cargo repository. If you're
|
||||
@@ -11,16 +11,17 @@
|
||||
# will likely look very different (and much more reasonable)
|
||||
|
||||
[package]
|
||||
+edition = "2018"
|
||||
name = "thin-vec"
|
||||
-version = "0.1.0"
|
||||
+version = "0.2.1"
|
||||
authors = ["Alexis Beingessner <a.beingessner@gmail.com>"]
|
||||
description = "a vec that takes up less space on the stack"
|
||||
homepage = "https://github.com/gankro/thin-vec"
|
||||
readme = "README.md"
|
||||
license = "MIT/Apache-2.0"
|
||||
repository = "https://github.com/gankro/thin-vec"
|
||||
-[dependencies.libc]
|
||||
-version = "0.2"
|
||||
+
|
||||
+[dependencies]
|
||||
|
||||
[features]
|
||||
default = []
|
||||
diff -up firefox-78.1.0/third_party/rust/thin-vec/src/heap.rs.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/src/heap.rs
|
||||
diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs
|
||||
--- firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:28.000000000 +0200
|
||||
+++ firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs 2020-08-17 17:04:24.135598590 +0200
|
||||
@@ -1,50 +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<T>. So `Vec<ThinVec<T>>` and `Option<ThinVec<T>>::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::<ThinVec<T>>()` == `size_of::<Option<ThinVec<T>>>()`
|
||||
+//!
|
||||
+//! Properties of Vec that aren't preserved:
|
||||
+//! * `ThinVec<T>` 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<u32>) { ... }
|
||||
+//! // BAD WRONG
|
||||
+//! extern fn get_data() -> ThinVec<u32> { ... }
|
||||
+//! ```
|
||||
+//!
|
||||
+//! You must instead pass by-reference:
|
||||
+//!
|
||||
+//! ```rust
|
||||
+//! # use thin_vec::*;
|
||||
+//! # use std::mem;
|
||||
+//!
|
||||
+//! // Read-only access, ok!
|
||||
+//! extern fn process_data(data: &ThinVec<u32>) {
|
||||
+//! for val in data {
|
||||
+//! println!("{}", val);
|
||||
+//! }
|
||||
+//! }
|
||||
+//!
|
||||
+//! // Replace with empty instance to take ownership, ok!
|
||||
+//! extern fn consume_data(data: &mut ThinVec<u32>) {
|
||||
+//! let owned = mem::replace(data, ThinVec::new());
|
||||
+//! mem::drop(owned);
|
||||
+//! }
|
||||
+//!
|
||||
+//! // Mutate input, ok!
|
||||
+//! extern fn add_data(dataset: &mut ThinVec<u32>) {
|
||||
+//! 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<u32>) {
|
||||
+//! *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<T>` has no idea if the C++ version of `T` has move/copy/assign/delete overloads
|
||||
+//! * `nsTArray<T>` 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;
|
||||
|
||||
-// Heap shimming because reasons. This doesn't unfortunately match the heap api
|
||||
-// right now because reasons.
|
||||
-mod heap;
|
||||
+use impl_details::*;
|
||||
|
||||
-#[cfg(not(feature = "gecko-ffi"))]
|
||||
-type SizeType = usize;
|
||||
-#[cfg(feature = "gecko-ffi")]
|
||||
-type SizeType = u32;
|
||||
-
|
||||
-#[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
|
||||
+ }
|
||||
+
|
||||
+ #[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
|
||||
}
|
||||
- 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,
|
||||
@@ -56,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<T>(&self) -> *mut T {
|
||||
let header_size = mem::size_of::<Header>();
|
||||
let padding = padding::<T>();
|
||||
@@ -105,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
|
||||
@@ -121,9 +330,7 @@ extern {
|
||||
|
||||
// TODO: overflow checks everywhere
|
||||
|
||||
-// Utils
|
||||
-
|
||||
-fn oom() -> ! { std::process::abort() }
|
||||
+// Utils for computing layouts of allocations
|
||||
|
||||
fn alloc_size<T>(cap: usize) -> usize {
|
||||
// Compute "real" header size with pointer math
|
||||
@@ -156,15 +363,22 @@ fn alloc_align<T>() -> usize {
|
||||
max(mem::align_of::<T>(), mem::align_of::<Header>())
|
||||
}
|
||||
|
||||
-fn header_with_capacity<T>(cap: usize) -> NonNull<Header> {
|
||||
- debug_assert!(cap > 0);
|
||||
+fn layout<T>(cap: usize) -> Layout {
|
||||
unsafe {
|
||||
- let header = heap::allocate(
|
||||
+ Layout::from_size_align_unchecked(
|
||||
alloc_size::<T>(cap),
|
||||
alloc_align::<T>(),
|
||||
- ) as *mut Header;
|
||||
+ )
|
||||
+ }
|
||||
+}
|
||||
|
||||
- if header.is_null() { oom() }
|
||||
+fn header_with_capacity<T>(cap: usize) -> NonNull<Header> {
|
||||
+ debug_assert!(cap > 0);
|
||||
+ unsafe {
|
||||
+ let layout = layout::<T>(cap);
|
||||
+ let header = alloc(layout) as *mut Header;
|
||||
+
|
||||
+ if header.is_null() { handle_alloc_error(layout) }
|
||||
|
||||
// "Infinite" capacity for zero-sized types:
|
||||
(*header).set_cap(if mem::size_of::<T>() == 0 { MAX_CAP } else { cap });
|
||||
@@ -176,28 +390,8 @@ fn header_with_capacity<T>(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<T>. So `Vec<ThinVec<T>>` and `Option<ThinVec<T>>::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::<ThinVec<T>>()` == `size_of::<Option<ThinVec<T>>>()`
|
||||
-/// * NOTE: This is only possible when the `unstable` feature is used.
|
||||
-///
|
||||
-/// Properties of Vec that aren't preserved:
|
||||
-/// * `ThinVec<T>` 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<T> {
|
||||
ptr: NonNull<Header>,
|
||||
boo: PhantomData<T>,
|
||||
@@ -627,15 +821,15 @@ impl<T> ThinVec<T> {
|
||||
}
|
||||
|
||||
pub fn drain<R>(&mut self, range: R) -> Drain<T>
|
||||
- where R: RangeArgument<usize>
|
||||
+ where R: RangeBounds<usize>
|
||||
{
|
||||
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,
|
||||
@@ -666,9 +860,10 @@ impl<T> ThinVec<T> {
|
||||
|
||||
unsafe fn deallocate(&mut self) {
|
||||
if self.has_allocation() {
|
||||
- heap::deallocate(self.ptr() as *mut u8,
|
||||
- alloc_size::<T>(self.capacity()),
|
||||
- alloc_align::<T>());
|
||||
+ dealloc(
|
||||
+ self.ptr() as *mut u8,
|
||||
+ layout::<T>(self.capacity()),
|
||||
+ )
|
||||
}
|
||||
}
|
||||
|
||||
@@ -678,15 +873,36 @@ impl<T> ThinVec<T> {
|
||||
debug_assert!(new_cap > 0);
|
||||
if self.has_allocation() {
|
||||
let old_cap = self.capacity();
|
||||
- let ptr = heap::reallocate(self.ptr() as *mut u8,
|
||||
- alloc_size::<T>(old_cap),
|
||||
- alloc_size::<T>(new_cap),
|
||||
- alloc_align::<T>()) as *mut Header;
|
||||
- if ptr.is_null() { oom() }
|
||||
+ let ptr = realloc(
|
||||
+ self.ptr() as *mut u8,
|
||||
+ layout::<T>(old_cap),
|
||||
+ alloc_size::<T>(new_cap),
|
||||
+ ) as *mut Header;
|
||||
+
|
||||
+ if ptr.is_null() { handle_alloc_error(layout::<T>(new_cap)) }
|
||||
(*ptr).set_cap(new_cap);
|
||||
self.ptr = NonNull::new_unchecked(ptr);
|
||||
} else {
|
||||
- self.ptr = header_with_capacity::<T>(new_cap);
|
||||
+ let mut new_header = header_with_capacity::<T>(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::<T>().copy_from_nonoverlapping(self.data_raw(), len);
|
||||
+ self.set_len(0);
|
||||
+ }
|
||||
+
|
||||
+ self.ptr = new_header;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1087,10 +1303,7 @@ mod tests {
|
||||
use std::mem::size_of;
|
||||
assert_eq!(size_of::<ThinVec<u8>>(), size_of::<&u8>());
|
||||
|
||||
- // We don't perform the null-pointer optimization on stable rust.
|
||||
- if cfg!(feature = "unstable") {
|
||||
- assert_eq!(size_of::<Option<ThinVec<u8>>>(), size_of::<&u8>());
|
||||
- }
|
||||
+ assert_eq!(size_of::<Option<ThinVec<u8>>>(), size_of::<&u8>());
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -1725,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'];
|
||||
@@ -1755,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()); }
|
||||
@@ -1775,7 +1988,6 @@ mod std_tests {
|
||||
let mut v = thin_vec![1, 2, 3, 4, 5];
|
||||
v.drain(5..=5);
|
||||
}
|
||||
-*/
|
||||
|
||||
/* TODO: implement splice?
|
||||
#[test]
|
||||
@@ -2181,7 +2393,7 @@ mod std_tests {
|
||||
assert!(v.capacity() >= 33)
|
||||
}
|
||||
|
||||
-/* TODO: implement try_reserve
|
||||
+/* TODO: implement try_reserve
|
||||
#[test]
|
||||
fn test_try_reserve() {
|
||||
|
||||
diff -up firefox-78.1.0/third_party/rust/thin-vec/src/range.rs.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/src/range.rs
|
||||
diff -up firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml
|
||||
--- firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:29.000000000 +0200
|
||||
+++ firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml 2020-08-17 17:04:24.135598590 +0200
|
||||
@@ -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" }
|
||||
diff -up firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml
|
||||
--- firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:30.000000000 +0200
|
||||
+++ firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml 2020-08-17 17:04:24.135598590 +0200
|
||||
@@ -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"
|
||||
diff -up firefox-78.1.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/kvstore/Cargo.toml
|
||||
--- firefox-78.1.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:30.000000000 +0200
|
||||
+++ firefox-78.1.0/toolkit/components/kvstore/Cargo.toml 2020-08-17 17:04:24.135598590 +0200
|
||||
@@ -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.
|
||||
diff -up firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml
|
||||
--- firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:30.000000000 +0200
|
||||
+++ firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml 2020-08-17 17:04:24.135598590 +0200
|
||||
@@ -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"]
|
||||
diff -up firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml
|
||||
--- firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:30.000000000 +0200
|
||||
+++ firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml 2020-08-17 17:04:24.135598590 +0200
|
||||
@@ -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]
|
||||
diff -up firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml
|
||||
--- firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml.D87019-thin-vec-big-endian.diff 2020-07-22 17:56:30.000000000 +0200
|
||||
+++ firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml 2020-08-17 17:04:24.136598593 +0200
|
||||
@@ -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"] }
|
@ -1,12 +0,0 @@
|
||||
diff -up firefox-60.0/gfx/qcms/transform-altivec.c.debug firefox-60.0/gfx/qcms/transform-altivec.c
|
||||
--- firefox-60.0/gfx/qcms/transform-altivec.c.debug 2018-05-15 09:26:43.603043100 +0200
|
||||
+++ firefox-60.0/gfx/qcms/transform-altivec.c 2018-05-15 09:28:57.302385632 +0200
|
||||
@@ -30,7 +30,7 @@
|
||||
static const ALIGN float floatScaleX4 = FLOATSCALE;
|
||||
static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
|
||||
|
||||
-inline vector float load_aligned_float(float *dataPtr)
|
||||
+static vector float load_aligned_float(float *dataPtr)
|
||||
{
|
||||
vector float data = vec_lde(0, dataPtr);
|
||||
vector unsigned char moveToStart = vec_lvsl(0, dataPtr);
|
@ -1,13 +0,0 @@
|
||||
diff -up firefox-68.0/build/autoconf/icu.m4.icu firefox-68.0/build/autoconf/icu.m4
|
||||
--- firefox-68.0/build/autoconf/icu.m4.icu 2019-06-25 21:25:25.394425654 +0200
|
||||
+++ firefox-68.0/build/autoconf/icu.m4 2019-06-25 21:26:23.544210474 +0200
|
||||
@@ -78,7 +78,7 @@ if test -n "$USE_ICU"; then
|
||||
# TODO: the l is actually endian-dependent
|
||||
# We could make this set as 'l' or 'b' for little or big, respectively,
|
||||
# but we'd need to check in a big-endian version of the file.
|
||||
- ICU_DATA_FILE="icudt${version}l.dat"
|
||||
+ ICU_DATA_FILE="icudt${version}b.dat"
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_ICU_VERSION)
|
||||
|
@ -1,47 +0,0 @@
|
||||
diff -up firefox-68.0/config/rules.mk.old firefox-68.0/config/rules.mk
|
||||
--- firefox-68.0/config/rules.mk.old 2019-06-26 09:36:58.537034443 +0200
|
||||
+++ firefox-68.0/config/rules.mk 2019-06-26 09:37:38.004970573 +0200
|
||||
@@ -569,7 +569,6 @@ ifdef MOZ_PROFILE_GENERATE
|
||||
endif
|
||||
else # !WINNT || GNU_CC
|
||||
$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $($(notdir $@)_$(OBJS_VAR_SUFFIX)) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS)
|
||||
- $(call py_action,check_binary,--target $@)
|
||||
endif # WINNT && !GNU_CC
|
||||
|
||||
ifdef ENABLE_STRIP
|
||||
@@ -604,9 +603,6 @@ else
|
||||
$(HOST_CC) -o $@ $(HOST_C_LDFLAGS) $(HOST_LDFLAGS) $($(notdir $@)_OBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
endif # HOST_CPP_PROG_LINK
|
||||
endif
|
||||
-ifndef CROSS_COMPILE
|
||||
- $(call py_action,check_binary,--host $@)
|
||||
-endif
|
||||
|
||||
#
|
||||
# This is an attempt to support generation of multiple binaries
|
||||
@@ -630,7 +626,6 @@ ifdef MSMANIFEST_TOOL
|
||||
endif # MSVC with manifest tool
|
||||
else
|
||||
$(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $($@_$(OBJS_VAR_SUFFIX)) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS)
|
||||
- $(call py_action,check_binary,--target $@)
|
||||
endif # WINNT && !GNU_CC
|
||||
|
||||
ifdef ENABLE_STRIP
|
||||
@@ -651,9 +646,6 @@ else
|
||||
$(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_C_LDFLAGS) $($(notdir $@)_OBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
endif
|
||||
endif
|
||||
-ifndef CROSS_COMPILE
|
||||
- $(call py_action,check_binary,--host $@)
|
||||
-endif
|
||||
|
||||
$(LIBRARY): $(OBJS) $(STATIC_LIBS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
||||
$(REPORT_BUILD)
|
||||
@@ -691,7 +683,6 @@ ifndef INCREMENTAL_LINKER
|
||||
$(RM) $@
|
||||
endif
|
||||
$(MKSHLIB) $($@_$(OBJS_VAR_SUFFIX)) $(RESFILE) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(OS_LIBS)
|
||||
- $(call py_action,check_binary,--target $@)
|
||||
|
||||
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
||||
ifdef MSMANIFEST_TOOL
|
@ -5,12 +5,10 @@ ac_add_options --enable-default-toolkit=cairo-gtk3
|
||||
ac_add_options --prefix="$PREFIX"
|
||||
ac_add_options --libdir="$LIBDIR"
|
||||
ac_add_options --with-system-zlib
|
||||
ac_add_options --with-system-bz2
|
||||
ac_add_options --disable-strip
|
||||
ac_add_options --disable-tests
|
||||
#ac_add_options --enable-libnotify
|
||||
ac_add_options --enable-necko-wifi
|
||||
ac_add_options --enable-startup-notification
|
||||
ac_add_options --disable-updater
|
||||
ac_add_options --enable-chrome-format=omni
|
||||
ac_add_options --enable-pulseaudio
|
||||
@ -19,6 +17,7 @@ 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-av1
|
||||
ac_add_options --allow-addon-sideload
|
||||
|
||||
export BUILD_OFFICIAL=1
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
@ -18,6 +18,19 @@ index 2081d0c683a4..641133bf1ea4 100644
|
||||
'pixman.h',
|
||||
'pk11func.h',
|
||||
'pk11pqg.h',
|
||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
||||
index ba885217b3ba..201d3b755221 100644
|
||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
||||
@@ -158,7 +158,7 @@ if (rtc_include_tests) {
|
||||
if (is_linux) {
|
||||
if (rtc_use_pipewire) {
|
||||
pkg_config("pipewire") {
|
||||
- packages = [ "libpipewire-0.2" ]
|
||||
+ packages = [ "libpipewire-0.3" ]
|
||||
|
||||
defines = [ "WEBRTC_USE_PIPEWIRE" ]
|
||||
}
|
||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||
index 90b40431c7e4..d844aa79d591 100644
|
||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||
@ -67,7 +80,7 @@ index 1eb8ead26efa..316468eed1fc 100644
|
||||
};
|
||||
|
||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
index 379341c833de..53e2683df2e8 100644
|
||||
index 379341c833de..76349f1fbd4d 100644
|
||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
@@ -15,8 +15,11 @@
|
||||
@ -250,13 +263,13 @@ index 379341c833de..53e2683df2e8 100644
|
||||
- pw_buffer* buf = nullptr;
|
||||
+ struct pw_buffer *next_buffer;
|
||||
+ struct pw_buffer *buffer = nullptr;
|
||||
|
||||
- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) {
|
||||
+
|
||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||
+ while (next_buffer) {
|
||||
+ buffer = next_buffer;
|
||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||
+
|
||||
|
||||
- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) {
|
||||
+ if (next_buffer)
|
||||
+ pw_stream_queue_buffer (that->pw_stream_, buffer);
|
||||
+ }
|
||||
@ -365,7 +378,7 @@ index 379341c833de..53e2683df2e8 100644
|
||||
|
||||
if (pw_thread_loop_start(pw_main_loop_) < 0) {
|
||||
RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
|
||||
@@ -278,81 +266,120 @@ void BaseCapturerPipeWire::InitPipeWire() {
|
||||
@@ -278,81 +266,132 @@ void BaseCapturerPipeWire::InitPipeWire() {
|
||||
}
|
||||
}
|
||||
|
||||
@ -476,14 +489,27 @@ index 379341c833de..53e2683df2e8 100644
|
||||
+ map = static_cast<uint8_t*>(mmap(
|
||||
+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0));
|
||||
+
|
||||
+ if (map == MAP_FAILED) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
||||
+ } else if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
||||
+ int fd;
|
||||
+ fd = spaBuffer->datas[0].fd;
|
||||
+
|
||||
|
||||
- if (!(src = spaBuffer->datas[0].data)) {
|
||||
+ map = static_cast<uint8_t*>(mmap(
|
||||
+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ PROT_READ, MAP_PRIVATE, fd, 0));
|
||||
+
|
||||
+ if (map == MAP_FAILED) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ SyncDmaBuf(fd, DMA_BUF_SYNC_START);
|
||||
+
|
||||
+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
||||
@ -491,16 +517,15 @@ index 379341c833de..53e2683df2e8 100644
|
||||
+ map = nullptr;
|
||||
+ src = static_cast<uint8_t*>(spaBuffer->datas[0].data);
|
||||
+ } else {
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
- if (!(src = spaBuffer->datas[0].data)) {
|
||||
+ if (!src) {
|
||||
return;
|
||||
}
|
||||
|
||||
- uint32_t maxSize = spaBuffer->datas[0].maxsize;
|
||||
- int32_t srcStride = spaBuffer->datas[0].chunk->stride;
|
||||
+ if (!src) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ DesktopSize prev_crop_size = DesktopSize(0, 0);
|
||||
+ if (video_crop_size_initialized_) {
|
||||
+ prev_crop_size = video_crop_size_;
|
||||
@ -544,7 +569,7 @@ index 379341c833de..53e2683df2e8 100644
|
||||
if (srcStride != (desktop_size_.width() * kBytesPerPixel)) {
|
||||
RTC_LOG(LS_ERROR) << "Got buffer with stride different from screen stride: "
|
||||
<< srcStride
|
||||
@@ -361,21 +388,40 @@ void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
|
||||
@@ -361,21 +400,40 @@ void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -598,7 +623,7 @@ index 379341c833de..53e2683df2e8 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -725,10 +771,7 @@ void BaseCapturerPipeWire::OnStartRequestResponseSignal(
|
||||
@@ -725,10 +783,7 @@ void BaseCapturerPipeWire::OnStartRequestResponseSignal(
|
||||
g_variant_get(variant, "(u@a{sv})", &stream_id, &options);
|
||||
RTC_DCHECK(options != nullptr);
|
||||
|
||||
@ -610,7 +635,7 @@ index 379341c833de..53e2683df2e8 100644
|
||||
g_variant_unref(options);
|
||||
g_variant_unref(variant);
|
||||
}
|
||||
@@ -813,10 +856,15 @@ void BaseCapturerPipeWire::CaptureFrame() {
|
||||
@@ -813,10 +868,15 @@ void BaseCapturerPipeWire::CaptureFrame() {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -629,7 +654,7 @@ index 379341c833de..53e2683df2e8 100644
|
||||
if (!result) {
|
||||
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
||||
return;
|
||||
@@ -837,4 +885,22 @@ bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
||||
@@ -837,4 +897,22 @@ bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -39,12 +39,12 @@ cmdname=`basename $0`
|
||||
MOZ_ARCH=$(uname -m)
|
||||
case $MOZ_ARCH in
|
||||
x86_64 | s390x | sparc64)
|
||||
MOZ_LIB_DIR="/usr/lib64"
|
||||
SECONDARY_LIB_DIR="/usr/lib"
|
||||
MOZ_LIB_DIR="%PREFIX%/lib64"
|
||||
SECONDARY_LIB_DIR="%PREFIX%/lib"
|
||||
;;
|
||||
* )
|
||||
MOZ_LIB_DIR="/usr/lib"
|
||||
SECONDARY_LIB_DIR="/usr/lib64"
|
||||
MOZ_LIB_DIR="%PREFIX%/lib"
|
||||
SECONDARY_LIB_DIR="%PREFIX%/lib64"
|
||||
;;
|
||||
esac
|
||||
|
||||
@ -98,7 +98,7 @@ export MOZ_PLUGIN_PATH
|
||||
##
|
||||
## Set MOZ_APP_LAUNCHER for gnome-session
|
||||
##
|
||||
export MOZ_APP_LAUNCHER="/usr/bin/firefox"
|
||||
export MOZ_APP_LAUNCHER="%PREFIX%/bin/firefox"
|
||||
|
||||
##
|
||||
## Set FONTCONFIG_PATH for Xft/fontconfig
|
||||
@ -153,20 +153,11 @@ export MOZ_USE_XINPUT2=1
|
||||
##
|
||||
FEDORA_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.fedora-langpack-install"
|
||||
|
||||
# Since Firefox 60 the installation of individual langpack cannot be done by
|
||||
# copying xpi file to the home directory, because the langpack is loaded
|
||||
# as to the available languages after the language has been decided and
|
||||
# for the first run it won't be in language according to the locale.
|
||||
#
|
||||
# The current workaround is to put all langpacks to the location
|
||||
# for system wide extensions. So we set MOZ_DISABLE_LANGPACKS=1 for this moment
|
||||
export MOZ_DISABLE_LANGPACKS=1
|
||||
# MOZ_DISABLE_LANGPACKS disables language packs completely
|
||||
MOZILLA_DOWN=0
|
||||
if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
|
||||
if [ -x $MOZ_DIST_BIN/$MOZ_FIREFOX_FILE ]; then
|
||||
# Is firefox running?
|
||||
/usr/bin/pidof firefox > /dev/null 2>&1
|
||||
pidof firefox > /dev/null 2>&1
|
||||
MOZILLA_DOWN=$?
|
||||
fi
|
||||
fi
|
||||
|
@ -1,7 +1,7 @@
|
||||
diff -up firefox-68.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-68.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
|
||||
--- firefox-68.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2020-02-07 01:27:03.000000000 +0100
|
||||
+++ firefox-68.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2020-02-24 11:30:32.058044651 +0100
|
||||
@@ -246,8 +246,20 @@ nsresult nsReadConfig::openAndEvaluateJS
|
||||
diff -up firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
|
||||
--- firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2020-06-17 04:18:58.000000000 +0200
|
||||
+++ firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2020-06-25 13:45:28.816999491 +0200
|
||||
@@ -244,8 +244,20 @@ nsresult nsReadConfig::openAndEvaluateJS
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
|
||||
@ -23,10 +23,10 @@ diff -up firefox-68.5.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092
|
||||
} else {
|
||||
nsAutoCString location("resource://gre/defaults/autoconfig/");
|
||||
location += aFileName;
|
||||
diff -up firefox-68.5.0/modules/libpref/Preferences.cpp.1170092 firefox-68.5.0/modules/libpref/Preferences.cpp
|
||||
--- firefox-68.5.0/modules/libpref/Preferences.cpp.1170092 2020-02-24 11:30:32.059044645 +0100
|
||||
+++ firefox-68.5.0/modules/libpref/Preferences.cpp 2020-02-24 11:35:14.613443673 +0100
|
||||
@@ -4436,6 +4436,8 @@ static nsresult pref_ReadDefaultPrefs(co
|
||||
diff -up firefox-78.0/modules/libpref/Preferences.cpp.1170092 firefox-78.0/modules/libpref/Preferences.cpp
|
||||
--- firefox-78.0/modules/libpref/Preferences.cpp.1170092 2020-06-25 13:45:28.818999498 +0200
|
||||
+++ firefox-78.0/modules/libpref/Preferences.cpp 2020-06-25 13:48:45.996708102 +0200
|
||||
@@ -4499,6 +4499,8 @@ nsresult Preferences::InitInitialObjects
|
||||
//
|
||||
// Thus, in the omni.jar case, we always load app-specific default
|
||||
// preferences from omni.jar, whether or not `$app == $gre`.
|
||||
@ -34,11 +34,11 @@ diff -up firefox-68.5.0/modules/libpref/Preferences.cpp.1170092 firefox-68.5.0/m
|
||||
+ // - /etc/firefox/pref/*.js
|
||||
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
nsZipFind* findPtr;
|
||||
diff -up firefox-68.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-68.5.0/toolkit/xre/nsXREDirProvider.cpp
|
||||
--- firefox-68.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2020-02-07 01:28:06.000000000 +0100
|
||||
+++ firefox-68.5.0/toolkit/xre/nsXREDirProvider.cpp 2020-02-24 11:34:27.284704700 +0100
|
||||
@@ -61,6 +61,7 @@
|
||||
UniquePtr<nsZipFind> find;
|
||||
diff -up firefox-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-78.0/toolkit/xre/nsXREDirProvider.cpp
|
||||
--- firefox-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2020-06-17 04:20:11.000000000 +0200
|
||||
+++ firefox-78.0/toolkit/xre/nsXREDirProvider.cpp 2020-06-25 13:48:28.613645633 +0200
|
||||
@@ -60,6 +60,7 @@
|
||||
#endif
|
||||
#ifdef XP_UNIX
|
||||
# include <ctype.h>
|
||||
@ -46,7 +46,7 @@ diff -up firefox-68.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-68.5.0/
|
||||
#endif
|
||||
#ifdef XP_IOS
|
||||
# include "UIKitDirProvider.h"
|
||||
@@ -524,6 +525,21 @@ nsXREDirProvider::GetFile(const char* aP
|
||||
@@ -533,6 +534,21 @@ nsXREDirProvider::GetFile(const char* aP
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -68,9 +68,9 @@ diff -up firefox-68.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-68.5.0/
|
||||
if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE;
|
||||
|
||||
if (ensureFilePermissions) {
|
||||
@@ -880,6 +896,17 @@ nsresult nsXREDirProvider::GetFilesInter
|
||||
@@ -845,6 +861,17 @@ nsresult nsXREDirProvider::GetFilesInter
|
||||
|
||||
LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories);
|
||||
LoadDirsIntoArray(mAppBundleDirectories, kAppendPrefDir, directories);
|
||||
|
||||
+ // Add /etc/<application>/pref/ directory if it exists
|
||||
+ nsCOMPtr<nsIFile> systemPrefDir;
|
||||
@ -86,10 +86,10 @@ diff -up firefox-68.5.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-68.5.0/
|
||||
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-68.5.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-68.5.0/xpcom/io/nsAppDirectoryServiceDefs.h
|
||||
--- firefox-68.5.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2020-02-07 01:27:52.000000000 +0100
|
||||
+++ firefox-68.5.0/xpcom/io/nsAppDirectoryServiceDefs.h 2020-02-24 11:30:32.059044645 +0100
|
||||
@@ -62,6 +62,7 @@
|
||||
diff -up firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h
|
||||
--- firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2020-06-17 04:20:17.000000000 +0200
|
||||
+++ firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h 2020-06-25 13:45:28.819999502 +0200
|
||||
@@ -60,6 +60,7 @@
|
||||
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
|
||||
#define NS_APP_PREFS_OVERRIDE_DIR \
|
||||
"PrefDOverride" // Directory for per-profile defaults
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff --git a/intl/strres/nsStringBundle.cpp b/intl/strres/nsStringBundle.cpp
|
||||
--- a/intl/strres/nsStringBundle.cpp
|
||||
+++ b/intl/strres/nsStringBundle.cpp
|
||||
@@ -66,7 +66,6 @@
|
||||
"chrome://global/locale/commonDialogs.properties",
|
||||
"chrome://global/locale/css.properties",
|
||||
"chrome://global/locale/dom/dom.properties",
|
||||
- "chrome://global/locale/intl.properties",
|
||||
"chrome://global/locale/layout/HtmlForm.properties",
|
||||
"chrome://global/locale/layout/htmlparser.properties",
|
||||
"chrome://global/locale/layout_errors.properties",
|
||||
|
@ -1,15 +1,7 @@
|
||||
# HG changeset patch
|
||||
# User Steve Singer <steve@ssinger.info>
|
||||
# Date 1558451540 -7200
|
||||
# Tue May 21 17:12:20 2019 +0200
|
||||
# Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad
|
||||
# Parent 42c99b59a87b904063bad3193f10c51d068d2eac
|
||||
Bug 1005535 - Get skia GPU building on big endian.
|
||||
|
||||
diff -r 42c99b59a87b -r 433beec63e6b gfx/skia/skia/include/private/GrColor.h
|
||||
--- a/gfx/skia/skia/include/private/GrColor.h Wed Jun 05 08:48:08 2019 +0200
|
||||
+++ b/gfx/skia/skia/include/private/GrColor.h Tue May 21 17:12:20 2019 +0200
|
||||
@@ -63,7 +63,7 @@
|
||||
diff -up firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h.mozilla.bmo1005535 firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h
|
||||
--- firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h.mozilla.bmo1005535 2020-06-25 16:16:34.459083304 +0200
|
||||
+++ firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h 2020-06-25 16:17:00.968174743 +0200
|
||||
@@ -64,7 +64,7 @@ static inline GrColor GrColorPackRGBA(un
|
||||
* Since premultiplied means that alpha >= color, we construct a color with
|
||||
* each component==255 and alpha == 0 to be "illegal"
|
||||
*/
|
||||
|
@ -1,11 +1,7 @@
|
||||
# HG changeset patch
|
||||
# Parent 051b75a600dfbf7503c3485cebfd34d4eb29be96
|
||||
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834
|
||||
|
||||
diff -r 051b75a600df gfx/2d/DrawTargetSkia.cpp
|
||||
--- a/gfx/2d/DrawTargetSkia.cpp Fri Jul 05 12:42:44 2019 +0200
|
||||
+++ b/gfx/2d/DrawTargetSkia.cpp Mon Jul 08 10:59:30 2019 +0200
|
||||
@@ -138,8 +138,7 @@
|
||||
diff -up firefox-78.0/gfx/2d/DrawTargetSkia.cpp.mozilla-bmo1504834-part1 firefox-78.0/gfx/2d/DrawTargetSkia.cpp
|
||||
--- firefox-78.0/gfx/2d/DrawTargetSkia.cpp.mozilla-bmo1504834-part1 2020-06-17 04:18:58.000000000 +0200
|
||||
+++ firefox-78.0/gfx/2d/DrawTargetSkia.cpp 2020-06-25 16:52:29.824532769 +0200
|
||||
@@ -135,8 +135,7 @@ static IntRect CalculateSurfaceBounds(co
|
||||
return surfaceBounds.Intersect(bounds);
|
||||
}
|
||||
|
||||
@ -15,48 +11,48 @@ diff -r 051b75a600df gfx/2d/DrawTargetSkia.cpp
|
||||
|
||||
static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
|
||||
const int32_t aStride, SurfaceFormat aFormat) {
|
||||
diff -r 051b75a600df gfx/2d/Types.h
|
||||
--- a/gfx/2d/Types.h Fri Jul 05 12:42:44 2019 +0200
|
||||
+++ b/gfx/2d/Types.h Mon Jul 08 10:59:30 2019 +0200
|
||||
@@ -85,15 +85,8 @@
|
||||
diff -up firefox-78.0/gfx/2d/Types.h.mozilla-bmo1504834-part1 firefox-78.0/gfx/2d/Types.h
|
||||
--- firefox-78.0/gfx/2d/Types.h.mozilla-bmo1504834-part1 2020-06-25 16:52:29.826532776 +0200
|
||||
+++ firefox-78.0/gfx/2d/Types.h 2020-06-25 16:55:02.942063616 +0200
|
||||
@@ -90,15 +90,8 @@ enum class SurfaceFormat : int8_t {
|
||||
// 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
|
||||
-#if MOZ_LITTLE_ENDIAN()
|
||||
A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB
|
||||
X8R8G8B8_UINT32 = B8G8R8X8 // 0x00RRGGBB
|
||||
-#elif MOZ_BIG_ENDIAN
|
||||
X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB
|
||||
-#elif MOZ_BIG_ENDIAN()
|
||||
- A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB
|
||||
- X8R8G8B8_UINT32 = X8R8G8B8 // 0x00RRGGBB
|
||||
- X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB
|
||||
-#else
|
||||
-# error "bad endianness"
|
||||
-#endif
|
||||
};
|
||||
|
||||
static inline int BytesPerPixel(SurfaceFormat aFormat) {
|
||||
diff -r 051b75a600df gfx/skia/skia/third_party/skcms/skcms.cc
|
||||
--- a/gfx/skia/skia/third_party/skcms/skcms.cc Fri Jul 05 12:42:44 2019 +0200
|
||||
+++ b/gfx/skia/skia/third_party/skcms/skcms.cc Mon Jul 08 10:59:30 2019 +0200
|
||||
@@ -17,6 +17,8 @@
|
||||
#include <arm_neon.h>
|
||||
#elif defined(__SSE__)
|
||||
#include <immintrin.h>
|
||||
// The following values are OS and endian-independent synonyms.
|
||||
//
|
||||
diff -up firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc.mozilla-bmo1504834-part1 firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc
|
||||
--- firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc.mozilla-bmo1504834-part1 2020-06-17 04:18:58.000000000 +0200
|
||||
+++ firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc 2020-06-25 16:54:02.993855444 +0200
|
||||
@@ -30,6 +30,8 @@
|
||||
#include <avx512fintrin.h>
|
||||
#include <avx512dqintrin.h>
|
||||
#endif
|
||||
+#else
|
||||
+ #define SKCMS_PORTABLE
|
||||
#endif
|
||||
|
||||
// sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
|
||||
@@ -124,20 +126,28 @@
|
||||
@@ -280,20 +282,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
|
||||
+ #if defined(_MSC_VER)
|
||||
return _byteswap_ushort(be);
|
||||
-#else
|
||||
+ return _byteswap_ushort(be);
|
||||
+ #else
|
||||
return __builtin_bswap16(be);
|
||||
+ #endif
|
||||
@ -67,12 +63,12 @@ diff -r 051b75a600df gfx/skia/skia/third_party/skcms/skcms.cc
|
||||
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
|
||||
+ #if defined(_MSC_VER)
|
||||
return _byteswap_ulong(be);
|
||||
-#else
|
||||
+ return _byteswap_ulong(be);
|
||||
+ #else
|
||||
return __builtin_bswap32(be);
|
||||
+ #endif
|
||||
|
86
SOURCES/mozilla-bmo1626236.patch
Normal file
86
SOURCES/mozilla-bmo1626236.patch
Normal file
@ -0,0 +1,86 @@
|
||||
# HG changeset patch
|
||||
# User msirringhaus@suse.de
|
||||
# Date 1582805876 -3600
|
||||
# Thu Feb 27 13:17:56 2020 +0100
|
||||
# Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158
|
||||
# Parent 9cd90914846f667f18babc491a74c164ae5d6e9f
|
||||
imported patch decoder_workaround.patch
|
||||
|
||||
diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp
|
||||
--- a/image/decoders/nsGIFDecoder2.cpp Thu Feb 27 12:57:14 2020 +0100
|
||||
+++ b/image/decoders/nsGIFDecoder2.cpp Fri Mar 27 13:06:18 2020 +0100
|
||||
@@ -422,6 +422,9 @@
|
||||
MOZ_ASSERT(mSwizzleFn);
|
||||
uint8_t* data = reinterpret_cast<uint8_t*>(aColormap);
|
||||
mSwizzleFn(data, data, aColors);
|
||||
+#if MOZ_BIG_ENDIAN()
|
||||
+ SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors);
|
||||
+#endif
|
||||
}
|
||||
|
||||
LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator,
|
||||
diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp
|
||||
--- a/image/decoders/nsJPEGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
|
||||
+++ b/image/decoders/nsJPEGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
|
||||
@@ -263,6 +263,9 @@
|
||||
case JCS_YCbCr:
|
||||
// By default, we will output directly to BGRA. If we need to apply
|
||||
// special color transforms, this may change.
|
||||
+#if MOZ_BIG_ENDIAN()
|
||||
+ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB;
|
||||
+#else
|
||||
switch (SurfaceFormat::OS_RGBX) {
|
||||
case SurfaceFormat::B8G8R8X8:
|
||||
mInfo.out_color_space = JCS_EXT_BGRX;
|
||||
@@ -277,6 +280,7 @@
|
||||
mState = JPEG_ERROR;
|
||||
return Transition::TerminateFailure();
|
||||
}
|
||||
+#endif
|
||||
break;
|
||||
case JCS_CMYK:
|
||||
case JCS_YCCK:
|
||||
diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp
|
||||
--- a/image/decoders/nsPNGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
|
||||
+++ b/image/decoders/nsPNGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
|
||||
@@ -361,7 +361,7 @@
|
||||
IResumable* aOnResume) {
|
||||
MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!");
|
||||
|
||||
- return mLexer.Lex(aIterator, aOnResume,
|
||||
+ LexerResult res = mLexer.Lex(aIterator, aOnResume,
|
||||
[=](State aState, const char* aData, size_t aLength) {
|
||||
switch (aState) {
|
||||
case State::PNG_DATA:
|
||||
@@ -371,6 +371,14 @@
|
||||
}
|
||||
MOZ_CRASH("Unknown State");
|
||||
});
|
||||
+
|
||||
+#if MOZ_BIG_ENDIAN()
|
||||
+ if(res.is<TerminalState>() && res.as<TerminalState>() == TerminalState::SUCCESS) {
|
||||
+ NativeEndian::swapToLittleEndianInPlace<uint32_t>((uint32_t*)(mImageData), mImageDataLength / 4);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ return res;
|
||||
}
|
||||
|
||||
LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData(
|
||||
diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp
|
||||
--- a/image/decoders/nsWebPDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
|
||||
+++ b/image/decoders/nsWebPDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
|
||||
@@ -237,7 +237,12 @@
|
||||
// WebP doesn't guarantee that the alpha generated matches the hint in the
|
||||
// header, so we always need to claim the input is BGRA. If the output is
|
||||
// BGRX, swizzling will mask off the alpha channel.
|
||||
+#if MOZ_BIG_ENDIAN()
|
||||
+ mBuffer.colorspace = MODE_ARGB;
|
||||
+ SurfaceFormat inFormat = mFormat;
|
||||
+#else
|
||||
SurfaceFormat inFormat = SurfaceFormat::OS_RGBA;
|
||||
+#endif
|
||||
|
||||
SurfacePipeFlags pipeFlags = SurfacePipeFlags();
|
||||
if (mFormat == SurfaceFormat::OS_RGBA &&
|
||||
|
30
SOURCES/mozilla-bmo998749.patch
Normal file
30
SOURCES/mozilla-bmo998749.patch
Normal file
@ -0,0 +1,30 @@
|
||||
# HG changeset patch
|
||||
# User msirringhaus@suse.de
|
||||
# Date 1583738770 -3600
|
||||
# Mon Mar 09 08:26:10 2020 +0100
|
||||
# Node ID 34676feac1a542e409e22acf5b98735f8313b1ce
|
||||
# Parent 506857dace0a08d1c9685e3ac264646590b3e27f
|
||||
[mq]: mozilla-bmo998749.patch
|
||||
|
||||
diff -r 506857dace0a -r 34676feac1a5 gfx/2d/FilterProcessing.h
|
||||
--- a/gfx/2d/FilterProcessing.h Fri Feb 28 12:31:51 2020 +0100
|
||||
+++ b/gfx/2d/FilterProcessing.h Mon Mar 09 08:26:10 2020 +0100
|
||||
@@ -13,10 +13,17 @@
|
||||
namespace mozilla {
|
||||
namespace gfx {
|
||||
|
||||
+#if MOZ_BIG_ENDIAN()
|
||||
+const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 3;
|
||||
+const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 2;
|
||||
+const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 1;
|
||||
+const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 0;
|
||||
+#else
|
||||
const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 0;
|
||||
const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 1;
|
||||
const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 2;
|
||||
const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 3;
|
||||
+#endif
|
||||
|
||||
class FilterProcessing {
|
||||
public:
|
||||
|
@ -1,38 +0,0 @@
|
||||
# HG changeset patch
|
||||
# Parent 381102061fccdec40efda75c7423a766f68201ba
|
||||
Bug-behavior: Youtube-videos using VP9 and opus as audio-codec started loading but did not play
|
||||
Reason: While parsing the audio-stream, the sampling frequency (short rate) was wrongly parsed by
|
||||
nestegg, returning 0 all the time. This led to the audio-track reporting that it neither had
|
||||
valid video nor audio. Which led to an endless-loop in the video state machine.
|
||||
Solution: Correct parsing of rate in nestegg, which is a float and cuts of bytes.
|
||||
Link: https://github.com/kinetiknz/nestegg/issues/64
|
||||
|
||||
diff -r 381102061fcc -r 8da4be020b1e media/libnestegg/src/nestegg.c
|
||||
--- a/media/libnestegg/src/nestegg.c Tue Aug 13 07:51:27 2019 +0200
|
||||
+++ b/media/libnestegg/src/nestegg.c Tue Aug 20 07:59:54 2019 +0200
|
||||
@@ -768,7 +768,15 @@
|
||||
{
|
||||
union {
|
||||
uint64_t u;
|
||||
- float f;
|
||||
+ struct {
|
||||
+#if __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||
+ uint32_t _pad;
|
||||
+ float f;
|
||||
+#else
|
||||
+ float f;
|
||||
+ uint32_t _pad;
|
||||
+#endif
|
||||
+ } f;
|
||||
double d;
|
||||
} value;
|
||||
int r;
|
||||
@@ -780,7 +788,7 @@
|
||||
if (r != 1)
|
||||
return r;
|
||||
if (length == 4)
|
||||
- *val = value.f;
|
||||
+ *val = value.f.f;
|
||||
else
|
||||
*val = value.d;
|
||||
return 1;
|
52
SOURCES/mozilla-s390x-skia-gradient.patch
Normal file
52
SOURCES/mozilla-s390x-skia-gradient.patch
Normal file
@ -0,0 +1,52 @@
|
||||
# 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 <cmath>
|
||||
#include <utility>
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
|
||||
while (n >= 4) {
|
||||
DstTraits<premul>::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<premul>::store(c0, dst++, bias0);
|
||||
- DstTraits<premul>::store(c1, dst++, bias1);
|
||||
+ DstTraits<premul>::store(c0, dst, bias0);
|
||||
+#ifdef SK_CPU_BENDIAN
|
||||
+ *dst = SkEndianSwap32(*dst);
|
||||
+#endif
|
||||
+ ++dst;
|
||||
+ DstTraits<premul>::store(c1, dst, bias1);
|
||||
+#ifdef SK_CPU_BENDIAN
|
||||
+ *dst = SkEndianSwap32(*dst);
|
||||
+#endif
|
||||
+ ++dst;
|
||||
c0 = c0 + dc2;
|
||||
}
|
||||
if (n & 1) {
|
||||
DstTraits<premul>::store(c0, dst, bias0);
|
||||
+#ifdef SK_CPU_BENDIAN
|
||||
+ *dst = SkEndianSwap32(*dst);
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff -up firefox-68.0/config/makefiles/rust.mk.old firefox-68.0/config/makefiles/rust.mk
|
||||
--- firefox-68.0/config/makefiles/rust.mk.old 2019-06-05 10:33:34.290128660 +0200
|
||||
+++ firefox-68.0/config/makefiles/rust.mk 2019-06-05 10:33:59.835052814 +0200
|
||||
@@ -47,7 +47,7 @@ cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
|
||||
ifndef DEVELOPER_OPTIONS
|
||||
ifndef MOZ_DEBUG_RUST
|
||||
# Enable link-time optimization for release builds.
|
||||
-cargo_rustc_flags += -C lto
|
||||
+#cargo_rustc_flags += -C lto
|
||||
endif
|
||||
endif
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff -up firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c.old firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c
|
||||
--- firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c.old 2019-07-26 07:09:02.383303420 +0200
|
||||
+++ firefox-68.0/security/nss/lib/freebl/mpi/mpcpucache.c 2019-07-26 07:09:27.228193798 +0200
|
||||
@@ -727,7 +727,7 @@ static inline void
|
||||
dcbzl(char *array)
|
||||
{
|
||||
register char *a asm("r2") = array;
|
||||
- __asm__ __volatile__("dcbzl %0,r0"
|
||||
+ __asm__ __volatile__("dcbzl %0,0"
|
||||
: "=r"(a)
|
||||
: "0"(a));
|
||||
}
|
7
SOURCES/nss-setup-flags-env.inc
Normal file
7
SOURCES/nss-setup-flags-env.inc
Normal file
@ -0,0 +1,7 @@
|
||||
sed -i 's@%{gtk3_install_path}@%{_buildrootdir}%{gtk3_install_path}@g' %{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig/nss*.pc
|
||||
|
||||
export LDFLAGS="-L%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS"
|
||||
export LDFLAGS="-Wl,-rpath,%{gtk3_install_path}/%{_lib} $LDFLAGS"
|
||||
export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS"
|
||||
export PKG_CONFIG_PATH=%{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig
|
||||
export PATH="{_buildrootdir}%{gtk3_install_path}/bin:$PATH"
|
@ -1,7 +1,7 @@
|
||||
diff -up firefox-68.7.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 firefox-68.7.0/xpcom/base/AvailableMemoryTracker.cpp
|
||||
--- firefox-68.7.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 2020-04-03 21:30:08.000000000 +0200
|
||||
+++ firefox-68.7.0/xpcom/base/AvailableMemoryTracker.cpp 2020-04-23 21:15:56.015491502 +0200
|
||||
@@ -147,8 +147,12 @@ bool nsAvailableMemoryWatcher::IsVirtual
|
||||
diff -up firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp
|
||||
--- firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 2020-06-17 04:20:44.000000000 +0200
|
||||
+++ firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp 2020-06-25 14:50:46.369798294 +0200
|
||||
@@ -157,8 +157,12 @@ bool nsAvailableMemoryWatcher::IsVirtual
|
||||
|
||||
/* static */
|
||||
bool nsAvailableMemoryWatcher::IsCommitSpaceLow(const MEMORYSTATUSEX& aStat) {
|
||||
@ -16,7 +16,7 @@ diff -up firefox-68.7.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 firef
|
||||
sNumLowCommitSpaceEvents++;
|
||||
CrashReporter::AnnotateCrashReport(
|
||||
CrashReporter::Annotation::LowCommitSpaceEvents,
|
||||
@@ -206,13 +210,16 @@ void nsAvailableMemoryWatcher::AdjustPol
|
||||
@@ -210,12 +214,15 @@ void nsAvailableMemoryWatcher::AdjustPol
|
||||
// polling interval accordingly.
|
||||
NS_IMETHODIMP
|
||||
nsAvailableMemoryWatcher::Notify(nsITimer* aTimer) {
|
||||
@ -28,10 +28,9 @@ diff -up firefox-68.7.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 firef
|
||||
bool success = GlobalMemoryStatusEx(&stat);
|
||||
|
||||
- if (success) {
|
||||
+ if (success || forceLowMem) {
|
||||
bool lowMemory = IsVirtualMemoryLow(stat) || IsCommitSpaceLow(stat) ||
|
||||
- IsPhysicalMemoryLow(stat);
|
||||
+ IsPhysicalMemoryLow(stat) || forceLowMem;
|
||||
- bool lowMemory = IsVirtualMemoryLow(stat) || IsCommitSpaceLow(stat);
|
||||
+ if (success || forceLowMemory) {
|
||||
+ bool lowMemory = IsVirtualMemoryLow(stat) || IsCommitSpaceLow(stat || forceLowMem);
|
||||
|
||||
if (lowMemory) {
|
||||
SendMemoryPressureEvent();
|
||||
|
29
SOURCES/rhel6-abiv2-mozbz1642174.patch
Normal file
29
SOURCES/rhel6-abiv2-mozbz1642174.patch
Normal file
@ -0,0 +1,29 @@
|
||||
diff -up firefox-78.2.0/security/nss/lib/freebl/freebl.gyp.rhel6-abiv2-mozbz1642174 firefox-78.2.0/security/nss/lib/freebl/freebl.gyp
|
||||
--- firefox-78.2.0/security/nss/lib/freebl/freebl.gyp.rhel6-abiv2-mozbz1642174 2020-09-12 08:29:08.527410514 +0200
|
||||
+++ firefox-78.2.0/security/nss/lib/freebl/freebl.gyp 2020-09-12 08:42:26.279064334 +0200
|
||||
@@ -259,7 +259,7 @@
|
||||
'type': 'static_library',
|
||||
'sources': [
|
||||
'gcm-ppc.c',
|
||||
- 'sha512-p8.s',
|
||||
+ #'sha512-p8.s',
|
||||
],
|
||||
'dependencies': [
|
||||
'<(DEPTH)/exports.gyp:nss_exports'
|
||||
diff -up firefox-78.2.0/security/nss/lib/freebl/Makefile.rhel6-abiv2-mozbz1642174 firefox-78.2.0/security/nss/lib/freebl/Makefile
|
||||
--- firefox-78.2.0/security/nss/lib/freebl/Makefile.rhel6-abiv2-mozbz1642174 2020-08-17 20:34:06.000000000 +0200
|
||||
+++ firefox-78.2.0/security/nss/lib/freebl/Makefile 2020-09-12 08:28:08.089142990 +0200
|
||||
@@ -267,9 +267,12 @@ ifeq ($(CPU_ARCH),arm)
|
||||
endif
|
||||
ifeq ($(CPU_ARCH),ppc)
|
||||
EXTRA_SRCS += gcm-ppc.c
|
||||
- ASFILES += sha512-p8.s
|
||||
ifdef USE_64
|
||||
DEFINES += -DNSS_NO_INIT_SUPPORT
|
||||
+ #PPC_ABI := $(shell $(CC) -dM -E - < /dev/null | awk '$$2 == "_CALL_ELF" {print $$3}')
|
||||
+ # ifeq ($(PPC_ABI),2)
|
||||
+ # ASFILES += sha512-p8.s
|
||||
+ # endif
|
||||
endif # USE_64
|
||||
endif # ppc
|
||||
endif # Linux
|
27
SOURCES/rhel6-at-no-automount.patch
Normal file
27
SOURCES/rhel6-at-no-automount.patch
Normal file
@ -0,0 +1,27 @@
|
||||
diff -ru firefox-78.3.0/security/sandbox/linux/SandboxFilter.cpp firefox-78.4.0/security/sandbox/linux/SandboxFilter.cpp
|
||||
--- firefox-78.3.0/security/sandbox/linux/SandboxFilter.cpp 2020-09-14 21:21:02.000000000 +0200
|
||||
+++ firefox-78.4.0/security/sandbox/linux/SandboxFilter.cpp 2020-10-14 11:34:48.000000000 +0200
|
||||
@@ -243,14 +243,21 @@
|
||||
auto path = reinterpret_cast<const char*>(aArgs.args[1]);
|
||||
auto buf = reinterpret_cast<statstruct*>(aArgs.args[2]);
|
||||
auto flags = static_cast<int>(aArgs.args[3]);
|
||||
+
|
||||
+ if (fd != AT_FDCWD && (flags & AT_EMPTY_PATH) != 0 &&
|
||||
+ strcmp(path, "") == 0) {
|
||||
+ return ConvertError(fstatsyscall(fd, buf));
|
||||
+ }
|
||||
+
|
||||
if (fd != AT_FDCWD && path[0] != '/') {
|
||||
SANDBOX_LOG_ERROR("unsupported fd-relative fstatat(%d, \"%s\", %p, %d)",
|
||||
fd, path, buf, flags);
|
||||
return BlockedSyscallTrap(aArgs, nullptr);
|
||||
}
|
||||
- if ((flags & ~AT_SYMLINK_NOFOLLOW) != 0) {
|
||||
+ if ((flags & ~(AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT)) != 0) {
|
||||
SANDBOX_LOG_ERROR("unsupported flags %d in fstatat(%d, \"%s\", %p, %d)",
|
||||
- (flags & ~AT_SYMLINK_NOFOLLOW), fd, path, buf, flags);
|
||||
+ (flags & ~(AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT)), fd,
|
||||
+ path, buf, flags);
|
||||
return BlockedSyscallTrap(aArgs, nullptr);
|
||||
}
|
||||
return (flags & AT_SYMLINK_NOFOLLOW) == 0 ? broker->Stat(path, buf)
|
39
SOURCES/rhel6-auxvh.patch
Normal file
39
SOURCES/rhel6-auxvh.patch
Normal file
@ -0,0 +1,39 @@
|
||||
diff -up firefox-78.2.0/mozglue/build/ppc.cpp.ppc-vsx firefox-78.2.0/mozglue/build/ppc.cpp
|
||||
--- firefox-78.2.0/mozglue/build/ppc.cpp.ppc-vsx 2020-09-11 07:07:05.850864720 +0200
|
||||
+++ firefox-78.2.0/mozglue/build/ppc.cpp 2020-09-11 07:08:48.884202679 +0200
|
||||
@@ -14,10 +14,6 @@
|
||||
#if defined(XP_LINUX)
|
||||
// Use the getauxval() function if available.
|
||||
// ARCH_3_00 wasn't defined until glibc 2.23, so include just in case.
|
||||
-# include <sys/auxv.h>
|
||||
-# ifndef PPC_FEATURE2_ARCH_3_00
|
||||
-# define PPC_FEATURE2_ARCH_3_00 0x00800000
|
||||
-# endif
|
||||
#endif
|
||||
|
||||
const unsigned PPC_FLAG_VMX = 1;
|
||||
@@ -33,24 +29,8 @@ static signed get_ppc_cpu_flags(void) {
|
||||
}
|
||||
cpu_flags = 0;
|
||||
|
||||
-#if defined(XP_LINUX)
|
||||
- // Try getauxval().
|
||||
- unsigned long int cap = getauxval(AT_HWCAP);
|
||||
- unsigned long int cap2 = getauxval(AT_HWCAP2);
|
||||
-
|
||||
- if (cap & PPC_FEATURE_HAS_ALTIVEC) {
|
||||
- cpu_flags |= PPC_FLAG_VMX;
|
||||
- }
|
||||
- if (cap & PPC_FEATURE_HAS_VSX) {
|
||||
- cpu_flags |= PPC_FLAG_VSX;
|
||||
- }
|
||||
- if (cap2 & PPC_FEATURE2_ARCH_3_00) {
|
||||
- cpu_flags |= PPC_FLAG_VSX3;
|
||||
- }
|
||||
-#else
|
||||
// Non-Linux detection here. Currently, on systems other than Linux,
|
||||
// no CPU SIMD features will be detected.
|
||||
-#endif
|
||||
|
||||
return cpu_flags;
|
||||
}
|
41
SOURCES/rhel6-dbusver.patch
Normal file
41
SOURCES/rhel6-dbusver.patch
Normal file
@ -0,0 +1,41 @@
|
||||
diff -up firefox-78.2.0/third_party/rust/libdbus-sys/build.rs.rhel6-dbusver firefox-78.2.0/third_party/rust/libdbus-sys/build.rs
|
||||
--- firefox-78.2.0/third_party/rust/libdbus-sys/build.rs.rhel6-dbusver 2020-08-17 20:34:46.000000000 +0200
|
||||
+++ firefox-78.2.0/third_party/rust/libdbus-sys/build.rs 2020-09-09 21:06:34.932374254 +0200
|
||||
@@ -3,5 +3,5 @@ extern crate pkg_config;
|
||||
fn main() {
|
||||
// See https://github.com/joshtriplett/metadeps/issues/9 for why we don't use
|
||||
// metadeps here, but instead keep this manually in sync with Cargo.toml.
|
||||
- pkg_config::Config::new().atleast_version("1.6").probe("dbus-1").unwrap();
|
||||
+ pkg_config::Config::new().atleast_version("1.2").probe("dbus-1").unwrap();
|
||||
}
|
||||
diff -up firefox-78.2.0/third_party/rust/libdbus-sys/.cargo-checksum.json.rhel6-dbusver firefox-78.2.0/third_party/rust/libdbus-sys/.cargo-checksum.json
|
||||
--- firefox-78.2.0/third_party/rust/libdbus-sys/.cargo-checksum.json.rhel6-dbusver 2020-08-17 20:35:05.000000000 +0200
|
||||
+++ firefox-78.2.0/third_party/rust/libdbus-sys/.cargo-checksum.json 2020-09-09 21:11:37.045287830 +0200
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.toml":"7054b852a13a318562f3ef791e69802f234c9f3d943f2de2d1cef8b31fd0939a","LICENSE-APACHE":"453745410e3be8cf25d56872ea2aec975a78e6c9f217443d0bf908a5bce7c8ff","LICENSE-MIT":"de3911c2d98c8bd2d701ee721347053d9b55995a11f9a8c955e44d3ca1b376bf","build.rs":"9fbc218277d76a570c01c5795a7c8008f5458317cc036d7c88b1dc1a4af22fb7","src/lib.rs":"c8a0d43a3b7e9c8828d4946437379f1985492bd6b04fdd5e967bbcace2197c3d"},"package":"18cb88963258d00f4962205dbb5933d82780d9962c8c8a064b651d2ad7189210"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.toml":"7054b852a13a318562f3ef791e69802f234c9f3d943f2de2d1cef8b31fd0939a","LICENSE-APACHE":"453745410e3be8cf25d56872ea2aec975a78e6c9f217443d0bf908a5bce7c8ff","LICENSE-MIT":"de3911c2d98c8bd2d701ee721347053d9b55995a11f9a8c955e44d3ca1b376bf","build.rs":"41d24ea34bd37eb7a47253ac0681da2dde73e52caf04bbcecf795965e5d36466","src/lib.rs":"31e939a4a7f537265a84c91ba940ac31ac0f66c53a49971f1b21bbd2e4a7b5e9"},"package":"18cb88963258d00f4962205dbb5933d82780d9962c8c8a064b651d2ad7189210"}
|
||||
diff -up firefox-78.2.0/third_party/rust/libdbus-sys/src/lib.rs.rhel6-dbusver firefox-78.2.0/third_party/rust/libdbus-sys/src/lib.rs
|
||||
--- firefox-78.2.0/third_party/rust/libdbus-sys/src/lib.rs.rhel6-dbusver 2020-08-17 20:34:38.000000000 +0200
|
||||
+++ firefox-78.2.0/third_party/rust/libdbus-sys/src/lib.rs 2020-09-09 21:06:34.933374260 +0200
|
||||
@@ -252,13 +252,14 @@ extern "C" {
|
||||
pub fn dbus_signature_validate_single(signature: *const c_char, error: *mut DBusError) -> u32;
|
||||
|
||||
pub fn dbus_threads_init_default() -> c_int;
|
||||
+}
|
||||
+ pub fn dbus_validate_bus_name(busname: *const c_char, error: *mut DBusError) -> u32 {return 1;}
|
||||
+ pub fn dbus_validate_error_name(errorname: *const c_char, error: *mut DBusError) -> u32 {return 1;}
|
||||
+ pub fn dbus_validate_interface(interface: *const c_char, error: *mut DBusError) -> u32 {return 1;}
|
||||
+ pub fn dbus_validate_member(member: *const c_char, error: *mut DBusError) -> u32 {return 1;}
|
||||
+ pub fn dbus_validate_path(path: *const c_char, error: *mut DBusError) -> u32 {return 1;}
|
||||
|
||||
- pub fn dbus_validate_bus_name(busname: *const c_char, error: *mut DBusError) -> u32;
|
||||
- pub fn dbus_validate_error_name(errorname: *const c_char, error: *mut DBusError) -> u32;
|
||||
- pub fn dbus_validate_interface(interface: *const c_char, error: *mut DBusError) -> u32;
|
||||
- pub fn dbus_validate_member(member: *const c_char, error: *mut DBusError) -> u32;
|
||||
- pub fn dbus_validate_path(path: *const c_char, error: *mut DBusError) -> u32;
|
||||
-
|
||||
+extern "C" {
|
||||
pub fn dbus_watch_get_enabled(watch: *mut DBusWatch) -> u32;
|
||||
pub fn dbus_watch_get_flags(watch: *mut DBusWatch) -> c_uint;
|
||||
pub fn dbus_watch_get_unix_fd(watch: *mut DBusWatch) -> c_int;
|
16
SOURCES/rhel6-kernel.patch
Normal file
16
SOURCES/rhel6-kernel.patch
Normal file
@ -0,0 +1,16 @@
|
||||
diff -up firefox-78.2.0/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc.rhel6-kernel firefox-78.2.0/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
|
||||
--- firefox-78.2.0/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc.rhel6-kernel 2020-09-09 19:56:13.159597467 +0200
|
||||
+++ firefox-78.2.0/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc 2020-09-09 19:56:31.457712629 +0200
|
||||
@@ -385,11 +385,7 @@ bool DeviceInfoLinux::IsDeviceNameMatche
|
||||
|
||||
bool DeviceInfoLinux::IsVideoCaptureDevice(struct v4l2_capability* cap)
|
||||
{
|
||||
- if (cap->capabilities & V4L2_CAP_DEVICE_CAPS) {
|
||||
- return cap->device_caps & V4L2_CAP_VIDEO_CAPTURE;
|
||||
- } else {
|
||||
- return cap->capabilities & V4L2_CAP_VIDEO_CAPTURE;
|
||||
- }
|
||||
+ return false;
|
||||
}
|
||||
|
||||
int32_t DeviceInfoLinux::FillCapabilities(int fd) {
|
12
SOURCES/rhel6-mach-fail.patch
Normal file
12
SOURCES/rhel6-mach-fail.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -up firefox-78.2.0/python/mozbuild/mozbuild/controller/building.py.mach-fail firefox-78.2.0/python/mozbuild/mozbuild/controller/building.py
|
||||
--- firefox-78.2.0/python/mozbuild/mozbuild/controller/building.py.mach-fail 2020-09-09 19:25:18.552930506 +0200
|
||||
+++ firefox-78.2.0/python/mozbuild/mozbuild/controller/building.py 2020-09-09 19:25:31.081010223 +0200
|
||||
@@ -591,7 +591,7 @@ class TerminalLoggingHandler(logging.Han
|
||||
if self.footer:
|
||||
self.footer.clear()
|
||||
|
||||
- self.fh.write(msg.encode("utf-8"))
|
||||
+ self.fh.write(msg)
|
||||
self.fh.write('\n')
|
||||
|
||||
if self.footer:
|
12
SOURCES/rhel6-zconst.patch
Normal file
12
SOURCES/rhel6-zconst.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -up firefox-78.2.0/tools/profiler/gecko/nsProfiler.cpp.zconst firefox-78.2.0/tools/profiler/gecko/nsProfiler.cpp
|
||||
--- firefox-78.2.0/tools/profiler/gecko/nsProfiler.cpp.zconst 2020-09-09 20:29:17.489123431 +0200
|
||||
+++ firefox-78.2.0/tools/profiler/gecko/nsProfiler.cpp 2020-09-09 20:30:09.544457350 +0200
|
||||
@@ -523,7 +523,7 @@ nsProfiler::GetProfileDataAsGzippedArray
|
||||
stream.opaque = nullptr;
|
||||
stream.next_out = (Bytef*)outBuff.Elements();
|
||||
stream.avail_out = outBuff.Length();
|
||||
- stream.next_in = (z_const Bytef*)aResult.Data();
|
||||
+ stream.next_in = (Bytef*)aResult.Data();
|
||||
stream.avail_in = aResult.Length();
|
||||
|
||||
// A windowBits of 31 is the default (15) plus 16 for emitting a
|
@ -1,105 +0,0 @@
|
||||
diff -up firefox-68.0/config/makefiles/rust.mk.rust-network-check firefox-68.0/config/makefiles/rust.mk
|
||||
--- firefox-68.0/config/makefiles/rust.mk.rust-network-check 2019-06-06 10:29:18.984737603 +0200
|
||||
+++ firefox-68.0/config/makefiles/rust.mk 2019-06-06 11:39:51.581028835 +0200
|
||||
@@ -127,7 +127,7 @@ export RUST_BACKTRACE=full
|
||||
export MOZ_TOPOBJDIR=$(topobjdir)
|
||||
|
||||
target_rust_ltoable := force-cargo-library-build
|
||||
-target_rust_nonltoable := force-cargo-test-run force-cargo-library-check $(foreach b,build check,force-cargo-program-$(b))
|
||||
+target_rust_nonltoable := force-cargo-test-run $(foreach b,build check,force-cargo-program-$(b))
|
||||
|
||||
$(target_rust_ltoable): RUSTFLAGS:=$(rustflags_override) $(RUSTFLAGS) $(if $(MOZ_LTO_RUST),-Clinker-plugin-lto)
|
||||
$(target_rust_nonltoable): RUSTFLAGS:=$(rustflags_override) $(RUSTFLAGS)
|
||||
@@ -238,19 +238,9 @@ force-cargo-library-build:
|
||||
$(call CARGO_BUILD) --lib $(cargo_target_flag) $(rust_features_flag) -- $(cargo_rustc_flags)
|
||||
|
||||
$(RUST_LIBRARY_FILE): force-cargo-library-build
|
||||
-# When we are building in --enable-release mode; we add an additional check to confirm
|
||||
-# that we are not importing any networking-related functions in rust code. This reduces
|
||||
-# the chance of proxy bypasses originating from rust code.
|
||||
-ifndef DEVELOPER_OPTIONS
|
||||
-ifndef MOZ_DEBUG_RUST
|
||||
-ifeq ($(OS_ARCH), Linux)
|
||||
- $(call py_action,check_binary,--target --networking $@)
|
||||
-endif
|
||||
-endif
|
||||
-endif
|
||||
|
||||
force-cargo-library-check:
|
||||
- $(call CARGO_CHECK) --lib $(cargo_target_flag) $(rust_features_flag)
|
||||
+ @true
|
||||
else
|
||||
force-cargo-library-check:
|
||||
@true
|
||||
diff -up firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py.rust-network-check firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py
|
||||
--- firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py.rust-network-check 2019-05-20 18:17:57.000000000 +0200
|
||||
+++ firefox-68.0/python/mozbuild/mozbuild/action/check_binary.py 2019-06-06 10:29:18.986737599 +0200
|
||||
@@ -250,43 +250,6 @@ def check_mozglue_order(target, binary):
|
||||
raise RuntimeError('Could not parse readelf output?')
|
||||
|
||||
|
||||
-def check_networking(binary):
|
||||
- retcode = 0
|
||||
- networking_functions = set([
|
||||
- # socketpair is not concerning; it is restricted to AF_UNIX
|
||||
- "socket", "connect", "accept", "bind", "listen",
|
||||
- "getsockname", "getsockopt", "setsockopt",
|
||||
- "recv", "recvfrom",
|
||||
- "send", "sendto",
|
||||
- # We would be concerned by recvmsg and sendmsg; but we believe
|
||||
- # they are okay as documented in 1376621#c23
|
||||
- "gethostbyname", "gethostbyaddr", "gethostent", "sethostent", "endhostent",
|
||||
- "gethostent_r", "gethostbyname2", "gethostbyaddr_r", "gethostbyname_r",
|
||||
- "gethostbyname2_r",
|
||||
- "getaddrinfo", "getservent", "getservbyname", "getservbyport", "setservent",
|
||||
- "getprotoent", "getprotobyname", "getprotobynumber", "setprotoent",
|
||||
- "endprotoent"])
|
||||
- bad_occurences_names = set()
|
||||
-
|
||||
- try:
|
||||
- for sym in at_least_one(iter_symbols(binary)):
|
||||
- if sym['addr'] == 0 and sym['name'] in networking_functions:
|
||||
- bad_occurences_names.add(sym['name'])
|
||||
- except Empty:
|
||||
- raise RuntimeError('Could not parse llvm-objdump output?')
|
||||
-
|
||||
- basename = os.path.basename(binary)
|
||||
- if bad_occurences_names:
|
||||
- s = 'TEST-UNEXPECTED-FAIL | check_networking | {} | Identified {} ' + \
|
||||
- 'networking function(s) being imported in the rust static library ({})'
|
||||
- print(s.format(basename, len(bad_occurences_names),
|
||||
- ",".join(sorted(bad_occurences_names))),
|
||||
- file=sys.stderr)
|
||||
- retcode = 1
|
||||
- elif buildconfig.substs.get('MOZ_AUTOMATION'):
|
||||
- print('TEST-PASS | check_networking | {}'.format(basename))
|
||||
- return retcode
|
||||
-
|
||||
def checks(target, binary):
|
||||
# The clang-plugin is built as target but is really a host binary.
|
||||
# Cheat and pretend we were passed the right argument.
|
||||
@@ -330,8 +293,6 @@ def main(args):
|
||||
help='Perform checks for a host binary')
|
||||
parser.add_argument('--target', action='store_true',
|
||||
help='Perform checks for a target binary')
|
||||
- parser.add_argument('--networking', action='store_true',
|
||||
- help='Perform checks for networking functions')
|
||||
|
||||
parser.add_argument('binary', metavar='PATH',
|
||||
help='Location of the binary to check')
|
||||
@@ -343,14 +304,7 @@ def main(args):
|
||||
file=sys.stderr)
|
||||
return 1
|
||||
|
||||
- if options.networking and options.host:
|
||||
- print('--networking is only valid with --target',
|
||||
- file=sys.stderr)
|
||||
- return 1
|
||||
-
|
||||
- if options.networking:
|
||||
- return check_networking(options.binary)
|
||||
- elif options.host:
|
||||
+ if options.host:
|
||||
return checks(HOST, options.binary)
|
||||
elif options.target:
|
||||
return checks(TARGET, options.binary)
|
@ -1,24 +1,66 @@
|
||||
# Set for local builds only
|
||||
%global disable_toolsets 0
|
||||
|
||||
# Use system nspr/nss? FIXME
|
||||
%ifarch i686
|
||||
# no debug package for the i686 because oom on i686 with debuginfos
|
||||
%global debug_package %{nil}
|
||||
%endif
|
||||
|
||||
%global rhel_minor_version -1
|
||||
%if 0%{?flatpak:1}
|
||||
%global rhel_minor_version 4
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8"
|
||||
%global rhel_minor_version 4
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8_3"
|
||||
%global rhel_minor_version 3
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8_2"
|
||||
%global rhel_minor_version 2
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8_1"
|
||||
%global rhel_minor_version 1
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8_0"
|
||||
%global rhel_minor_version 0
|
||||
%endif
|
||||
|
||||
%global system_nss 1
|
||||
%global bundle_nss 0
|
||||
|
||||
%if 0%{?rhel} == 8
|
||||
%global system_nss 1
|
||||
%if 0%{?rhel_minor_version} < 2
|
||||
%global bundle_nss 1
|
||||
%endif
|
||||
%if 0%{?rhel} == 7
|
||||
%global system_nss 1
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} == 6
|
||||
%global system_nss 1
|
||||
%global system_nss 0
|
||||
%endif
|
||||
|
||||
%define use_bundled_ffi 0
|
||||
|
||||
%define use_bundled_python_2 1
|
||||
%define use_bundled_python_3 1
|
||||
|
||||
%if 0%{?rhel} == 8
|
||||
%define use_bundled_python_2 1
|
||||
%define use_bundled_python_3 0
|
||||
%else
|
||||
%define use_bundled_python_2 1
|
||||
%define use_bundled_python_3 1
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} == 7
|
||||
%define use_bundled_python_2 0
|
||||
%define use_bundled_python_3 0
|
||||
%endif
|
||||
|
||||
%if 0%{?flatpak:1}
|
||||
%define use_bundled_python_2 1
|
||||
%endif
|
||||
|
||||
# we need python2 because of icu data gen
|
||||
%define use_bundled_python_2 1
|
||||
|
||||
%define bundle_gnome_extension 0
|
||||
|
||||
# Don't use system hunspell for now
|
||||
@ -44,8 +86,8 @@
|
||||
%if 0%{?rhel} == 6
|
||||
%global dts_version 8
|
||||
%endif
|
||||
%global rust_version 1.31
|
||||
%global rust_toolset_version 1.35
|
||||
%global rust_version 1.41
|
||||
%global rust_toolset_version 1.41
|
||||
%global llvm_version 7.0
|
||||
%if 0%{?rhel} == 8
|
||||
%global llvm_version 6.0
|
||||
@ -87,7 +129,9 @@
|
||||
# Build as a debug package?
|
||||
%global debug_build 0
|
||||
|
||||
%global default_bookmarks_file %{_datadir}/bookmarks/default-bookmarks.html
|
||||
#%global default_bookmarks_file %{_datadir}/bookmarks/default-bookmarks.html
|
||||
# need to use full path because of flatpak where datadir is /app/share
|
||||
%global default_bookmarks_file /usr/share/bookmarks/default-bookmarks.html
|
||||
%global firefox_app_id \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
|
||||
# Minimal required versions
|
||||
%global cairo_version 1.13.1
|
||||
@ -96,28 +140,13 @@
|
||||
%global libvpx_version 1.4.0
|
||||
%endif
|
||||
|
||||
%global rhel_minor_version -1
|
||||
%if "%{?dist}" == "el8"
|
||||
%global rhel_minor_version 3
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8_2"
|
||||
%global rhel_minor_version 2
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8_1"
|
||||
%global rhel_minor_version 1
|
||||
%endif
|
||||
%if "%{?dist}" == ".el8_0"
|
||||
%global rhel_minor_version 0
|
||||
%endif
|
||||
|
||||
|
||||
%if 0%{?system_nss}
|
||||
%global nspr_version 4.21
|
||||
%global nspr_version 4.25
|
||||
# NSS/NSPR quite often ends in build override, so as requirement the version
|
||||
# we're building against could bring us some broken dependencies from time to time.
|
||||
#%global nspr_build_version %(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536)
|
||||
%global nspr_build_version %{nspr_version}
|
||||
%global nss_version 3.44
|
||||
%global nss_version 3.53.1
|
||||
#%global nss_build_version %(pkg-config --silence-errors --modversion nss 2>/dev/null || echo 65536)
|
||||
%global nss_build_version %{nss_version}
|
||||
%endif
|
||||
@ -130,19 +159,25 @@
|
||||
|
||||
%define bundled_python_version_2 2.7.13
|
||||
%define bundled_python_version_3 3.6.8
|
||||
%define use_bundled_yasm 1
|
||||
%define use_bundled_openssl 0
|
||||
%define use_bundled_nodejs 0
|
||||
%if 0%{?rhel} < 8
|
||||
%define use_bundled_yasm 0
|
||||
|
||||
%if 0%{?rhel} == 8
|
||||
%if 0%{?rhel_minor_version} <= 2
|
||||
%define use_bundled_nodejs 1
|
||||
%if 0%{?rhel} == 6
|
||||
%define use_bundled_openssl 1
|
||||
%endif
|
||||
%endif
|
||||
|
||||
# GTK3 bundling
|
||||
%define avoid_bundled_rebuild 0
|
||||
%if 0%{?rhel} == 7
|
||||
%define use_bundled_nodejs 1
|
||||
%define use_bundled_yasm 1
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} == 6
|
||||
%define use_bundled_nodejs 1
|
||||
%define use_bundled_openssl 1
|
||||
%define use_bundled_yasm 1
|
||||
%define bundle_gtk3 1
|
||||
# In-tree libffi is able to build on following platforms, we have to bundle it for the rest
|
||||
%ifnarch x86_64 i686 aarch64
|
||||
@ -150,20 +185,20 @@
|
||||
%endif
|
||||
%endif
|
||||
|
||||
# GTK3 bundling
|
||||
%define avoid_bundled_rebuild 0
|
||||
|
||||
%define gtk3_nvr 3.22.26-1
|
||||
%define gtk3_install_path %{mozappdir}/bundled
|
||||
|
||||
%if 0%{?bundle_gtk3}
|
||||
# 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')}
|
||||
%endif
|
||||
|
||||
|
||||
%global mozappdir %{_libdir}/%{name}
|
||||
%global mozappdirdev %{_libdir}/%{name}-devel-%{version}
|
||||
%global langpackdir %{mozappdir}/distribution/extensions
|
||||
%global langpackdir %{mozappdir}/langpacks
|
||||
%global tarballdir %{name}-%{version}
|
||||
%global pre_version esr
|
||||
#global pre_tag alpha
|
||||
@ -180,8 +215,8 @@
|
||||
|
||||
Summary: Mozilla Firefox Web browser
|
||||
Name: firefox
|
||||
Version: 68.9.0
|
||||
Release: 1%{?dist}
|
||||
Version: 78.7.0
|
||||
Release: 2%{?dist}
|
||||
URL: https://www.mozilla.org/firefox/
|
||||
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
||||
%if 0%{?rhel} == 7
|
||||
@ -193,9 +228,9 @@ ExclusiveArch: i686 x86_64 ppc64 s390x
|
||||
|
||||
Source0: https://hg.mozilla.org/releases/mozilla-release/archive/firefox-%{version}%{?pre_version}.source.tar.xz
|
||||
%if %{build_langpacks}
|
||||
Source1: firefox-langpacks-%{version}%{?pre_version}-20200529.tar.xz
|
||||
Source1: firefox-langpacks-%{version}%{?pre_version}-20210122.tar.xz
|
||||
%endif
|
||||
Source2: cbindgen-vendor.tar.xz
|
||||
Source2: cbindgen-vendor-0.14.3.tar.xz
|
||||
Source10: firefox-mozconfig
|
||||
%if 0%{?centos}
|
||||
Source12: firefox-centos-default-prefs.js
|
||||
@ -220,9 +255,12 @@ Source205: gtk3-private-%{gtk3_nvr}-setup-flags-env.inc
|
||||
Source206: gtk3-private-%{gtk3_nvr}-requires-provides-filter.inc
|
||||
Source301: yasm-1.2.0-3.el5.src.rpm
|
||||
Source303: libffi-3.0.13-18.el7_3.src.rpm
|
||||
Source304: nodejs-8.11.4-1.3.fc27.src.rpm
|
||||
Source304: nodejs-10.21.0-5.fc32.src.rpm
|
||||
Source305: openssl-1.0.2k-19.6.bundle.el7_7.src.rpm
|
||||
|
||||
Source403: nss-3.53.1-3.fc32.src.rpm
|
||||
Source401: nss-setup-flags-env.inc
|
||||
Source402: nspr-4.25.0-1.el8_0.src.rpm
|
||||
#Python
|
||||
%if 0%{?use_bundled_python_2}
|
||||
Source100: https://www.python.org/ftp/python/%{bundled_python_version_2}/Python-%{bundled_python_version_2}.tar.xz
|
||||
@ -237,22 +275,15 @@ Patch1002: python-2.7-gcc8-fix.patch
|
||||
Patch1003: python-missing-utimensat.patch
|
||||
Patch1004: build-icu-make.patch
|
||||
# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374
|
||||
Patch1: no-rust-lto.patch
|
||||
Patch2: rust-network-check.patch
|
||||
Patch4: build-mozconfig-fix.patch
|
||||
Patch6: build-nss-version.patch
|
||||
Patch7: firefox-debugedits-error.patch
|
||||
Patch8: firefox-dont-check-binary.patch
|
||||
Patch9: nss-build-mozilla-1564499.patch
|
||||
Patch26: build-icu-big-endian.patch
|
||||
Patch41: build-debug-qcms.patch
|
||||
|
||||
# Fedora/RHEL specific patches
|
||||
Patch215: firefox-enable-addons.patch
|
||||
Patch219: rhbz-1173156.patch
|
||||
Patch224: mozilla-1170092.patch
|
||||
#ARM run-time patch
|
||||
#Patch226: rhbz-1354671.patch
|
||||
Patch231: firefox-pipewire.patch
|
||||
Patch232: firefox-rhel6-hugepage.patch
|
||||
Patch233: firefox-rhel6-nss-tls1.3.patch
|
||||
@ -262,11 +293,8 @@ Patch235: firefox-pipewire-0-3.patch
|
||||
# Upstream patches
|
||||
Patch402: mozilla-1196777.patch
|
||||
|
||||
#Patch500: debug.patch
|
||||
Patch501: python-encode.patch
|
||||
Patch502: mozilla-1603112-accept-lang.patch
|
||||
Patch503: mozilla-s390-context.patch
|
||||
Patch504: mozilla-nestegg-big-endian.patch
|
||||
Patch505: mozilla-bmo1005535.patch
|
||||
Patch506: mozilla-bmo1504834-part1.patch
|
||||
Patch507: mozilla-bmo1504834-part2.patch
|
||||
@ -275,6 +303,11 @@ Patch509: mozilla-bmo1504834-part4.patch
|
||||
Patch510: mozilla-bmo1554971.patch
|
||||
Patch511: mozilla-bmo1602730.patch
|
||||
Patch512: mozilla-bmo849632.patch
|
||||
Patch513: mozilla-bmo998749.patch
|
||||
Patch514: mozilla-s390x-skia-gradient.patch
|
||||
Patch515: mozilla-bmo1626236.patch
|
||||
Patch516: D87019-thin-vec-big-endian.diff
|
||||
|
||||
|
||||
# CentOS patches
|
||||
%if 0%{?centos}
|
||||
@ -282,11 +315,24 @@ Patch10000: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
|
||||
Patch10001: Bug-1526653---fix_user_vfp_armv7.patch
|
||||
%endif
|
||||
|
||||
# RHEL6 patches
|
||||
Patch600: rhel6-dbusver.patch
|
||||
Patch601: rhel6-kernel.patch
|
||||
Patch602: rhel6-mach-fail.patch
|
||||
Patch603: rhel6-zconst.patch
|
||||
Patch604: rhel6-auxvh.patch
|
||||
Patch605: rhel6-abiv2-mozbz1642174.patch
|
||||
Patch607: rhel6-at-no-automount.patch
|
||||
|
||||
# Flatpak patches
|
||||
|
||||
%if %{?system_nss}
|
||||
%if !0%{?bundle_nss}
|
||||
BuildRequires: pkgconfig(nspr) >= %{nspr_version}
|
||||
BuildRequires: pkgconfig(nss) >= %{nss_version}
|
||||
BuildRequires: nss-static >= %{nss_version}
|
||||
%endif
|
||||
%endif
|
||||
%if %{?system_cairo}
|
||||
BuildRequires: pkgconfig(cairo) >= %{cairo_version}
|
||||
%endif
|
||||
@ -336,6 +382,7 @@ BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel
|
||||
%endif
|
||||
|
||||
BuildRequires: scl-utils
|
||||
BuildRequires: findutils
|
||||
|
||||
|
||||
%if 0%{?rhel} == 8
|
||||
@ -347,25 +394,37 @@ BuildRequires: clang >= %{llvm_version}
|
||||
BuildRequires: clang-devel >= %{llvm_version}
|
||||
BuildRequires: rustfmt >= %{rust_version}
|
||||
BuildRequires: python3
|
||||
BuildRequires: nodejs >= 8.11
|
||||
BuildRequires: nodejs >= 10.21
|
||||
%else
|
||||
%if 0%{?use_rustts}
|
||||
BuildRequires: rust-toolset-%{rust_toolset_version}
|
||||
%endif
|
||||
%if 0%{?rhel} == 7
|
||||
#BuildRequires: rh-nodejs12
|
||||
%endif
|
||||
%if 0%{?use_llvmts}
|
||||
BuildRequires: llvm-toolset-%{llvm_version}
|
||||
BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if ! 0%{?use_bundled_yasm}
|
||||
BuildRequires: yasm
|
||||
%endif
|
||||
|
||||
|
||||
%if 0%{?use_bundled_python_2}
|
||||
# Needed for Python in RHEL6
|
||||
BuildRequires: openssl-devel
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} == 8
|
||||
%if 0%{?rhel_minor_version} >= 3
|
||||
BuildRequires: pkgconfig(libpipewire-0.3)
|
||||
%else
|
||||
BuildRequires: pipewire-devel
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if 0%{?bundle_gtk3}
|
||||
BuildRequires: automake
|
||||
@ -412,16 +471,37 @@ BuildRequires: gtk3-devel
|
||||
BuildRequires: glib2-devel
|
||||
%endif
|
||||
|
||||
# Bundled nss/nspr requirement
|
||||
%if 0%{?bundle_nss}
|
||||
BuildRequires: nss-softokn
|
||||
BuildRequires: sqlite-devel
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: gawk
|
||||
BuildRequires: psmisc
|
||||
%if 0%{?rhel} == 6
|
||||
BuildRequires: perl
|
||||
%else
|
||||
BuildRequires: perl-interpreter
|
||||
%endif
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: xmlto
|
||||
%endif
|
||||
|
||||
Requires: mozilla-filesystem
|
||||
Requires: p11-kit-trust
|
||||
%if %{?system_nss}
|
||||
%if !0%{?bundle_nss}
|
||||
Requires: nspr >= %{nspr_build_version}
|
||||
Requires: nss >= %{nss_build_version}
|
||||
%endif
|
||||
%endif
|
||||
|
||||
BuildRequires: desktop-file-utils
|
||||
BuildRequires: system-bookmarks
|
||||
Requires: redhat-indexhtml
|
||||
#for the python2
|
||||
BuildRequires: pkgconfig(sqlite3)
|
||||
%if %{?system_sqlite}
|
||||
BuildRequires: pkgconfig(sqlite3) >= %{sqlite_version}
|
||||
Requires: sqlite >= %{sqlite_build_version}
|
||||
@ -438,6 +518,25 @@ BuildRequires: pkgconfig(libffi)
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if %{?use_bundled_nodejs}
|
||||
%if !0%{?use_bundled_python_3}
|
||||
BuildRequires: python3-devel
|
||||
%endif
|
||||
BuildRequires: zlib-devel
|
||||
#BuildRequires: brotli-devel
|
||||
#BuildRequires: gcc >= 4.9.4
|
||||
#BuildRequires: gcc-c++ >= 4.9.4
|
||||
BuildRequires: chrpath
|
||||
BuildRequires: libatomic
|
||||
BuildRequires: openssl-devel
|
||||
%endif
|
||||
|
||||
%if 0%{?big_endian}
|
||||
%if 0%{?flatpak}
|
||||
BuildRequires: icu
|
||||
%endif
|
||||
%endif
|
||||
|
||||
Obsoletes: mozilla <= 37:1.7.13
|
||||
Provides: webclient
|
||||
|
||||
@ -500,6 +599,20 @@ https://extensions.gnome.org.
|
||||
%endif
|
||||
|
||||
%prep
|
||||
echo "Build environment"
|
||||
echo "dist %{?dist}"
|
||||
echo "RHEL 8 minor version: %{?rhel_minor_version}"
|
||||
echo "use_bundled_ffi %{?use_bundled_ffi}"
|
||||
echo "use_bundled_python_2 %{?use_bundled_python_2}"
|
||||
echo "use_bundled_python_3 %{?use_bundled_python_3}"
|
||||
echo "bundle_nss %{?bundle_nss}"
|
||||
echo "system_nss %{?system_nss}"
|
||||
echo "use_rustts %{?use_rustts}"
|
||||
echo "use_bundled_nodejs %{?use_bundled_nodejs}"
|
||||
echo "use_bundled_openssl %{?use_bundled_openssl}"
|
||||
echo "use_bundled_yasm %{?use_bundled_yasm}"
|
||||
|
||||
|
||||
%if 0%{?use_bundled_python_2}
|
||||
%setup -q -T -c -n python2 -a 100
|
||||
%patch1000 -p0 -b .build
|
||||
@ -515,28 +628,24 @@ https://extensions.gnome.org.
|
||||
# Build patches, can't change backup suffix from default because during build
|
||||
# there is a compare of config and js/config directories and .orig suffix is
|
||||
# ignored during this compare.
|
||||
%patch1 -p1 -b .no-rust-lto
|
||||
%patch2 -p1 -b .rust-network-check
|
||||
%patch7 -p1 -b .debugedits-error
|
||||
%ifarch %{ix86} %{arm} ppc
|
||||
# binary check fails OOM on 32bit arches
|
||||
%patch8 -p1 -b .dont-check-binary
|
||||
%endif
|
||||
%patch9 -p1 -b .nss-build-mozilla-1564499
|
||||
|
||||
%if %{?debug_build}
|
||||
%patch41 -p1 -b .build-debug-qcms
|
||||
%endif
|
||||
#%if 0%{?rhel} == 8
|
||||
#%endif
|
||||
|
||||
%patch4 -p1 -b .build-mozconfig-fix
|
||||
%patch6 -p1 -b .nss-version
|
||||
#%patch6 -p1 -b .nss-version
|
||||
|
||||
# Fedora patches
|
||||
%patch215 -p1 -b .addons
|
||||
%patch219 -p1 -b .rhbz-1173156
|
||||
%patch224 -p1 -b .1170092
|
||||
|
||||
# fixing /usr/include in the patch for the flatpak build
|
||||
%if 0%{?flatpak}
|
||||
sed -ie 's|/usr/include|/app/include|' %_sourcedir/firefox-pipewire-0-3.patch
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} == 8
|
||||
%if 0%{?rhel_minor_version} >= 3
|
||||
%patch235 -p1 -b .pipewire-0-3
|
||||
@ -544,29 +653,22 @@ https://extensions.gnome.org.
|
||||
%patch231 -p1 -b .pipewire
|
||||
%endif
|
||||
%endif
|
||||
|
||||
|
||||
%if 0%{?rhel} == 6
|
||||
%patch232 -p1 -b .hugepage
|
||||
%patch233 -p1 -b .rhel6-nss-tls1.3
|
||||
%endif
|
||||
%patch234 -p1 -b .rhbz-1821418
|
||||
|
||||
#ARM run-time patch
|
||||
#%ifarch aarch64
|
||||
#%patch226 -p1 -b .1354671
|
||||
#%endif
|
||||
|
||||
%patch402 -p1 -b .1196777
|
||||
|
||||
# Patch for big endian platforms only
|
||||
%if 0%{?big_endian}
|
||||
%patch26 -p1 -b .icu
|
||||
%endif
|
||||
|
||||
#%patch500 -p1 -b .debug
|
||||
%patch501 -p1 -b .python-encode
|
||||
%patch502 -p1 -b .1603112-accept-lang
|
||||
%patch503 -p1 -b .mozilla-s390-context
|
||||
%patch504 -p1 -b .mozilla-nestegg-big-endian
|
||||
%patch505 -p1 -b .mozilla-bmo1005535
|
||||
%patch506 -p1 -b .mozilla-bmo1504834-part1
|
||||
%patch507 -p1 -b .mozilla-bmo1504834-part2
|
||||
@ -575,9 +677,25 @@ https://extensions.gnome.org.
|
||||
%patch510 -p1 -b .mozilla-bmo1554971
|
||||
%patch511 -p1 -b .mozilla-bmo1602730
|
||||
%patch512 -p1 -b .mozilla-bmo849632
|
||||
%patch513 -p1 -b .mozilla-bmo998749
|
||||
%patch514 -p1 -b .mozilla-s390x-skia-gradient
|
||||
%patch515 -p1 -b .mozilla-bmo1626236
|
||||
%patch516 -p1 -b .D87019-thin-vec-big-endian.diff
|
||||
|
||||
|
||||
%patch1001 -p1 -b .ppc64le-inline
|
||||
%patch1004 -p1 -b .icu-make
|
||||
|
||||
%if 0%{?rhel} == 6
|
||||
%patch600 -p1 -b .rhel6-dbusver
|
||||
%patch601 -p1 -b .rhel6-kernel
|
||||
%patch602 -p1 -b .rhel6-mach-fail
|
||||
%patch603 -p1 -b .rhel6-zconst
|
||||
%patch604 -p1 -b .rhel6-auxvh
|
||||
%patch605 -p1 -b .rhel6-abiv2-mozbz1642174
|
||||
%patch607 -R -p1 -b .rhel6-at-no-automount
|
||||
%endif
|
||||
|
||||
# CentOS patches
|
||||
%if 0%{?centos}
|
||||
%patch10000 -p1 -b .mozilla-1238661
|
||||
@ -600,12 +718,6 @@ echo "ac_add_options --without-system-nspr" >> .mozconfig
|
||||
echo "ac_add_options --without-system-nss" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%if %{?system_sqlite}
|
||||
echo "ac_add_options --enable-system-sqlite" >> .mozconfig
|
||||
%else
|
||||
echo "ac_add_options --disable-system-sqlite" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%if %{?system_cairo}
|
||||
echo "ac_add_options --enable-system-cairo" >> .mozconfig
|
||||
%else
|
||||
@ -688,18 +800,32 @@ echo "ac_add_options --with-system-icu" >> .mozconfig
|
||||
echo "ac_add_options --without-system-icu" >> .mozconfig
|
||||
%endif
|
||||
%ifarch s390 s390x
|
||||
echo "ac_add_options --disable-ion" >> .mozconfig
|
||||
echo "ac_add_options --disable-jit" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%ifnarch %{ix86}
|
||||
%if !0%{?debug_build}
|
||||
echo "ac_add_options --disable-debug-symbols" >> .mozconfig
|
||||
%endif
|
||||
%endif
|
||||
|
||||
echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig
|
||||
|
||||
# Remove executable bit to make brp-mangle-shebangs happy.
|
||||
chmod -x third_party/rust/itertools/src/lib.rs
|
||||
chmod a-x third_party/rust/gfx-backend-vulkan/src/*.rs
|
||||
chmod a-x third_party/rust/gfx-hal/src/*.rs
|
||||
chmod a-x third_party/rust/ash/src/extensions/ext/*.rs
|
||||
chmod a-x third_party/rust/ash/src/extensions/khr/*.rs
|
||||
chmod a-x third_party/rust/ash/src/extensions/mvk/*.rs
|
||||
chmod a-x third_party/rust/ash/src/extensions/nv/*.rs
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
%build
|
||||
set -e
|
||||
ulimit -a
|
||||
free
|
||||
#set -e
|
||||
# Hack for missing shell when building in brew on RHEL6
|
||||
%if 0%{?rhel} == 6
|
||||
export SHELL=/bin/sh
|
||||
@ -720,7 +846,9 @@ function install_rpms_to_current_dir() {
|
||||
%ifarch i386 i686
|
||||
ARCH_STR="i?86"
|
||||
%endif
|
||||
%if 0%{?rhel} > 6
|
||||
PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR"
|
||||
%endif
|
||||
fi
|
||||
|
||||
for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM)
|
||||
@ -734,6 +862,7 @@ function build_bundled_package() {
|
||||
PACKAGE_RPM=$1
|
||||
PACKAGE_FILES=$2
|
||||
PACKAGE_SOURCE=$3
|
||||
PACKAGE_BUILD_OPTIONS=$4
|
||||
export PACKAGE_DIR="%{_topdir}/RPMS"
|
||||
|
||||
PACKAGE_ALREADY_BUILD=0
|
||||
@ -747,20 +876,25 @@ function build_bundled_package() {
|
||||
%endif
|
||||
if [ $PACKAGE_ALREADY_BUILD == 0 ]; then
|
||||
echo "Rebuilding $PACKAGE_RPM from $PACKAGE_SOURCE"; echo "==============================="
|
||||
rpmbuild --nodeps --rebuild $PACKAGE_SOURCE
|
||||
rpmbuild --nodeps $PACKAGE_BUILD_OPTIONS --rebuild $PACKAGE_SOURCE
|
||||
cat /var/tmp/rpm-tmp*
|
||||
fi
|
||||
|
||||
find $PACKAGE_DIR
|
||||
if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then
|
||||
# Hack for tps tests
|
||||
ARCH_STR=%{_arch}
|
||||
%ifarch i386 i686
|
||||
ARCH_STR="i?86"
|
||||
%endif
|
||||
%if 0%{?rhel} > 6
|
||||
export PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR"
|
||||
%endif
|
||||
fi
|
||||
pushd $PACKAGE_DIR
|
||||
|
||||
echo "Installing $PACKAGE_DIR/$PACKAGE_RPM"; echo "==============================="
|
||||
pwd
|
||||
PACKAGE_LIST=$(echo $PACKAGE_DIR/$PACKAGE_RPM | tr " " "\n")
|
||||
for PACKAGE in $PACKAGE_LIST
|
||||
do
|
||||
@ -782,10 +916,71 @@ function build_bundled_package() {
|
||||
|
||||
# Build and install local yasm if needed
|
||||
# ======================================
|
||||
%if %{use_bundled_yasm}
|
||||
%if 0%{?use_bundled_yasm}
|
||||
build_bundled_package 'yasm-1*.rpm' 'yasm-*.rpm' '%{SOURCE301}'
|
||||
%endif
|
||||
|
||||
%if 0%{?bundle_nss}
|
||||
rpm -ivh %{SOURCE402}
|
||||
#rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' --without=tests -ba %{_specdir}/nspr.spec
|
||||
rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/nspr.spec
|
||||
pushd %{_buildrootdir}
|
||||
install_rpms_to_current_dir nspr-4*.rpm
|
||||
install_rpms_to_current_dir nspr-devel*.rpm
|
||||
popd
|
||||
echo "Setting nspr flags"
|
||||
# nss-setup-flags-env.inc
|
||||
sed -i 's@%{gtk3_install_path}@%{_buildrootdir}%{gtk3_install_path}@g' %{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig/nspr*.pc
|
||||
|
||||
export LDFLAGS="-L%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS"
|
||||
export LDFLAGS="-Wl,-rpath,%{gtk3_install_path}/%{_lib} $LDFLAGS"
|
||||
export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS"
|
||||
export PKG_CONFIG_PATH=%{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig
|
||||
export PATH="{_buildrootdir}%{gtk3_install_path}/bin:$PATH"
|
||||
|
||||
export PATH=%{_buildrootdir}/%{gtk3_install_path}/bin:$PATH
|
||||
echo $PKG_CONFIG_PATH
|
||||
|
||||
rpm -ivh %{SOURCE403}
|
||||
rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/nss.spec
|
||||
pushd %{_buildrootdir}
|
||||
#cleanup
|
||||
#rm -rf {_buildrootdir}/usr/lib/debug/*
|
||||
#rm -rf {_buildrootdir}/usr/lib/.build-id
|
||||
#install_rpms_to_current_dir nss-%{gtk3_nvr}*.rpm
|
||||
#install_rpms_to_current_dir nss-devel-%{gtk3_nvr}*.rpm
|
||||
install_rpms_to_current_dir nss-3*.rpm
|
||||
install_rpms_to_current_dir nss-devel*.rpm
|
||||
install_rpms_to_current_dir nss-pkcs11-devel*.rpm
|
||||
install_rpms_to_current_dir nss-softokn-3*.rpm
|
||||
install_rpms_to_current_dir nss-softokn-devel*.rpm
|
||||
install_rpms_to_current_dir nss-softokn-freebl-3*.rpm
|
||||
install_rpms_to_current_dir nss-softokn-freebl-devel*.rpm
|
||||
install_rpms_to_current_dir nss-util-3*.rpm
|
||||
install_rpms_to_current_dir nss-util-devel*.rpm
|
||||
popd
|
||||
%filter_provides_in %{gtk3_install_path}/%{_lib}
|
||||
%filter_requires_in %{gtk3_install_path}/%{_lib}
|
||||
%filter_from_requires /libnss3.so.*/d
|
||||
%filter_from_requires /libsmime3.so.*/d
|
||||
%filter_from_requires /libssl3.so.*/d
|
||||
%filter_from_requires /libnssutil3.so.*/d
|
||||
%filter_from_requires /libnspr4.so.*/d
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} == 6
|
||||
%filter_from_requires /libnss3.so.*/d
|
||||
%filter_from_requires /libsmime3.so.*/d
|
||||
%filter_from_requires /libssl3.so.*/d
|
||||
%filter_from_requires /libnssutil3.so.*/d
|
||||
%filter_from_requires /libnspr4.so.*/d
|
||||
%filter_from_provides /libnss3.so.*/d
|
||||
%filter_from_provides /libsmime3.so.*/d
|
||||
%filter_from_provides /libssl3.so.*/d
|
||||
%filter_from_provides /libnssutil3.so.*/d
|
||||
%filter_from_provides /libnspr4.so.*/d
|
||||
%endif
|
||||
|
||||
%if 0%{?bundle_gtk3}
|
||||
%if ! 0%{?avoid_bundled_rebuild}
|
||||
rpm -ivh %{SOURCE200}
|
||||
@ -816,14 +1011,14 @@ function build_bundled_package() {
|
||||
# If needed build the bundled python 2.7 and 3.6 and put it in the PATH
|
||||
%if 0%{?use_bundled_python_3}
|
||||
pushd %{_builddir}/python3/Python-%{bundled_python_version_3}
|
||||
./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" --with-pydebug
|
||||
./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" || cat config.log
|
||||
make %{?_smp_mflags} install V=1 -j1
|
||||
cp Tools/scripts/pathfix.py %{_buildrootdir}/bin
|
||||
popd
|
||||
%endif
|
||||
%if 0%{?use_bundled_python_2}
|
||||
pushd %{_builddir}/python2/Python-%{bundled_python_version_2}
|
||||
./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib"
|
||||
./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" || cat config.log
|
||||
make %{?_smp_mflags} install V=1
|
||||
popd
|
||||
%endif
|
||||
@ -871,10 +1066,15 @@ source scl_source enable devtoolset-%{dts_version}
|
||||
source scl_source enable rust-toolset-%{rust_toolset_version}
|
||||
%endif
|
||||
|
||||
env
|
||||
which gcc
|
||||
which c++
|
||||
which g++
|
||||
which ld
|
||||
# Build and install local node if needed
|
||||
# ======================================
|
||||
%if %{use_bundled_nodejs}
|
||||
build_bundled_package 'nodejs-8*.rpm' 'nodejs-*.rpm' %{SOURCE304}
|
||||
build_bundled_package 'nodejs-10*.rpm' 'nodejs-*.rpm npm-*.rpm' %{SOURCE304} "--with bootstrap"
|
||||
export MOZ_NODEJS=$PACKAGE_DIR/usr/bin/node
|
||||
%else
|
||||
export MOZ_NODEJS=/usr/bin/node
|
||||
@ -910,7 +1110,16 @@ case "%{sqlite_build_version}" in
|
||||
esac
|
||||
%endif
|
||||
|
||||
# debug missing sqlite3 python module
|
||||
./mach python -c "import sys;print(sys.path)"
|
||||
|
||||
%if 0%{?big_endian}
|
||||
%if 0%{?flatpak}
|
||||
echo "Generate big endian version of config/external/icu/data/icud58l.dat"
|
||||
icupkg -tb config/external/icu/data/icudt67l.dat config/external/icu/data/icudt67b.dat
|
||||
ls -l config/external/icu/data
|
||||
rm -f config/external/icu/data/icudt*l.dat
|
||||
%else
|
||||
echo "Generate big endian version of config/external/icu/data/icud64l.dat"
|
||||
./mach python intl/icu_sources_data.py .
|
||||
rm -f config/external/icu/data/icudt*l.dat
|
||||
@ -918,9 +1127,11 @@ echo "Generate big endian version of config/external/icu/data/icud64l.dat"
|
||||
ls -l config/external/icu/data
|
||||
cat /tmp/icu-make*
|
||||
%endif
|
||||
%endif
|
||||
|
||||
mkdir %{_buildrootdir}/bin || :
|
||||
cp %{SOURCE28} %{_buildrootdir}/bin || :
|
||||
chmod +x %{_buildrootdir}/bin/node-stdout-nonblocking-wrapper
|
||||
|
||||
# Update the various config.guess to upstream release for aarch64 support
|
||||
find ./ -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'
|
||||
@ -957,10 +1168,19 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
|
||||
# (OOM when linking, rhbz#1238225)
|
||||
export MOZ_DEBUG_FLAGS=" "
|
||||
%endif
|
||||
%ifarch s390 %{arm} ppc aarch64 i686
|
||||
|
||||
# We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss
|
||||
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT"
|
||||
|
||||
%ifarch s390 %{arm} ppc aarch64 i686 x86_64 s390x
|
||||
MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
|
||||
%endif
|
||||
%ifarch %{arm}
|
||||
%ifarch %{arm} i686
|
||||
MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug"
|
||||
echo "ac_add_options --enable-linker=gold" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%ifarch %{arm} i686
|
||||
export RUSTFLAGS="-Cdebuginfo=0"
|
||||
%endif
|
||||
export CFLAGS=$MOZ_OPT_FLAGS
|
||||
@ -983,20 +1203,67 @@ MOZ_SMP_FLAGS=-j1
|
||||
[ -z "$RPM_BUILD_NCPUS" ] && \
|
||||
RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
||||
[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
|
||||
[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
|
||||
[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
|
||||
[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j3
|
||||
[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j3
|
||||
%endif
|
||||
%endif
|
||||
|
||||
cat /proc/meminfo
|
||||
|
||||
# Free memory in kB
|
||||
if grep -q MemAvailable /proc/meminfo; then
|
||||
MEM_AVAILABLE=$(grep MemAvailable /proc/meminfo | awk '{ print $2 }')
|
||||
else
|
||||
MEM_AVAILABLE=$(grep MemFree /proc/meminfo | awk '{ print $2 }')
|
||||
fi
|
||||
|
||||
# Usually the compiler processes can take 2 GB of memory at peaks
|
||||
TASK_SIZE=4000000
|
||||
MEM_CONSTRAINED_JOBS=$(( MEM_AVAILABLE / TASK_SIZE ))
|
||||
|
||||
if [ $MEM_CONSTRAINED_JOBS -le 0 ]; then
|
||||
MEM_CONSTRAINED_JOBS=1
|
||||
fi
|
||||
|
||||
CPU_AVAILABLE=$(/usr/bin/getconf _NPROCESSORS_ONLN)
|
||||
# Pick the minimum from available CPUs or memory constrained number of jobs
|
||||
MOZ_SMP_FLAGS=-j$([ "$CPU_AVAILABLE" -le "$MEM_CONSTRAINED_JOBS" ] && echo "$CPU_AVAILABLE" || echo "$MEM_CONSTRAINED_JOBS")
|
||||
|
||||
%if 0%{?bundle_gtk3}
|
||||
# gtk3-private-setup-flags-env.inc
|
||||
%include_file %{SOURCE205}
|
||||
%endif
|
||||
|
||||
%if 0%{?bundle_nss}
|
||||
echo "Setting nss flags"
|
||||
# nss-setup-flags-env.inc
|
||||
%include_file %{SOURCE401}
|
||||
export PATH=%{_buildrootdir}/%{gtk3_install_path}/bin:$PATH
|
||||
echo $PKG_CONFIG_PATH
|
||||
%endif
|
||||
|
||||
export MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS"
|
||||
export MOZ_SERVICES_SYNC="1"
|
||||
# we need to strip the sources on i686 because to we don't use rpm to generate debugsymbols because of oom
|
||||
%ifnarch i686 i386
|
||||
export STRIP=/bin/true
|
||||
%endif
|
||||
which node
|
||||
echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"'
|
||||
env
|
||||
ls %{_buildrootdir}
|
||||
|
||||
|
||||
%if 0%{?rhel} == 6
|
||||
export POLICY_FILE="rhel6.config"
|
||||
export POLICT_PATH="/etc/pki/nss-legacy"
|
||||
%endif
|
||||
|
||||
%if 0%{?use_llvmts}
|
||||
scl enable llvm-toolset-%{llvm_version} './mach build -v'
|
||||
%else
|
||||
./mach build -v
|
||||
%endif
|
||||
|
||||
# create debuginfo for crash-stats.mozilla.com
|
||||
%if %{enable_mozilla_crashreporter}
|
||||
@ -1041,7 +1308,6 @@ rm -f objdir/dist/bin/pk12util
|
||||
export SHELL=/bin/sh
|
||||
%endif
|
||||
|
||||
%if 0%{?bundle_gtk3}
|
||||
function install_rpms_to_current_dir() {
|
||||
PACKAGE_RPM=$(eval echo $1)
|
||||
PACKAGE_DIR=%{_rpmdir}
|
||||
@ -1052,7 +1318,9 @@ function install_rpms_to_current_dir() {
|
||||
%ifarch i386 i686
|
||||
ARCH_STR="i?86"
|
||||
%endif
|
||||
%if 0%{?rhel} > 6
|
||||
PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR"
|
||||
%endif
|
||||
fi
|
||||
|
||||
for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM)
|
||||
@ -1062,6 +1330,7 @@ function install_rpms_to_current_dir() {
|
||||
done
|
||||
}
|
||||
|
||||
%if 0%{?bundle_gtk3}
|
||||
pushd %{buildroot}
|
||||
# Install gtk3-private again to the buildroot, but without devel subpackage
|
||||
install_rpms_to_current_dir gtk3-private-%{gtk3_nvr}*.rpm
|
||||
@ -1069,6 +1338,29 @@ install_rpms_to_current_dir gtk3-private-rpm-scripts-%{gtk3_nvr}*.rpm
|
||||
popd
|
||||
%endif
|
||||
|
||||
%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
|
||||
install_rpms_to_current_dir nss-softokn-freebl-3*.rpm
|
||||
install_rpms_to_current_dir nss-util-3*.rpm
|
||||
|
||||
# cleanup unecessary nss files
|
||||
#rm -rf %{_buildrootdir}/%{gtk3_install_path}/bin
|
||||
#rm -rf %{_buildrootdir}/%{gtk3_install_path}/include
|
||||
rm -rf %{buildroot}/%{gtk3_install_path}/lib/dracut
|
||||
rm -rf %{buildroot}/%{gtk3_install_path}/%{_lib}/nss
|
||||
#rm -rf %{_buildrootdir}/%{gtk3_install_path}/%{_lib}/pkgconfig
|
||||
rm -rf %{buildroot}/%{gtk3_install_path}/%{_lib}/share
|
||||
rm -rf %{buildroot}/%{gtk3_install_path}/share
|
||||
rm -rf %{buildroot}/etc/pki
|
||||
rm -rf %{buildroot}/usr/lib/.build-id
|
||||
rm -rf %{buildroot}/etc/crypto-policies
|
||||
popd
|
||||
%endif
|
||||
|
||||
# Install bundled libffi
|
||||
%if %{use_bundled_ffi}
|
||||
pushd %{buildroot}
|
||||
@ -1093,6 +1385,7 @@ desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20}
|
||||
# set up the firefox start script
|
||||
%{__rm} -rf %{buildroot}%{_bindir}/firefox
|
||||
%{__cat} %{SOURCE21} > %{buildroot}%{_bindir}/firefox
|
||||
sed -i -e 's|%PREFIX%|%{_prefix}|' %{buildroot}%{_bindir}/firefox
|
||||
%if 0%{?bundle_gtk3}
|
||||
sed -i -e 's|%RHEL_ENV_VARS%|export XDG_DATA_DIRS="$MOZ_LIB_DIR/firefox/bundled/share:/usr/share:$XDG_DATA_DIRS"\nexport FONTCONFIG_FILE="$MOZ_LIB_DIR/firefox/bundled/etc/fonts/fonts.conf"|' %{buildroot}%{_bindir}/firefox
|
||||
%else
|
||||
@ -1271,7 +1564,6 @@ if [ $1 -eq 0 ]; then
|
||||
%{__rm} -rf %{mozappdir}/components
|
||||
%{__rm} -rf %{mozappdir}/extensions
|
||||
%{__rm} -rf %{mozappdir}/plugins
|
||||
%{__rm} -rf %{langpackdir}
|
||||
fi
|
||||
|
||||
%clean
|
||||
@ -1281,6 +1573,10 @@ rm -rf %{_srcrpmdir}/libffi*.src.rpm
|
||||
find %{_rpmdir} -name "libffi*.rpm" -delete
|
||||
rm -rf %{_srcrpmdir}/openssl*.src.rpm
|
||||
find %{_rpmdir} -name "openssl*.rpm" -delete
|
||||
rm -rf %{_srcrpmdir}/nss*.src.rpm
|
||||
find %{_rpmdir} -name "nss*.rpm" -delete
|
||||
rm -rf %{_srcrpmdir}/nspr*.src.rpm
|
||||
find %{_rpmdir} -name "nspr*.rpm" -delete
|
||||
|
||||
%post
|
||||
update-desktop-database &> /dev/null || :
|
||||
@ -1322,17 +1618,14 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
%dir %{mozappdir}
|
||||
%doc %{mozappdir}/LICENSE
|
||||
%{mozappdir}/browser/chrome
|
||||
%{mozappdir}/browser/chrome.manifest
|
||||
%{mozappdir}/defaults/preferences/*
|
||||
%{mozappdir}/browser/defaults/preferences
|
||||
%{mozappdir}/browser/features/*.xpi
|
||||
%{mozappdir}/distribution/distribution.ini
|
||||
%attr(644, root, root) %{mozappdir}/browser/blocklist.xml
|
||||
%if %{build_langpacks}
|
||||
%dir %{langpackdir}
|
||||
%endif
|
||||
%{mozappdir}/browser/omni.ja
|
||||
%{mozappdir}/chrome.manifest
|
||||
%{mozappdir}/run-mozilla.sh
|
||||
%{mozappdir}/application.ini
|
||||
%{mozappdir}/pingsender
|
||||
@ -1361,13 +1654,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
%{mozappdir}/plugin-container
|
||||
%{mozappdir}/gmp-clearkey
|
||||
%{mozappdir}/fonts/*.ttf
|
||||
%if !%{?system_libicu}
|
||||
#%{mozappdir}/icudt*.dat
|
||||
%endif
|
||||
%if !%{?system_nss}
|
||||
%{mozappdir}/libfreeblpriv3.chk
|
||||
%{mozappdir}/libnssdbm3.chk
|
||||
%{mozappdir}/libsoftokn3.chk
|
||||
%exclude %{mozappdir}/libnssckbi.so
|
||||
%endif
|
||||
%if 0%{use_bundled_ffi}
|
||||
@ -1380,10 +1667,62 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
%include_file %{SOURCE204}
|
||||
%endif
|
||||
|
||||
%if 0%{?bundle_nss}
|
||||
%{mozappdir}/bundled/%{_lib}/libfreebl*
|
||||
%{mozappdir}/bundled/%{_lib}/libnss3*
|
||||
%{mozappdir}/bundled/%{_lib}/libnssdbm3*
|
||||
%{mozappdir}/bundled/%{_lib}/libnssutil3*
|
||||
%{mozappdir}/bundled/%{_lib}/libsmime3*
|
||||
%{mozappdir}/bundled/%{_lib}/libsoftokn*
|
||||
%{mozappdir}/bundled/%{_lib}/libssl3*
|
||||
%{mozappdir}/bundled/%{_lib}/libnspr4.so
|
||||
%{mozappdir}/bundled/%{_lib}/libplc4.so
|
||||
%{mozappdir}/bundled/%{_lib}/libplds4.so
|
||||
%endif
|
||||
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
%changelog
|
||||
* Fri Jan 22 2021 Eike Rathke <erack@redhat.com> - 78.7.0-2
|
||||
- Update to 78.7.0 build2
|
||||
|
||||
* Wed Jan 20 2021 Eike Rathke <erack@redhat.com> - 78.7.0-1
|
||||
- Update to 78.7.0 build1
|
||||
|
||||
* Wed Jan 6 2021 Eike Rathke <erack@redhat.com> - 78.6.1-1
|
||||
- Update to 78.6.1 build1
|
||||
|
||||
* Thu Dec 10 2020 Jan Horak <jhorak@redhat.com> - 78.6.0-1
|
||||
- Update to 78.6.0 build1
|
||||
|
||||
* Wed Nov 18 2020 Jan Horak <jhorak@redhat.com> - 78.5.0-1
|
||||
- Update to 78.5.0 build1
|
||||
|
||||
* Tue Nov 10 2020 erack@redhat.com - 78.4.1-1
|
||||
- Update to 78.4.1
|
||||
|
||||
* Tue Nov 10 2020 Jan Horak <jhorak@redhat.com> - 78.4.0-3
|
||||
- Fixing flatpak build, fixing firefox.sh.in to not disable langpacks loading
|
||||
|
||||
* Thu Oct 29 2020 Jan Horak <jhorak@redhat.com> - 78.4.0-2
|
||||
- Enable addon sideloading
|
||||
|
||||
* Fri Oct 16 2020 Jan Horak <jhorak@redhat.com> - 78.4.0-1
|
||||
- Update to 78.4.0 build2
|
||||
|
||||
* Fri Sep 18 2020 Jan Horak <jhorak@redhat.com>
|
||||
- Update to 78.3.0 build1
|
||||
|
||||
* Tue Aug 18 2020 Jan Horak <jhorak@redhat.com> - 78.2.0-3
|
||||
- Update to 78.2.0 build1
|
||||
|
||||
* Fri Jul 24 2020 Jan Horak <jhorak@redhat.com>
|
||||
- Update to 68.11.0 build1
|
||||
|
||||
* Fri Jun 26 2020 Jan Horak <jhorak@redhat.com>
|
||||
- Update to 68.10.0 build1
|
||||
|
||||
* Fri May 29 2020 Jan Horak <jhorak@redhat.com>
|
||||
- Update to 68.9.0 build1
|
||||
- Added patch for pipewire 0.3
|
||||
|
Loading…
Reference in New Issue
Block a user