GitHub actually uses a bit complicated pattern matching for the keys:
https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows#using-contexts-to-create-cache-keys
Namely if exact hit is not found, the key is used as a prefix which
could cause using 'ffmpeg-cache-2' for 'ffmpeg-cache'. In addition
steps.<id>.outputs.cache-hit is set to false if the match is not exact
but the cache is actually restored from inexact match.
+ use ${{ runner.os }} as part of the cache key (currently not needed
but we may use the same key for different platform caches)
Current MSVS requires explicit target "Rebuild" for some reason.
Explicit target "Build" doesn't work for some reason (perhaps some
error in project file?).
Use code checked out by GitHub Action - previously there was a clone
but we want rather the actual code, which doesn't need to be in master
branch of the main repository.
This also requires a small refactor (chroot in home rather than in
$GITHUB_WORKSPACE)
Do not set gcc-6 as CUDA compiler if not found - this fixes builds with
Ubuntu 20.04 for which the virtual runner doesn't contain gcc-6.
Anyways, CUDA in U20.04 doesn't need the compiler explicitly set,
either.
Currently fixes coverity-scan workflow run 63.
Not all are really needed, currently eg. gitlab.xiph.org is down
preventing the build - SpeexDSP is, however, not primarily taken
from the submodule but from packages.
To ensure source code compatibility with at least GCC 5.
Do not use static libstdc++ - doesn't seem to be needed with old GCC.
Also there is now C++ ABI check (.github/scripts/Linux/check_abi.sh).
This should increase decoding parallelism. When decoding with FFmpeg SW
decoder, it helped for H.264. For HEVC, there was actually a slight
worsening, thus not enabling it there.
Use statically linked libstdc++ in Linux. This may have other advantages by
taking "our" version and not risking a clash with potentially incompatible
system one (provided that we do not use C++ API - DeckLink/AJA does, hopefully
it will be safe)
C++17 causes problems in Ubuntu 16.04 because increased C++ ABI version
(rather problem with GitHub runner compilers that were downloaded from
outside official repos - official clang-8 looked to work well).