Skip to content

[TEST] build: test #12118

[TEST] build: test

[TEST] build: test #12118

Workflow file for this run

name: build
on:
push:
branches:
- master
- ci
- 'release/**'
paths-ignore:
- 'DOCS/**'
- 'TOOLS/lua/**'
- '.editorconfig'
- '.github/ISSUE_TEMPLATE/**'
- '.github/PULL_REQUEST_TEMPLATE'
- '.gitignore'
- 'Copyright'
- 'README.md'
- 'RELEASE_NOTES'
pull_request:
branches: [master]
paths-ignore:
- 'DOCS/**'
- 'TOOLS/lua/**'
- '.editorconfig'
- '.github/ISSUE_TEMPLATE/**'
- '.github/PULL_REQUEST_TEMPLATE'
- '.gitignore'
- 'Copyright'
- 'README.md'
- 'RELEASE_NOTES'
jobs:
# mingw:
# runs-on: ubuntu-24.04
# env:
# CCACHE_BASEDIR: ${{ github.workspace }}
# CCACHE_DIR: ${{ github.workspace }}/.ccache
# CCACHE_MAXSIZE: 500M
# strategy:
# fail-fast: false
# matrix:
# include:
# - target: i686-w64-mingw32
# wine: wine32
# - target: x86_64-w64-mingw32
# wine: wine64
# steps:
# - uses: actions/checkout@v4
#
# - name: Get time
# id: get_time
# run: echo "timestamp=`date +%s%N`" >> $GITHUB_OUTPUT
#
# - name: Restore cache
# uses: actions/cache/restore@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 ccache g++-mingw-w64 gcc-multilib meson nasm ninja-build pkgconf ${{ matrix.wine }}
#
# - name: Install Meson Wraps
# run: |
# mkdir subprojects -p
# meson wrap install mujs
#
# - 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 ./mingw_build/meson-logs/meson-log.txt
#
# - name: Functional test
# run: |
# cd artifact && wine ./mpv.com -v --no-config
# env:
# WINEDEBUG: '+loaddll'
#
# - name: Run meson tests
# id: tests
# run: |
# meson test -C mingw_build
#
# - name: Print meson test log
# if: ${{ failure() && steps.tests.outcome == 'failure' }}
# run: |
# cat ./mingw_build/meson-logs/testlog.txt
#
# - uses: actions/upload-artifact@v4
# with:
# name: mpv-${{ matrix.target }}
# path: mpv-git-*.zip
#
# - name: Save Cache
# uses: actions/cache/save@v4
# if: always()
# with:
# path: ${{ env.CCACHE_DIR }}
# key: ${{ matrix.target }}-${{ steps.get_time.outputs.timestamp }}
#
# win32:
# runs-on: windows-latest
# env:
# VS: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise"
# CC: "ccache clang"
# CXX: "ccache clang++"
# CC_LD: "lld"
# CXX_LD: "lld"
# WINDRES: "llvm-rc"
# CCACHE_BASEDIR: ${{ github.workspace }}
# CCACHE_DIR: "${{ github.workspace }}\\.ccache"
# CCACHE_MAXSIZE: 500M
# steps:
# - name: Disable autocrlf
# run: |
# git config --global core.autocrlf false
# git config --global core.eol lf
#
# - uses: actions/checkout@v4
#
# - name: Get time
# id: get_time
# run: |
# "timestamp=$((Get-Date).Ticks)" >> $env:GITHUB_OUTPUT
#
# - name: Restore cache
# uses: actions/cache/restore@v4
# with:
# path: ${{ env.CCACHE_DIR }}
# key: x86_64-windows-msvc-${{ steps.get_time.outputs.timestamp }}
# restore-keys: x86_64-windows-msvc-
#
# - name: Install dependencies
# run: |
# python -m pip install meson
# choco install ccache nasm
#
# - name: Update Meson WrapDB
# run: |
# meson wrap update-db
# # Explicitly download wraps, as nested projects may have older versions of them.
# meson wrap install expat
# meson wrap install harfbuzz
# meson wrap install libpng
# meson wrap install zlib
#
# - name: Build
# id: build
# run: |
# $env:PATH = ($env:PATH -split ';' | Where-Object { $_ -ne 'C:\Program Files\LLVM\bin' -and `
# $_ -ne 'C:\Strawberry\c\bin' }) -join ';'
# $env:PATH += ';C:\Program Files\NASM'
# Import-Module "$env:VS\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
# Enter-VsDevShell -VsInstallPath $env:VS -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64"
# ./ci/build-win32.ps1
#
# - name: Print build log
# if: ${{ failure() && steps.build.outcome == 'failure' }}
# run: |
# cat ./build/meson-logs/meson-log.txt
#
# - name: Run meson tests
# id: tests
# run: |
# $env:PATH = ($env:PATH -split ';' | Where-Object { $_ -ne 'C:\Program Files\LLVM\bin' -and `
# $_ -ne 'C:\Strawberry\c\bin' }) -join ';'
# $env:PATH += ';C:\Program Files\NASM'
# Import-Module "$env:VS\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
# Enter-VsDevShell -VsInstallPath $env:VS -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64"
# meson test -C build
#
# - name: Print meson test log
# if: ${{ failure() && steps.tests.outcome == 'failure' }}
# run: |
# cat ./build/meson-logs/testlog.txt
#
# - uses: actions/upload-artifact@v4
# with:
# name: mpv-x86_64-windows-msvc
# path: |
# build/mpv.???
# build/vulkan-*.dll
# !build/mpv.lib
#
# - name: Save Cache
# uses: actions/cache/save@v4
# if: always()
# with:
# path: ${{ env.CCACHE_DIR }}
# key: x86_64-windows-msvc-${{ steps.get_time.outputs.timestamp }}
macos:
runs-on: ${{ matrix.os }}
strategy:
matrix:
cc:
- "clang"
cxx:
- "clang++"
os:
- "macos-13"
# - "macos-13"
# - "macos-14"
# - "macos-15"
include:
- os: "macos-13"
arch: "intel"
xcode: "Xcode_14.2"
# - os: "macos-13"
# arch: "intel"
# - os: "macos-14"
# arch: "arm"
# xcode: "Xcode_15.2"
# - os: "macos-15"
# arch: "arm"
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: Unlink pkg-config if the CI runner happens to have it already installed
run: |
find "$(brew config | grep HOMEBREW_PREFIX | cut -f 2- -d ' ')/bin" -lname '*/pkg-config@0*/*' -print -exec brew unlink pkg-config@0.29.2 \; -quit
- name: Change Xcode version
if: ${{ matrix.xcode != '' }}
run: |
sudo xcode-select -s /Applications/${{ matrix.xcode }}.app
- name: Install dependencies
run: |
brew update
brew install -q autoconf automake pkgconf libtool python freetype fribidi little-cms2 \
luajit libass ffmpeg meson uchardet mujs libplacebo molten-vk vulkan-loader vulkan-headers
- name: Build with meson
id: build
run: |
./ci/build-macos.sh
env:
CC: "${{ matrix.cc }}"
CXX: "${{ matrix.cxx }}"
TRAVIS_OS_NAME: "${{ matrix.os }}"
- name: Create App Bundle
run: |
meson compile -C build macos-bundle
tar -czvf mpv.tar.gz -C build mpv.app
- 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
- uses: actions/upload-artifact@v4
with:
name: mpv-${{ matrix.os }}-${{ matrix.arch }}
path: mpv.tar.gz
# linux:
# runs-on: ubuntu-latest
# container:
# image: "registry.opensuse.org/home/mia/images/images/mpv-ci:stable-deps"
# env:
# CC: "${{ matrix.config.cc }}"
# CXX: "${{ matrix.config.cxx }}"
# ASAN_OPTIONS: "halt_on_error=1:abort_on_error=1:print_summary=1:detect_leaks=0"
# strategy:
# matrix:
# config:
# - {
# cc: "gcc",
# cxx: "g++",
# }
# - {
# cc: "clang",
# cxx: "clang++",
# }
# steps:
# - uses: actions/checkout@v4
#
# - 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
#
# linux-fuzz:
# runs-on: ubuntu-latest
# container:
# image: "registry.opensuse.org/home/mia/images/images/mpv-ci:stable-deps"
# env:
# CC: "clang"
# CXX: "clang++"
# steps:
# - uses: actions/checkout@v4
#
# - name: Build with meson
# id: build
# run: |
# meson setup build \
# --werror \
# -Dc_args="-Wno-error=deprecated -Wno-error=deprecated-declarations" \
# -Dfuzzers=true -Dlibmpv=true -Dcplayer=false
# meson compile -C build fuzzers
#
# - name: Print meson log
# if: ${{ failure() && steps.build.outcome == 'failure' }}
# run: |
# cat ./build/meson-logs/meson-log.txt
#
# linux-ffmpeg-6-1:
# runs-on: ubuntu-latest
# container:
# # We want to test ffmpeg 6.1.1 which alpine 3.19 has exactly.
# # Furthermore, this is a very minimal build of mpv without commonly
# # used features to test build compatibility. Musl is a nice bonus as well
# image: alpine:3.19
# steps:
# - uses: actions/checkout@v4
# - name: Install dependencies
# run: |
# apk update
# apk add \
# binutils \
# ffmpeg-dev \
# gcc \
# git \
# g++ \
# libass-dev \
# lua5.2-dev \
# pulseaudio-dev \
# libx11-dev \
# libxfixes-dev \
# libxkbcommon-dev \
# libxrandr-dev \
# libxpresent-dev \
# libxscrnsaver-dev \
# meson \
# musl-dev \
# samurai
#
# - name: Build with meson
# id: build
# run: |
# ./ci/build-linux-old.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
#
# openbsd:
# 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 OpenBSD VM
# uses: cross-platform-actions/action@v0.25.0
# with:
# operating_system: openbsd
# version: '7.5'
# run: |
# sudo pkg_add -U \
# cmake \
# ffmpeg \
# git \
# libarchive \
# libbluray \
# libcaca \
# libcdio-paranoia \
# libdvdnav \
# libiconv \
# libplacebo \
# libv4l \
# libxkbcommon \
# luajit \
# meson \
# openal \
# pkgconf \
# pulseaudio \
# python3 \
# rubberband \
# sdl2 \
# shaderc \
# spirv-cross \
# spirv-headers \
# uchardet \
# vulkan-loader \
# vulkan-headers \
# zimg
# ./ci/build-openbsd.sh
# meson test -C build
#
# 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/action@v0.25.0
# with:
# operating_system: freebsd
# version: '14.1'
# run: |
# sudo pkg update
# sudo pkg install -y \
# alsa-lib \
# cmake \
# evdev-proto \
# ffmpeg \
# git \
# iconv \
# jackit \
# libarchive \
# libbluray \
# libcaca \
# libcdio-paranoia \
# libdvdnav \
# libdisplay-info \
# 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
# - 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@v4
# - uses: msys2/setup-msys2@v2
# with:
# msystem: ${{ matrix.sys }}
# update: true
# install: git
# pacboy: >-
# ca-certificates:p
# cc: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
# shaderc:p
# spirv-cross:p
# uchardet:p
# vapoursynth:p
# vulkan-devel:p
#
# - name: Install dependencies
# if: ${{ matrix.sys != 'mingw32' }}
# run: |
# pacboy --noconfirm -S {angleproject,cppwinrt,rst2pdf,rubberband}:p
#
# - name: Build with meson
# id: build
# run: |
# ./ci/build-msys2.sh meson
# env:
# SYS: ${{ matrix.sys }}
#
# - 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