Homebrew finally pulled the plug on lua 5.1*, and it is no more. So we
have to change to a different lua package and the only other choice is
luajit (no 5.2 in homebrew). We used to use luajit for the ci, but
649556b2b6 switched it to lua 5.1. As
explained there, luajit 2.0 was horribly bugged and not usuable for mpv
and the build had to do dumb hacks to work around it. I expected 5.1 to
last a bit longer than a couple of years, but luckily it seems like
luajit in homebrew now pulls a luajit 2.1 version (some rolling release
thing or however upstream works). The details don't really matter for
us since 2.1 does not have all the awful issues that 2.0 used to have.
So just switch to luajit again.
*: https://github.com/Homebrew/homebrew-core/commit/57d73df3ba924c870f4b6d36080e7cb37275367e
301 lines
7.5 KiB
YAML
301 lines
7.5 KiB
YAML
name: build
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- ci
|
|
- 'release/**'
|
|
paths-ignore:
|
|
- 'DOCS/**'
|
|
- 'TOOLS/lua/**'
|
|
- '.editorconfig'
|
|
- '.gitignore'
|
|
- 'Copyright'
|
|
- 'README.md'
|
|
- 'RELEASE_NOTES'
|
|
pull_request:
|
|
branches: [master]
|
|
paths-ignore:
|
|
- 'DOCS/**'
|
|
- 'TOOLS/lua/**'
|
|
- '.editorconfig'
|
|
- '.gitignore'
|
|
- 'Copyright'
|
|
- 'README.md'
|
|
- 'RELEASE_NOTES'
|
|
|
|
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@v4
|
|
|
|
- name: Get time
|
|
id: get_time
|
|
run: echo "timestamp=`date +%s%N`" >> $GITHUB_OUTPUT
|
|
|
|
- uses: actions/cache@v4
|
|
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"
|
|
cxx:
|
|
- "clang++"
|
|
os:
|
|
- "macos-12"
|
|
- "macos-13"
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- 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 luajit libass ffmpeg meson libplacebo
|
|
|
|
- name: Build with meson
|
|
id: build
|
|
run: |
|
|
./ci/build-macos.sh
|
|
env:
|
|
CC: "${{ matrix.cc }}"
|
|
CXX: "${{ matrix.cxx }}"
|
|
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.config.cc }}"
|
|
CXX: "${{ matrix.config.cxx }}"
|
|
strategy:
|
|
matrix:
|
|
config:
|
|
- {
|
|
cc: "gcc",
|
|
cxx: "g++",
|
|
}
|
|
- {
|
|
cc: "clang",
|
|
cxx: "clang++",
|
|
}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- 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: ubuntu-latest # until https://github.com/actions/runner/issues/385
|
|
timeout-minutes: 30 # avoid any weirdness with the VM
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Test in FreeBSD VM
|
|
uses: cross-platform-actions/[email protected]
|
|
with:
|
|
operating_system: freebsd
|
|
version: '13.2'
|
|
run: |
|
|
sudo pkg update
|
|
sudo pkg install -y \
|
|
alsa-lib \
|
|
cmake \
|
|
evdev-proto \
|
|
ffmpeg \
|
|
git \
|
|
iconv \
|
|
jackit \
|
|
libarchive \
|
|
libbluray \
|
|
libcaca \
|
|
libcdio-paranoia \
|
|
libdvdnav \
|
|
libplacebo \
|
|
libXinerama \
|
|
libxkbcommon \
|
|
libxpresent \
|
|
libXv \
|
|
luajit \
|
|
meson \
|
|
mujs \
|
|
openal-soft \
|
|
pipewire \
|
|
pkgconf \
|
|
pulseaudio \
|
|
python3 \
|
|
rubberband \
|
|
sekrit-twc-zimg \
|
|
sdl2 \
|
|
sndio \
|
|
uchardet \
|
|
v4l_compat \
|
|
vulkan-headers \
|
|
wayland-protocols
|
|
./ci/build-freebsd.sh
|
|
meson test -C build
|
|
|
|
msys2:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
sys:
|
|
- clang64
|
|
- mingw64
|
|
- ucrt64
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- name: Disable autocrlf
|
|
shell: pwsh
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
git config --global core.eol lf
|
|
- uses: actions/checkout@v4
|
|
- 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
|