diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8c5ff67993f7d..c2b729d66805f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -40,8 +40,6 @@ jobs:
fail-fast: false
matrix:
include:
- - target: i686-w64-mingw32
- wine: wine32
- target: x86_64-w64-mingw32
wine: wine64
steps:
@@ -114,457 +112,3 @@ jobs:
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-
-
- # https://github.com/mesonbuild/meson/pull/11715
- - name: Install dependencies
- run: |
- git clone https://github.com/kasper93/meson --depth 1 -b 8981
- python -m pip install build wheel
- python -m build --wheel --no-isolation meson
- python -m pip install (Get-Item ./meson/dist/meson-*-py3-none-any.whl).FullName
- 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 ';'
- 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 mpv:
-
- - 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-14"
- - "macos-15"
- include:
- - 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: 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 pkg-config 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: 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
-
- 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 \
- 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
diff --git a/.github/workflows/comment.yml b/.github/workflows/comment.yml
index 014df58c81fc0..eee8e20aeec32 100644
--- a/.github/workflows/comment.yml
+++ b/.github/workflows/comment.yml
@@ -6,40 +6,30 @@ on:
types: [completed]
jobs:
- pr_comment:
- if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' }}
+ dump_contexts_to_log:
runs-on: ubuntu-latest
steps:
- - env:
- GH_REPO: ${{ github.repository }}
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- pr=$(gh pr list --state open --json headRefOid,number \
- --jq '.[] | select(.headRefOid == "${{ github.event.workflow_run.head_sha }}") | .number')
- if [ -z "$pr" ]; then
- echo "No matching pull request found"
- exit 1
- fi
-
- artifacts=$(gh api repos/{owner}/{repo}/actions/runs/${{ github.event.workflow_run.id }}/artifacts --jq '.artifacts')
- if [ "$(echo "$artifacts" | jq 'length')" -eq 0 ]; then
- echo "No artifacts found"
- exit 0
- fi
-
- body=$(echo "$artifacts" | jq -r '
- def link: "https://nightly.link/${{ github.repository }}/actions/artifacts/\(.id).zip";
- def entry: "* [\(.name)](\(link))";
- "Download the artifacts for this pull request:\nWindows
\n\n" +
- (sort_by(.name) | map(select(.name | test("w64|msvc")) | entry) | join("\n")) +
- "\n \nmacOS
\n\n" +
- (sort_by(.name) | map(select(.name | test("macos")) | entry) | join("\n")) +
- "\n "
- ')
-
- comment_id=$(gh issue view $pr --json comments \
- --jq '.comments[] | select(.author.login == "github-actions") | .id')
- if [ -n "$comment_id" ]; then
- edit=--edit-last
- fi
- gh pr comment $pr --body "$body" $edit
+ - name: Dump GitHub context
+ env:
+ GITHUB_CONTEXT: ${{ toJson(github) }}
+ run: echo "$GITHUB_CONTEXT"
+ - name: Dump job context
+ env:
+ JOB_CONTEXT: ${{ toJson(job) }}
+ run: echo "$JOB_CONTEXT"
+ - name: Dump steps context
+ env:
+ STEPS_CONTEXT: ${{ toJson(steps) }}
+ run: echo "$STEPS_CONTEXT"
+ - name: Dump runner context
+ env:
+ RUNNER_CONTEXT: ${{ toJson(runner) }}
+ run: echo "$RUNNER_CONTEXT"
+ - name: Dump strategy context
+ env:
+ STRATEGY_CONTEXT: ${{ toJson(strategy) }}
+ run: echo "$STRATEGY_CONTEXT"
+ - name: Dump matrix context
+ env:
+ MATRIX_CONTEXT: ${{ toJson(matrix) }}
+ run: echo "$MATRIX_CONTEXT"
diff --git a/player/main.c b/player/main.c
index 8ed0f4d94df34..8eddcfd252a83 100644
--- a/player/main.c
+++ b/player/main.c
@@ -344,7 +344,7 @@ int mp_initialize(struct MPContext *mpctx, char **options)
mp_msg_set_early_logging(mpctx->global, true);
mp_update_logging(mpctx, true);
- if (options) {
+ if (options ) {
MP_VERBOSE(mpctx, "Command line options:");
for (int i = 0; options[i]; i++)
MP_VERBOSE(mpctx, " '%s'", options[i]);