tooling: fix the Fedora package names and enable RPM Fusion

- x264/x265 are patent-encumbered and not in Fedora's own repositories:
  install the RPM Fusion free release package first (over HTTPS from the
  official mirror) so dnf can resolve them;
- Fedora 43 renamed the bindings: libdav1d-devel (not dav1d-devel) and
  openjpeg-devel (not openjpeg2-devel);
- degrade like the apt branch when something is unavailable:
  --skip-unavailable instead of failing the whole transaction.

Verified end-to-end in a fedora:43 container: the full list installs
(260 packages; x264 0.165 and x265 4.1 come from RPM Fusion). Arch's
package names were re-checked against the Arch package index (all
present).
This commit is contained in:
2026-09-24 18:56:55 +08:00
parent 563a3625ca
commit 08c48473a6
+23 -7
View File
@@ -118,14 +118,30 @@ case "$(uname -s)" in
run "${SUDO[@]}" git clone --depth 1 https://github.com/FFmpeg/nv-codec-headers.git /tmp/nv-codec-headers
run "${SUDO[@]}" make -C /tmp/nv-codec-headers install PREFIX=/usr
elif command -v dnf >/dev/null; then
run "${SUDO[@]}" dnf install -y --setopt=install_weak_deps=False \
--setopt=max_parallel_downloads=16 \
gcc gcc-c++ clang clang-devel cmake python3 pkgconf-pkg-config nasm \
x264-devel x265-devel dav1d-devel libvpx-devel \
openh264-devel openjpeg2-devel libtheora-devel libwebp-devel \
lame-devel opus-devel libvorbis-devel speex-devel \
snappy-devel libass-devel freetype-devel fribidi-devel \
# x264/x265 are patent-encumbered: Fedora's own repositories
# do not carry them, RPM Fusion does. Install its release
# package first (fetched over HTTPS from the official mirror;
# dnf skips the OpenPGP check for the commandline package and
# imports the repository keys for everything it pulls after).
if ! rpm -q rpmfusion-free-release >/dev/null 2>&1; then
run "${SUDO[@]}" dnf install -y --setopt=install_weak_deps=False \
"https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm"
fi
DNFPKGS=(
gcc gcc-c++ clang clang-devel cmake python3 pkgconf-pkg-config nasm
x264-devel x265-devel libdav1d-devel libvpx-devel
openh264-devel openjpeg-devel libtheora-devel libwebp-devel
lame-devel opus-devel libvorbis-devel speex-devel
snappy-devel libass-devel freetype-devel fribidi-devel
fontconfig-devel gnutls-devel libva-devel libdrm-devel
)
if ! run "${SUDO[@]}" dnf install -y --setopt=install_weak_deps=False \
--setopt=max_parallel_downloads=16 "${DNFPKGS[@]}"; then
echo "Some packages are unavailable here; installing the rest" >&2
run "${SUDO[@]}" dnf install -y --skip-unavailable \
--setopt=install_weak_deps=False --setopt=max_parallel_downloads=16 \
"${DNFPKGS[@]}"
fi
elif command -v pacman >/dev/null; then
run "${SUDO[@]}" pacman -S --needed --noconfirm base-devel clang cmake python pkgconf nasm \
x264 x265 dav1d libvpx openh264 openjpeg2 libtheora libwebp \