From e4c1093a715dcb1d9227dcdfccd9c8d151c90c47 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 30 Jun 2020 13:55:07 +0300 Subject: [PATCH] firefox [testing]: Bump to 78.0 --- testing/firefox/build | 98 +++++++ testing/firefox/checksums | 4 + testing/firefox/depends | 51 ++++ testing/firefox/patches/no-dbus.patch | 359 ++++++++++++++++++++++++++ testing/firefox/post-install | 14 + testing/firefox/sources | 4 + testing/firefox/version | 1 + 7 files changed, 531 insertions(+) create mode 100755 testing/firefox/build create mode 100644 testing/firefox/checksums create mode 100644 testing/firefox/depends create mode 100644 testing/firefox/patches/no-dbus.patch create mode 100755 testing/firefox/post-install create mode 100644 testing/firefox/sources create mode 100644 testing/firefox/version diff --git a/testing/firefox/build b/testing/firefox/build new file mode 100755 index 00000000..1733b431 --- /dev/null +++ b/testing/firefox/build @@ -0,0 +1,98 @@ +#!/bin/sh -e + +# Down to one patch!!!! (Thank you to Michael Forney). +patch -p1 < no-dbus.patch + +# Build autoconf 2.13 for Firefox's sole use. +# See: https://bugzilla.mozilla.org/show_bug.cgi?id=104642 +( + cd autoconf2.13 + + ./configure \ + --prefix="$PWD/../junk" \ + --program-suffix=-2.13 + + make + make install +) + +# Build yasm for Firefox's sole use. +# Firefox is the only package which needs it +# and upstream is kinda dead. +( + cd yasm + + ./configure \ + --prefix="$PWD/../junk" + + make + make install +) +export PATH="$PWD/junk/bin:$PATH" + +mkdir -p build +cd build + +# Bypass 'ccache' as it's totally useless when building +# Firefox and only slows things down. +export CC="${CC:-/usr/bin/cc}" +export CXX="${CXX:-/usr/bin/c++}" + +export LDFLAGS="$LDFLAGS -Wl,-rpath=/usr/lib/firefox" +export RUSTFLAGS="$RUSTFLAGS -Cdebuginfo=0" +export MOZ_DEBUG_FLAGS=-g0 +export MOZ_NOSPAM=1 + +../configure \ + --prefix=/usr \ + --libdir=/usr/lib \ + --enable-official-branding \ + --enable-optimize="$CFLAGS -w" \ + --enable-install-strip \ + --enable-strip \ + --enable-rust-simd \ + --enable-application=browser \ + --enable-release \ + --enable-alsa \ + --without-system-nspr \ + --without-system-nss \ + --with-system-jpeg \ + --with-system-zlib \ + --with-system-bz2 \ + --with-system-png \ + --without-system-libvpx \ + --with-system-pixman \ + --with-system-ffi \ + --disable-gconf \ + --disable-profiling \ + --disable-accessibility \ + --disable-tests \ + --disable-system-extension-dirs \ + --disable-parental-controls \ + --disable-debug-symbols \ + --disable-callgrind \ + --disable-vtune \ + --disable-elf-hack \ + --disable-gold \ + --disable-jemalloc \ + --disable-pulseaudio \ + --disable-startup-notification \ + --disable-crashreporter \ + --disable-updater \ + --disable-dbus \ + --disable-eme \ + --disable-necko-wifi + +make +make DESTDIR="$1" install + +# Remove a lot of uneeded "stuff". +rm -rf "$1/usr/include" +rm -rf "$1/usr/lib/firefox-devel" +rm -rf "$1/usr/share/idl" +rm -rf "$1/usr/lib/firefox/gtk2" # Drop GTK+2 runtime dependency. +rm -f "$1/usr/lib/firefox/browser/features/fxmonitor@mozilla.org.xpi" +rm -f "$1/usr/lib/firefox/browser/features/screenshots@mozilla.org.xpi" +rm -f "$1/usr/lib/firefox/browser/features/webcompat-reporter@mozilla.org.xpi" +rm -f "$1/usr/lib/firefox/browser/features/webcompat@mozilla.org.xpi" +rm -f "$1/usr/lib/firefox/browser/features/doh-rollout@mozilla.org.xpi" diff --git a/testing/firefox/checksums b/testing/firefox/checksums new file mode 100644 index 00000000..84f93db9 --- /dev/null +++ b/testing/firefox/checksums @@ -0,0 +1,4 @@ +291a593151e476e6c4b61e48a3bdd5a11896fbde6261dcad347d5b7df265a058 firefox-78.0.source.tar.xz +f0611136bee505811e9ca11ca7ac188ef5323a8e2ef19cffd3edb3cf08fd791e autoconf-2.13.tar.gz +3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f yasm-1.3.0.tar.gz +897f4a17750ef6dfb583b4bba3ace5e86698c6e7a2cf87ff461a13408d5d1952 no-dbus.patch diff --git a/testing/firefox/depends b/testing/firefox/depends new file mode 100644 index 00000000..9d48cc76 --- /dev/null +++ b/testing/firefox/depends @@ -0,0 +1,51 @@ +alsa-lib +atk +bzip2 +cairo +cbindgen make +clang make +expat +ffmpeg +fontconfig +freetype-harfbuzz +fribidi +gdk-pixbuf +glib +gtk+2 make +gtk+3 +libICE +libSM +libX11 +libXau +libXcomposite +libXcursor +libXdamage +libXext +libXfixes +libXi +libXinerama +libXrandr +libXrender +libXt +libXxf86vm +libdrm +libepoxy +libffi +libjpeg-turbo +libpng +libvpx +libxcb +libxshmfence +llvm make +m4 make +mesa +nasm make +nodejs make +pango +perl make +pixman +python make +python2 make +rust make +zip make +zlib diff --git a/testing/firefox/patches/no-dbus.patch b/testing/firefox/patches/no-dbus.patch new file mode 100644 index 00000000..c69840fa --- /dev/null +++ b/testing/firefox/patches/no-dbus.patch @@ -0,0 +1,359 @@ +diff --git a/Cargo.lock b/Cargo.lock +index b1fca7cbca..888dd6d3fd 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -111,25 +111,11 @@ dependencies = [ + "bitflags", + ] + +-[[package]] +-name = "audio_thread_priority" +-version = "0.22.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f8fba1500e466a39dd3faa5aed20a50dfe0aa1b905264a453bbe9f49508994cc" +-dependencies = [ +- "cfg-if", +- "dbus", +- "libc", +- "log", +- "mach", +- "winapi 0.3.7", +-] + + [[package]] + name = "audioipc" + version = "0.2.5" + dependencies = [ +- "audio_thread_priority", + "bincode", + "bytes 0.4.9", + "cc", +@@ -156,7 +142,6 @@ dependencies = [ + name = "audioipc-client" + version = "0.4.0" + dependencies = [ +- "audio_thread_priority", + "audioipc", + "cubeb-backend", + "futures 0.1.29", +@@ -169,7 +154,6 @@ dependencies = [ + name = "audioipc-server" + version = "0.2.3" + dependencies = [ +- "audio_thread_priority", + "audioipc", + "cubeb-core", + "error-chain", +@@ -1890,7 +1874,6 @@ dependencies = [ + name = "gkrust-shared" + version = "0.1.0" + dependencies = [ +- "audio_thread_priority", + "audioipc-client", + "audioipc-server", + "authenticator", +diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp +index 2fe91affcd..ae835b2c34 100644 +--- a/dom/ipc/ContentChild.cpp ++++ b/dom/ipc/ContentChild.cpp +@@ -111,9 +111,7 @@ + #include "GMPServiceChild.h" + #include "nsIStringBundle.h" + #include "Geolocation.h" +-#include "audio_thread_priority.h" + #include "nsIConsoleService.h" +-#include "audio_thread_priority.h" + #include "nsIURIMutator.h" + #include "nsIInputStreamChannel.h" + #include "nsFocusManager.h" +@@ -1624,9 +1622,7 @@ mozilla::ipc::IPCResult ContentChild::RecvSetProcessSandbox( + } else { + // Pre-start audio before sandboxing; see bug 1443612. + if (StaticPrefs::media_cubeb_sandbox()) { +- if (atp_set_real_time_limit(0, 48000)) { + NS_WARNING("could not set real-time limit at process startup"); +- } + InstallSoftRealTimeLimitHandler(); + } else { + Unused << CubebUtils::GetCubebContext(); +diff --git a/dom/media/GraphRunner.cpp b/dom/media/GraphRunner.cpp +index 6ea8f2e9ca..51dba21d71 100644 +--- a/dom/media/GraphRunner.cpp ++++ b/dom/media/GraphRunner.cpp +@@ -13,7 +13,6 @@ + #include "nsISupportsPriority.h" + #include "prthread.h" + #include "Tracing.h" +-#include "audio_thread_priority.h" + + namespace mozilla { + +@@ -95,8 +94,6 @@ auto GraphRunner::OneIteration(GraphTime aStateEnd, GraphTime aIterationEnd, + } + + NS_IMETHODIMP GraphRunner::Run() { +- atp_handle* handle = +- atp_promote_current_thread_to_real_time(0, mGraph->GraphRate()); + + nsCOMPtr threadInternal = do_QueryInterface(mThread); + threadInternal->SetObserver(mGraph); +@@ -119,9 +116,6 @@ NS_IMETHODIMP GraphRunner::Run() { + mMonitor.Notify(); + } + +- if (handle) { +- atp_demote_current_thread_from_real_time(handle); +- } + + return NS_OK; + } +diff --git a/dom/media/UnderrunHandlerLinux.cpp b/dom/media/UnderrunHandlerLinux.cpp +index af5c84538e..9fecb5ebd2 100644 +--- a/dom/media/UnderrunHandlerLinux.cpp ++++ b/dom/media/UnderrunHandlerLinux.cpp +@@ -9,7 +9,6 @@ + + #include + #include +-#include "audio_thread_priority.h" + + namespace mozilla { + +@@ -57,21 +56,8 @@ void InstallSoftRealTimeLimitHandler() { + } + + void DemoteThreadFromRealTime() { +- atp_thread_info* info = atp_get_current_thread_info(); +- if (!info) { + NS_WARNING("Could not get current thread info when demoting thread."); + return; +- } +- int rv = atp_demote_thread_from_real_time(info); +- if (rv) { +- NS_WARNING("Could not demote thread from real-time."); +- return; +- } +- rv = atp_free_thread_info(info); +- if (rv) { +- NS_WARNING("Could not free atp_thread_info struct"); +- } +- gRealtimeLimitReached = false; + } + + } // namespace mozilla +diff --git a/dom/media/moz.build b/dom/media/moz.build +index c8dc9fe2d1..ae43f16fa3 100644 +--- a/dom/media/moz.build ++++ b/dom/media/moz.build +@@ -100,7 +100,6 @@ XPIDL_SOURCES += [ + XPIDL_MODULE = 'dom_media' + + EXPORTS += [ +- '../../third_party/rust/audio_thread_priority/audio_thread_priority.h', + 'ADTSDecoder.h', + 'ADTSDemuxer.h', + 'AsyncLogger.h', +diff --git a/media/audioipc/audioipc/Cargo.toml b/media/audioipc/audioipc/Cargo.toml +index dfffa97f24..d9d2cf7d95 100644 +--- a/media/audioipc/audioipc/Cargo.toml ++++ b/media/audioipc/audioipc/Cargo.toml +@@ -19,7 +19,6 @@ serde = "1" + serde_derive = "1" + tokio = "0.1" + tokio-io = "0.1" +-audio_thread_priority = "0.22" + + [target.'cfg(unix)'.dependencies] + iovec = "0.1" +diff --git a/media/audioipc/audioipc/src/messages.rs b/media/audioipc/audioipc/src/messages.rs +index 9cda962e0e..37e6119b74 100644 +--- a/media/audioipc/audioipc/src/messages.rs ++++ b/media/audioipc/audioipc/src/messages.rs +@@ -5,8 +5,6 @@ + + use crate::PlatformHandle; + use crate::PlatformHandleType; +-#[cfg(target_os = "linux")] +-use audio_thread_priority::RtPriorityThreadInfo; + use cubeb::{self, ffi}; + use std::ffi::{CStr, CString}; + use std::os::raw::{c_char, c_int, c_uint}; +@@ -211,8 +209,6 @@ pub enum ServerMessage { + StreamGetCurrentDevice(usize), + StreamRegisterDeviceChangeCallback(usize, bool), + +- #[cfg(target_os = "linux")] +- PromoteThreadToRealTime([u8; std::mem::size_of::()]), + } + + // Server -> Client messages. +@@ -243,8 +239,6 @@ pub enum ClientMessage { + StreamCurrentDevice(Device), + StreamRegisterDeviceChangeCallback, + +- #[cfg(target_os = "linux")] +- ThreadPromoted, + + Error(c_int), + } +diff --git a/media/audioipc/client/Cargo.toml b/media/audioipc/client/Cargo.toml +index 4a55c0162e..2fbccc05df 100644 +--- a/media/audioipc/client/Cargo.toml ++++ b/media/audioipc/client/Cargo.toml +@@ -9,7 +9,6 @@ description = "Cubeb Backend for talking to remote cubeb server." + edition = "2018" + + [dependencies] +-audio_thread_priority = "0.22" + audioipc = { path="../audioipc" } + cubeb-backend = "0.7" + futures = { version="0.1.18", default-features=false, features=["use_std"] } +diff --git a/media/audioipc/client/src/context.rs b/media/audioipc/client/src/context.rs +index 6b13900c54..87323508b8 100644 +--- a/media/audioipc/client/src/context.rs ++++ b/media/audioipc/client/src/context.rs +@@ -6,10 +6,6 @@ + use crate::stream; + use crate::{assert_not_in_callback, run_in_callback}; + use crate::{ClientStream, AUDIOIPC_INIT_PARAMS}; +-#[cfg(target_os = "linux")] +-use audio_thread_priority::get_current_thread_info; +-#[cfg(not(target_os = "linux"))] +-use audio_thread_priority::promote_current_thread_to_real_time; + use audioipc::codec::LengthDelimitedCodec; + use audioipc::frame::{framed, Framed}; + use audioipc::platformhandle_passing::{framed_with_platformhandles, FramedWithPlatformHandles}; +@@ -72,31 +68,6 @@ impl ClientContext { + } + } + +-#[cfg(target_os = "linux")] +-fn promote_thread(rpc: &rpc::ClientProxy) { +- match get_current_thread_info() { +- Ok(info) => { +- let bytes = info.serialize(); +- // Don't wait for the response, this is on the callback thread, which must not block. +- rpc.call(ServerMessage::PromoteThreadToRealTime(bytes)); +- } +- Err(_) => { +- warn!("Could not remotely promote thread to RT."); +- } +- } +-} +- +-#[cfg(not(target_os = "linux"))] +-fn promote_thread(_rpc: &rpc::ClientProxy) { +- match promote_current_thread_to_real_time(0, 48000) { +- Ok(_) => { +- info!("Audio thread promoted to real-time."); +- } +- Err(_) => { +- warn!("Could not promote thread to real-time."); +- } +- } +-} + + fn register_thread(callback: Option) { + if let Some(func) = callback { +@@ -116,7 +87,6 @@ fn promote_and_register_thread( + rpc: &rpc::ClientProxy, + callback: Option, + ) { +- promote_thread(rpc); + register_thread(callback); + } + +diff --git a/media/audioipc/server/Cargo.toml b/media/audioipc/server/Cargo.toml +index 99afe54939..99a3440d33 100644 +--- a/media/audioipc/server/Cargo.toml ++++ b/media/audioipc/server/Cargo.toml +@@ -9,7 +9,6 @@ description = "Remote cubeb server" + edition = "2018" + + [dependencies] +-audio_thread_priority = "0.22" + audioipc = { path = "../audioipc" } + cubeb-core = "0.7.0" + futures = "0.1.29" +diff --git a/media/audioipc/server/src/lib.rs b/media/audioipc/server/src/lib.rs +index 4d49c8fc08..3c44ee3def 100644 +--- a/media/audioipc/server/src/lib.rs ++++ b/media/audioipc/server/src/lib.rs +@@ -9,7 +9,6 @@ extern crate error_chain; + #[macro_use] + extern crate log; + +-use audio_thread_priority::promote_current_thread_to_real_time; + use audioipc::core; + use audioipc::platformhandle_passing::framed_with_platformhandles; + use audioipc::rpc; +@@ -64,12 +63,6 @@ fn run() -> Result { + let callback_thread = core::spawn_thread( + "AudioIPC Callback RPC", + || { +- match promote_current_thread_to_real_time(0, 48000) { +- Ok(_) => {} +- Err(_) => { +- debug!("Failed to promote audio callback thread to real-time."); +- } +- } + trace!("Starting up cubeb audio callback event loop thread..."); + Ok(()) + }, +diff --git a/media/audioipc/server/src/server.rs b/media/audioipc/server/src/server.rs +index f07432f71f..b90e9d9be7 100644 +--- a/media/audioipc/server/src/server.rs ++++ b/media/audioipc/server/src/server.rs +@@ -3,8 +3,6 @@ + // This program is made available under an ISC-style license. See the + // accompanying file LICENSE for details + +-#[cfg(target_os = "linux")] +-use audio_thread_priority::{promote_thread_to_real_time, RtPriorityThreadInfo}; + use audioipc; + use audioipc::codec::LengthDelimitedCodec; + use audioipc::frame::{framed, Framed}; +@@ -636,19 +634,6 @@ impl CubebServer { + ) + .unwrap_or_else(error), + +- #[cfg(target_os = "linux")] +- ServerMessage::PromoteThreadToRealTime(thread_info) => { +- let info = RtPriorityThreadInfo::deserialize(thread_info); +- match promote_thread_to_real_time(info, 0, 48000) { +- Ok(_) => { +- info!("Promotion of content process thread to real-time OK"); +- } +- Err(_) => { +- warn!("Promotion of content process thread to real-time error"); +- } +- } +- ClientMessage::ThreadPromoted +- } + }; + + trace!("process_msg: req={:?}, resp={:?}", msg, resp); +diff --git a/toolkit/library/rust/shared/Cargo.toml b/toolkit/library/rust/shared/Cargo.toml +index 5fdb0eb2c0..d9bc0346cb 100644 +--- a/toolkit/library/rust/shared/Cargo.toml ++++ b/toolkit/library/rust/shared/Cargo.toml +@@ -41,7 +41,6 @@ storage = { path = "../../../../storage/rust" } + bookmark_sync = { path = "../../../components/places/bookmark_sync", optional = true } + shift_or_euc_c = "0.1.0" + chardetng_c = "0.1.1" +-audio_thread_priority = "0.22.1" + mdns_service = { path="../../../../media/mtransport/mdns_service", optional = true } + neqo_glue = { path = "../../../../netwerk/socket/neqo_glue" } + rlbox_lucet_sandbox = { version = "0.1.0", optional = true } +diff --git a/toolkit/library/rust/shared/lib.rs b/toolkit/library/rust/shared/lib.rs +index 3285383a11..d228bc9bad 100644 +--- a/toolkit/library/rust/shared/lib.rs ++++ b/toolkit/library/rust/shared/lib.rs +@@ -51,7 +51,6 @@ extern crate xpcom; + #[cfg(feature = "new_xulstore")] + extern crate xulstore; + +-extern crate audio_thread_priority; + + #[cfg(not(target_os = "android"))] + extern crate webext_storage_bridge; diff --git a/testing/firefox/post-install b/testing/firefox/post-install new file mode 100755 index 00000000..cb5f0289 --- /dev/null +++ b/testing/firefox/post-install @@ -0,0 +1,14 @@ +#!/bin/sh + +cat <