build(packages): Build the codecs once per architecture and C library
pixelflux's codecs are its pinned releases with its patches, the same
archive whichever distribution links them. A codecs job builds all six
(libx264, x265, libvpx, SVT-AV1, dav1d, and libde265) once for each of
x86_64 and aarch64 and glibc and musl, in the wheels' manylinux and
musllinux images, whose C library is the oldest any package targets
(scripts/ci/build-codecs.sh), and every native package and the AppImage
link those static archives through SELKIES_CODECS. A package build takes
only the libraries that are its distribution's from its distribution, so
the package scripts install no codec package and none of the tools only the
codecs build with, and codecs.sh builds every codec rather than consulting
the distribution. The wheel, built in those same images, builds its own with
codecs.sh.
codecs.sh undefines FINITE_MATH_ONLY, which -ffast-math predefines, so
an archive built against glibc before 2.31 calls the math functions by their
own names and links against any newer glibc.
Verified on x86_64: the glibc and musl codec sets built by
build-codecs.sh; the el9 rpm, bookworm deb, and Alpine apk built against
them and each passed verify-package.sh in a pristine container; the AppImage
built from the same prefix and passed verify-appimage.sh locally and on
CentOS 7; tests/packaging passes. The aarch64 builds run first in CI.