mirror of
https://github.com/mpv-player/mpv
synced 2025-02-15 11:37:03 +00:00
Update the github workflows to also do meson builds for every OS. Additionally, make every workflow execute the built mpv executable (except for windows and FreeBSD's waf executable) to make sure that it runs. As an aside, FreeBSD unfortunately is a bit less elegant since it is in a VM.
198 lines
5.0 KiB
YAML
198 lines
5.0 KiB
YAML
name: build
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- ci
|
|
- 'release/**'
|
|
pull_request:
|
|
branches: [master]
|
|
|
|
jobs:
|
|
mingw:
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
target: [i686-w64-mingw32, x86_64-w64-mingw32]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
# Increase -N suffix here to force full rebuild after changes
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: mingw_prefix/
|
|
key: "${{ matrix.target }}-1"
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y autoconf automake pkg-config g++-mingw-w64 gcc-multilib nasm yasm
|
|
# Meson from apt is too old
|
|
pip3 install --no-input meson ninja
|
|
./bootstrap.py
|
|
|
|
- name: Build with meson
|
|
run: |
|
|
./ci/build-mingw64.sh meson
|
|
env:
|
|
TARGET: ${{ matrix.target }}
|
|
|
|
- name: Print meson log
|
|
if: ${{ failure() }}
|
|
run: |
|
|
cat ./build/meson-logs/meson-log.txt
|
|
|
|
- name: Build with waf
|
|
run: |
|
|
./ci/build-mingw64.sh waf
|
|
env:
|
|
TARGET: ${{ matrix.target }}
|
|
|
|
- name: Print waf log
|
|
if: ${{ failure() }}
|
|
run: |
|
|
cat ./build/config.log
|
|
|
|
macos:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
cc:
|
|
- "clang"
|
|
os:
|
|
- "macos-10.15"
|
|
- "macos-11"
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Override Xcode 13.0 if it's the default toolchain
|
|
run: |
|
|
XCODE_PATH="$(xcode-select -p)"
|
|
case "${XCODE_PATH}" in
|
|
*Xcode_13.0*)
|
|
sudo xcode-select -s "/Applications/Xcode_13.1.app"
|
|
echo "Updated Xcode path ${XCODE_PATH} -> $(xcode-select -p)"
|
|
;;
|
|
esac
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
brew update
|
|
brew install autoconf automake pkg-config libtool python freetype fribidi little-cms2 luajit libass ffmpeg meson
|
|
|
|
- name: Build with meson
|
|
run: |
|
|
./ci/build-macos.sh meson
|
|
env:
|
|
CC: "${{ matrix.cc }}"
|
|
TRAVIS_OS_NAME: "${{ matrix.os }}"
|
|
|
|
- name: Print meson log
|
|
if: ${{ failure() }}
|
|
run: |
|
|
cat ./build/meson-logs/meson-log.txt
|
|
|
|
- name: Build with waf
|
|
run: |
|
|
./ci/build-macos.sh waf
|
|
env:
|
|
CC: "${{ matrix.cc }}"
|
|
TRAVIS_OS_NAME: "${{ matrix.os }}"
|
|
|
|
- name: Print waf log
|
|
if: ${{ failure() }}
|
|
run: |
|
|
cat ./build/config.log
|
|
|
|
linux:
|
|
runs-on: "ubuntu-20.04"
|
|
container:
|
|
image: "registry.cirno.systems/kiwi/containers/mpv-ci:stable-deps"
|
|
# Disable seccomp until a container manager in GitHub recognizes
|
|
# clone3() syscall,
|
|
# <https://github.com/actions/virtual-environments/issues/3812>.
|
|
options: --security-opt seccomp=unconfined
|
|
env:
|
|
CC: "${{ matrix.cc }}"
|
|
strategy:
|
|
matrix:
|
|
cc:
|
|
- "gcc"
|
|
- "clang"
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
./bootstrap.py
|
|
# TODO: switch back to zypper when OpenSuse updates Meson
|
|
# zypper -n install meson
|
|
zypper -n install python3-pip
|
|
pip install --no-input meson ninja
|
|
|
|
- name: Build with meson
|
|
run: |
|
|
./ci/build-tumbleweed.sh meson
|
|
|
|
- name: Print meson log
|
|
if: ${{ failure() }}
|
|
run: |
|
|
cat ./build/meson-logs/meson-log.txt
|
|
|
|
- name: Build with waf
|
|
run: |
|
|
./ci/build-tumbleweed.sh waf
|
|
|
|
- name: Print waf log
|
|
if: ${{ failure() }}
|
|
run: |
|
|
cat ./build/config.log
|
|
|
|
freebsd:
|
|
runs-on: macos-10.15 # until https://github.com/actions/runner/issues/385
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Test in FreeBSD VM
|
|
uses: vmactions/freebsd-vm@v0.1.5 # aka FreeBSD 13.0
|
|
with:
|
|
usesh: true
|
|
prepare: |
|
|
# Requested in ci/build-freebsd.sh
|
|
pkg install -y \
|
|
cmake \
|
|
evdev-proto \
|
|
ffmpeg \
|
|
libplacebo \
|
|
libxkbcommon \
|
|
luajit \
|
|
openal-soft \
|
|
pkgconf \
|
|
python3 \
|
|
sdl2 \
|
|
vulkan-headers \
|
|
wayland-protocols \
|
|
#
|
|
# Optionally auto-enabled
|
|
pkg install -y \
|
|
alsa-lib \
|
|
jackit \
|
|
libXv \
|
|
libarchive \
|
|
libbluray \
|
|
libcaca \
|
|
libcdio-paranoia \
|
|
libdvdnav \
|
|
mujs \
|
|
pulseaudio \
|
|
rubberband \
|
|
sekrit-twc-zimg \
|
|
uchardet \
|
|
v4l_compat \
|
|
#
|
|
# Meson from pkg is too old
|
|
python3 -m ensurepip
|
|
pip3 install --no-input meson ninja
|
|
run: |
|
|
./ci/build-freebsd.sh
|