chromium-fourier r2 + firefox-fourier 150.0.1 + KWIN_PIVOT.md
build and publish packages / distcc-avahi-aarch64 (push) Successful in 46s
build and publish packages / lmcp-any (push) Successful in 9s
build and publish packages / lmcp-debian (push) Successful in 4s
build and publish packages / claude-his-any (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 12m8s
build and publish packages / claude-his-debian (push) Successful in 5s
build and publish packages / distcc-avahi-aarch64 (push) Successful in 46s
build and publish packages / lmcp-any (push) Successful in 9s
build and publish packages / lmcp-debian (push) Successful in 4s
build and publish packages / claude-his-any (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 12m8s
build and publish packages / claude-his-debian (push) Successful in 5s
chromium-fourier: - patch 3/3 nv12-external-oes-on-modifier-external-only.patch — adds NativePixmapEGLBinding::ModifierRequiresExternalOES helper, extends OzoneImageGLTexturesHolder::GetBinding to honor EGL external_only flag for NV12 dmabufs on panfrost / panthor. Validated on ohm (RK3566 hantro mainline 6.19.10): bbb_1080p30_h264.mp4 plays at 34.7 % combined CPU vs ~131 % pre-patch baseline (~3.8x). - PKGBUILD pkgrel 1->2, source array + sha256sums + prepare() hook for patch 4, patch numbering 1/2,2/2 -> 1/3,2/3,3/3. - NEXT.md appended with 2026-04-28 section: patch 4 design, validation log, KWin GL_ALPHA bug pinpoint (preexisting since 2026-03-06, affects every wayland video client; unrelated to chromium-fourier), device-renumbering note (/dev/video1 = encoder post-reboot). - KWIN_PIVOT.md: 4-phase plan to identify and patch KWin's glTexImage2D(internalFormat=GL_ALPHA) site, ohm-only test plan, scope discipline. - patches/ now tracked (compiler-rt-adjust-paths, enable-v4l2, wayland-allow-direct-egl-gles2, nv12-external-oes); the dead-end chromeos-pipeline-bypass.patch removed. firefox-fourier: - 4 patches (gfxinfo v4l2 stateless fourccs, libwrapper hwdevice ctx, ffmpegvideo v4l2-request route, prefs v4l2-request default). - PKGBUILD bumped to firefox 150.0.1, Arch toolchain glue patches layered in, mozconfig with --without-wasm-sandboxed-libraries for ALARM, package() launcher fix (rm -f symlink before cat > to avoid ENOENT through the dangling /usr/local symlink mach install drops). - 150.0.1-1-aarch64.pkg.tar.zst built on boltzmann (95 MB), pending fresnel power-on for V4L2 stateless validation on RK3399.
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
# Maintainer: Markus Fritsche <mfritsche@reauktion.de>
|
||||
#
|
||||
# Firefox with V4L2 stateless (request API) hardware video decode
|
||||
# unlocked for mainline-Linux Rockchip (RK3399 rkvdec, RK3566/RK3588
|
||||
# hantro multiplanar, RK3588 rkvdec2). Sibling to chromium-fourier;
|
||||
# same niche. No vendor MPP, no Mali blob, no panfork, no 5.10 BSP.
|
||||
#
|
||||
# Patch series adds 4 thin shims around upstream firefox (~+169 lines,
|
||||
# zero deletions). Architecture: stateless decode rides libavcodec's
|
||||
# v4l2_request hwaccel (AV_HWDEVICE_TYPE_DRM); no separate Mozilla V4L2
|
||||
# decoder gets written. See ../../arch/firefox-fourier/PLAN.md for
|
||||
# the full diagnosis. Mozilla bug 1969297.
|
||||
|
||||
pkgname=firefox-fourier
|
||||
pkgver=150.0.1
|
||||
pkgrel=1
|
||||
pkgdesc='Firefox with V4L2 stateless HW video decode unlocked for mainline Linux Rockchip'
|
||||
arch=('aarch64' 'x86_64')
|
||||
url='https://www.mozilla.org/firefox'
|
||||
license=('MPL-2.0')
|
||||
depends=(
|
||||
alsa-lib
|
||||
at-spi2-core
|
||||
cairo
|
||||
dbus
|
||||
ffmpeg
|
||||
fontconfig
|
||||
freetype2
|
||||
gcc-libs
|
||||
gdk-pixbuf2
|
||||
glib2
|
||||
glibc
|
||||
gtk3
|
||||
hicolor-icon-theme
|
||||
libdrm
|
||||
libpulse
|
||||
libva
|
||||
libxcb
|
||||
libxkbcommon
|
||||
mesa
|
||||
nspr
|
||||
nss
|
||||
pango
|
||||
pciutils
|
||||
ttf-liberation
|
||||
v4l-utils
|
||||
)
|
||||
makedepends=(
|
||||
cbindgen
|
||||
clang
|
||||
imagemagick
|
||||
inetutils
|
||||
lld
|
||||
llvm
|
||||
mesa
|
||||
nasm
|
||||
nodejs
|
||||
python
|
||||
rust
|
||||
unzip
|
||||
wasi-compiler-rt
|
||||
wasi-libc
|
||||
yasm
|
||||
zip
|
||||
)
|
||||
optdepends=(
|
||||
'hunspell-en_us: spell checking, American English'
|
||||
'libnotify: send notifications when downloads complete'
|
||||
'pulseaudio: audio support'
|
||||
)
|
||||
provides=(firefox)
|
||||
conflicts=(firefox)
|
||||
options=('!emptydirs' '!strip')
|
||||
source=(
|
||||
"https://archive.mozilla.org/pub/firefox/releases/${pkgver}/source/firefox-${pkgver}.source.tar.xz"
|
||||
'mozconfig'
|
||||
# Arch's official firefox patches — toolchain glue for clang 22 +
|
||||
# glibc 2.43 + Rust 1.95+. Picked up verbatim because we hit the same
|
||||
# walls. arch-0001 (install-under-remoting) skipped — our launcher
|
||||
# ships under /usr/bin/firefox-fourier with our own wrapper.
|
||||
# https://gitlab.archlinux.org/archlinux/packaging/packages/firefox
|
||||
'arch-0002-Bug-2033279-Make-enable-rust-simd-work-with-Rust-1.9.patch'
|
||||
'arch-0003-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch'
|
||||
'arch-0004-Bug-2023597-Use-wasm32-wasip1-target-for-clang-22.1-.patch'
|
||||
# firefox-fourier patches — V4L2 stateless decode unlock.
|
||||
'0001-gfxinfo-v4l2-stateless-fourccs.patch'
|
||||
'0002-libwrapper-hwdevice-ctx-create.patch'
|
||||
'0003-ffmpegvideo-v4l2-request-route.patch'
|
||||
'0004-prefs-v4l2-request.patch'
|
||||
)
|
||||
sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP')
|
||||
|
||||
prepare() {
|
||||
cd "${srcdir}/firefox-${pkgver}"
|
||||
|
||||
# Toolchain glue (Arch upstream) — apply BEFORE the fourier patches.
|
||||
patch -Np1 -i "${srcdir}/arch-0002-Bug-2033279-Make-enable-rust-simd-work-with-Rust-1.9.patch"
|
||||
patch -Np1 -i "${srcdir}/arch-0003-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch"
|
||||
patch -Np1 -i "${srcdir}/arch-0004-Bug-2023597-Use-wasm32-wasip1-target-for-clang-22.1-.patch"
|
||||
|
||||
# Fourier patches — order matters; see ../PLAN.md for rationale.
|
||||
patch -Np1 -i "${srcdir}/0001-gfxinfo-v4l2-stateless-fourccs.patch"
|
||||
patch -Np1 -i "${srcdir}/0002-libwrapper-hwdevice-ctx-create.patch"
|
||||
patch -Np1 -i "${srcdir}/0003-ffmpegvideo-v4l2-request-route.patch"
|
||||
patch -Np1 -i "${srcdir}/0004-prefs-v4l2-request.patch"
|
||||
|
||||
cp "${srcdir}/mozconfig" .mozconfig
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/firefox-${pkgver}"
|
||||
|
||||
# Arch's makepkg.conf injects -fexceptions into CFLAGS/CXXFLAGS by
|
||||
# default for hardening. Mozilla's STL wrappers refuse to compile
|
||||
# with exceptions enabled (#error "STL code can only be used with
|
||||
# -fno-exceptions"). Strip the offender before mach configure picks
|
||||
# up the env. Same trick the upstream Arch firefox PKGBUILD uses.
|
||||
CFLAGS="${CFLAGS//-fexceptions/}"
|
||||
CXXFLAGS="${CXXFLAGS//-fexceptions/}"
|
||||
export CFLAGS CXXFLAGS
|
||||
|
||||
export MOZ_NOSPAM=1
|
||||
export MOZ_API_KEY_UNUSED=1
|
||||
export MOZ_TELEMETRY_REPORTING=
|
||||
export MOZ_REQUIRE_SIGNING=
|
||||
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
|
||||
export PYTHON=/usr/bin/python
|
||||
|
||||
./mach configure
|
||||
./mach build
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${srcdir}/firefox-${pkgver}"
|
||||
|
||||
DESTDIR="${pkgdir}" ./mach install
|
||||
|
||||
# Move mach's default /usr/local/* layout to /usr/* so we conflict
|
||||
# with `firefox` cleanly and `provides=firefox` actually works.
|
||||
# `cp -r` preserves the bin symlink (target lives in /usr/local) —
|
||||
# delete it before staging the launcher so `cat >` doesn't follow a
|
||||
# dangling symlink and ENOENT.
|
||||
if [ -d "${pkgdir}/usr/local" ]; then
|
||||
cp -r "${pkgdir}/usr/local/." "${pkgdir}/usr/"
|
||||
rm -rf "${pkgdir}/usr/local"
|
||||
fi
|
||||
rm -f "${pkgdir}/usr/bin/firefox-fourier"
|
||||
|
||||
# Launcher script. mach's install drops the binary at
|
||||
# /usr/lib/firefox-fourier/firefox-fourier (a small bash launcher) plus
|
||||
# firefox-fourier-bin alongside; we exec the launcher.
|
||||
cat > "${pkgdir}/usr/bin/firefox-fourier" <<'LAUNCHER'
|
||||
#!/bin/bash
|
||||
# firefox-fourier launcher — V4L2 stateless HW decode path defaults.
|
||||
# Patch 4/4 already defaults media.ffmpeg.v4l2-request.enabled=true on
|
||||
# Linux; the env vars below cover the platform-detection bits firefox
|
||||
# still consults at startup.
|
||||
export MOZ_ENABLE_WAYLAND="${MOZ_ENABLE_WAYLAND:-1}"
|
||||
export MOZ_X11_EGL="${MOZ_X11_EGL:-1}"
|
||||
exec /usr/lib/firefox-fourier/firefox-fourier "$@"
|
||||
LAUNCHER
|
||||
chmod 0755 "${pkgdir}/usr/bin/firefox-fourier"
|
||||
}
|
||||
Reference in New Issue
Block a user