arch/chromium-fourier: scaffold PKGBUILD + placeholder patch
build and publish packages / distcc-avahi-aarch64 (push) Successful in 30s
build and publish packages / lmcp-any (push) Successful in 8s
build and publish packages / lmcp-debian (push) Successful in 4s
build and publish packages / claude-his-any (push) Successful in 6s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 11m59s
build and publish packages / claude-his-debian (push) Successful in 4s
build and publish packages / distcc-avahi-aarch64 (push) Successful in 30s
build and publish packages / lmcp-any (push) Successful in 8s
build and publish packages / lmcp-debian (push) Successful in 4s
build and publish packages / claude-his-any (push) Successful in 6s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 11m59s
build and publish packages / claude-his-debian (push) Successful in 4s
Initial chromium-fourier shape on the chromium-builder@boltzmann LXD container we provisioned today. Approach is the 7Ji-style "tarball + system tools" pattern (no gclient/CIPD, the linux-arm64 dependency binaries don't exist anyway) but stripped of the MPP/X11/panfork specifics — chromium-fourier targets mainline kernel + Wayland + panfrost/panthor + V4L2 stateless on /dev/video0, not the vendor stack 7Ji's chromium-mpp targets. PKGBUILD highlights: - pkgver=147.0.7727.116 (current Chrome stable as of 2026-04-25) - gn args: use_v4l2_codec=true, use_v4lplugin=true, use_linux_v4l2_only=true, use_vaapi=true. The first three are the magic that unlocks V4L2VDA on Linux non-ChromeOS without source patches; if they're sufficient on their own, the chromeos-pipeline-bypass patch stays a no-op. - ffmpeg_branding="Chrome" + proprietary_codecs=true for H.264. - enable_widevine=false, enable_nacl=false to keep the tree small. - Currently development-shaped: prepare()/build() operate on a pre-extracted /build/chromium/src rather than makepkg-fetched source. Will switch to canonical source=(...tarball.xz) shape once the patches stabilise. patches/chromeos-pipeline-bypass.patch is a placeholder; the actual patch (if any) gets developed once we see what 7Ji's gn args do or don't unlock for us. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
# Maintainer: Markus Fritsche <mfritsche@reauktion.de>
|
||||
#
|
||||
# Chromium with V4L2 HW video decode unlocked on Linux for Rockchip
|
||||
# (RK3566 hantro / RK3588 VDPU381) on **mainline** kernel + Wayland +
|
||||
# panfrost / panthor — no vendor MPP, no Mali blob, no panfork, no
|
||||
# 5.10 BSP kernel. Fills the niche that 7Ji's chromium-mpp explicitly
|
||||
# does not (it forces BSP + X11 + vendor stack); see
|
||||
# /home/mfritsche/src/marfrit-packages/arch/chromium-fourier/STUDY.md
|
||||
# for the full rationale.
|
||||
#
|
||||
# Build host: chromium-builder LXD container on boltzmann (8 cores,
|
||||
# 28 GB RAM cap, 824 GB NVMe). 6-10 h initial build.
|
||||
|
||||
pkgname=chromium-fourier
|
||||
pkgver=147.0.7727.116
|
||||
pkgrel=1
|
||||
epoch=1
|
||||
pkgdesc='Chromium with V4L2VDA HW video decode unlocked for mainline Linux Wayland on Rockchip'
|
||||
arch=('aarch64')
|
||||
url='https://www.chromium.org/Home'
|
||||
license=('BSD-3-Clause')
|
||||
depends=(
|
||||
alsa-lib
|
||||
at-spi2-core
|
||||
cairo
|
||||
cups
|
||||
dbus
|
||||
fontconfig
|
||||
freetype2
|
||||
gtk3
|
||||
hicolor-icon-theme
|
||||
libdrm
|
||||
libpulse
|
||||
libva
|
||||
libxcb
|
||||
libxkbcommon
|
||||
mesa
|
||||
nspr
|
||||
nss
|
||||
pango
|
||||
pciutils
|
||||
pipewire
|
||||
ttf-liberation
|
||||
v4l-utils
|
||||
wayland
|
||||
)
|
||||
makedepends=(
|
||||
clang
|
||||
elfutils
|
||||
gn
|
||||
gperf
|
||||
java-runtime-headless
|
||||
libxslt
|
||||
lld
|
||||
ninja
|
||||
nodejs
|
||||
npm
|
||||
python
|
||||
qt5-base
|
||||
qt6-base
|
||||
re2
|
||||
rust
|
||||
rust-bindgen
|
||||
)
|
||||
optdepends=(
|
||||
'qt6-base: for Qt6 toolkit integration'
|
||||
)
|
||||
provides=(chromium)
|
||||
conflicts=(chromium)
|
||||
options=('!lto' '!strip')
|
||||
# NB: the chromium tarball is fetched lazily by build.sh on the build
|
||||
# host (5.7 GB compressed, doesn't belong in this git repo). The
|
||||
# PKGBUILD assumes /build/chromium/src is already populated.
|
||||
source=(
|
||||
'patches/chromeos-pipeline-bypass.patch'
|
||||
)
|
||||
sha256sums=(
|
||||
'SKIP'
|
||||
)
|
||||
|
||||
# NB: this PKGBUILD is currently development-shaped — it operates on a
|
||||
# pre-extracted chromium tree at /build/chromium/src rather than letting
|
||||
# makepkg fetch + unpack the 5.7 GB tarball into ${srcdir}. Once the
|
||||
# patches stabilise we'll switch to the canonical pattern with
|
||||
# source=(${url}/chromium-${pkgver}.tar.xz ...) so the standard makepkg
|
||||
# flow + CI fermi-style pipeline work end-to-end.
|
||||
|
||||
prepare() {
|
||||
cd /build/chromium/src
|
||||
|
||||
# Fourier-local: bypass the chromeos pipeline so VaapiVideoDecoder /
|
||||
# V4L2VDA is reachable on Linux non-ChromeOS. The 7Ji-style gn args
|
||||
# (use_v4l2_codec / use_v4lplugin / use_linux_v4l2_only) may be
|
||||
# sufficient on their own; this patch is the fallback if they aren't.
|
||||
patch -Np1 -i "${srcdir}/patches/chromeos-pipeline-bypass.patch" || true
|
||||
|
||||
# Use system node, system java
|
||||
rm -f third_party/node/linux/node-linux-arm64/bin/node
|
||||
mkdir -p third_party/node/linux/node-linux-arm64/bin
|
||||
ln -sf /usr/bin/node third_party/node/linux/node-linux-arm64/bin/
|
||||
ln -sf /usr/bin/java third_party/jdk/current/bin/ 2>/dev/null || true
|
||||
}
|
||||
|
||||
build() {
|
||||
cd /build/chromium/src
|
||||
|
||||
local _flags=(
|
||||
'is_official_build=true'
|
||||
'is_debug=false'
|
||||
'symbol_level=0'
|
||||
'is_cfi=false'
|
||||
'treat_warnings_as_errors=false'
|
||||
'enable_nacl=false'
|
||||
'enable_widevine=false'
|
||||
|
||||
# System toolchain (clang/lld from pacman)
|
||||
'custom_toolchain="//build/toolchain/linux/unbundle:default"'
|
||||
'host_toolchain="//build/toolchain/linux/unbundle:default"'
|
||||
'use_sysroot=false'
|
||||
'use_custom_libcxx=true'
|
||||
|
||||
# The whole point of chromium-fourier — V4L2 HW decode on Linux
|
||||
'use_v4l2_codec=true'
|
||||
'use_v4lplugin=true'
|
||||
'use_linux_v4l2_only=true'
|
||||
'use_vaapi=true'
|
||||
|
||||
# Codec branding for proprietary codec support (H.264 etc.)
|
||||
'ffmpeg_branding="Chrome"'
|
||||
'proprietary_codecs=true'
|
||||
|
||||
'rtc_use_pipewire=true'
|
||||
'link_pulseaudio=true'
|
||||
'use_qt6=true'
|
||||
'moc_qt6_path="/usr/lib/qt6"'
|
||||
)
|
||||
|
||||
gn gen out/Default --args="${_flags[*]}"
|
||||
autoninja -C out/Default chrome chromedriver chrome_sandbox
|
||||
}
|
||||
|
||||
package() {
|
||||
cd /build/chromium/src
|
||||
|
||||
install -Dm755 out/Default/chrome "${pkgdir}/usr/lib/chromium/chromium"
|
||||
install -Dm4755 out/Default/chrome_sandbox "${pkgdir}/usr/lib/chromium/chrome-sandbox"
|
||||
install -Dm755 out/Default/chromedriver "${pkgdir}/usr/bin/chromedriver"
|
||||
|
||||
# Resources / locales / pak files
|
||||
for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak \
|
||||
v8_context_snapshot.bin icudtl.dat headless_lib_data.pak \
|
||||
headless_lib_strings.pak; do
|
||||
[ -f "out/Default/$f" ] && install -Dm644 "out/Default/$f" \
|
||||
"${pkgdir}/usr/lib/chromium/$f"
|
||||
done
|
||||
|
||||
# Locales
|
||||
if [ -d out/Default/locales ]; then
|
||||
install -dm755 "${pkgdir}/usr/lib/chromium/locales"
|
||||
cp -r out/Default/locales/* "${pkgdir}/usr/lib/chromium/locales/"
|
||||
fi
|
||||
|
||||
# Top-level launcher
|
||||
install -dm755 "${pkgdir}/usr/bin"
|
||||
ln -s /usr/lib/chromium/chromium "${pkgdir}/usr/bin/chromium"
|
||||
}
|
||||
Reference in New Issue
Block a user