From 8abbf2a5ef061d4f7be428cd230d41b4e804671a Mon Sep 17 00:00:00 2001 From: Owen Rafferty Date: Sat, 11 Nov 2023 23:52:57 -0600 Subject: [PATCH] firefox [testing]: 120.0b9 --- testing/firefox/README | 123 ++++++++++++++++++ testing/firefox/build | 76 +++++++++++ testing/firefox/checksums | 7 + testing/firefox/depends | 33 +++++ .../patches/fix-target-detection.patch | 19 +++ testing/firefox/patches/fix-vaapi.patch | 19 +++ testing/firefox/patches/musl-sandbox.patch | 29 +++++ testing/firefox/patches/no-atk.patch | 16 +++ testing/firefox/patches/no-dbus.patch | 69 ++++++++++ testing/firefox/patches/no-fribidi.patch | 12 ++ testing/firefox/post-install | 12 ++ testing/firefox/sources | 7 + testing/firefox/version | 1 + 13 files changed, 423 insertions(+) create mode 100644 testing/firefox/README create mode 100755 testing/firefox/build create mode 100644 testing/firefox/checksums create mode 100644 testing/firefox/depends create mode 100644 testing/firefox/patches/fix-target-detection.patch create mode 100644 testing/firefox/patches/fix-vaapi.patch create mode 100644 testing/firefox/patches/musl-sandbox.patch create mode 100644 testing/firefox/patches/no-atk.patch create mode 100644 testing/firefox/patches/no-dbus.patch create mode 100644 testing/firefox/patches/no-fribidi.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/README b/testing/firefox/README new file mode 100644 index 00000000..70214c4d --- /dev/null +++ b/testing/firefox/README @@ -0,0 +1,123 @@ +firefox +________________________________________________________________________________ + +Mozilla Firefox or simply Firefox, is a free and open-source web browser +developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. +Firefox uses the Gecko rendering engine to display web pages. [0] + +Upstream: https://www.mozilla.org/firefox + + +[000] Index +________________________________________________________________________________ + +* Installation ........................................................... [001] + * Runtime Dependencies ................................................. [002] + * Privacy Package ...................................................... [003] +* Setup .................................................................. [004] + * Enable VAAPI Acceleration ............................................ [005] +* Usage .................................................................. [006] +* References ............................................................. [007] + + +[001] Installation +________________________________________________________________________________ + ++------------------------------------------------------------------------------+ +| | +| $ kiss b firefox | +| | ++------------------------------------------------------------------------------+ + + +--[002] Runtime Dependencies --------------------------------------------------- + + Firefox needs a few additional things to be fully functional. One is an icon + theme and the other is a font. If you have already installed the fonts and + icon theme of your choosing, this step can be skipped. + + +----------------------------------------------------------------------------+ + | | + | $ kiss b [hicolor-icon-theme|adwaita-icon-theme] | + | $ kiss b ttf-croscore | + | | + +----------------------------------------------------------------------------+ + + +--[003] Privacy Package -------------------------------------------------------- + + Provided is also an optional privacy package which makes Firefox perform zero + unsolicited network requests. More information can be found in the + documentation (@/firefox-privacy) Expect some website breakage when using this + privacy package YMMV. + + +----------------------------------------------------------------------------+ + | | + | $ kiss b firefox-privacy | + | | + +----------------------------------------------------------------------------+ + + +[004] Setup +________________________________________________________________________________ + +As of Firefox 91. There is no need to set special environment variables to +enable Wayland support (in a Wayland only environment like ours). The browser +should start with no further configuration. + + +--[005] Enable VAAPI Acceleration ---------------------------------------------- + +As of Firefox 102, only the following modification to about:config should be +required, with no need to disable any sandbox features. + ++------------------------------------------------------------------------------+ +| | +| about:config | +| | +| media.ffmpeg.vaapi.enabled=true | +| | ++------------------------------------------------------------------------------+ + +If using AMDGPU, the following kernel option must be enabled. [1] + ++------------------------------------------------------------------------------+ +| | +| .config | +| | +| CONFIG_CHECKPOINT_RESTORE=y | +| | ++------------------------------------------------------------------------------+ + +You may also need to set the following environment variable. + ++------------------------------------------------------------------------------+ +| | +| .profile | +| | +| export MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD128 | +| | ++------------------------------------------------------------------------------+ + +To verify that VAAPI is working, launch Firefox with the following argument and +attempt to watch a video. Pay attention for errors in the output. + ++------------------------------------------------------------------------------+ +| | +| $ firefox --MOZ_LOG=PlatformDecoderModule:4 | +| | ++------------------------------------------------------------------------------+ + + +[006] Usage +________________________________________________________________________________ + +Refer to the browser's help output and online documentation for further +information. + + +[007] References +________________________________________________________________________________ + +[0] https://en.wikipedia.org/wiki/Firefox + diff --git a/testing/firefox/build b/testing/firefox/build new file mode 100755 index 00000000..fef79673 --- /dev/null +++ b/testing/firefox/build @@ -0,0 +1,76 @@ +#!/bin/sh -e + +for p in *.patch; do + patch -p1 < "$p" +done + +sed '/UNZIP/d' toolkit/moz.configure > _ +mv -f _ toolkit/moz.configure + +# If using libc++, CXXSTDLIB needs to be set manually. +case $("$CC" -print-file-name=libc++.so) in */*) + export CXXSTDLIB=c++ +esac + +export CFLAGS="$CFLAGS -w" +export CXXFLAGS="$CXXFLAGS -w" + +# Instruct the compiler to trim absolute paths in resulting binaries and instead +# change them to relative paths ($PWD/... ./...). +export RUSTFLAGS="$RUSTFLAGS --remap-path-prefix=$PWD=." + +export LDFLAGS="$LDFLAGS -Wl,-rpath=/usr/lib/firefox,--enable-new-dtags" +export RUSTFLAGS="$RUSTFLAGS -Cdebuginfo=0" +export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system +export MOZ_DEBUG_FLAGS=-g0 +export MOZBUILD_STATE_PATH="$PWD/state" +export MOZ_NOSPAM=1 + +cat > .mozconfig << EOF +ac_add_options --prefix=/usr +ac_add_options --libdir=/usr/lib +ac_add_options --enable-default-toolkit=cairo-gtk3-wayland-only +ac_add_options --enable-strip +ac_add_options --enable-release +ac_add_options --enable-rust-simd +ac_add_options --enable-audio-backends=alsa +ac_add_options --enable-install-strip +ac_add_options --enable-official-branding +ac_add_options --enable-application=browser +ac_add_options --enable-optimize +ac_add_options --with-system-ffi +ac_add_options --with-system-jpeg +ac_add_options --with-system-libvpx +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +ac_add_options --with-system-pixman +ac_add_options --with-system-png +ac_add_options --with-system-webp +ac_add_options --with-system-zlib +ac_add_options --without-wasm-sandboxed-libraries +ac_add_options --disable-eme +ac_add_options --disable-dbus +ac_add_options --disable-tests +ac_add_options --disable-vtune +ac_add_options --disable-updater +ac_add_options --disable-jemalloc +ac_add_options --disable-elf-hack +ac_add_options --disable-callgrind +ac_add_options --disable-profiling +ac_add_options --disable-necko-wifi +ac_add_options --disable-crashreporter +ac_add_options --disable-accessibility +ac_add_options --disable-debug +ac_add_options --disable-debug-symbols +ac_add_options --disable-parental-controls +ac_add_options --disable-system-extension-dirs +EOF + +./mach build +DESTDIR="$1" ./mach install + +# Remove a lot of uneeded "stuff". +rm -rf \ + "$1/usr/include" \ + "$1/usr/lib/firefox-devel" \ + "$1/usr/share/idl" diff --git a/testing/firefox/checksums b/testing/firefox/checksums new file mode 100644 index 00000000..646ac459 --- /dev/null +++ b/testing/firefox/checksums @@ -0,0 +1,7 @@ +9566b2a165f2baf797a0521afc031c78474f83fd0a2f647975bf6d7d09628c593e +3e4e722acd2ab2e38a16ec23b29296318d77cc54f034d4b21d91bde085e26bc0a3 +49e95cf848c09df618587bb8286bed3ed9531e24554b9ef275f070201078dba7f5 +ee279241e461011e2265086328d9d0a913ab938bb81aa97fa22b8b9b7edf5e33bc +8c0f419eb138061e67dbe2ac73e9c8332649fb90aacb57ac4f00d5de94c0cf23a8 +80b730f4e9c58d33b26915b4a4c11e02443a07914cd7cea44ce17e93d0e0ba4cee +2914dbf6d620c3403fbe99fcd04618eaab4257b706470dec3bacc5952f79a0fa31 diff --git a/testing/firefox/depends b/testing/firefox/depends new file mode 100644 index 00000000..fbbaacd4 --- /dev/null +++ b/testing/firefox/depends @@ -0,0 +1,33 @@ +alsa-lib +bzip2 +cairo +cbindgen make +clang make +expat +ffmpeg +fontconfig +freetype-harfbuzz +gdk-pixbuf +glib +gtk+3 +libdrm +libffi +libjpeg-turbo +libpng +libvpx +libwebp +llvm make +m4 make +mesa +nasm make +nodejs make +nspr +nss +pango +pixman +pkgconf make +python make +rust make +wayland +wayland-protocols make +zlib diff --git a/testing/firefox/patches/fix-target-detection.patch b/testing/firefox/patches/fix-target-detection.patch new file mode 100644 index 00000000..8e115a3d --- /dev/null +++ b/testing/firefox/patches/fix-target-detection.patch @@ -0,0 +1,19 @@ +diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure +index 7a2fd1a..ba5ba62 100644 +--- a/build/moz.configure/rust.configure ++++ b/build/moz.configure/rust.configure +@@ -403,9 +403,13 @@ def detect_rustc_target( + ] + if len(narrowed) == 1: + return narrowed[0].rust_target ++ elif narrowed: ++ candidates = narrowed ++ ++ aliased_vendor = "unknown" if host_or_target.vendor == "pc" else host_or_target.vendor + + # Finally, see if the vendor can be used to disambiguate. +- narrowed = [c for c in candidates if c.target.vendor == host_or_target.vendor] ++ narrowed = [c for c in candidates if c.target.vendor == aliased_vendor] + if len(narrowed) == 1: + return narrowed[0].rust_target + diff --git a/testing/firefox/patches/fix-vaapi.patch b/testing/firefox/patches/fix-vaapi.patch new file mode 100644 index 00000000..5daaeb75 --- /dev/null +++ b/testing/firefox/patches/fix-vaapi.patch @@ -0,0 +1,19 @@ +diff --git a/widget/gtk/GfxInfo.cpp b/widget/gtk/GfxInfo.cpp +index 24885ca..3815eb4 100644 +--- a/widget/gtk/GfxInfo.cpp ++++ b/widget/gtk/GfxInfo.cpp +@@ -1095,14 +1095,6 @@ const nsTArray& GfxInfo::GetGfxDriverInfo() { + nsIGfxInfo::FEATURE_BLOCKED_DEVICE, DRIVER_LESS_THAN, V(23, 1, 1, 0), + "FEATURE_HARDWARE_VIDEO_DECODING_AMD_DISABLE", "Mesa 23.1.1.0"); + +- // Disable on Release/late Beta on AMD +-#if !defined(EARLY_BETA_OR_EARLIER) +- APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::Linux, DeviceFamily::AtiAll, +- nsIGfxInfo::FEATURE_HARDWARE_VIDEO_DECODING, +- nsIGfxInfo::FEATURE_BLOCKED_DEVICE, +- DRIVER_COMPARISON_IGNORED, V(0, 0, 0, 0), +- "FEATURE_HARDWARE_VIDEO_DECODING_DISABLE", ""); +-#endif + //////////////////////////////////// + // FEATURE_HW_DECODED_VIDEO_ZERO_COPY - ALLOWLIST + APPEND_TO_DRIVER_BLOCKLIST2(OperatingSystem::Linux, DeviceFamily::All, diff --git a/testing/firefox/patches/musl-sandbox.patch b/testing/firefox/patches/musl-sandbox.patch new file mode 100644 index 00000000..c3bb72b2 --- /dev/null +++ b/testing/firefox/patches/musl-sandbox.patch @@ -0,0 +1,29 @@ +diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp +index dffefac..19cc432 100644 +--- a/security/sandbox/linux/SandboxFilter.cpp ++++ b/security/sandbox/linux/SandboxFilter.cpp +@@ -1595,6 +1595,11 @@ class ContentSandboxPolicy : public SandboxPolicyCommon { + case __NR_clone3: + return Error(ENOSYS); + ++# ifdef __NR_fork ++ case __NR_fork: ++ return Error(ENOSYS); ++# endif ++ + # ifdef __NR_fadvise64 + case __NR_fadvise64: + return Allow(); +@@ -1736,10 +1741,10 @@ class GMPSandboxPolicy : public SandboxPolicyCommon { + return Allow(); + case __NR_sched_get_priority_min: + case __NR_sched_get_priority_max: ++ case __NR_sched_setscheduler: + return Allow(); + case __NR_sched_getparam: +- case __NR_sched_getscheduler: +- case __NR_sched_setscheduler: { ++ case __NR_sched_getscheduler: { + Arg pid(0); + return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr)); + } diff --git a/testing/firefox/patches/no-atk.patch b/testing/firefox/patches/no-atk.patch new file mode 100644 index 00000000..807b7de6 --- /dev/null +++ b/testing/firefox/patches/no-atk.patch @@ -0,0 +1,16 @@ +diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp +index b77fadc..520305a 100644 +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -659,9 +659,11 @@ void nsWindow::Destroy() { + // We need to detach accessible object here because mContainer is a custom + // widget and doesn't call gtk_widget_real_destroy() from destroy handler + // as regular widgets. ++#ifdef ACCESSIBILITY + if (AtkObject* ac = gtk_widget_get_accessible(GTK_WIDGET(mContainer))) { + gtk_accessible_set_widget(GTK_ACCESSIBLE(ac), nullptr); + } ++#endif + + gtk_widget_destroy(mShell); + mShell = nullptr; diff --git a/testing/firefox/patches/no-dbus.patch b/testing/firefox/patches/no-dbus.patch new file mode 100644 index 00000000..e6af794e --- /dev/null +++ b/testing/firefox/patches/no-dbus.patch @@ -0,0 +1,69 @@ +diff -r fc5ee47dac3e toolkit/components/remote/moz.build +--- a/toolkit/components/remote/moz.build Tue Jun 28 12:00:27 2022 -0500 ++++ b/toolkit/components/remote/moz.build Thu Jun 30 00:35:24 2022 -0500 +@@ -26,7 +26,7 @@ + "nsUnixRemoteServer.h", + "RemoteUtils.h", + ] +- else: ++ elif CONFIG["MOZ_X11"]: + SOURCES += [ + "nsGTKRemoteServer.cpp", + "nsXRemoteClient.cpp", +diff -r fc5ee47dac3e toolkit/components/remote/nsRemoteService.cpp +--- a/toolkit/components/remote/nsRemoteService.cpp Tue Jun 28 12:00:27 2022 -0500 ++++ b/toolkit/components/remote/nsRemoteService.cpp Thu Jun 30 00:35:24 2022 -0500 +@@ -6,12 +6,14 @@ + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + + #ifdef MOZ_WIDGET_GTK +-# ifdef MOZ_ENABLE_DBUS ++# if defined(MOZ_ENABLE_DBUS) + # include "nsDBusRemoteServer.h" + # include "nsDBusRemoteClient.h" +-# else ++# elif defined(MOZ_X11) + # include "nsGTKRemoteServer.h" + # include "nsXRemoteClient.h" ++# else ++# include "nsRemoteClient.h" + # endif + #elif defined(XP_WIN) + # include "nsWinRemoteServer.h" +@@ -94,8 +96,10 @@ + #ifdef MOZ_WIDGET_GTK + # if defined(MOZ_ENABLE_DBUS) + client = MakeUnique(); ++# elif defined(MOZ_X11) ++ client = MakeUnique(); + # else +- client = MakeUnique(); ++ return REMOTE_NOT_FOUND; + # endif + #elif defined(XP_WIN) + client = MakeUnique(); +@@ -138,8 +142,10 @@ + #ifdef MOZ_WIDGET_GTK + # if defined(MOZ_ENABLE_DBUS) + mRemoteServer = MakeUnique(); ++# elif defined(MOZ_X11) ++ mRemoteServer = MakeUnique(); + # else +- mRemoteServer = MakeUnique(); ++ return; + # endif + #elif defined(XP_WIN) + mRemoteServer = MakeUnique(); +--- a/widget/gtk/nsAppShell.cpp ++++ b/widget/gtk/nsAppShell.cpp +@@ -296,8 +296,10 @@ + do_GetService(POWERMANAGERSERVICE_CONTRACTID); + + if (powerManagerService) { ++#ifdef MOZ_ENABLE_DBUS + powerManagerService->AddWakeLockListener( + WakeLockListener::GetSingleton()); ++#endif + } else { + NS_WARNING( + "Failed to retrieve PowerManagerService, wakelocks will be broken!"); diff --git a/testing/firefox/patches/no-fribidi.patch b/testing/firefox/patches/no-fribidi.patch new file mode 100644 index 00000000..89b4468a --- /dev/null +++ b/testing/firefox/patches/no-fribidi.patch @@ -0,0 +1,12 @@ +diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild +index a1b58eb59b..d35da57db3 100644 +--- a/config/system-headers.mozbuild ++++ b/config/system-headers.mozbuild +@@ -267,7 +267,6 @@ system_headers = [ + 'freetype/t1tables.h', + 'freetype/ttnameid.h', + 'freetype/tttables.h', +- 'fribidi/fribidi.h', + 'FSp_fopen.h', + 'fstream', + 'fstream.h', diff --git a/testing/firefox/post-install b/testing/firefox/post-install new file mode 100755 index 00000000..f4d91a7e --- /dev/null +++ b/testing/firefox/post-install @@ -0,0 +1,12 @@ +#!/bin/sh + +cat <