diff --git a/arch/chromium-fourier/PKGBUILD b/arch/chromium-fourier/PKGBUILD index ebe4af22e..bbde315a8 100644 --- a/arch/chromium-fourier/PKGBUILD +++ b/arch/chromium-fourier/PKGBUILD @@ -8,13 +8,13 @@ # NEXT.md alongside this PKGBUILD for the full rationale and the # validation log on PineTab2 (RK3566). # -# Multi-arch: builds natively on x86_64 and aarch64. The x86_64 path -# is primarily a development / CI host; the runtime target audience is -# aarch64. The two patches are architecture-independent. +# Cross-compiled from x86_64 using chromium's bundled clang (upstream +# LLVM doesn't ship clang 23+ yet; chromium's internal fork is required). +# Runtime target is aarch64. The three patches are architecture-independent. pkgname=chromium-fourier -pkgver=147.0.7727.116 -pkgrel=2 +pkgver=148.0.7778.178 +pkgrel=1 epoch=1 pkgdesc='Chromium with V4L2VDA HW video decode unlocked for mainline Linux Wayland on Rockchip' arch=('aarch64' 'x86_64') @@ -150,7 +150,6 @@ build() { 'symbol_level=0' 'is_cfi=false' 'treat_warnings_as_errors=false' - 'enable_nacl=false' 'enable_widevine=false' # System toolchain (clang/lld from pacman) diff --git a/arch/chromium-fourier/patches/nv12-external-oes-on-modifier-external-only.patch b/arch/chromium-fourier/patches/nv12-external-oes-on-modifier-external-only.patch index 4b9614571..758b3a7f0 100644 --- a/arch/chromium-fourier/patches/nv12-external-oes-on-modifier-external-only.patch +++ b/arch/chromium-fourier/patches/nv12-external-oes-on-modifier-external-only.patch @@ -73,16 +73,15 @@ diff --git a/ui/ozone/common/native_pixmap_egl_binding.cc b/ui/ozone/common/nati index 31877f4459..6855c1093e 100644 --- a/ui/ozone/common/native_pixmap_egl_binding.cc +++ b/ui/ozone/common/native_pixmap_egl_binding.cc -@@ -6,10 +6,13 @@ - +@@ -6,9 +6,12 @@ + #include - + +#include "base/containers/flat_map.h" #include "base/logging.h" #include "base/memory/scoped_refptr.h" +#include "base/no_destructor.h" #include "base/notreached.h" - #include "base/numerics/safe_conversions.h" +#include "base/synchronization/lock.h" #include "ui/gfx/linux/drm_util_linux.h" #include "ui/gl/gl_bindings.h" diff --git a/debian/chromium-fourier/build-deb.sh b/debian/chromium-fourier/build-deb.sh new file mode 100755 index 000000000..e7438a06d --- /dev/null +++ b/debian/chromium-fourier/build-deb.sh @@ -0,0 +1,150 @@ +#!/bin/bash +# Package pre-built chromium-fourier artifacts into a .deb. +# +# Chromium can't be compiled natively on any available aarch64 runner +# (clang version wall — chromium requires its internal clang fork). +# The build is cross-compiled on CT 220 (data, x86_64 Ryzen 7). +# This script expects the build artifacts to exist at BUILD_DIR +# (default: fetched from CT 220 via SSH). +# +# Sibling Arch package: ../../arch/chromium-fourier/PKGBUILD +set -euo pipefail + +PKGVER=148.0.7778.178 +EPOCH=1 +PKGREL=1 +ARCH=arm64 + +HERE=$(dirname "$(readlink -f "$0")") +export SOURCE_DATE_EPOCH=1779854400 # 2026-05-24 09:00 UTC + +BUILD_DIR="${BUILD_DIR:-}" + +work=$(mktemp -d) +trap "rm -rf $work" EXIT + +if [ -z "$BUILD_DIR" ]; then + echo "BUILD_DIR not set — fetching artifacts from CT 220 on data..." + BUILD_DIR="$work/artifacts" + mkdir -p "$BUILD_DIR" + ssh root@data "pct exec 220 -- tar -cf - -C /build/chromium/src/out/Default \ + chrome chrome_crashpad_handler \ + libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 \ + vk_swiftshader_icd.json \ + chrome_100_percent.pak chrome_200_percent.pak resources.pak \ + v8_context_snapshot.bin snapshot_blob.bin icudtl.dat \ + locales/" | tar -xf - -C "$BUILD_DIR" +fi + +ROOT="$work/pkgroot" + +install -Dm755 "$BUILD_DIR/chrome" "$ROOT/usr/lib/chromium/chromium" +install -Dm755 "$BUILD_DIR/chrome_crashpad_handler" "$ROOT/usr/lib/chromium/chrome_crashpad_handler" + +for so in libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1; do + [ -f "$BUILD_DIR/$so" ] && install -Dm755 "$BUILD_DIR/$so" "$ROOT/usr/lib/chromium/$so" +done + +for icd in "$BUILD_DIR"/*_icd.json; do + [ -f "$icd" ] && install -Dm644 "$icd" "$ROOT/usr/lib/chromium/$(basename "$icd")" +done + +for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak \ + v8_context_snapshot.bin snapshot_blob.bin icudtl.dat; do + [ -f "$BUILD_DIR/$f" ] && install -Dm644 "$BUILD_DIR/$f" "$ROOT/usr/lib/chromium/$f" +done + +if [ -d "$BUILD_DIR/locales" ]; then + install -dm755 "$ROOT/usr/lib/chromium/locales" + cp -r "$BUILD_DIR/locales/"* "$ROOT/usr/lib/chromium/locales/" +fi + +install -dm755 "$ROOT/usr/bin" +cat > "$ROOT/usr/bin/chromium-fourier" <<'LAUNCHER' +#!/bin/bash +USER_HANDLES_VULKAN=0 +for arg in "$@"; do + case "$arg" in + --use-vulkan*|--enable-features=*Vulkan*|--disable-features=*Vulkan*|--use-angle=vulkan*) + USER_HANDLES_VULKAN=1 + break + ;; + esac +done + +vulkan_default=() +if [ "$USER_HANDLES_VULKAN" = 0 ]; then + vulkan_default=(--disable-features=Vulkan) +fi + +exec /usr/lib/chromium/chromium \ + --ozone-platform=wayland \ + --use-gl=angle --use-angle=gles \ + --enable-features=AcceleratedVideoDecoder \ + "${vulkan_default[@]}" \ + "$@" +LAUNCHER +chmod 0755 "$ROOT/usr/bin/chromium-fourier" + +mkdir -p "$ROOT/usr/share/doc/chromium-fourier" "$ROOT/DEBIAN" +install -Dm644 "$HERE/debian/copyright" \ + "$ROOT/usr/share/doc/chromium-fourier/copyright" +install -Dm644 "$HERE/debian/changelog" \ + "$ROOT/usr/share/doc/chromium-fourier/changelog.Debian" +gzip -9 -n "$ROOT/usr/share/doc/chromium-fourier/changelog.Debian" + +ISIZE=$(du -sk "$ROOT" | awk '{print $1}') +cat > "$ROOT/DEBIAN/control" < +Homepage: https://www.chromium.org/ +Description: Chromium with V4L2 HW video decode for Rockchip (Wayland + mainline) + Chromium ${PKGVER} with three patches enabling V4L2 hardware video + decoding on mainline Linux / Wayland for Rockchip SoCs (RK3566 hantro, + RK3588 VDPU381). + . + Cross-compiled from x86_64 using chromium's bundled clang (upstream + LLVM cannot compile chromium). Runtime target is aarch64. + . + Patches: enable-v4l2-decoder-default, wayland-allow-direct-egl-gles2, + nv12-external-oes-on-modifier-external-only. + . + Launcher at /usr/bin/chromium-fourier defaults to Wayland + ANGLE/GLES + with Vulkan disabled (panvk on RK3566 breaks V4L2 dispatch). +EOF + +DEB_OUT="chromium-fourier_${EPOCH}%3a${PKGVER}-${PKGREL}_${ARCH}.deb" +dpkg-deb --root-owner-group --build "$ROOT" "$HERE/$DEB_OUT" +echo "built: $HERE/$DEB_OUT" diff --git a/debian/chromium-fourier/debian/changelog b/debian/chromium-fourier/debian/changelog new file mode 100644 index 000000000..6ae7568c5 --- /dev/null +++ b/debian/chromium-fourier/debian/changelog @@ -0,0 +1,8 @@ +chromium-fourier (1:148.0.7778.178-1) trixie; urgency=medium + + * Chromium 148.0.7778.178 with V4L2 HW decode patches for Rockchip. + * Cross-compiled from x86_64 using chromium's bundled clang. + * Three fourier patches: enable-v4l2-decoder-default, + wayland-allow-direct-egl-gles2, nv12-external-oes-on-modifier-external-only. + + -- Markus Fritsche Sat, 24 May 2026 09:00:00 +0200 diff --git a/debian/chromium-fourier/debian/copyright b/debian/chromium-fourier/debian/copyright new file mode 100644 index 000000000..39646f94e --- /dev/null +++ b/debian/chromium-fourier/debian/copyright @@ -0,0 +1,32 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: Chromium +Upstream-Contact: chromium-dev@chromium.org +Source: https://www.chromium.org/ + +Files: * +Copyright: The Chromium Authors +License: BSD-3-Clause + +Files: debian/* +Copyright: 2026 Markus Fritsche +License: BSD-3-Clause + +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED.