Name: pipewire Version: 1.6.8 Release: 5%{?dist} Summary: Multimedia processing graph (audio/video server) License: MIT AND LGPL-2.1-or-later AND GPL-2.0-only URL: https://pipewire.org Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/pipewire-%{version}.tar.gz BuildRequires: meson BuildRequires: ninja-build BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(bluez) BuildRequires: systemd-rpm-macros BuildRequires: libcanberra-devel BuildRequires: libselinux-devel BuildRequires: libsndfile-devel BuildRequires: avahi-devel BuildRequires: avahi-glib-devel BuildRequires: pkgconfig(libusb-1.0) BuildRequires: readline-devel BuildRequires: libX11-devel BuildRequires: libXfixes-devel BuildRequires: libebur128-devel BuildRequires: fftw-devel BuildRequires: liblc3-devel BuildRequires: spandsp-devel BuildRequires: pkgconfig(sbc) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-unix-2.0) %description PipeWire is a server and user space API to deal with multimedia pipelines: audio, video, and low-latency processing for both consumer and pro-audio use cases. Provides the ALSA integration and a PulseAudio-protocol-compatible server (pipewire-pulse) that Plasma's volume control and KWin's screencasting hook into. Built with -Dsession-managers=[] (upstream's default tries to auto-fetch WireLumber as a Meson subproject during configure, which needs network access the COPR build environment doesn't have); WirePlumber is built as its own separate package instead. gstreamer, vulkan, libcamera, jack, v4l2, sdl2, roc, lv2, onnxruntime, ffmpeg, and snap are all explicitly disabled (none of their dependencies are built in this repo yet); alsa, dbus, udev, systemd/logind, and bluez5 are left at their real upstream "auto" default and resolve on since this distro has all four of those already. %prep %autosetup -n pipewire-%{version} -p1 %build %meson \ -D docs=disabled \ -D man=disabled \ -D tests=disabled \ -D examples=disabled \ -D installed_tests=disabled \ -D gstreamer=disabled \ -D gstreamer-device-provider=disabled \ -D vulkan=disabled \ -D libcamera=disabled \ -D pipewire-jack=disabled \ -D jack=disabled \ -D jack-devel=false \ -D pipewire-v4l2=disabled \ -D v4l2=disabled \ -D sdl2=disabled \ -D roc=disabled \ -D lv2=disabled \ -D onnxruntime=disabled \ -D ffmpeg=disabled \ -D pw-cat-ffmpeg=disabled \ -D snap=disabled \ -D flatpak=disabled \ -D libmysofa=disabled \ -D echo-cancel-webrtc=disabled \ -D libffado=disabled \ -D gsettings=disabled \ -D gsettings-pulse-schema=disabled \ -D bluez5-codec-aptx=disabled \ -D bluez5-codec-ldac=disabled \ -D bluez5-codec-ldac-dec=disabled \ -D bluez5-codec-aac=disabled \ -D bluez5-codec-lc3plus=disabled \ -D bluez5-codec-opus=disabled \ -D bluez5-codec-g722=disabled \ -D libpulse=disabled \ -D raop=disabled \ -D avb=disabled \ -D compress-offload=disabled \ -D opus=disabled \ -D session-managers=[] %meson_build %install %meson_install mkdir -p %{buildroot}%{_sysusersdir} cat > %{buildroot}%{_sysusersdir}/pipewire.conf <<'EOF' #Type Name ID GECOS Home directory Shell u pipewire - "PipeWire System Daemon" /run/pipewire - EOF %pre %sysusers_create_compat %{_sysusersdir}/pipewire.conf %files %license COPYING LICENSE %doc README.md %{_bindir}/pipewire %{_bindir}/pw-* %{_libdir}/libpipewire-*.so* %{_libdir}/pipewire-0.3/ %{_libdir}/spa-0.2/ %{_libdir}/alsa-lib/ %{_libdir}/pkgconfig/libpipewire-0.3.pc %{_libdir}/pkgconfig/libspa-0.2.pc %{_includedir}/pipewire-0.3/ %{_includedir}/spa-0.2/ %{_datadir}/pipewire/ %{_datadir}/alsa-card-profile/ %{_userunitdir}/pipewire*.service %{_userunitdir}/pipewire*.socket %{_userunitdir}/filter-chain*.service %{_prefix}/lib/udev/rules.d/*pipewire*.rules %{_sysusersdir}/pipewire.conf %changelog * Sat Aug 29 2026 Smech - 1.6.8-5 - R4 got past configure and the full compile for the first time (3+ minutes, real build work happened) but failed on two dead %%files globs, both zero-match: %{_libdir}/libspa-*.so* -- verified via real spa/meson.build that "libspa" is only a pkgconfig.generate() metadata name (SPA is header-only/plugin-loaded, the real plugin .so files already live under the spa-0.2/ plugin dir which was already claimed), no such shared library is ever compiled. And %{_datadir}/dbus-1/system.d/*pipewire* -- grepped the entire source tree for dbus-1/system.d install() calls and found none; PipeWire runs as a per-user session service (already have the %{_userunitdir} user units), no D-Bus system bus policy is shipped. Dropped both. * Sat Aug 29 2026 Smech - 1.6.8-4 - R3 failed: "Dependency systemd not found" (src/daemon/systemd/user/ meson.build:1, used to query systemduserunitdir). This is a distinct pkgconfig name from libsystemd (the actual library) -- pkgconfig(systemd) is provided by the base systemd package itself, not systemd-devel, and wasn't pulled in by systemd-rpm-macros alone. Added explicitly. * Sat Aug 29 2026 Smech - 1.6.8-3 - R2 failed: "Dependency sbc not found" (spa/meson.build:64, dependency('sbc', required: get_option('bluez5'))) -- SBC is the mandatory baseline Bluetooth audio codec, required whenever bluez5 is enabled (which it is, bluez-libs-devel is present), separate from the optional aptx/ldac/aac/lc3plus/opus enhanced codecs already handled. Same line also needs gio-2.0/gio-unix-2.0/glib-2.0, not previously listed. Added pkgconfig(sbc) + pkgconfig(glib-2.0)/(gio-2.0)/ (gio-unix-2.0), all confirmed available on this distro. * Sat Aug 29 2026 Smech - 1.6.8-2 - R1 failed: "Dependency libselinux not found, tried pkgconfig". Root cause is architectural, not just libselinux: the real meson invocation logged by this distro's %%meson macro passes --auto-features=enabled, which forces EVERY meson_options.txt `type: feature, value: 'auto'` option to be treated as hard-required (dependency(..., required: get_option(X)) becomes required: true for every auto option) rather than gracefully degrading -- the opposite of how upstream's own defaults behave standalone. Went through every single "auto" option in meson_options.txt (43 of them) and explicitly classified each: added BuildRequires for the ones with real available deps on this distro (libselinux-devel, libsndfile-devel, avahi-devel +avahi-glib-devel, pkgconfig(libusb-1.0), readline-devel, libX11-devel+libXfixes-devel, libebur128-devel, fftw-devel, liblc3-devel, spandsp-devel) and explicitly -D ...=disabled for the rest (bluez5-codec-aptx/ldac/ldac-dec/aac/lc3plus/opus/g722 -- all need proprietary/absent codec libs; libpulse -- genuinely absent and not wanted, PipeWire replaces it; raop/avb/compress-offload/opus -- either absent deps or unverified, disabled defensively). Dropped the %%{_bindir}/pipewire-avb %%files claim since avb is now disabled. * Sat Aug 29 2026 Smech - 1.6.8-1 - Real upstream source (GitLab archive, no download.kde.org release for this -- PipeWire is not a KDE project). First Meson-based package in this repo (everything else has been CMake/ECM). Verified real meson.build has essentially zero hard-required deps on Linux (the only required: true dependency() calls are FreeBSD/MidnightBSD-only epoll-shim/libinotify shims) -- almost everything else uses Meson's feature: auto pattern and degrades gracefully, a much more forgiving architecture than the CMake REQUIRED patterns elsewhere in this repo. The one mandatory override is -Dsession-managers=[] to stop the default WirePlumber Meson-subproject auto-fetch, which would need network access unavailable in the COPR mock build environment. %%files uses broad glob patterns rather than an exhaustive file-by-file transcription given the scale of Meson's install tree; expect a real-error iteration round or two once actually built.