From 45604801fab9297620ed440644ad88ac70a096a2 Mon Sep 17 00:00:00 2001 From: Markus Fritsche Date: Tue, 19 May 2026 00:05:40 +0200 Subject: [PATCH] ci: wire debian builds for 5 fourier recipes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The debian/{ffmpeg-v4l2-request-fourier,libva-v4l2-request-fourier,mpv-fourier,daedalus-v4l2,daedalus-v4l2-dkms} recipes have been sitting in the tree with no CI trigger since 2026-05-18. build-deb.sh exists and is runnable, but nothing fires it — so no .debs were ever pushed to packages.reauktion.de/debian/pool/. Mirror the lmcp-debian / claude-his-debian pattern: build natively on the arch-aarch64 runner (dpkg-deb is in extra), rsync the .deb to hertz's incoming dir, trigger publish-deb for bookworm + trixie. mpv-fourier-debian also pre-installs ffmpeg-v4l2-request-fourier from [marfrit] for libavcodec ABI symmetry, matching the arch sibling job. --- .gitea/workflows/build.yml | 284 +++++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index ece4bdd847..c185f57781 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -784,3 +784,287 @@ jobs: - name: wipe secrets if: always() run: rm -f /root/.ssh/id_ed25519_hertz + + # ------------------------------------------------------------------------- + # ffmpeg-v4l2-request-fourier Debian (aarch64) — debian//build-deb.sh + # builds the Kwiboo FFmpeg fork natively on the arch-aarch64 runner using + # the arch toolchain + system libs, then dpkg-deb's the result. Resulting + # .deb is rsynced to hertz; reprepro publishes into bookworm + trixie. + # ------------------------------------------------------------------------- + ffmpeg-v4l2-request-debian: + needs: ffmpeg-v4l2-request-aarch64 + runs-on: arch-aarch64 + continue-on-error: true + steps: + - uses: actions/checkout@v4 + + - name: install build-deps (Arch pkg names; build-deb.sh links natively) + 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 + + - name: install hertz deploy ssh key + env: + KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} + run: | + mkdir -m700 -p /root/.ssh + printf '%s\n' "$KEY" > /root/.ssh/id_ed25519_hertz + chmod 600 /root/.ssh/id_ed25519_hertz + ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null + + - name: build ffmpeg-v4l2-request-fourier .deb + run: | + set -e + cd debian/ffmpeg-v4l2-request-fourier + ./build-deb.sh + ls -la *.deb + + - name: upload + publish to suites + 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; } + cd debian/ffmpeg-v4l2-request-fourier + DEB=$(ls ffmpeg-v4l2-request-fourier_*.deb | head -1) + retry rsync -av -e 'ssh -i /root/.ssh/id_ed25519_hertz' "$DEB" \ + marfritrepo@hertz.fritz.box: + for suite in bookworm trixie; do + retry ssh -i /root/.ssh/id_ed25519_hertz marfritrepo@hertz.fritz.box \ + "publish-deb $suite $DEB" + done + + - name: wipe secrets + if: always() + run: rm -f /root/.ssh/id_ed25519_hertz + + # ------------------------------------------------------------------------- + # libva-v4l2-request-fourier Debian (aarch64) — meson build + dpkg-deb wrap. + # ------------------------------------------------------------------------- + libva-v4l2-request-fourier-debian: + needs: libva-v4l2-request-fourier-aarch64 + runs-on: arch-aarch64 + continue-on-error: true + steps: + - uses: actions/checkout@v4 + + - name: install build-deps + 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 pkgconf \ + libva libdrm systemd-libs + + - name: install hertz deploy ssh key + env: + KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} + run: | + mkdir -m700 -p /root/.ssh + printf '%s\n' "$KEY" > /root/.ssh/id_ed25519_hertz + chmod 600 /root/.ssh/id_ed25519_hertz + ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null + + - name: build libva-v4l2-request-fourier .deb + run: | + set -e + cd debian/libva-v4l2-request-fourier + ./build-deb.sh + ls -la *.deb + + - name: upload + publish to suites + 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; } + cd debian/libva-v4l2-request-fourier + DEB=$(ls libva-v4l2-request-fourier_*.deb | head -1) + retry rsync -av -e 'ssh -i /root/.ssh/id_ed25519_hertz' "$DEB" \ + marfritrepo@hertz.fritz.box: + for suite in bookworm trixie; do + retry ssh -i /root/.ssh/id_ed25519_hertz marfritrepo@hertz.fritz.box \ + "publish-deb $suite $DEB" + done + + - name: wipe secrets + if: always() + run: rm -f /root/.ssh/id_ed25519_hertz + + # ------------------------------------------------------------------------- + # mpv-fourier Debian (aarch64) — meson build links against + # ffmpeg-v4l2-request-fourier's libavcodec to keep ABI symmetry between + # the .deb's runtime dep declaration and the binary's actual linkage. + # We pre-install the Arch sibling package from [marfrit] for that. + # ------------------------------------------------------------------------- + mpv-fourier-debian: + needs: mpv-fourier-aarch64 + runs-on: arch-aarch64 + continue-on-error: true + steps: + - uses: actions/checkout@v4 + + - name: install build-deps + 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 + 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 + + - name: install hertz deploy ssh key + env: + KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} + run: | + mkdir -m700 -p /root/.ssh + printf '%s\n' "$KEY" > /root/.ssh/id_ed25519_hertz + chmod 600 /root/.ssh/id_ed25519_hertz + ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null + + - name: build mpv-fourier .deb + run: | + set -e + cd debian/mpv-fourier + ./build-deb.sh + ls -la *.deb + + - name: upload + publish to suites + 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; } + cd debian/mpv-fourier + DEB=$(ls mpv-fourier_*.deb | head -1) + retry rsync -av -e 'ssh -i /root/.ssh/id_ed25519_hertz' "$DEB" \ + marfritrepo@hertz.fritz.box: + for suite in bookworm trixie; do + retry ssh -i /root/.ssh/id_ed25519_hertz marfritrepo@hertz.fritz.box \ + "publish-deb $suite $DEB" + done + + - name: wipe secrets + if: always() + run: rm -f /root/.ssh/id_ed25519_hertz + + # ------------------------------------------------------------------------- + # daedalus-v4l2 Debian (aarch64) — CMake + Make build, dpkg-deb wrap. + # Userspace daemon + test tools for the daedalus_v4l2 V4L2-stateless shim. + # ------------------------------------------------------------------------- + daedalus-v4l2-debian: + needs: claude-his-debian + runs-on: arch-aarch64 + continue-on-error: true + steps: + - uses: actions/checkout@v4 + + - name: install build-deps + 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 cmake ninja pkgconf \ + ffmpeg libdrm + + - name: install hertz deploy ssh key + env: + KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} + run: | + mkdir -m700 -p /root/.ssh + printf '%s\n' "$KEY" > /root/.ssh/id_ed25519_hertz + chmod 600 /root/.ssh/id_ed25519_hertz + ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null + + - name: build daedalus-v4l2 .deb + run: | + set -e + cd debian/daedalus-v4l2 + ./build-deb.sh + ls -la *.deb + + - name: upload + publish to suites + 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; } + cd debian/daedalus-v4l2 + DEB=$(ls daedalus-v4l2_*.deb | head -1) + retry rsync -av -e 'ssh -i /root/.ssh/id_ed25519_hertz' "$DEB" \ + marfritrepo@hertz.fritz.box: + for suite in bookworm trixie; do + retry ssh -i /root/.ssh/id_ed25519_hertz marfritrepo@hertz.fritz.box \ + "publish-deb $suite $DEB" + done + + - name: wipe secrets + if: always() + run: rm -f /root/.ssh/id_ed25519_hertz + + # ------------------------------------------------------------------------- + # daedalus-v4l2-dkms Debian (Architecture: all) — packages the kernel + # source tree + dkms.conf. No compilation; just file copy + dpkg-deb. + # ------------------------------------------------------------------------- + daedalus-v4l2-dkms-debian: + needs: daedalus-v4l2-debian + runs-on: arch-aarch64 + continue-on-error: true + steps: + - uses: actions/checkout@v4 + + - name: install tooling + 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 tar gzip + + - name: install hertz deploy ssh key + env: + KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} + run: | + mkdir -m700 -p /root/.ssh + printf '%s\n' "$KEY" > /root/.ssh/id_ed25519_hertz + chmod 600 /root/.ssh/id_ed25519_hertz + ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null + + - name: build daedalus-v4l2-dkms .deb + run: | + set -e + cd debian/daedalus-v4l2-dkms + ./build-deb.sh + ls -la *.deb + + - name: upload + publish to suites + 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; } + cd debian/daedalus-v4l2-dkms + DEB=$(ls daedalus-v4l2-dkms_*.deb | head -1) + retry rsync -av -e 'ssh -i /root/.ssh/id_ed25519_hertz' "$DEB" \ + marfritrepo@hertz.fritz.box: + for suite in bookworm trixie; do + retry ssh -i /root/.ssh/id_ed25519_hertz marfritrepo@hertz.fritz.box \ + "publish-deb $suite $DEB" + done + + - name: wipe secrets + if: always() + run: rm -f /root/.ssh/id_ed25519_hertz