mirror of https://github.com/mpv-player/mpv
287 lines
7.2 KiB
YAML
287 lines
7.2 KiB
YAML
name: build
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- ci
|
|
- 'release/**'
|
|
paths-ignore:
|
|
- 'DOCS/**'
|
|
- 'TOOLS/lua/**'
|
|
pull_request:
|
|
branches: [master]
|
|
paths-ignore:
|
|
- 'DOCS/**'
|
|
- 'TOOLS/lua/**'
|
|
|
|
jobs:
|
|
mingw:
|
|
runs-on: ubuntu-22.04
|
|
env:
|
|
CCACHE_BASEDIR: ${{ github.workspace }}
|
|
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
|
CCACHE_MAXSIZE: 500M
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
target: [i686-w64-mingw32, x86_64-w64-mingw32]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Get time
|
|
id: get_time
|
|
run: echo "timestamp=`date +%s%N`" >> $GITHUB_OUTPUT
|
|
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
key: ${{ matrix.target }}-${{ steps.get_time.outputs.timestamp }}
|
|
restore-keys: ${{ matrix.target }}-
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
sudo apt-get install -y autoconf automake pkg-config g++-mingw-w64 gcc-multilib python3-pip ninja-build nasm wine wine32 wine64 ccache
|
|
sudo python3 -m pip install meson
|
|
|
|
- name: Build libraries
|
|
run: |
|
|
./ci/build-mingw64.sh
|
|
env:
|
|
TARGET: ${{ matrix.target }}
|
|
|
|
- name: Build with meson
|
|
id: build
|
|
run: |
|
|
./ci/build-mingw64.sh meson pack
|
|
env:
|
|
TARGET: ${{ matrix.target }}
|
|
|
|
- name: Print meson log
|
|
if: ${{ failure() && steps.build.outcome == 'failure' }}
|
|
run: |
|
|
cat ./build/meson-logs/meson-log.txt
|
|
|
|
- name: Functional test
|
|
id: tests
|
|
run: |
|
|
cd artifact && wine64 ./mpv.com -v --no-config
|
|
env:
|
|
WINEDEBUG: '+loaddll'
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: mpv-${{ matrix.target }}
|
|
path: mpv-git-*.zip
|
|
|
|
macos:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
cc:
|
|
- "clang"
|
|
os:
|
|
- "macos-11"
|
|
- "macos-12"
|
|
- "macos-13"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Remove stray upstream python binary symlinks under /usr/local
|
|
run: |
|
|
find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete -print
|
|
brew unlink python && brew link --overwrite python
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
brew update
|
|
brew install autoconf automake pkg-config libtool python freetype fribidi little-cms2 lua@5.1 libass ffmpeg meson libplacebo
|
|
|
|
- name: Build with meson
|
|
id: build
|
|
run: |
|
|
./ci/build-macos.sh
|
|
env:
|
|
CC: "${{ matrix.cc }}"
|
|
TRAVIS_OS_NAME: "${{ matrix.os }}"
|
|
|
|
- name: Print meson log
|
|
if: ${{ failure() && steps.build.outcome == 'failure' }}
|
|
run: |
|
|
cat ./build/meson-logs/meson-log.txt
|
|
|
|
- name: Run meson tests
|
|
id: tests
|
|
run: |
|
|
meson test -C build
|
|
|
|
- name: Print meson test log
|
|
if: ${{ failure() && steps.tests.outcome == 'failure' }}
|
|
run: |
|
|
cat ./build/meson-logs/testlog.txt
|
|
|
|
linux:
|
|
runs-on: "ubuntu-22.04"
|
|
container:
|
|
image: "registry.opensuse.org/home/mia/images/images/mpv-ci:stable-deps"
|
|
env:
|
|
CC: "${{ matrix.cc }}"
|
|
strategy:
|
|
matrix:
|
|
cc:
|
|
- "gcc"
|
|
- "clang"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
# workaround to avoid "fatal: unsafe repository" error
|
|
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
|
|
- name: Build with meson
|
|
id: build
|
|
run: |
|
|
./ci/build-tumbleweed.sh
|
|
|
|
- name: Print meson log
|
|
if: ${{ failure() && steps.build.outcome == 'failure' }}
|
|
run: |
|
|
cat ./build/meson-logs/meson-log.txt
|
|
|
|
- name: Run meson tests
|
|
id: tests
|
|
run: |
|
|
meson test -C build
|
|
|
|
- name: Print meson test log
|
|
if: ${{ failure() && steps.tests.outcome == 'failure' }}
|
|
run: |
|
|
cat ./build/meson-logs/testlog.txt
|
|
|
|
freebsd:
|
|
runs-on: macos-12 # until https://github.com/actions/runner/issues/385
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Test in FreeBSD VM
|
|
uses: vmactions/freebsd-vm@v0
|
|
with:
|
|
mem: 8192
|
|
copyback: false
|
|
usesh: true
|
|
prepare: |
|
|
# Update to latest release channel
|
|
mkdir -p /usr/local/etc/pkg/repos
|
|
echo "FreeBSD: { url: "pkg+http://pkg.freebsd.org/\${ABI}/latest" }" \
|
|
> /usr/local/etc/pkg/repos/FreeBSD.conf
|
|
pkg update
|
|
# Requested in ci/build-freebsd.sh
|
|
pkg install -y \
|
|
cmake \
|
|
evdev-proto \
|
|
ffmpeg \
|
|
libplacebo \
|
|
libxkbcommon \
|
|
libXinerama \
|
|
libxpresent \
|
|
luajit \
|
|
meson \
|
|
openal-soft \
|
|
pkgconf \
|
|
python3 \
|
|
sdl2 \
|
|
sndio \
|
|
vulkan-headers \
|
|
wayland-protocols \
|
|
#
|
|
# Optionally auto-enabled
|
|
pkg install -y \
|
|
alsa-lib \
|
|
jackit \
|
|
libXv \
|
|
libarchive \
|
|
libbluray \
|
|
libcaca \
|
|
libcdio-paranoia \
|
|
libdvdnav \
|
|
mujs \
|
|
pipewire \
|
|
pulseaudio \
|
|
rubberband \
|
|
sekrit-twc-zimg \
|
|
uchardet \
|
|
v4l_compat \
|
|
#
|
|
run: |
|
|
./ci/build-freebsd.sh
|
|
meson test -C build
|
|
|
|
msys2:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
sys:
|
|
- clang32
|
|
- clang64
|
|
- mingw32
|
|
- mingw64
|
|
- ucrt64
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.sys }}
|
|
update: true
|
|
install: git
|
|
pacboy: >-
|
|
angleproject:p
|
|
ca-certificates:p
|
|
cc:p
|
|
diffutils:p
|
|
ffmpeg:p
|
|
lcms2:p
|
|
libarchive:p
|
|
libass:p
|
|
libcdio-paranoia:p
|
|
libdvdnav:p
|
|
libjpeg-turbo:p
|
|
libplacebo:p
|
|
lua51:p
|
|
meson:p
|
|
ninja:p
|
|
pkgconf:p
|
|
python:p
|
|
rst2pdf:p
|
|
rubberband:p
|
|
shaderc:p
|
|
spirv-cross:p
|
|
uchardet:p
|
|
vapoursynth:p
|
|
vulkan:p
|
|
|
|
- name: Build with meson
|
|
id: build
|
|
run: |
|
|
./ci/build-msys2.sh meson
|
|
|
|
- name: Print meson log
|
|
if: ${{ failure() && steps.build.outcome == 'failure' }}
|
|
run: |
|
|
cat ./build/meson-logs/meson-log.txt
|
|
|
|
- name: Run meson tests
|
|
id: tests
|
|
run: |
|
|
meson test -C build
|
|
|
|
- name: Print meson test log
|
|
if: ${{ failure() && steps.tests.outcome == 'failure' }}
|
|
run: |
|
|
cat ./build/meson-logs/testlog.txt
|