Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion base/comps/components-publish-channels.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2519,7 +2519,6 @@ components = [
"watchdog",
"wayland",
"web-assets",
"webrtc-audio-processing",
"weldr-client",
"wget2",
"which",
Expand Down
1 change: 0 additions & 1 deletion base/comps/components.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6925,7 +6925,6 @@ includes = ["**/*.comp.toml", "component-check-disablement.toml", "component-min
[components.wayland-protocols]
[components.web-assets]
[components.webkitgtk]
[components.webrtc-audio-processing]
[components.websocketpp]
[components.weldr-client]
[components.wget1]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,25 @@
# extras, so we must disable them too to avoid "unpackaged file" failures.
# AZL does not ship openh264. Set openh264 bcond off to prevent building
# gstreamer1-plugin-openh264 subpackage.
#
# AZL does not ship webrtc-audio-processing (Google-derived AEC library,
# significantly behind upstream, downstream-maintenance burden — see PR
# #17329). Disabling the `webrtc` bcond drops BuildRequires on
# pkgconfig(webrtc-audio-coding-1) and pkgconfig(webrtc-audio-processing-1).
# `webrtc1` cascades off automatically because its bcond expression chains
# on `%{with webrtc}`. This also removes two plugins from the main
# gstreamer1-plugins-bad-free RPM that have no in-tree replacement:
# - libgstwebrtcdsp.so (WebRTC echo-cancel / AGC / noise-suppression
# GStreamer element; %files gated on `with webrtc`)
# - libgstisac.so (ISAC voice codec; %files gated on `with webrtc1`)
# Pipelines that reference `webrtcdsp` or `isac` will fail with
# "no such element" — there is no fallback. The unrelated GStreamer
# WebRTC API plugins (libgstwebrtc-1.0.so, libgstwebrtcnice-1.0.so,
# libgstwebrtc.so) are NOT affected; they come from a different source
# tree and do not depend on webrtc-audio-processing.

[components.gstreamer1-plugins-bad-free]
build.without = ["extras", "dc1394", "onnx", "openh264"]
build.without = ["extras", "dc1394", "onnx", "openh264", "webrtc"]

# AZL does not ship opus — disable the opus parse plugin and remove its BR.

Expand Down
48 changes: 45 additions & 3 deletions base/comps/pipewire/pipewire.comp.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ release = { calculation = "manual" }
# 1 - 5d461a2449 feat: introduce deterministic commit resolution via Azure Linux lock file
# 2 - introduce azl_release for pipewire
# 3 - disable opus codec support
azl_release = "3"
# 4 - drop webrtc-audio-processing BR
azl_release = "4"

[[components.pipewire.overlays]]
description = "Add azl_release to upstream %{baserelease} so we can bump release independently of upstream while keeping a single-number Fedora-style Release schema"
Expand All @@ -19,9 +20,50 @@ regex = '^Release:\s+%\{baserelease\}%\{\?snapdate:\.%\{snapdate\}git%\{shortcom
replacement = 'Release: %[%{baserelease} + %{azl_release}]%{?snapdate:.%{snapdate}git%{shortcommit}}%{?dist}'

[[components.pipewire.overlays]]
description = "Disable opus codec support — opus is not shipped in AZL"
description = """
Force-disable meson features whose dependencies are not shipped in AZL.
Required because Fedora's %meson macro always passes --auto-features=enabled,
which flips every auto-default feature to mandatory and would otherwise turn
these missing deps into hard build failures:
- opus / bluez5-codec-opus: opus codec library not shipped in AZL
- echo-cancel-webrtc: webrtc-audio-processing not shipped in AZL
(see the component removal and BR-drop overlays below)
The modules themselves still build; only the codec/backend implementations
that need the unavailable libraries are skipped.
"""
type = "spec-search-replace"
section = "%build"
regex = '%meson \\'
replacement = '''%meson \
-D opus=disabled -D bluez5-codec-opus=disabled \'''
-D opus=disabled -D bluez5-codec-opus=disabled \
-D echo-cancel-webrtc=disabled \'''

# Drop the webrtc-audio-processing BuildRequires lines. The library is not
# shipped in AZL (Google-derived AEC code that is significantly behind upstream
# and carries downstream-only patches just to keep building); see the matching
# component removal in this PR.
#
# The BR is gated only by an unconditional `%if 0%{?fedora} >= 40 || ...`
# block — there is no upstream %bcond, so `build.without` cannot reach it and
# spec-remove-tag is the only path. The matching -D echo-cancel-webrtc=disabled
# meson flag is injected by the combined opus/echo-cancel-webrtc overlay above
# (required because Fedora's %meson uses --auto-features=enabled).
#
# libpipewire-module-echo-cancel.so still ships (with the speex / null
# backends); only the WebRTC backend (libspa-aec-webrtc.so) is dropped.
#
# If a spec-remove-tag eventually stops matching after a Fedora rebase,
# update the value to the new BR spelling — do NOT remove the overlay; the
# constraint is permanent (webrtc-audio-processing is not shipped in AZL).

[[components.pipewire.overlays]]
description = "Drop webrtc-audio-processing-1 BR (fedora>=40 / rhel>=10 branch); library not shipped in AZL"
type = "spec-remove-tag"
tag = "BuildRequires"
value = "pkgconfig(webrtc-audio-processing-1)"

[[components.pipewire.overlays]]
description = "Drop legacy webrtc-audio-processing BR (else branch, EL<10 / F<40); library not shipped in AZL"
type = "spec-remove-tag"
tag = "BuildRequires"
value = "pkgconfig(webrtc-audio-processing) >= 0.2"
53 changes: 52 additions & 1 deletion base/comps/pulseaudio/pulseaudio.comp.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
[components.pulseaudio]
# Release: 9%{?snap:.%{snap}git%{shortcommit}}%{?dist}
# Release: %[9 + %{azl_release}]%{?snap:.%{snap}git%{shortcommit}}%{?dist}
release = { calculation = "manual" }

[components.pulseaudio.build.defines]
# AZL-only release counter. Added to upstream's hardcoded Release number (9)
# so the final Release tag is a single number (Fedora-style schema) that
# bumps independently of upstream. Increment when shipping new AZL-only
# changes on top of the pinned upstream commit.
# 1 - 5d461a2449 feat: introduce deterministic commit resolution via Azure Linux lock file
# 2 - 7c5a4c7e86 fix(pulseaudio): set manual release calculation
# 3 - f9e776358e fix(pulseaudio): disable gdm-hooks subpackage
# 4 - introduce azl_release for pulseaudio
# 5 - disable WebRTC AEC backend
azl_release = "5"

# Add azl_release to upstream's hardcoded Release (9) so we can bump release
# independently of upstream while keeping a single-number Fedora-style Release
# schema. The regex matches the current upstream Release verbatim and acts as
# a tripwire: if Fedora bumps the upstream number (e.g. 9 → 10), the regex
# will stop matching and force a conscious re-evaluation of the baseline.
# When that happens, update the regex *and* the baseline number in the
# replacement to the new upstream value, and reset azl_release to "1".
[[components.pulseaudio.overlays]]
description = "Add azl_release to upstream Release so we can bump release independently of upstream while keeping a single-number Fedora-style Release schema"
type = "spec-search-replace"
regex = '^Release:\s+9%\{\?snap:\.%\{snap\}git%\{shortcommit\}\}%\{\?dist\}$'
replacement = 'Release: %[9 + %{azl_release}]%{?snap:.%{snap}git%{shortcommit}}%{?dist}'

# The gdm-hooks subpackage was moved to gdm packaging in Fedora 28+,
# so this subpackage should not be built. The upstream conditional mis-fires
# when %fedora is undefined, but regardless we force gdm_hooks to 0 so the
Expand All @@ -11,3 +36,29 @@ description = "Disable gdm-hooks subpackage (moved to gdm packaging in Fedora 28
type = "spec-search-replace"
regex = "%global gdm_hooks 1"
replacement = "%global gdm_hooks 0"

# Disable WebRTC-based acoustic echo cancellation. AZL does not ship the
# webrtc-audio-processing component (Google-derived code that is significantly
# behind upstream and carries downstream patches just to keep building), so
# PulseAudio's module-echo-cancel falls back to its other AEC implementations
# (speex, null). Drops the BuildRequires on pkgconfig(webrtc-audio-processing-1)
# and the module-echo-cancel webrtc backend (libwebrtc-util.so). See PR #17329.
#
# Note: we %undefine (rather than set to 0) because the spec also uses
# `%{?with_webrtc:enabled}%{!?with_webrtc:disabled}` to compute the meson
# `-D webrtc-aec=` flag — that conditional tests for *definition*, not
# truthiness, so `%global with_webrtc 0` would still pass `enabled` to meson.
# Leaving the macro undefined makes every `%if 0%{?with_webrtc}` and
# `%{?with_webrtc:...}` evaluate to the disabled branch consistently.
#
# Regex is anchored to a full line (with optional trailing whitespace) to
# guard against benign Fedora reformatting and to avoid accidentally
# matching e.g. `%global with_webrtc 10` in some hypothetical future variant.
# If this regex stops matching after a Fedora rebase, *update* it to the
# new macro shape — do NOT remove the overlay; the constraint is permanent
# (webrtc-audio-processing is not shipped in AZL).
[[components.pulseaudio.overlays]]
description = "Disable WebRTC AEC backend (webrtc-audio-processing not shipped in AZL)"
type = "spec-search-replace"
regex = '^%global with_webrtc 1\s*$'
replacement = "%undefine with_webrtc"
2 changes: 1 addition & 1 deletion locks/gstreamer1-plugins-bad-free.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
version = 1
import-commit = 'b5597ad939bb024c2ab32ef8cf17e2ba2b86ebe5'
upstream-commit = 'b5597ad939bb024c2ab32ef8cf17e2ba2b86ebe5'
input-fingerprint = 'sha256:740487c359da4297d4f7dd7ae104f79fb9f6f41697e83588fffac023cdb245c9'
input-fingerprint = 'sha256:393070c6177a80d1c864ad5f146e5716905c7c43697d06baba46a714252f146e'
resolution-input-hash = 'sha256:466421704711c4fd3c71f0b2ed715a0e61d49e3e26f3a2637fee755795849c8e'
2 changes: 1 addition & 1 deletion locks/pipewire.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
version = 1
import-commit = 'f930436e78f3c6c32901254baf4979bab7c2710a'
upstream-commit = 'f930436e78f3c6c32901254baf4979bab7c2710a'
input-fingerprint = 'sha256:fc5fa06db1353654e6f6926fcd667ee31143ee244599e9cba56e96834bf7f88f'
input-fingerprint = 'sha256:99d3b9e77574e8b7d13e5fd678e3e81000b2c0270105c45ce676725c6d93a7d0'
resolution-input-hash = 'sha256:466421704711c4fd3c71f0b2ed715a0e61d49e3e26f3a2637fee755795849c8e'
2 changes: 1 addition & 1 deletion locks/pulseaudio.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
version = 1
import-commit = '9afb54a4dc0503fb2beb1853f6abe627713c0cf2'
upstream-commit = '9afb54a4dc0503fb2beb1853f6abe627713c0cf2'
input-fingerprint = 'sha256:d1579fccfc58e11114c6ad59360f542df440fcecc01b25a02cdc3b1ff95d41d2'
input-fingerprint = 'sha256:b60c88cc394e0ef45d05f9d26f19f364d5c0186d583a96a71f8c3b4b37ddebb1'
resolution-input-hash = 'sha256:466421704711c4fd3c71f0b2ed715a0e61d49e3e26f3a2637fee755795849c8e'
6 changes: 0 additions & 6 deletions locks/webrtc-audio-processing.lock

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
%_without_extras 1
%_without_onnx 1
%_without_openh264 1
%_without_webrtc 1
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

Name: gstreamer1-plugins-bad-free
Version: 1.26.10
Release: 6%{?dist}
Release: 7%{?dist}
Summary: GStreamer streaming media framework "bad" plugins

# Automatically converted from old format: LGPLv2+ and LGPLv2 - review is highly recommended.
Expand Down
2 changes: 1 addition & 1 deletion specs/p/pipewire/pipewire.azl.macros
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Macros file automatically generated by azldev.
# Do not edit manually; changes will be overwritten.
%azl_release 3
%azl_release 4
3 changes: 1 addition & 2 deletions specs/p/pipewire/pipewire.spec
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,7 @@ BuildRequires: ncurses-devel
BuildRequires: pulseaudio-libs-devel
BuildRequires: avahi-devel
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
BuildRequires: pkgconfig(webrtc-audio-processing-1)
%else
BuildRequires: pkgconfig(webrtc-audio-processing) >= 0.2
%endif
BuildRequires: libusb1-devel
BuildRequires: readline-devel
Expand Down Expand Up @@ -453,6 +451,7 @@ cp %{SOURCE1} subprojects/packagefiles/
%build
%meson \
-D opus=disabled -D bluez5-codec-opus=disabled \
-D echo-cancel-webrtc=disabled \
-D docs=enabled -D man=enabled -D gstreamer=enabled -D systemd=enabled \
-D sdl2=disabled \
-D audiotestsrc=disabled -D videotestsrc=disabled \
Expand Down
3 changes: 3 additions & 0 deletions specs/p/pulseaudio/pulseaudio.azl.macros
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Macros file automatically generated by azldev.
# Do not edit manually; changes will be overwritten.
%azl_release 5
8 changes: 6 additions & 2 deletions specs/p/pulseaudio/pulseaudio.spec
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# This spec file has been modified by azldev to include build configuration overlays.
# Do not edit manually; changes may be overwritten.

# All Azure Linux specs with overlays include this macro file, irrespective of whether new macros have been added.
%{load:%{_sourcedir}/pulseaudio.azl.macros}

%global pa_major 17.0
#global pa_minor 0

Expand All @@ -9,7 +12,7 @@
#global gitcommit f5d3606fe76302c7dbdb0f6a80400df829a5f846
#global shortcommit %%(c=%%{gitcommit}; echo ${c:0:5})

%global with_webrtc 1
%undefine with_webrtc

%if 0%{?fedora}
%global enable_daemon 1
Expand Down Expand Up @@ -37,7 +40,7 @@
Name: pulseaudio
Summary: Improved Linux Sound Server
Version: %{pa_major}%{?pa_minor:.%{pa_minor}}
Release: 9%{?snap:.%{snap}git%{shortcommit}}%{?dist}
Release: %[9 + %{azl_release}]%{?snap:.%{snap}git%{shortcommit}}%{?dist}
License: LGPL-2.1-or-later
URL: http://www.freedesktop.org/wiki/Software/PulseAudio
%if 0%{?gitrel}
Expand All @@ -50,6 +53,7 @@ Source1: http://freedesktop.org/software/pulseaudio/releases/pulseaudio-%
%endif

Source5: default.pa-for-gdm
Source9999: pulseaudio.azl.macros

# revert upstream commit to rely solely on autospawn for autostart, instead
# include a fallback to manual launch when autospawn fails, like when
Expand Down
Loading
Loading