Files
marfrit-packages/debian/mpv-fourier/build-deb.sh
T
marfrit a29fe71666
build and publish packages / distcc-avahi-aarch64 (push) Successful in 3s
build and publish packages / mesa-panvk-bifrost-aarch64 (push) Successful in 4s
build and publish packages / lmcp-any (push) Successful in 3s
build and publish packages / lmcp-debian (push) Successful in 3s
build and publish packages / claude-his-any (push) Successful in 3s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 3s
build and publish packages / claude-his-debian (push) Successful in 3s
build and publish packages / ffmpeg-v4l2-request-debian (push) Successful in 3s
build and publish packages / libva-v4l2-request-fourier-aarch64 (push) Successful in 3s
build and publish packages / daedalus-v4l2-debian (push) Successful in 3s
build and publish packages / mpv-fourier-aarch64 (push) Successful in 3s
build and publish packages / libva-v4l2-request-fourier-debian (push) Successful in 3s
build and publish packages / daedalus-v4l2-dkms-debian (push) Successful in 3s
build and publish packages / mpv-fourier-debian (push) Successful in 4s
build.yml: route 4 fourier-debian jobs to debian-aarch64 (bohr) (#47)
Closes task #134 work.

PR #44 showed the cross-distro ABI hazard for `libva-v4l2-request-fourier-debian`: building on Arch (libva 2.23) produced `__vaDriverInit_1_23`, which trixies libva 2.22 runtime cant bind. Same hazard applies to other fourier-debian jobs that link against debian-native libs.

**Moved from runs-on: arch-aarch64 → debian-aarch64:**
- ffmpeg-v4l2-request-debian
- mpv-fourier-debian
- daedalus-v4l2-debian
- daedalus-v4l2-dkms-debian

**Left alone (arch=all, no native compile against debian libs):**
- lmcp-debian
- claude-his-debian

Depends on PR #46 (label vs name fix) being merged so `debian-aarch64` actually routes to bohr.

Reviewed-on: #47
2026-05-20 14:39:43 +00:00

135 lines
5.0 KiB
Bash
Executable File

#!/bin/bash
# Build mpv-fourier_<ver>_arm64.deb (mpv with v4l2request hwdec wiring +
# vo_dmabuf_wayland cache-sync fix).
#
# Mirror of arch/mpv-fourier into the Debian tree. Same source pin
# (mpv 0.41.0), same 3 patches, same meson options.
#
# Depends on ffmpeg-v4l2-request-fourier for the libavcodec backing
# library — the v4l2request hwdec mpv now offers requires
# AV_HWDEVICE_TYPE_V4L2REQUEST which only exists in Kwiboo's FFmpeg
# fork, not in Debian stock ffmpeg.
#
# Conflicts: mpv — drop-in replacement. Pi 5 / CM5 hosts using stock
# Firefox + VAAPI don't need this; the firefox-fourier / kdirect
# bench-test paths do.
#
# Sibling Arch package: ../../arch/mpv-fourier/PKGBUILD
# Sibling FFmpeg package: ../ffmpeg-v4l2-request-fourier/build-deb.sh
# Upstream: https://github.com/mpv-player/mpv
set -euo pipefail
MPV_VERSION=0.41.0
PKGVER=1:${MPV_VERSION}+rfourier
PKGREL=1
MPV_TARBALL_SHA256=ee21092a5ee427353392360929dc64645c54479aefdb5babc5cfbb5fad626209
HERE=$(dirname "$(readlink -f "$0")")
# Reproducible build. 2026-05-18 23:00 UTC — Phase 8.13 close.
export SOURCE_DATE_EPOCH=1779231600
work=$(mktemp -d)
trap "rm -rf $work" EXIT
cd "$work"
curl --connect-timeout 10 --max-time 600 --retry 3 --retry-delay 5 -sSLfo mpv.tar.gz \
"https://github.com/mpv-player/mpv/archive/v${MPV_VERSION}/mpv-${MPV_VERSION}.tar.gz"
echo "$MPV_TARBALL_SHA256 mpv.tar.gz" | sha256sum -c
tar xzf mpv.tar.gz
cd "mpv-${MPV_VERSION}"
# Apply the 3 fourier patches.
patch -p1 < "$HERE/0001-meson-add-detection-logic-for-v4l2request-support.patch"
patch -p1 < "$HERE/0002-vo-hwdec-drmprime-add-separate-hwdecs-for-v4l2reques.patch"
patch -p1 < "$HERE/0001-vo_dmabuf_wayland-explicit-cache-sync-on-import-fd.patch"
# Configure. Same shape as arch/mpv-fourier's meson options.
meson setup build \
--prefix=/usr \
--libdir=lib/aarch64-linux-gnu \
--buildtype=release \
--auto-features=auto \
-Dv4l2request=enabled \
-Dlibmpv=true \
-Dgl-x11=enabled \
-Dcaca=disabled \
-Dcdda=enabled \
-Ddrm=enabled \
-Ddvbin=enabled \
-Ddvdnav=enabled \
-Dlibarchive=enabled \
-Dopenal=enabled \
-Dsdl2-audio=enabled \
-Dsdl2-video=enabled \
-Dsdl2-gamepad=enabled
meson compile -C build -j"$(nproc)"
# Stage
ROOT="$work/pkgroot"
DESTDIR="$ROOT" meson install -C build
# Drop private linkage entries from the .pc (only matter for static linking).
sed -i -e '/Requires.private/d' -e '/Libs.private/d' \
"$ROOT/usr/lib/aarch64-linux-gnu/pkgconfig/mpv.pc"
# Docs
mkdir -p "$ROOT/usr/share/doc/mpv-fourier" "$ROOT/DEBIAN"
install -m 644 DOCS/encoding.rst "$ROOT/usr/share/doc/mpv-fourier/"
install -m 644 DOCS/tech-overview.txt "$ROOT/usr/share/doc/mpv-fourier/"
install -Dm644 "$HERE/debian/copyright" "$ROOT/usr/share/doc/mpv-fourier/copyright"
install -Dm644 "$HERE/debian/changelog" "$ROOT/usr/share/doc/mpv-fourier/changelog.Debian"
gzip -9 -n "$ROOT/usr/share/doc/mpv-fourier/changelog.Debian"
# TOOLS scripts
mkdir -p "$ROOT/usr/share/mpv/scripts"
install -m 644 TOOLS/umpv TOOLS/mpv_identify.sh TOOLS/stats-conv.py TOOLS/idet.sh \
"$ROOT/usr/share/mpv/scripts/" 2>/dev/null || true
[ -d TOOLS/lua ] && cp TOOLS/lua/* "$ROOT/usr/share/mpv/scripts/" 2>/dev/null || true
cat > "$ROOT/DEBIAN/control" <<EOF
Package: mpv-fourier
Version: ${PKGVER}-${PKGREL}
Section: video
Priority: optional
Architecture: arm64
Depends: ffmpeg-v4l2-request-fourier (>= 2:8.1+rfourier),
libc6, libdrm2,
libass9, libbluray2, libcdio19, libcdio-paranoia2,
libdvdnav4, libdvdread8,
libegl1, libgl1, libjpeg62-turbo | libjpeg62,
libplacebo338 | libplacebo208,
libpulse0, libsixel1, libluajit-5.1-2,
libmujs3 | libmujs2 | libmujs1,
libpipewire-0.3-0, librubberband2, libsdl2-2.0-0,
libopenal1, libuchardet0, libvulkan1,
libwayland-client0, libwayland-egl1, libwayland-cursor0,
libxkbcommon0, libxext6, libxpresent1,
libxrandr2, libxss1, libxv1, libx11-6,
zlib1g
Conflicts: mpv, libmpv2, libmpv1
Replaces: mpv, libmpv2, libmpv1
Provides: mpv (= ${PKGVER}-${PKGREL}), libmpv.so.2
Maintainer: Markus Fritsche <mfritsche@reauktion.de>
Homepage: https://mpv.io/
Description: mpv media player with V4L2-Request hwdec (fourier fork)
mpv ${MPV_VERSION} patched with:
- Kwiboo + Langdale v4l2request hwdec wiring (meson detection +
vo_hwdec_drmprime separate hwdec instance for AV_HWDEVICE_TYPE_
V4L2REQUEST) so '--hwdec=v4l2request' actually engages on
dmabuf-wayland.
- vo_dmabuf_wayland explicit DMA_BUF_IOCTL_SYNC on import fds
(iter1 of dmabuf-modifier-triage) — workaround for missing
implicit-fence on V4L2 stateless CAPTURE buffers. Fixes the
KWin-on-RK3566 dark-green chroma readback regression on ohm.
.
Requires ffmpeg-v4l2-request-fourier as the backing libavcodec.
Stock Debian ffmpeg does not provide AV_HWDEVICE_TYPE_V4L2REQUEST.
EOF
DEB_OUT="mpv-fourier_${PKGVER//:/%3a}-${PKGREL}_arm64.deb"
dpkg-deb --root-owner-group --build "$ROOT" "$HERE/$DEB_OUT"
echo "built: $HERE/$DEB_OUT"