Skip to content

Latest commit

 

History

History
39 lines (37 loc) · 2.87 KB

File metadata and controls

39 lines (37 loc) · 2.87 KB

Fedora Toolbox workflow

  1. Create and enter an isolated build environment that matches the host GPU stack:
    toolbox create -c ffmpeg-build -i registry.fedoraproject.org/fedora-toolbox:43
    toolbox enter ffmpeg-build
  2. Bring in RPM Fusion (needed for fdk-aac) and install the exact dependency set that the Containerfile uses:
    sudo dnf -y upgrade --refresh
    sudo dnf -y install dnf-plugins-core \
      https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
      https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
    sudo dnf -y groupinstall "Development Tools" "Development Libraries"
    sudo dnf -y install git jq python3 python3-requests python3-pip curl wget tree file vim less which rsync \
      autoconf automake libtool cmake meson ninja-build pkgconf-pkg-config perl texinfo tar bzip2 bzip2-devel xz xz-devel zlib-devel expat-devel gperf nasm yasm patch diffutils findutils \
      gcc gcc-c++ make libdrm-devel libva libva-devel mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers mesa-libgbm-devel mesa-libGL-devel mesa-libEGL-devel \
      libX11-devel libXau-devel libXext-devel libXfixes-devel libXrandr-devel libXrender-devel libXdamage-devel libXi-devel libxcb-devel \
      libogg-devel opus-devel libvorbis-devel libtheora-devel lame-devel x264-devel x265-devel aom-devel svt-av1-devel dav1d-devel \
      libvpx-devel libwebp-devel libpng-devel libjpeg-turbo-devel libtiff-devel freetype-devel fontconfig-devel harfbuzz-devel fribidi-devel libass-devel \
      libxml2-devel libbluray-devel libvidstab-devel libzimg-devel libaribb24 libaribb24-devel openjpeg2-devel libsrt-devel zeromq-devel libcurl-devel openssl-devel libuuid-devel \
      libplacebo-devel rav1e-devel libjxl-devel shaderc-devel glslang-devel spirv-tools-devel vulkan-loader-devel librtmp-devel libsmbclient samba-devel libva-utils
    sudo dnf clean all
  3. Run the existing helper scripts from this repository inside the toolbox:
    export PREFIX=/opt/ffmpeg
    export WORKDIR=$PWD  # scripts read manifests from $WORKDIR
    ./generate-source-of-truth-ffmpeg-versions.py --library-list kvazaar,libvmaf,whisper
    ./download_tarballs.sh
    ./build_source.sh
    ./generate-source-of-truth-ffmpeg-versions.py --library-list ffmpeg-8.0
    ./download_tarballs.sh
    ./build_source.sh
    ./install_ffmpeg.sh
  4. Copy /opt/ffmpeg (or /usr/local if you ran the installer) out of the toolbox with toolbox run --container ffmpeg-build tar -C / -cf - opt/ffmpeg | tar -C /desired/host/path -xf - or by using podman cp if you built via container.

The scripts now copy both /usr/lib64 and /usr/lib dependencies, set the Fedora-specific PKG_CONFIG_PATH, and enable the extra FFmpeg features (libplacebo, librav1e, libjxl, libshaderc, librtmp, libsmbclient, vulkan) automatically.