Skip to content

9.0 patches

9.0 patches #417

Workflow file for this run

name: Build GPL
on:
push:
schedule:
- cron: '0 12 * * 0'
env:
# if: (github.event_name == 'schedule')
# GITHUB_ENV: https://docs.github.com/en/actions/learn-github-actions/environment-variables#about-environment-variables
FF_VERSION: ${{ vars.FF_VER }} # TODO: latest release if triggered by schedule
LLVM_VER: ${{ vars.LLVM_VER }}
LLVM_VER_DEFAULT: 23
NINJA_STATUS: '[%f/%t %e %r]'
SF_PW_MAPPED: ${{ secrets.SF_PW }}
SF_USER_MAPPED: ${{ secrets.SF_USER }}
AMF_VER: ${{ vars.AMF_VER }}
jobs:
Apple:
# See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix
runs-on: macos-26
env:
TARGET_OS: ${{ matrix.target }}
CONFIG_SUFFIX: -gpl-${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite]
target: [macOS,iOS]
exclude:
- config: default
target: iOSSimulator
- config: default
target: macCatalyst
steps:
- uses: actions/checkout@v5
- name: Setup Xcode
run: sudo xcode-select -s /Applications/Xcode_${{ vars.XCODE }}.app
- name: Create Build Environment
shell: bash
env:
DEVTOOLS_CACHE_HIT: ${{ steps.devtools-cache.outputs.cache-hit }}
EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }}
run: |
./tools/ci-before-build.sh
wget https://sourceforge.net/projects/avbuild/files/dep/dep_gpl.7z/download -O dep_gpl.7z
7z x -y dep_gpl.7z -otools
- name: Configure and Build macOS
if: ${{ matrix.target == 'macOS' }}
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
./avbuild.sh ${TARGET_OS}
- name: Configure and Build iOS arm64
if: ${{ matrix.target == 'iOS' }}
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
./avbuild.sh ${TARGET_OS} arm64
find sdk-* -name "*.dylib" -delete
- name: Make SDK
shell: bash
run: |
cp -avf tools/dep_gpl/${{ env.TARGET_OS }}/lib/* sdk-*/lib/
./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v4
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
VS2026:
runs-on: windows-2025-vs2026
env:
TARGET_OS: ${{ matrix.target }}
CONFIG_SUFFIX: -gpl-${{ matrix.config }}
NVENC: ${{ matrix.nvenc }}
strategy:
fail-fast: false
matrix:
config: [lite]
target: [windows-desktop]
nvenc: [n13.0.19.0]
steps:
- uses: actions/checkout@v5
with:
submodules: 'recursive'
- name: Create Build Environment
shell: cmd
run: |
set FF_BRANCH=%FF_VERSION%
if not [%FF_BRANCH%]==[master] set FF_BRANCH=release/%FF_VERSION%
git clone -b %FF_BRANCH% --depth 1 --no-tags https://code.ffmpeg.org/FFmpeg/FFmpeg.git ffmpeg-%FF_VERSION%
if not [%CONFIG_SUFFIX%]==[-default] copy /y config%CONFIG_SUFFIX%.sh config.sh
- uses: msys2/setup-msys2@v2
with:
release: false # disable installation cache, so exe path in avbuild.sh is correct
update: true
install: >-
make
diffutils
patch
pkg-config
nasm
yasm
mingw-w64-x86_64-glslang
- name: Install dev packages
shell: bash
run: |
curl -kL -o dep.7z https://sourceforge.net/projects/avbuild/files/dep/dep.7z/download
curl -kL -o dep_gpl.7z https://sourceforge.net/projects/avbuild/files/dep/dep_gpl.7z/download
7z x -y dep.7z -otools
7z x -y dep_gpl.7z -otools
sed -i '/X264_API_IMPORTS/d' "ffmpeg-${FF_VERSION}/libavcodec/libx264.c" # we link against static libx264
curl -kL -o libmdk-dep.zip https://nightly.link/wang-bin/devpkgs/workflows/${DEVPKGS_WORKFLOW:=build}/main/libmdk-dep.zip
7z x -y libmdk-dep.zip
7z x -y dep-av.7z -otools
cp -af tools/dep-av/* tools/dep/
pwd
find tools/dep*/windows*
curl -kL -o AMF-headers.tar.gz https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v$AMF_VER/AMF-headers-v$AMF_VER.tar.gz
tar xf AMF-headers.tar.gz -C tools/dep/include --strip-components=1
grep AMF_VERSION tools/dep/include/AMF/core/Version.h
sed -n '40,50p' tools/dep/include/AMF/components/DisplayCapture.h
- name: 'Checkout nvenc'
if: ${{ matrix.nvenc != '' }}
run: |
cd tools/nv-codec-headers
git fetch -t
git checkout ${{ matrix.nvenc }}
git --no-pager log -1
- name: Configure and Build
shell: cmd
run: |
set MSYS2_DIR=C:\msys64
set PKG_CONFIG_PATH_MFX=%CD%\tools\dep\windows\lib\pkgconfig
set HOME=%CD%
set FFSRC=%CD%\ffmpeg-%FF_VERSION%
set BUILD_NOW=true
set USER_OPT=--enable-libshaderc
tools\vcbuild.bat VS2026 %TARGET_OS%10 x64
- name: Make SDK
shell: cmd
run: |
set SDK_NAME=ffmpeg-%FF_VERSION%-%TARGET_OS%-vs2026%CONFIG_SUFFIX%
move sdk* %SDK_NAME%
xcopy /s /f /y tools\dep_gpl\${{ env.TARGET_OS }}\lib\* %SDK_NAME%\lib\
7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off %SDK_NAME%.7z %SDK_NAME%
- name: Archieve SDK
uses: actions/upload-artifact@v4
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-VS2026${{ matrix.config }}
path: ffmpeg-*.7z
Windows_clang:
runs-on: ubuntu-latest
env:
TARGET_OS: ${{ matrix.target }}
COMPILER: clang
VCDIR: '/tmp/msvcrt-dev'
WINDOWSSDKDIR: '/tmp/winsdk'
PKG_CONFIG_PATH_MFX: '/tmp/dep/ClangCL/lib/pkgconfig'
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -gpl-${{ matrix.config }}
NVENC: ${{ matrix.nvenc }}
DEVPKGS_WORKFLOW: no-lto
strategy:
fail-fast: false
matrix:
config: [lite]
target: [windows-desktop]
nvenc: [n13.0.19.0]
steps:
- uses: actions/checkout@v5
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: |
/tmp/winsdk
/tmp/msvcrt-dev
key: sysroot-${{ env.TARGET_OS }}${{ vars.WINSDKVER }}-vc${{ vars.VCVER }}
- name: Create Build Environment
shell: bash
env:
DEVTOOLS_CACHE_HIT: ${{ steps.devtools-cache.outputs.cache-hit }}
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
wget https://sourceforge.net/projects/avbuild/files/dep/dep_gpl.7z/download -O dep_gpl.7z
7z x -y dep_gpl.7z -otools
sed -i '/X264_API_IMPORTS/d' "ffmpeg-${FF_VERSION}/libavcodec/libx264.c" # we link against static libx264
- name: 'Checkout nvenc'
if: ${{ matrix.nvenc != '' }}
run: |
cd tools/nv-codec-headers
git fetch -t
git checkout ${{ matrix.nvenc }}
git --no-pager log -1
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export WindowsSdkDir=${WINDOWSSDKDIR}
export WindowsSDKVersion=$(cat ${WINDOWSSDKDIR}/.version)
export USER_OPT="--enable-libshaderc"
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh $TARGET_OS "x64 arm64"
- name: Make SDK
shell: bash
run: |
cp -avf tools/dep_gpl/${{ env.TARGET_OS }}/lib/* sdk-*/lib/x64
cp -avf tools/dep_gpl/${{ env.TARGET_OS }}/arm64/lib/* sdk-*/lib/arm64
./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v4
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Linux_clang:
runs-on: ubuntu-latest
env:
TARGET_OS: linux
COMPILER: clang
PKG_CONFIG_PATH_MFX: "/tmp/dep/linux/amd64/lib/pkgconfig"
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -gpl-${{ matrix.config }}
NVENC: ${{ matrix.nvenc }}
strategy:
fail-fast: false
matrix:
config: [lite]
nvenc: [n13.0.19.0]
steps:
- uses: actions/checkout@v5
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: /tmp/sysroot
key: sysroot-${{ env.TARGET_OS }}-${{ vars.LINUX_SYSROOT_ID }}
- name: Create Build Environment
shell: bash
env:
DEVTOOLS_CACHE_HIT: ${{ steps.devtools-cache.outputs.cache-hit }}
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
wget https://sourceforge.net/projects/avbuild/files/dep/dep_gpl.7z/download -O dep_gpl.7z
7z x -y dep_gpl.7z -otools
- name: 'Checkout nvenc'
if: ${{ matrix.nvenc != '' }}
run: |
cd tools/nv-codec-headers
git fetch -t
git checkout ${{ matrix.nvenc }}
git --no-pager log -1
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export SYSROOT=/tmp/sysroot
export USER_OPT="--enable-libshaderc --disable-bzlib"
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh linux "amd64 arm64"
- name: Make SDK
shell: bash
run: |
cp -avf tools/dep_gpl/${{ env.TARGET_OS }}_amd64/lib/* sdk-*/lib/amd64
cp -avf tools/dep_gpl/${{ env.TARGET_OS }}_arm64/lib/* sdk-*/lib/arm64
./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v4
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Rockchip:
if: ${{ vars.FF_VER == 'master' }}
runs-on: ubuntu-latest
env:
FFREPO: 'https://github.com/nyanmisaka/ffmpeg-rockchip'
TARGET_OS: rockchip
COMPILER: clang
PKG_CONFIG_PATH_MFX: "/tmp/dep/linux/amd64/lib/pkgconfig"
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -gpl-${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite]
steps:
- uses: actions/checkout@v5
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: /tmp/sysroot
key: sysroot-linux-${{ vars.LINUX_SYSROOT_ID }}
- name: Create Build Environment
shell: bash
env:
DEVTOOLS_CACHE_HIT: ${{ steps.devtools-cache.outputs.cache-hit }}
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
wget https://sourceforge.net/projects/avbuild/files/dep/dep_gpl.7z/download -O dep_gpl.7z
7z x -y dep_gpl.7z -otools
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export SYSROOT=/tmp/sysroot
export USER_OPT="--enable-libshaderc --disable-bzlib"
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh rockchip "arm64"
- name: Make SDK
shell: bash
run: |
cp -avf tools/dep_gpl/linux_arm64/lib/* sdk-*/lib
./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v4
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Android:
runs-on: macos-latest
env:
TARGET_OS: android
CONFIG_SUFFIX: -gpl-${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite]
steps:
- uses: actions/checkout@v5
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: /tmp/sysroot
key: sysroot-${{ env.TARGET_OS }}-${{ vars.LINUX_SYSROOT_ID }}
- name: Create Build Environment
shell: bash
env:
DEVTOOLS_CACHE_HIT: ${{ steps.devtools-cache.outputs.cache-hit }}
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }}
run: |
./tools/ci-before-build.sh
wget https://sourceforge.net/projects/avbuild/files/dep/dep_gpl.7z/download -O dep_gpl.7z
7z x -y dep_gpl.7z -otools
- name: Configure and Build
shell: bash
run: |
export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
./avbuild.sh ${TARGET_OS}24 arm64
- name: Make SDK
shell: bash
run: |
cp -avf tools/dep_gpl/${{ env.TARGET_OS }}_arm64/lib/* sdk-*/lib/
./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v4
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Upload:
runs-on: ubuntu-latest
needs: [VS2026]
steps:
- name: Download vs2026 desktop lite
uses: actions/download-artifact@v4
with:
name: ffmpeg-${{ env.FF_VERSION }}-windows-desktop-VS2026lite
- name: Upload to SourceForge
if: (github.event_name != 'pull_request')
shell: bash
run: |
sudo apt update
sudo apt install -y sshpass
FFV=${{ env.FF_VERSION }}
for f in `ls ffmpeg-*.7z`; do
OS=${f%%-vs*}
OS=${OS##*${FFV}-}
sshpass -p $SF_PW_MAPPED scp -o StrictHostKeyChecking=no $f $SF_USER_MAPPED,avbuild@frs.sourceforge.net:/home/frs/project/a/av/avbuild/$OS
done