Recently, git patched a CVE which makes it much more strict about different users operating on directories they don't own. For us, this causes breakage with version.sh and version.py since they both run a git describe command to fetch the commit hash. Currently, this only affects the tumbleweed container (likely because it was recently changed) and thus the git describe command always errors out. Workaround this by just explictly adding the mpv directory as a safe directory for git.
196 lines
4.9 KiB
YAML
196 lines
4.9 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 }}-2"
|
|
|
|
- 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 ./${{ matrix.target }}_mingw_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 [email protected] 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.opensuse.org/home/mia/images/images/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
|
|
zypper -n install meson
|
|
# workaround to avoid "fatal: unsafe repository" error
|
|
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
|
|
- 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/[email protected] # aka FreeBSD 13.0
|
|
with:
|
|
usesh: true
|
|
prepare: |
|
|
# Requested in ci/build-freebsd.sh
|
|
pkg install -y \
|
|
cmake \
|
|
evdev-proto \
|
|
ffmpeg \
|
|
libplacebo \
|
|
libxkbcommon \
|
|
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 \
|
|
pulseaudio \
|
|
rubberband \
|
|
sekrit-twc-zimg \
|
|
uchardet \
|
|
v4l_compat \
|
|
#
|
|
run: |
|
|
./ci/build-freebsd.sh
|