diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 80e1e0a01..86a3b34bd 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -482,6 +482,116 @@ jobs: if: always() run: rm -f /root/repo_pass /root/.ssh/id_ed25519 + # ------------------------------------------------------------------------- + # libva-v4l2-request-fourier (aarch64 only) — VA-API V4L2-stateless backend, + # multiplanar fork. Successor to libva-v4l2-request-ohm-gl-fix (never + # published). Tracks the campaign fork's git tip directly; pinned commit + # is the libva-multiplanar iter8 close. + # ------------------------------------------------------------------------- + libva-v4l2-request-fourier-aarch64: + needs: ffmpeg-v4l2-request-aarch64 + runs-on: arch-aarch64 + continue-on-error: true + steps: + - uses: actions/checkout@v4 + + - name: bootstrap runner (idempotent) + 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 base-devel git rsync gnupg openssh sudo + + - name: import signing key + env: + PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} + PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} + run: | + set -e + rm -rf /root/.gnupg /root/repo_pass + mkdir -m700 -p /root/.gnupg + printf '%s' "$PASS" > /root/repo_pass + chmod 600 /root/repo_pass + printf '%s\n' "$PRIV" | gpg --batch --import + echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust + + - name: install deploy ssh key + env: + KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} + run: | + mkdir -m700 -p /root/.ssh + printf '%s\n' "$KEY" > /root/.ssh/id_ed25519 + chmod 600 /root/.ssh/id_ed25519 + ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null + + - name: makepkg libva-v4l2-request-fourier + run: | + set -e + rm -rf /tmp/build-libva-v4l2 + cp -r arch/libva-v4l2-request-fourier /tmp/build-libva-v4l2 + chown -R builder:builder /tmp/build-libva-v4l2 + cd /tmp/build-libva-v4l2 + sudo -u builder -H env MAKEFLAGS="-j$(nproc)" \ + makepkg --nocheck --noconfirm --syncdeps --cleanbuild + ls -la *.pkg.tar.* | grep -v "\.sig$" + + - name: sign libva-v4l2-request-fourier + run: | + set -e + cd /tmp/build-libva-v4l2 + for f in *.pkg.tar.xz *.pkg.tar.zst *.pkg.tar.gz; do + [ -f "$f" ] || continue + gpg --batch --pinentry-mode loopback --passphrase-file /root/repo_pass \ + --detach-sign --yes -u 92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C "$f" + done + + - name: update aarch64 repo db + run: | + set -e + mkdir -p /tmp/arch-stage-libva + cd /tmp/arch-stage-libva + rm -f * + for f in marfrit.db.tar.gz marfrit.db.tar.gz.sig marfrit.files.tar.gz marfrit.files.tar.gz.sig; do + curl -sSLf "https://packages.reauktion.de/arch/aarch64/$f" -o "$f" || rm -f "$f" + done + for ext in xz zst gz; do + ls /tmp/build-libva-v4l2/*.pkg.tar.$ext 2>/dev/null && \ + mv /tmp/build-libva-v4l2/*.pkg.tar.$ext /tmp/build-libva-v4l2/*.pkg.tar.$ext.sig . + done || true + export GNUPGHOME=/root/.gnupg + printf 'pinentry-mode loopback\npassphrase-file /root/repo_pass\n' > /root/.gnupg/gpg.conf + printf 'allow-loopback-pinentry\n' > /root/.gnupg/gpg-agent.conf + gpg-connect-agent reloadagent /bye + pkgs=() + for ext in xz zst gz; do + for f in *.pkg.tar.$ext; do [ -f "$f" ] && pkgs+=("$f"); done + done + if [ -f marfrit.db.tar.gz ]; then + for f in "${pkgs[@]}"; do + name=$(echo "$f" | sed -E 's/-[0-9].*//') + repo-remove --sign --key 92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C \ + marfrit.db.tar.gz "$name" 2>/dev/null || true + done + fi + repo-add --new --sign --key 92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C \ + --verify marfrit.db.tar.gz "${pkgs[@]}" + ln -sf marfrit.db.tar.gz marfrit.db + ln -sf marfrit.files.tar.gz marfrit.files + ln -sf marfrit.db.tar.gz.sig marfrit.db.sig + rm -f marfrit.files.sig + + - name: publish to aarch64 + 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 /tmp/arch-stage-libva + retry rsync -avL --copy-unsafe-links \ + -e 'ssh -i /root/.ssh/id_ed25519' \ + ./ mfritsche@nc.reauktion.de:arch/aarch64/ + + - name: wipe secrets + if: always() + run: rm -f /root/repo_pass /root/.ssh/id_ed25519 + # ------------------------------------------------------------------------- # claude-his-agent Debian (Architecture: all) — same dpkg-deb pattern as # lmcp-debian; publishes to bookworm + trixie via hertz reprepro. diff --git a/arch/libva-v4l2-request-fourier/PKGBUILD b/arch/libva-v4l2-request-fourier/PKGBUILD new file mode 100644 index 000000000..6af827603 --- /dev/null +++ b/arch/libva-v4l2-request-fourier/PKGBUILD @@ -0,0 +1,69 @@ +# Maintainer: Markus Fritsche +# +# libva-v4l2-request-fourier — VA-API backend for V4L2 stateless decoders, +# multiplanar fork. Successor to the predecessor experimental package +# libva-v4l2-request-ohm-gl-fix (tarball + 18-patch stack); this package +# tracks the campaign fork's git history directly, so iteration sweeps +# (DEBUG removal, follow-up bugfixes) land in a clean linear log. +# +# Campaign: ~/src/libva-multiplanar/ (eight closed iterations as of +# 2026-05-06; iter8 close is the production tip pinned below). +# Fork repo: https://git.reauktion.de/marfrit/libva-v4l2-request-fourier +# Bootlin upstream: https://github.com/bootlin/libva-v4l2-request +# +# Build target: fermi LXC actrunner-aarch64-hertz via marfrit-packages +# Gitea Actions (path=arch/libva-v4l2-request-fourier triggers the +# libva-v4l2-request-fourier-aarch64 job — wire up alongside the existing +# ffmpeg-v4l2-request-git job in .gitea/workflows/build.yml). +# Alternative: boltzmann via his subagent + marfrit-publish. + +pkgname=libva-v4l2-request-fourier +_upstreampkg=libva-v4l2-request + +# Pin the fork tip. 65969da = "iter8 Phase 4: tests/run_perf_binding_cell.sh" +# — last commit on master before fresnel-fourier work started layering +# MPEG-2 rewrites on top of it (2026-05-08). The libva-multiplanar campaign +# closed iter8 at this commit; promote to a later pin only after a future +# iteration closes cleanly. +_commit=65969da3ee901442a8ca4e1f7f9697d5461d368a + +# Project version from meson.build (1.0.0) + commit count + short sha, +# matching the ffmpeg-v4l2-request-fourier convention. +pkgver=1.0.0.r280.65969da +pkgrel=1 +pkgdesc="VA-API backend for V4L2 stateless decoders (multiplanar fork — fourier umbrella)" +arch=('aarch64') +url="https://git.reauktion.de/marfrit/libva-v4l2-request-fourier" +license=('LGPL2.1' 'MIT') +depends=('libva' 'libdrm' 'systemd-libs') +makedepends=('meson' 'ninja' 'pkgconf' 'git') +provides=("${_upstreampkg}=${pkgver}" 'libva-driver') +conflicts=("${_upstreampkg}" 'libva-v4l2-request-ohm-gl-fix') +replaces=("${_upstreampkg}" 'libva-v4l2-request-ohm-gl-fix') + +source=("git+https://git.reauktion.de/marfrit/libva-v4l2-request-fourier.git#commit=${_commit}") +sha256sums=('SKIP') + +pkgver() { + cd "${srcdir}/${_upstreampkg}-fourier" + printf '1.0.0.r%s.%s' \ + "$(git rev-list --count HEAD)" \ + "$(git rev-parse --short=7 HEAD)" +} + +build() { + cd "${srcdir}/${_upstreampkg}-fourier" + # meson_options.txt only exposes 'kernel_headers' — leave it empty to + # use system /usr/include kernel UAPI headers. No per-codec toggles. + arch-meson build --buildtype=release + meson compile -C build +} + +package() { + cd "${srcdir}/${_upstreampkg}-fourier" + meson install -C build --destdir "${pkgdir}" + + install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING" + install -Dm644 COPYING.LGPL "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.LGPL" + install -Dm644 COPYING.MIT "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.MIT" +}