Skip to content

build-ffmpeg

build-ffmpeg #21

Workflow file for this run

name: build-ffmpeg
on:
push:
branches: main
paths-ignore:
- '**.md'
- '**.rst'
- '**.txt'
pull_request:
branches: main
paths-ignore:
- '**.md'
- '**.rst'
- '**.txt'
workflow_dispatch:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# - os: macos-14
# arch: arm64
# shell: bash
# - os: macos-13
# arch: x86_64
# shell: bash
# - os: ubuntu-latest
# arch: i686
# shell: bash
- os: ubuntu-latest
arch: x86_64
shell: bash
# - os: windows-latest
# arch: AMD64
# shell: 'msys2 {0}'
defaults:
run:
shell: ${{ matrix.shell }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Set deployment target
if: matrix.os == 'macos-13' || matrix.os == 'macos-14'
run: echo "MACOSX_DEPLOYMENT_TARGET=10.13" >> $GITHUB_ENV
- name: Install packages for macos
if: matrix.os == 'macos-13' || matrix.os == 'macos-14'
run: |
brew update
brew install pkg-config [email protected]
brew unlink gettext libidn2 libpng libtiff libunistring libx11 libxau libxcb libxdmcp little-cms2 unbound
- name: Install packages for linux
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install autoconf automake build-essential cmake libtool pkg-config nasm zlib1g-dev libvorbis-dev libx264-dev 'libgnutls.*-dev' libsrt-gnutls-dev gnutls-bin srt-tools 'libsrt.*-gnutls' libssl-dev
- uses: msys2/setup-msys2@v2
if: matrix.os == 'windows-latest'
with:
install: base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-gperf mingw-w64-x86_64-nasm
path-type: inherit
- name: list
run: |
echo 111111
dpkg -L libsrt1.4-gnutls
echo 222222
dpkg -L libsrt-gnutls-dev
echo 333333
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig
echo $PKG_CONFIG_PATH
- name: Build FFmpeg
env:
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: python scripts/build-ffmpeg.py /tmp/vendor
CIBW_BEFORE_BUILD_WINDOWS: python scripts\build-ffmpeg.py C:\cibw\vendor
CIBW_BUILD: cp39-*
CIBW_REPAIR_WHEEL_COMMAND_LINUX: LD_LIBRARY_PATH=/tmp/vendor/lib:$LD_LIBRARY_PATH auditwheel repair -w {dest_dir} {wheel}
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair --add-path C:\cibw\vendor\bin -w {dest_dir} {wheel}
CIBW_SKIP: "*musllinux*"
CIBW_TEST_COMMAND: python -c "import dummy"
run: |
pip install cibuildwheel delvewheel
cibuildwheel --output-dir output
rm -f output/*.whl
- name: Upload FFmpeg
uses: actions/upload-artifact@v4
with:
name: output-${{ matrix.os }}-${{ matrix.arch }}
path: output/
build-qemu-stage-1:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
arch: [aarch64, ppc64le]
os: [ubuntu-latest]
env:
stage: 1
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Build FFmpeg dependencies
run: |
docker run -v $PWD:/project:rw --workdir=/project quay.io/pypa/manylinux2014_${{ matrix.arch }} bash -exc '
export PATH=/opt/python/cp39-cp39/bin:$PATH;
export CIBUILDWHEEL=1;
python scripts/build-ffmpeg.py /tmp/vendor --stage ${{ env.stage }};
cp -ar /tmp/vendor /project;
'
shell: bash
- uses: actions/upload-artifact@v4
with:
name: stage-1-${{ matrix.os }}-${{ matrix.arch }}
path: vendor
build-qemu-stage-2:
needs: build-qemu-stage-1
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
arch: [aarch64, ppc64le]
os: [ubuntu-latest]
env:
stage: 2
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- uses: actions/download-artifact@v4
with:
name: stage-1-${{ matrix.os }}-${{ matrix.arch }}
path: vendor
- name: Build FFmpeg
env:
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_ALL_LINUX: cp -ar vendor /tmp
CIBW_BEFORE_BUILD: python scripts/build-ffmpeg.py /tmp/vendor --stage ${{ env.stage }}
CIBW_BUILD: cp39-*
CIBW_REPAIR_WHEEL_COMMAND_LINUX: LD_LIBRARY_PATH=/tmp/vendor/lib:$LD_LIBRARY_PATH auditwheel repair -w {dest_dir} {wheel}
CIBW_SKIP: "*musllinux*"
CIBW_TEST_COMMAND: python -c "import dummy"
run: |
pip install cibuildwheel
cibuildwheel --output-dir output
rm -f output/*.whl
shell: bash
- name: Upload FFmpeg
uses: actions/upload-artifact@v4
with:
name: output-${{ matrix.os }}-${{ matrix.arch }}
path: output/