Ubuntu 24.04 has mingw-w64 11.0.1, whose 32 bit import library lacks
CoIncrementMTAUsage, and 26.04 pairs mingw-w64 13.0.0 with GCC 13.2,
which checks the gnu_printf prototypes of those headers as ms_printf
(fixed in GCC 14). 26.10 has GCC 16 with mingw-w64 13.0.0.
the runners aren't named like the OS version anymore but instead use
the xcode + version.
rename the arch to taget-os and make it represent the whole target OS
name, with version and architecture. use this as artifact name instead.
the macOS 14 runners were officially deprecated with the release of
macOS 27. a brownout phase will start on the 5th October making the
runner on several days for many hours throughout October unusable, till
it is finally removed on the 2nd November.
remove it beforehand so our CI doesn't fail unnecessarily.
Run the build workflow for v0.* tags and let the publish job upload the
artifacts to the release of that tag, with the run id stripped from the
asset names to match the previous hand-made uploads. The release is
created as a draft when it does not exist yet, so the notes can be
filled in before publishing.
Attach the full x86_64 and aarch64 builds instead of the shared x86_64
mingw-w64 build, which they supersede. The i686 build stays, it exists
only as the shared build. Add a libmpv section with the GPL and LGPL
packages, label every entry by architecture and flavour.
Build mpv and libmpv inside the FFmpeg-Builds container images, which
ship a mingw-w64 cross toolchain and every FFmpeg dependency as a static
library. FFmpeg itself, LuaJIT, subrandr and the C++/WinRT projection
are built on top. One day we might fork the FFmpeg-Builds and do
mpv-Builds, but the overhead of maintaining that is bigger than current
cost of building few deps on top.
x86_64 and aarch64 are built in the GPL and the LGPL variant. The GPL
variant publishes mpv.exe, both variants publish a libmpv package with
the DLL, its import library and the headers.
rav1e and librsvg are Rust libraries with their own copy of the Rust
standard library, which collides with subrandr's at link time, so both
are left out of FFmpeg for now.
The action is in maintenance-only mode, its last release is from
February 2024, and it wraps actions/cache@v4, which still targets Node
20 and warns on every run. It only installs pre-commit, caches its
environments and runs it, so do that in the job directly.
It is published as immutable releases without a floating major tag,
which is why Dependabot never proposed it, so pin the exact tag and let
Dependabot follow it from here.
This the runner images soon will remove Node 20, so this is needed
change.
lunarmodules/luacheck is a Docker action, which cannot run on
ubuntu-slim where this job is about to move. The luacheck release ships
a standalone Linux binary that only needs libc, so download the same
1.2.0 the action's image contains and run it directly.
norio-nomura/action-swiftlint has not been updated since November 2020
and rebuilds a Docker image on every run from a base that is at
SwiftLint 0.63.0. Use the image SwiftLint publishes itself as a
container job instead, pinned to the current release.
there is no llvm@22 and tesseract bottle for macOS 14 anymore after this
commit. this causes our runner to fail, since homebrew won't
automatically build from source when no bottle is available.
pin the homebrew version to the last known working version.
there is no mujs bottle for intel macs anymore after this version. this
causes our action to fail, since homebrew won't automatically build from
source when no bottle is available.
pin the homebrew version to the last known working version.
the arch=test builds only checks if our code can be successfully
compiled to the lowest macOS target we support, so we can catch wrongs
guards usage of newer functionality, etc before any merge. the builds
are not supposed to be completely runnable, since they link to libs
not build for the lowest target.
running tests on those builds is a waste of resources. warnings as error
will be reintroduced in a follow up commit.
The run input is deprecated. Split the monolithic scripts into the same
step layout as the other jobs. Sync the sources once at VM start and
skip the per-step file synchronization, since everything runs inside the
VM anyway.
This will make reading logs easier.
setup-msys2 saves the pacman package cache under a key ending in a hash
of its contents. So with each update it saves more caches, what's more
important it saves it per each PR ref. We don't want that. Keep only the
msys2 cache on main branch and only the latest one per each
configuration. If PR saves new one, it will be dropped, we prefer master
branch case that can be used by all PR, rather then per PR cache of
this. The few packages that will be refetched are ok.
This change is an atempt to keep our cache under 10GB limit, to avoid
evicting more important ccache caches.
The nested jq invocations were hard to extend and left no trace of what
they decided. Delete by id rather than by key, since a key is only
unique per ref, and log each deletion.
No change in which caches are selected.
When FFmpeg is built with whisper.cpp, the libmpv-lifetime test fails
with `GGML_ASSERT(prev != ggml_uncaught_exception)`. Avoid this by
disabling the problematic backtrace code.
per actions/partner-runner-images#95, manually install and repair winget module in windows-11-arm runner to ensure it is available for following dependency step