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:\n
Windows\n\n" + - (sort_by(.name) | map(select(.name | test("w64|msvc")) | entry) | join("\n")) + - "\n
\n
macOS\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]);