summaryrefslogtreecommitdiffstats
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.github/workflows/build.yml292
1 files changed, 292 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..ddbfd90
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,292 @@
+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"
+ cxx:
+ - "clang++"
+ os:
+ - "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 }}"
+ 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@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: ubuntu-latest # until https://github.com/actions/runner/issues/385
+ timeout-minutes: 30 # avoid any weirdness with the VM
+ steps:
+ - uses: actions/checkout@v3
+ - name: Test in FreeBSD VM
+ uses: cross-platform-actions/action@v0.19.1
+ 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:
+ - clang32
+ - clang64
+ - mingw32
+ - 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@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