diff --git a/extra/firefox/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch b/extra/firefox/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch deleted file mode 100644 index b8fbbe5c8..000000000 --- a/extra/firefox/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch +++ /dev/null @@ -1,173 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Mike Hommey -Date: Sat, 16 Oct 2021 01:19:56 +0000 -Subject: [PATCH] Bug 1735905 - Upgrade cubeb-pulse to fix a race condition - that can lead to shutdown deadlock. r=kinetik - -Differential Revision: https://phabricator.services.mozilla.com/D128657 ---- - .cargo/config.in | 2 +- - Cargo.lock | 6 ++-- - .../rust/cubeb-pulse/.cargo-checksum.json | 2 +- - .../rust/cubeb-pulse/src/backend/stream.rs | 33 +++++++++++-------- - toolkit/library/rust/shared/Cargo.toml | 2 +- - 5 files changed, 25 insertions(+), 20 deletions(-) - -diff --git a/.cargo/config.in b/.cargo/config.in -index dce119e25da1..6b9752c9fa1c 100644 ---- a/.cargo/config.in -+++ b/.cargo/config.in -@@ -25,7 +25,7 @@ rev = "fd02134161505f978e132114cbabdac057ce3b71" - [source."https://github.com/mozilla/cubeb-pulse-rs"] - git = "https://github.com/mozilla/cubeb-pulse-rs" - replace-with = "vendored-sources" --rev = "e9e55a4529642da99e64452467ecaef9f7753531" -+rev = "9695281319fcb3e40db6a32cc0661548d6192f4d" - - [source."https://github.com/mozilla/cubeb-coreaudio-rs"] - git = "https://github.com/mozilla/cubeb-coreaudio-rs" -diff --git a/Cargo.lock b/Cargo.lock -index ca2466600d4e..cc7a65e08715 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -1059,7 +1059,7 @@ dependencies = [ - [[package]] - name = "cubeb-pulse" - version = "0.3.0" --source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=e9e55a4529642da99e64452467ecaef9f7753531#e9e55a4529642da99e64452467ecaef9f7753531" -+source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=9695281319fcb3e40db6a32cc0661548d6192f4d#9695281319fcb3e40db6a32cc0661548d6192f4d" - dependencies = [ - "cubeb-backend", - "pulse", -@@ -3935,16 +3935,16 @@ dependencies = [ - [[package]] - name = "pulse" - version = "0.3.0" --source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=e9e55a4529642da99e64452467ecaef9f7753531#e9e55a4529642da99e64452467ecaef9f7753531" -+source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=9695281319fcb3e40db6a32cc0661548d6192f4d#9695281319fcb3e40db6a32cc0661548d6192f4d" - dependencies = [ - "bitflags", - "pulse-ffi", - ] - - [[package]] - name = "pulse-ffi" - version = "0.1.0" --source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=e9e55a4529642da99e64452467ecaef9f7753531#e9e55a4529642da99e64452467ecaef9f7753531" -+source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=9695281319fcb3e40db6a32cc0661548d6192f4d#9695281319fcb3e40db6a32cc0661548d6192f4d" - dependencies = [ - "libc", - ] -diff --git a/third_party/rust/cubeb-pulse/.cargo-checksum.json b/third_party/rust/cubeb-pulse/.cargo-checksum.json -index 1dc452bcf480..45e913931336 100644 ---- a/third_party/rust/cubeb-pulse/.cargo-checksum.json -+++ b/third_party/rust/cubeb-pulse/.cargo-checksum.json -@@ -1 +1 @@ --{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"95d0d2542c04f0c932f58591b92c3051db5c95657bf5f24b6a6110f7b667568d","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"56e90cb82ec36ead07e551a28fc2455fa658fa8308c3d73f8d856d85bfcd2122","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"8969b300850b56ace07abe570940e2099774bf0bf20325be1d3ec0f5f408c8ce","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"d5da05348bf1a7f65c85b14372964a49dc4849f0aee96c75e2c18b51fb03fcaf","src/backend/stream.rs":"b17829f1b65055ada69454d0714dd7526d4d5cdeda7bba4ee03ffb6f27297e61","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null} -\ No newline at end of file -+{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"95d0d2542c04f0c932f58591b92c3051db5c95657bf5f24b6a6110f7b667568d","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"56e90cb82ec36ead07e551a28fc2455fa658fa8308c3d73f8d856d85bfcd2122","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"8969b300850b56ace07abe570940e2099774bf0bf20325be1d3ec0f5f408c8ce","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"d5da05348bf1a7f65c85b14372964a49dc4849f0aee96c75e2c18b51fb03fcaf","src/backend/stream.rs":"585b616d5487c77f6aa21a76aa6a0f7ae9de8c389bc908401a979fba8bf3450f","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null} -\ No newline at end of file -diff --git a/third_party/rust/cubeb-pulse/src/backend/stream.rs b/third_party/rust/cubeb-pulse/src/backend/stream.rs -index 8168c813e243..df64b0f2304e 100644 ---- a/third_party/rust/cubeb-pulse/src/backend/stream.rs -+++ b/third_party/rust/cubeb-pulse/src/backend/stream.rs -@@ -15,7 +15,7 @@ use ringbuf::RingBuffer; - use std::ffi::{CStr, CString}; - use std::os::raw::{c_long, c_void}; - use std::slice; --use std::sync::atomic::{AtomicUsize, Ordering}; -+use std::sync::atomic::{AtomicPtr, AtomicUsize, Ordering}; - use std::{mem, ptr}; - - use self::LinearInputBuffer::*; -@@ -272,7 +272,7 @@ pub struct PulseStream<'ctx> { - input_stream: Option, - data_callback: ffi::cubeb_data_callback, - state_callback: ffi::cubeb_state_callback, -- drain_timer: *mut pa_time_event, -+ drain_timer: AtomicPtr, - output_sample_spec: pulse::SampleSpec, - input_sample_spec: pulse::SampleSpec, - // output frames count excluding pre-buffering -@@ -411,7 +411,7 @@ impl<'ctx> PulseStream<'ctx> { - data_callback, - state_callback, - user_ptr, -- drain_timer: ptr::null_mut(), -+ drain_timer: AtomicPtr::new(ptr::null_mut()), - output_sample_spec: pulse::SampleSpec::default(), - input_sample_spec: pulse::SampleSpec::default(), - output_frame_count: AtomicUsize::new(0), -@@ -574,9 +574,10 @@ impl<'ctx> PulseStream<'ctx> { - self.context.mainloop.lock(); - { - if let Some(stm) = self.output_stream.take() { -- if !self.drain_timer.is_null() { -+ let drain_timer = self.drain_timer.load(Ordering::Acquire); -+ if !drain_timer.is_null() { - /* there's no pa_rttime_free, so use this instead. */ -- self.context.mainloop.get_api().time_free(self.drain_timer); -+ self.context.mainloop.get_api().time_free(drain_timer); - } - stm.clear_state_callback(); - stm.clear_write_callback(); -@@ -637,7 +638,7 @@ impl<'ctx> StreamOps for PulseStream<'ctx> { - self.shutdown = true; - // If draining is taking place wait to finish - cubeb_log!("Stream stop: waiting for drain."); -- while !self.drain_timer.is_null() { -+ while !self.drain_timer.load(Ordering::Acquire).is_null() { - self.context.mainloop.wait(); - } - cubeb_log!("Stream stop: waited for drain."); -@@ -988,11 +989,12 @@ impl<'ctx> PulseStream<'ctx> { - ) { - cubeb_logv!("Drain finished callback."); - let stm = unsafe { &mut *(u as *mut PulseStream) }; -- debug_assert_eq!(stm.drain_timer, e); -+ let drain_timer = stm.drain_timer.load(Ordering::Acquire); -+ debug_assert_eq!(drain_timer, e); - stm.state_change_callback(ffi::CUBEB_STATE_DRAINED); - /* there's no pa_rttime_free, so use this instead. */ -- a.time_free(stm.drain_timer); -- stm.drain_timer = ptr::null_mut(); -+ a.time_free(drain_timer); -+ stm.drain_timer.store(ptr::null_mut(), Ordering::Release); - stm.context.mainloop.signal(); - } - -@@ -1109,13 +1111,16 @@ impl<'ctx> PulseStream<'ctx> { - - /* pa_stream_drain is useless, see PA bug# 866. this is a workaround. */ - /* arbitrary safety margin: double the current latency. */ -- debug_assert!(self.drain_timer.is_null()); -+ debug_assert!(self.drain_timer.load(Ordering::Acquire).is_null()); - let stream_ptr = self as *const _ as *mut _; - if let Some(ref context) = self.context.context { -- self.drain_timer = context.rttime_new( -- pulse::rtclock_now() + 2 * latency, -- drained_cb, -- stream_ptr, -+ self.drain_timer.store( -+ context.rttime_new( -+ pulse::rtclock_now() + 2 * latency, -+ drained_cb, -+ stream_ptr, -+ ), -+ Ordering::Release, - ); - } - self.shutdown = true; -diff --git a/toolkit/library/rust/shared/Cargo.toml b/toolkit/library/rust/shared/Cargo.toml -index b70f8974ffb1..7d1d601c0807 100644 ---- a/toolkit/library/rust/shared/Cargo.toml -+++ b/toolkit/library/rust/shared/Cargo.toml -@@ -20,7 +20,7 @@ profiler_helper = { path = "../../../../tools/profiler/rust-helper", optional = - mozurl = { path = "../../../../netwerk/base/mozurl" } - webrender_bindings = { path = "../../../../gfx/webrender_bindings" } - cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs", rev = "4ee3b283182926f9a8bb31d603219ff2db70d2fd", optional = true } --cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs", rev="e9e55a4529642da99e64452467ecaef9f7753531", optional = true, features=["pulse-dlopen"] } -+cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs", rev="9695281319fcb3e40db6a32cc0661548d6192f4d", optional = true, features=["pulse-dlopen"] } - cubeb-sys = { version = "0.9", optional = true, features=["gecko-in-tree"] } - encoding_glue = { path = "../../../../intl/encoding_glue" } - audioipc-client = { git = "https://github.com/mozilla/audioipc-2", rev = "8381f3812354d8d1df972c2c3ea596b70caa9a84", optional = true } diff --git a/extra/firefox/0002-Bug-1745560-Add-missing-stub-for-wl_proxy_marshal_fl.patch b/extra/firefox/0002-Bug-1745560-Add-missing-stub-for-wl_proxy_marshal_fl.patch new file mode 100644 index 000000000..bcd5e2582 --- /dev/null +++ b/extra/firefox/0002-Bug-1745560-Add-missing-stub-for-wl_proxy_marshal_fl.patch @@ -0,0 +1,28 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kevin Daudt +Date: Sun, 12 Dec 2021 13:38:48 +0000 +Subject: [PATCH] Bug 1745560 - Add missing stub for wl_proxy_marshal_flags, + r=stransky + +Firefox fails to build against wayland 1.20 because this symbol is missing + +Differential Revision: https://phabricator.services.mozilla.com/D133583 +--- + widget/gtk/mozwayland/mozwayland.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/widget/gtk/mozwayland/mozwayland.c b/widget/gtk/mozwayland/mozwayland.c +index 7a448e6321e2..1a86468b4f3d 100644 +--- a/widget/gtk/mozwayland/mozwayland.c ++++ b/widget/gtk/mozwayland/mozwayland.c +@@ -200,3 +200,10 @@ MOZ_EXPORT int wl_list_empty(const struct wl_list* list) { return -1; } + + MOZ_EXPORT void wl_list_insert_list(struct wl_list* list, + struct wl_list* other) {} ++ ++MOZ_EXPORT struct wl_proxy* wl_proxy_marshal_flags( ++ struct wl_proxy* proxy, uint32_t opcode, ++ const struct wl_interface* interface, uint32_t version, uint32_t flags, ++ ...) { ++ return NULL; ++} diff --git a/extra/firefox/PKGBUILD b/extra/firefox/PKGBUILD index 1d24a226e..72947d452 100644 --- a/extra/firefox/PKGBUILD +++ b/extra/firefox/PKGBUILD @@ -11,7 +11,7 @@ buildarch=12 highmem=1 pkgname=firefox -pkgver=95.0 +pkgver=95.0.1 pkgrel=1 pkgdesc="Standalone web browser from mozilla.org" arch=(x86_64) @@ -31,11 +31,13 @@ options=(!emptydirs !makeflags !strip) source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc} build-arm-libopus.patch 0001-Use-remoting-name-for-GDK-application-names.patch + 0002-Bug-1745560-Add-missing-stub-for-wl_proxy_marshal_fl.patch $pkgname.desktop identity-icons-brand.svg) -sha256sums=('7fa3e43f6ec710b2ebba0e99db713a56d13d85f1f23c4a1399bb594fd74864de' +sha256sums=('552a2bd731921f40694a4db8ad31dce6f4e9f52035d04e7cd1f917613f803efa' 'SKIP' '2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9' 'a7a5ea4680c0a4c6eb5a5f99970008f5ad3e2f29f0d6d050aa651bce8c713718' + '8a893ae44955c90a0fb4a504134773293054ab57a41ba7931df98c8cf5449549' '298eae9de76ec53182f38d5c549d0379569916eebf62149f9d7f4a7edef36abf' 'a9b8b4a0a1f4a7b4af77d5fc70c2686d624038909263c795ecc81e0aec7711e9') validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases @@ -60,6 +62,9 @@ prepare() { # https://bugzilla.mozilla.org/show_bug.cgi?id=1530052 patch -Np1 -i ../0001-Use-remoting-name-for-GDK-application-names.patch + # Fix build with wayland 1.20 + patch -Np1 -i ../0002-Bug-1745560-Add-missing-stub-for-wl_proxy_marshal_fl.patch + echo -n "$_google_api_key" >google-api-key echo -n "$_mozilla_api_key" >mozilla-api-key