Remove webrtc-audio-processing from the distro#17329
Merged
Merged
Conversation
reubeno
approved these changes
May 17, 2026
db02c15 to
01217ae
Compare
…ckend
Drop the BuildRequires on pkgconfig(webrtc-audio-processing-1) (and
the legacy unversioned spelling in the alternate branch) and disable
the matching `echo-cancel-webrtc` meson feature. A follow-up commit
drops the webrtc-audio-processing component from the distro because
the library is significantly behind upstream and carries
downstream-only patches just to keep building.
Two cooperating sets of overlays are needed:
1. spec-remove-tag overlays strip the BR lines. They are gated only
by an unconditional `%if 0%{?fedora} >= 40 || ...` block (no
upstream %bcond), so build.without can't reach them and
spec-remove-tag is the only path.
2. A spec-search-replace overlay injects `-D echo-cancel-webrtc=disabled`
into the %meson call. Upstream defaults the option to `auto`, but
Fedora's %meson macro always passes `--auto-features=enabled`,
which flips every auto-default feature to mandatory and turns the
missing webrtc-audio-processing into a hard build failure. The
explicit `disabled` short-circuits the dependency lookup so the
build completes without the WebRTC AEC backend.
libpipewire-module-echo-cancel.so itself still ships -- only the
WebRTC backend plugin (libspa-aec-webrtc.so) is gone. Echo cancel
modules can still load the null and speex backends.
Bumps azl_release from 3 to 4 to reflect the spec-content change.
Verified by rebuilding pipewire in mock:
- SRPM no longer BuildRequires webrtc-audio-processing[-1]
- %meson invocation now includes -D echo-cancel-webrtc=disabled
- libpipewire-module-echo-cancel.so still packaged
- libspa-aec-webrtc.so absent from pipewire-libs (intended)
- libspa-aec-null.so still present (fallback backend)
Disable the upstream `webrtc` bcond by adding "webrtc" to
build.without. A follow-up commit drops the webrtc-audio-processing
component from the distro because the library is significantly behind
upstream and carries downstream-only patches just to keep building.
`webrtc1` cascades off automatically: its bcond expression is
`%[ %{with webrtc} && ! (0%{?fedora} >= 44 || 0%{?rhel} >= 11) ]`,
which evaluates to off once `with_webrtc` is unset. This drops:
- BuildRequires: pkgconfig(webrtc-audio-coding-1) (gated on webrtc1)
- BuildRequires: pkgconfig(webrtc-audio-processing-1) (gated on webrtc1)
and removes the following plugins from the *main*
gstreamer1-plugins-bad-free RPM (no in-tree replacement; pipelines
that reference these elements will fail with "no such element"):
- libgstwebrtcdsp.so WebRTC echo-cancel / AGC / noise-suppression
element (%files gated on `with webrtc`)
- libgstisac.so ISAC voice codec
(%files gated on `with webrtc1`)
The unrelated GStreamer WebRTC API plugins -- libgstwebrtc-1.0.so.0
(libs subpackage) and libgstwebrtc.so + libgstwebrtcnice-1.0.so.0
(already gated on `with extras`, already off in AZL) -- are NOT
affected; they come from a different source tree and do not depend
on webrtc-audio-processing.
Verified by rebuilding gstreamer1-plugins-bad-free and confirming
the SRPM no longer BRs webrtc-audio-processing[-1], and the main
RPM no longer ships libgstwebrtcdsp.so or libgstisac.so. The libs
subpackage still ships libgstwebrtc-1.0.so.0.
Mirror the pattern already used for pipewire (and other AZL-owned
components): introduce an `azl_release` macro that is added to the
upstream Release number, so we can bump the Release tag for AZL-only
changes without having to wait for an upstream rebase to renumber.
The replacement keeps the Fedora-style single-number Release schema:
upstream's hardcoded `9` becomes `%[9 + %{azl_release}]`. The regex
matches the current upstream Release verbatim so that if Fedora ever
bumps the baseline (e.g. 9 → 10), it stops matching and forces a
conscious re-evaluation rather than silently double-counting.
Set the initial counter to 4 to retroactively account for the three
prior AZL commits that touch this component and would have justified
a bump if the macro had existed at the time:
1 - 5d461a2 feat: introduce deterministic commit resolution
via Azure Linux lock file
2 - 7c5a4c7 fix(pulseaudio): set manual release calculation
3 - f9e7763 fix(pulseaudio): disable gdm-hooks subpackage
4 - introduce azl_release for pulseaudio
User-visible: the next pulseaudio rebuild bumps Release from 9 to 13
(9 + 4) on this commit, with no spec-content change to the package
contents.
Disable WebRTC-based acoustic echo cancellation in PulseAudio's
module-echo-cancel. A follow-up commit drops the underlying
webrtc-audio-processing component from the distro because the library
is significantly behind upstream and carries downstream-only patches
just to keep building. module-echo-cancel still ships with its speex
and null backends, which cover the same use case.
The overlay %undefine's `with_webrtc` rather than setting it to 0
because the spec also uses `%{?with_webrtc:enabled}%{!?with_webrtc:disabled}`
to compute the meson `-D webrtc-aec=` flag, and that conditional
tests for *definition* (not truthiness). `%global with_webrtc 0`
would leave `with_webrtc` defined and still pass `enabled` to meson,
which then fails to find the missing pkgconfig file. Undefining the
macro makes the BR guard (`%if 0%{?with_webrtc}`), the meson flag,
and the `%files` guard all evaluate to the disabled branch
consistently.
The regex is anchored to a full line (with optional trailing
whitespace) so it survives benign Fedora reformatting and won't
accidentally match e.g. `%global with_webrtc 10` in some future
variant; the inline comment instructs future maintainers to *update*
the regex rather than delete the overlay when it eventually drifts.
Bumps azl_release from 4 to 5 (entry 5 in the changelog) for the
spec-content change.
User-visible impact: `aec_method=webrtc` configurations will no
longer load (module-echo-cancel falls back to speex when no method
is configured; explicit `aec_method=webrtc` will error at module
load with "module not found"). Operators relying on WebRTC AEC
should switch to `aec_method=speex`.
Verified by building pulseaudio in mock and confirming:
- module-echo-cancel.so is still packaged
- libwebrtc-util.so is no longer packaged
- module-echo-cancel.so has no missing library deps
- `pulseaudio --version` runs in the chroot
Remove the webrtc-audio-processing component, which provided a library derived from Google's WebRTC project for acoustic echo cancellation. The package is significantly behind upstream and carries downstream-only patches (e.g. webrtc-audio-processing-1.3-gcc15.patch) just to keep building, with limited utility to AZL. Three consumers were touched in earlier commits in this PR so this removal does not break their builds: - pipewire (BR dropped via spec-remove-tag overlay) - gstreamer1-plugins-bad-free (webrtc bcond disabled via build.without) - pulseaudio (with_webrtc undefined via spec-search-replace overlay) Removes: - base/comps/components.toml entry - base/comps/components-publish-channels.toml entry - locks/webrtc-audio-processing.lock - specs/w/webrtc-audio-processing/
01217ae to
51f69fe
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Removes webrtc-audio-processing from Azure Linux and updates affected multimedia components so they no longer require or build against that library.
Changes:
- Drops the
webrtc-audio-processingcomponent, lock, publish-channel entry, and rendered spec/source files. - Disables WebRTC-related backends/features in PipeWire, PulseAudio, and GStreamer where needed.
- Updates rendered specs, generated macro sidecars, and component locks for the affected packages.
Reviewed changes
Copilot reviewed 16 out of 20 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
base/comps/components.toml |
Removes the component from the distro component list. |
base/comps/components-publish-channels.toml |
Removes the component from publish channels. |
base/comps/gstreamer1-plugins-bad-free/gstreamer1-plugins-bad-free.comp.toml |
Adds webrtc to disabled build conditionals. |
base/comps/pipewire/pipewire.comp.toml |
Drops WebRTC BRs and disables PipeWire WebRTC echo-cancel backend. |
base/comps/pulseaudio/pulseaudio.comp.toml |
Adds AZL release macro handling and disables PulseAudio WebRTC AEC. |
locks/gstreamer1-plugins-bad-free.lock |
Refreshes component input fingerprint. |
locks/pipewire.lock |
Refreshes component input fingerprint. |
locks/pulseaudio.lock |
Refreshes component input fingerprint. |
locks/webrtc-audio-processing.lock |
Removes deleted component lock. |
specs/g/gstreamer1-plugins-bad-free/gstreamer1-plugins-bad-free.azl.macros |
Records _without_webrtc. |
specs/g/gstreamer1-plugins-bad-free/gstreamer1-plugins-bad-free.spec |
Reflects rendered release bump. |
specs/p/pipewire/pipewire.azl.macros |
Bumps AZL release macro. |
specs/p/pipewire/pipewire.spec |
Reflects WebRTC BR removal and meson disable flag. |
specs/p/pulseaudio/pulseaudio.azl.macros |
Adds generated AZL release macro. |
specs/p/pulseaudio/pulseaudio.spec |
Reflects release macro loading and WebRTC disablement. |
specs/w/webrtc-audio-processing/65f002e.patch |
Deletes rendered patch for removed component. |
specs/w/webrtc-audio-processing/arches.patch |
Deletes rendered patch for removed component. |
specs/w/webrtc-audio-processing/sources |
Deletes source hash for removed component. |
specs/w/webrtc-audio-processing/webrtc-audio-processing-1.3-gcc15.patch |
Deletes rendered patch for removed component. |
specs/w/webrtc-audio-processing/webrtc-audio-processing.spec |
Deletes rendered spec for removed component. |
|
|
||
| [components.gstreamer1-plugins-bad-free] | ||
| build.without = ["extras", "dc1394", "onnx", "openh264"] | ||
| build.without = ["extras", "dc1394", "onnx", "openh264", "webrtc"] |
|
|
||
| [components.gstreamer1-plugins-bad-free] | ||
| build.without = ["extras", "dc1394", "onnx", "openh264"] | ||
| build.without = ["extras", "dc1394", "onnx", "openh264", "webrtc"] |
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.
Summary
Removes the
webrtc-audio-processingcomponent from Azure Linux 4.0. Thelibrary is AEC code that is significantly behind upstream and
carries downstream-only patches (e.g.
webrtc-audio-processing-1.3-gcc15.patch)just to keep building, with limited utility to AZL. Three consumers are fixed
in earlier commits so the removal does not break their builds.
Commits (bisectable)
The PR is structured so every commit is independently buildable:
fix(pipewire): drop webrtc-audio-processing BRTwo
spec-remove-tagoverlays drop the BuildRequires from both thefedora >= 40 || rhel >= 10branch (webrtc-audio-processing-1) andthe legacy else branch (
webrtc-audio-processing >= 0.2). pipewire'secho-cancel-webrtcmeson option isautoupstream, solibpipewire-module-echo-cancel.socontinues to ship with itsspeex / null backends; only the WebRTC backend compiles out.
Bumps pipewire
azl_releaseto 4.fix(gstreamer1-plugins-bad-free): disable webrtc bcondAdds
webrtctobuild.without, which surfaces as%_without_webrtc 1in the AZL macros sidecar and disables thegstreamer1-plugins-bad-free-webrtcsubpackage and BR.feat(pulseaudio): introduce azl_release for independent release bumpsMirrors the pattern already used for pipewire: introduces an
azl_releasemacro that is added to the upstream Release number,so we can bump the Release tag for AZL-only changes without waiting
for an upstream rebase to renumber. The regex matches upstream's
current
Release: 9...line verbatim so a future Fedora baselinebump (e.g. 9 → 10) forces a conscious re-evaluation rather than
silently double-counting. Counter starts at 4 to retroactively
account for three prior AZL commits that touched pulseaudio
(deterministic-resolution feat, manual-release-calculation fix,
gdm-hooks subpackage fix) plus this introduction. No spec-content
change to package contents on this commit.
fix(pulseaudio): disable WebRTC AEC backendOverlay
%undefine'swith_webrtc. Important: the upstream specuses both
%if 0%{?with_webrtc}(which tests truthiness) and%{?with_webrtc:enabled}%{!?with_webrtc:disabled}(which testsdefinition) to compute the meson
-D webrtc-aec=flag, so%global with_webrtc 0would inconsistently still passenabledto meson.
%undefinemakes all branches evaluate to the disabledside consistently. Bumps pulseaudio
azl_releaseto 5.chore(webrtc-audio-processing): drop component from distroRemoves
base/comps/components.tomlentry,base/comps/components-publish-channels.tomlentry,locks/webrtc-audio-processing.lock, and the entirespecs/w/webrtc-audio-processing/directory (638 lines deleted).User-visible impact
module-echo-cancel.sostill ships withthe speex and null AEC backends. Configurations using
aec_method=webrtcwill no longer load and should switch toaec_method=speex.-webrtcsubpackage is nolonger produced (provides
libgstwebrtc.so); affects only consumersthat explicitly install that subpackage.
Testing
Each affected component was built and smoke-tested in mock:
libpipewire-module-echo-cancel.sostill packaged, has no missinglibrary deps;
pipewire --versionruns in the chroot._without_webrtc;-webrtcsubpackage no longer produced; other subpackages unchanged.%undefine with_webrtc;module-echo-cancel.sostill packaged,libwebrtc-util.sono longerpackaged, no missing library deps;
pulseaudio --versionruns in thechroot.
worktrees +
azldev comp render -p <comp>+azldev comp update -p <comp>for each affected component produce no diff at every commit.
Overlay durability
For both pipewire and pulseaudio the overlays use anchored regexes that
match upstream verbatim, so a future Fedora rebase that changes the
macro spelling stops the overlay matching and forces a conscious
re-evaluation. Inline comments instruct future maintainers to update
the regex rather than delete the overlay — the constraint is permanent
(webrtc-audio-processing is not shipped in AZL).
Fixes: AB#19727