Skip to content

Remove fdk-aac-free and the AAC codec from the distribution#17331

Draft
christopherco wants to merge 5 commits into
4.0from
chrco/remove-fdk-aac-free
Draft

Remove fdk-aac-free and the AAC codec from the distribution#17331
christopherco wants to merge 5 commits into
4.0from
chrco/remove-fdk-aac-free

Conversation

@christopherco
Copy link
Copy Markdown
Collaborator

@christopherco christopherco commented May 17, 2026

Overview

Remove fdk-aac-free from AZL and detach its four in-tree consumers.

Changes

# Commit Component Mechanism Functional loss
1 a44d853270 freerdp drop BR + -DWITH_FDK_AAC=OFF AAC RDP audio (gsm/opus still work)
2 57c654347c firefox drop fdk-aac-free-devel BR + flip firefox-mozconfig to --without-system-fdk-aac MOZ_FDK_AAC (ffvpx still ships)
3 95c7665dd6 gstreamer1-plugins-bad-free drop BR + -D fdkaac=disabled + remove libgstfdkaac.so from %files fdkaac element (ffmpeg AAC still works)
4 c1e805dbce pipewire drop BR + inject -D bluez5-codec-aac=disabled A2DP-AAC Bluetooth (SBC/lc3/ldac still work)
5 943d2767c8 fdk-aac-free delete component (toml + lock + rendered spec)

gnome-remote-desktop also references pkgconfig(fdk-aac), but inside %if %{with rdp}; AZL builds with build.without = ["rdp"], so no change needed there.

azl-pkgx also confirms these package dependencies are the ones affected by fdk-aac-free's removal.

Verification

Component Built Smoke-test
freerdp sdl-freerdp --version → 3.22.0; no fdk in ldd/requires
firefox Skipped (multi-hour build) Mechanical: pkg_check_modules('MOZ_FDK_AAC', 'fdk-aac', when='--with-system-fdk-aac') is unreachable once mozconfig flips
gstreamer1-plugins-bad-free gst-inspect-1.0 fdkaac → not found; control plugin still loads; no fdk requires
pipewire pipewire --versionlibpipewire 1.4.10; ldd and pipewire-libs requires show no fdk/aac
fdk-aac-free n/a (deletion) grep -rn 'fdk-aac|libfdk-aac' shows only the explanatory overlay comments

Fixes: AB#19705

@christopherco christopherco force-pushed the chrco/remove-fdk-aac-free branch from c010689 to 5288674 Compare May 18, 2026 04:48
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.
@christopherco christopherco force-pushed the chrco/remove-fdk-aac-free branch from 5288674 to 943d276 Compare May 18, 2026 06:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant