Remove fdk-aac-free and the AAC codec from the distribution#17331
Draft
christopherco wants to merge 5 commits into
Draft
Remove fdk-aac-free and the AAC codec from the distribution#17331christopherco wants to merge 5 commits into
christopherco wants to merge 5 commits into
Conversation
c010689 to
5288674
Compare
Upstream freerdp builds AAC audio support against the patent-encumbered Fraunhofer FDK AAC library via an unconditional `BuildRequires: pkgconfig(fdk-aac)` and a hardcoded `-DWITH_FDK_AAC=ON` cmake flag. AZL is dropping fdk-aac-free from the distro because of the FDK-AAC license, which would leave this BR unsatisfiable. Add two overlays: drop the BR with `spec-remove-tag`, and flip the cmake flag to `-DWITH_FDK_AAC=OFF` with `spec-search-replace` in the %build section. The FreeRDP client/server will fall back to its other audio codecs (gsm, lame, opus when enabled, etc.); AAC backhaul is simply unavailable. Verified by re-rendering, building clean against the AZL repos, and smoke-testing in a mock chroot: `sdl-freerdp --version` reports `3.22.0`, neither the freerdp binaries nor `freerdp-libs` link against libfdk-aac (`ldd | grep fdk` is empty), and `rpm -qR freerdp` shows no ffmpeg-fdk requires.
Upstream Fedora firefox carries an unconditional
`BuildRequires: fdk-aac-free-devel` and the Fedora-specific
firefox-mozconfig (Source10) ships
`ac_add_options --with-system-fdk-aac`. Mozilla bug 1667096
(mozilla-1667096.patch, Patch401) wires that mozconfig option into
`pkg_check_modules('MOZ_FDK_AAC', 'fdk-aac',
when='--with-system-fdk-aac')` in toolkit/moz.configure. Mozilla's
pkg_check_modules defaults to `allow_missing=False`, so dropping
just the BR (leaving the mozconfig option on) would cause
`./mach configure` to exit 1 once fdk-aac.pc is gone from the
buildroot.
Two coordinated overlays are therefore required:
1. `file-search-replace` on firefox-mozconfig rewrites
`--with-system-fdk-aac` -> `--without-system-fdk-aac` so the
`when=` gate is false and pkg_check_modules is never
invoked. The fdk-aac C code added by mozilla-1667096.patch
(media/ffvpx/libavcodec/libfdk-aacdec.c, guarded by
CONFIG['MOZ_FDK_AAC']) is then neither compiled nor linked.
2. `spec-remove-tag` drops the now-unnecessary
`fdk-aac-free-devel` BR.
Bump `azl_release` 4 -> 5 per the per-AZL-change convention
documented at the top of firefox.comp.toml.
Not full-build-tested (firefox builds are multi-hour) but the
configure-time failure mode is mechanically prevented by overlay
(1): with `--without-system-fdk-aac`, the gated pkg_check_modules
call is skipped entirely. `Check Rendered Specs` does not exercise
`./mach configure` and so cannot catch this class of failure --
flagged in PR review.
Upstream Fedora gst-plugins-bad-free ships the `fdkaac` plugin (libgstfdkaac.so), which wraps the patent-encumbered Fraunhofer FDK AAC encoder/decoder via `pkgconfig(fdk-aac)`. AZL is dropping fdk-aac-free from the distro because of the FDK-AAC license, which would leave the BR unsatisfiable. Add three overlays modelled on the existing `opus` removal: drop the BR with `spec-remove-tag`, insert `-D fdkaac=disabled` into the %meson invocation with `spec-search-replace`, and strip `libgstfdkaac.so` from %files so the (no-longer-built) plugin doesn't trigger an unpackaged-file failure. Apps that need AAC playback can still use the bundled ffmpeg AAC decoder (lavfi). Verified by re-rendering, building clean against the AZL repos, and smoke-testing in a mock chroot: `rpm -qR` shows no fdk requires, no fdk-named files ship, `gst-inspect-1.0 fdkaac` fails with 'No such element or plugin', and other plugins (e.g. hls) still load.
Upstream Fedora pipewire builds the bluez5 AAC codec (used for
A2DP audio streaming to AAC-capable Bluetooth sinks) against the
patent-encumbered Fraunhofer FDK AAC library via an unconditional
`BuildRequires: pkgconfig(fdk-aac)`. AZL is dropping fdk-aac-free
from the distro because of the FDK-AAC license, which would leave
this BR unsatisfiable.
Add two overlays: drop the BR with `spec-remove-tag`, and pass
`-D bluez5-codec-aac=disabled` to the %meson invocation by
extending the existing `-D volume=disabled -D
bluez5-codec-aptx=disabled` line via `spec-search-replace`. The
other bluez5 codecs (SBC, lc3, ldac on non-s390x) remain enabled
for Bluetooth audio streaming -- only AAC sinks lose support.
Verified by re-rendering: the BR is gone and the new meson
option is in the cmdline. A full build smoke-test could not be
run today because pipewire on 4.0 already fails to build against
the current AZL repos with an unrelated missing `opus` runtime
dependency ("meson.build:352:11: ERROR: Dependency 'opus' not
found"). That is a pre-existing issue tracked separately; the
baseline (without this change) fails identically.
fdk-aac-free packages the Third-Party Modified Version of the
Fraunhofer FDK AAC Codec Library for Android, used by gstreamer,
pipewire, freerdp, and (nominally) firefox for AAC audio en/decode.
AZL is dropping it from the distro because of the FDK-AAC license:
even the "-free" Fedora variant only strips the SBR/PS/AAC-ELD
encoder parts, the remaining decoder and core encoder code is still
covered by the patent-encumbered FDK-AAC license.
The four AZL consumers were detached in the preceding commits in
this series:
- fix(freerdp): drop fdk-aac codec dep
- fix(firefox): drop fdk-aac-free-devel BR
- fix(gstreamer1-plugins-bad-free): drop fdkaac plugin
- fix(pipewire): drop AAC bluetooth codec
gnome-remote-desktop's `BuildRequires: pkgconfig(fdk-aac)` is
inside `%if %{with rdp}` and AZL builds with `build.without =
["rdp"]`, so it is already inactive -- no fix needed.
Remove the component definition (base/comps/components.toml), the
publish-channel entry (components-publish-channels.toml), the lock
file (locks/fdk-aac-free.lock), and the rendered spec
(specs/f/fdk-aac-free/). Verified by `azldev comp list` (returns
'component not found') and by grepping the tree for any remaining
`fdk-aac`/`libfdk-aac` references in images/kiwi/comps.xml --
none remain. The only leftover references in base/comps/ are
explanatory comments in the consumer overlays added by the
preceding commits.
5288674 to
943d276
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Remove
fdk-aac-freefrom AZL and detach its four in-tree consumers.Changes
a44d853270freerdp-DWITH_FDK_AAC=OFF57c654347cfirefoxfdk-aac-free-develBR + flipfirefox-mozconfigto--without-system-fdk-aacMOZ_FDK_AAC(ffvpx still ships)95c7665dd6gstreamer1-plugins-bad-free-D fdkaac=disabled+ removelibgstfdkaac.sofrom%filesfdkaacelement (ffmpeg AAC still works)c1e805dbcepipewire-D bluez5-codec-aac=disabled943d2767c8fdk-aac-freegnome-remote-desktopalso referencespkgconfig(fdk-aac), but inside%if %{with rdp}; AZL builds withbuild.without = ["rdp"], so no change needed there.azl-pkgxalso confirms these package dependencies are the ones affected by fdk-aac-free's removal.Verification
freerdpsdl-freerdp --version→ 3.22.0; no fdk in ldd/requiresfirefoxpkg_check_modules('MOZ_FDK_AAC', 'fdk-aac', when='--with-system-fdk-aac')is unreachable once mozconfig flipsgstreamer1-plugins-bad-freegst-inspect-1.0 fdkaac→ not found; control plugin still loads; no fdk requirespipewirepipewire --version→libpipewire 1.4.10;lddandpipewire-libsrequires show no fdk/aacfdk-aac-freegrep -rn 'fdk-aac|libfdk-aac'shows only the explanatory overlay commentsFixes: AB#19705