From d2cecbcd056cfc72e5eda818ba64065cc9304bd3 Mon Sep 17 00:00:00 2001 From: Markus Fritsche Date: Wed, 20 May 2026 21:09:50 +0200 Subject: [PATCH] build.yml: convert ffmpeg+mpv-debian install-deps to apt-get Closes #55. PR #47 routed ffmpeg-v4l2-request-debian and mpv-fourier-debian to runs-on: debian-aarch64 (bohr), but their install-deps steps still called pacman -Syu. That is a latent break that would surface on the next pkgver bump (currently silent-skipped by check-already-published.sh since pool versions match the staged PKGVER). This patch follows PR #50's pattern (daedalus-v4l2{,-dkms}-debian): - Replace retry pacman -Syu ... with retry apt-get install ... - Translate Arch package names to Debian (base-devel -> build-essential, pkgconf -> pkg-config, libdrm -> libdrm-dev, x264 -> libx264-dev, etc.). - For mpv: drop the "configure [marfrit] repo + pre-install ffmpeg-v4l2-request-fourier" step entirely. Under apt, stock libavcodec-dev / libavformat-dev / libavutil-dev provide trixie-ABI headers matching what mpv-fourier's binary will see at runtime; the daemon dlopens the fourier libs if installed but doesn't link against them at build time. Validated upstream: equivalent debian build-deps installed cleanly in PRs #44 (libva) and #50 (daedalus). --- .gitea/workflows/build.yml | 68 +++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index c289c6de4..65128d2b5 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -924,11 +924,20 @@ jobs: run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } - retry pacman -Syu --noconfirm --needed \ - dpkg openssh rsync curl base-devel git nasm yasm \ - linux-api-headers mesa alsa-lib bzip2 fontconfig fribidi gmp \ - gnutls lame libass dav1d libdrm freetype2 libpulse libva \ - libvorbis libvpx libwebp x264 x265 libxml2 opus v4l-utils xz zlib + export DEBIAN_FRONTEND=noninteractive + retry apt-get update -qq + # Debian build-deps for the FFmpeg fourier-fork build. These + # map 1:1 to the previous Arch list; libav*-dev intentionally + # absent (we are FFmpeg itself, providing those libs). + retry apt-get install -y --no-install-recommends \ + build-essential git pkg-config nasm yasm \ + linux-libc-dev libgl1-mesa-dev libasound2-dev libbz2-dev \ + libfontconfig-dev libfribidi-dev libgmp-dev libgnutls28-dev \ + libmp3lame-dev libass-dev libdav1d-dev libdrm-dev \ + libfreetype-dev libpulse-dev libva-dev libvorbis-dev libvpx-dev \ + libwebp-dev libx264-dev libx265-dev libxml2-dev libopus-dev \ + v4l-utils liblzma-dev zlib1g-dev \ + curl ca-certificates openssh-client rsync dpkg-dev - name: install hertz deploy ssh key if: steps.skip-check.outputs.skip != '1' @@ -1063,31 +1072,30 @@ jobs: run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } - retry pacman -Syu --noconfirm --needed \ - dpkg openssh rsync curl base-devel git meson ninja python-docutils \ - ladspa wayland-protocols vulkan-headers \ - alsa-lib desktop-file-utils glibc hicolor-icon-theme jack lcms2 \ - libarchive libass libbluray libcdio libcdio-paranoia libdisplay-info \ - libdrm libdvdnav libdvdread libegl libgl libglvnd libjpeg-turbo \ - libplacebo libpulse libsixel libva libvdpau libx11 libxext \ - libxkbcommon libxpresent libxrandr libxss libxv luajit mesa mujs \ - libpipewire rubberband sdl2 openal uchardet vapoursynth \ - vulkan-icd-loader wayland zlib - - - name: configure [marfrit] repo + pre-install ffmpeg-v4l2-request-fourier - if: steps.skip-check.outputs.skip != '1' - run: | - set -e - curl -sLo /tmp/marfrit.gpg https://packages.reauktion.de/marfrit.gpg - pacman-key --add /tmp/marfrit.gpg - pacman-key --lsign-key 92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C - rm -f /tmp/marfrit.gpg - if ! grep -q '^\[marfrit\]' /etc/pacman.conf; then - printf '\n[marfrit]\nServer = https://packages.reauktion.de/arch/$arch\nSigLevel = Required\n' >> /etc/pacman.conf - fi - pacman -Sy --noconfirm - rm -f /var/cache/pacman/pkg/ffmpeg-v4l2-request-fourier-*-aarch64.pkg.tar.* - printf 'y\ny\ny\n' | pacman -S marfrit/ffmpeg-v4l2-request-fourier + export DEBIAN_FRONTEND=noninteractive + retry apt-get update -qq + # Debian libav*-dev is ABI-compatible with the fourier ffmpeg + # fork at the header level; mpv link-binds against system + # libav at build time, runtime dlopen picks up the fourier + # libs if installed. The previous [marfrit] pre-install of + # ffmpeg-v4l2-request-fourier under pacman is unnecessary + # under apt: stock Debian libav*-dev provides the trixie + # ABI mpv-fourier's binary will encounter. + retry apt-get install -y --no-install-recommends \ + build-essential git meson ninja-build pkg-config python3-docutils \ + ladspa-sdk wayland-protocols libvulkan-dev libwayland-dev \ + libasound2-dev desktop-file-utils libc6-dev hicolor-icon-theme \ + libjack-jackd2-dev liblcms2-dev libarchive-dev libass-dev \ + libbluray-dev libcdio-dev libcdio-paranoia-dev libdisplay-info-dev \ + libdrm-dev libdvdnav-dev libdvdread-dev libegl-dev libgl-dev \ + libglvnd-dev libjpeg-dev libplacebo-dev libpulse-dev libsixel-dev \ + libva-dev libvdpau-dev libx11-dev libxext-dev libxkbcommon-dev \ + libxpresent-dev libxrandr-dev libxss-dev libxv-dev libluajit-5.1-dev \ + libmujs-dev libpipewire-0.3-dev librubberband-dev libsdl2-dev \ + libopenal-dev libuchardet-dev libvapoursynth-dev liblzma-dev \ + libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev \ + zlib1g-dev \ + curl ca-certificates openssh-client rsync dpkg-dev - name: install hertz deploy ssh key if: steps.skip-check.outputs.skip != '1'