summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authornikatar2021-11-13 02:03:37 +0300
committernikatar2021-11-13 02:03:37 +0300
commit5a0fed8e30a49a305b01c38c4b73b5930f8bd622 (patch)
tree4cdaf2fec9f028096ed5f8acec69cf3a52e9b608
parent3a5e4b9dd96173474bfbc87f9a334a2d5404e9f3 (diff)
downloadaur-5a0fed8e30a49a305b01c38c4b73b5930f8bd622.tar.gz
94.0.1 + Backport a fix for LLVM 13
-rw-r--r--0001-Use-remoting-name-for-GDK-application-names.patch6
-rw-r--r--0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch173
-rw-r--r--PKGBUILD14
-rw-r--r--unity-menubar.patch13
4 files changed, 192 insertions, 14 deletions
diff --git a/0001-Use-remoting-name-for-GDK-application-names.patch b/0001-Use-remoting-name-for-GDK-application-names.patch
index c1feb3fc8081..86dddaba5fbb 100644
--- a/0001-Use-remoting-name-for-GDK-application-names.patch
+++ b/0001-Use-remoting-name-for-GDK-application-names.patch
@@ -9,10 +9,10 @@ Subject: [PATCH] Use remoting name for GDK application names
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index bb14d84338334..f5c0222987fb0 100644
+index 332f340179d3..840ad794f606 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
-@@ -4299,11 +4299,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
+@@ -4285,11 +4285,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
// consistently.
// Set program name to the one defined in application.ini.
@@ -26,7 +26,7 @@ index bb14d84338334..f5c0222987fb0 100644
// Initialize GTK here for splash.
diff --git a/widget/gtk/nsAppShell.cpp b/widget/gtk/nsAppShell.cpp
-index 60de473de07ab..004c066575c17 100644
+index 60de473de07a..004c066575c1 100644
--- a/widget/gtk/nsAppShell.cpp
+++ b/widget/gtk/nsAppShell.cpp
@@ -24,6 +24,8 @@
diff --git a/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch b/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch
new file mode 100644
index 000000000000..b8fbbe5c8b69
--- /dev/null
+++ b/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch
@@ -0,0 +1,173 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Mike Hommey <mh+mozilla@glandium.org>
+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<pulse::Stream>,
+ data_callback: ffi::cubeb_data_callback,
+ state_callback: ffi::cubeb_state_callback,
+- drain_timer: *mut pa_time_event,
++ drain_timer: AtomicPtr<pa_time_event>,
+ 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/PKGBUILD b/PKGBUILD
index 7bac1e102d68..ec1051b180b4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,7 @@
pkgname=firefox-appmenu
_pkgname=firefox
-pkgver=93.0
+pkgver=94.0.1
pkgrel=1
pkgdesc="Firefox from extra with appmenu patch"
arch=(x86_64)
@@ -28,18 +28,20 @@ conflicts=("firefox")
options=(!emptydirs !makeflags !strip)
source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc}
0001-Use-remoting-name-for-GDK-application-names.patch
+ 0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch
$_pkgname.desktop
identity-icons-brand.svg
fix-wayland-build.patch
unity-menubar.patch
fix_csd_window_buttons.patch)
-sha256sums=('a78f080f5849bc284b84299f3540934a12e961a7ea368b592ae6576ea1f97102'
+sha256sums=('6c09ef337a83a413d5929557043e127598c5c1e02ece3044370e55a3e2eeef70'
'SKIP'
- 'bb9769a8fe720abea2bba5b895c70c4fba0d44bb553399d83350268edf85cdeb'
+ '51cca2cab0fa9798f96b81ed24c238b2a7c98524f589ec500224bac9797b66fb'
+ '744d3956ba60c63fed81903700a4cf66c13d2898944e4e86ac0d3b1e3f222fff'
'34514a657d6907a159594c51e674eeb81297c431ec26a736417c2fdb995c2c0c'
'a9b8b4a0a1f4a7b4af77d5fc70c2686d624038909263c795ecc81e0aec7711e9'
'46724a625f51c358abaee488a7ce75673078e96ba009459339120b8dd11dec25'
- '8bbcaa48023c9eefb7f3ddfcfa4e4c6db6236664540bee7644ae9ecf790e8823'
+ '5a7a06a7d7a748172dbc1ff802a0c9f8208cdd520b29858ebf4a7328cac2cad4'
'e08d0bc5b7e562f5de6998060e993eddada96d93105384960207f7bdf2e1ed6e')
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>
@@ -65,6 +67,10 @@ prepare() {
# https://bugzilla.mozilla.org/show_bug.cgi?id=1530052
patch -Np1 -i ../0001-Use-remoting-name-for-GDK-application-names.patch
+ # https://bugzilla.opensuse.org/show_bug.cgi?id=1192067
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1735905
+ patch -Np1 -i ../0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch
+
# actual appmenu patch from ubuntu repos
# http://archive.ubuntu.com/ubuntu/pool/main/f/firefox/firefox_80.0+build2-0ubuntu0.16.04.1.debian.tar.xz
patch -Np1 -i ../unity-menubar.patch
diff --git a/unity-menubar.patch b/unity-menubar.patch
index e404f73da79a..36d9dd8fd746 100644
--- a/unity-menubar.patch
+++ b/unity-menubar.patch
@@ -37,15 +37,14 @@
popup.insertBefore(menu, firstMenuItem);
--- a/browser/components/places/content/places.xhtml
+++ b/browser/components/places/content/places.xhtml
-@@ -169,7 +169,7 @@
- <toolbarbutton type="menu" class="tabbable" wantdropmarker="true"
- onpopupshowing="document.getElementById('placeContent').focus()"
+@@ -165,6 +165,7 @@
#else
-- <menubar id="placesMenu">
-+ <menubar id="placesMenu" _moz-menubarkeeplocal="true">
- <menu accesskey="&organize.accesskey;" class="menu-iconic"
+ <menubar id="placesMenu">
+ <menu class="menu-iconic" data-l10n-id="places-organize-button"
++ _moz-menubarkeeplocal="true"
#endif
- id="organizeButton" label="&organize.label;"
+ id="organizeButton">
+ <menupopup id="organizeButtonPopup">
--- a/dom/xul/XULPopupElement.cpp
+++ b/dom/xul/XULPopupElement.cpp
@@ -211,6 +211,10 @@ void XULPopupElement::GetState(nsString&