-# TODO: evl support (https://evlproject.org/)
+# TODO: evl support (BR: libevl-devel, https://evlproject.org/)
+# - libcamera integration (no releases yet; ARM specific?)
#
# Conditional build:
%bcond_without apidocs # Doxygen based API documentation
Summary: PipeWire - server and user space API to deal with multimedia pipelines
Summary(pl.UTF-8): PipeWire - serwer i API przestrzeni użytkownika do obsługi potoków multimedialnych
Name: pipewire
-Version: 0.3.2
+Version: 0.3.17
Release: 1
License: LGPL v2+
Group: Libraries
#Source0Download: https://github.com/PipeWire/pipewire/releases
Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
-# Source0-md5: b39c50a59b779982cb888ca36d769d2d
+# Source0-md5: cf551f35c83a1fa77fd31983ade00082
Patch0: %{name}-gcc.patch
URL: https://pipewire.org/
%if %{with jack}
BuildRequires: SDL2-devel >= 2
%endif
-BuildRequires: Vulkan-Loader-devel
-BuildRequires: alsa-lib-devel >= 1
+BuildRequires: Vulkan-Loader-devel >= 1.1.69
+BuildRequires: alsa-lib-devel >= 1.1.7
BuildRequires: bluez-libs-devel >= 4.101
BuildRequires: dbus-devel
%{?with_apidocs:BuildRequires: doxygen}
%endif
%{?with_apidocs:BuildRequires: graphviz}
%if %{with gstreamer}
-BuildRequires: gstreamer-devel >= 1.0
-BuildRequires: gstreamer-plugins-base-devel >= 1.0
+BuildRequires: gstreamer-devel >= 1.10
+BuildRequires: gstreamer-plugins-base-devel >= 1.10
%endif
%{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.10}
BuildRequires: libsndfile-devel >= 1.0.20
BuildRequires: ninja >= 1.5
BuildRequires: pkgconfig
%{?with_pulseaudio:BuildRequires: pulseaudio-devel >= 11.1}
-BuildRequires: rpmbuild(macros) >= 1.736
+BuildRequires: rpmbuild(macros) >= 1.752
BuildRequires: sbc-devel
BuildRequires: systemd-devel
BuildRequires: udev-devel
BuildRequires: xmltoman
Requires: %{name}-libs = %{version}-%{release}
+Requires: libsndfile >= 1.0.20
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
Summary: API documentation for PipeWire library
Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
Group: Documentation
-%if "%{_rpmversion}" >= "4.6"
BuildArch: noarch
-%endif
%description apidocs
API documentation for PipeWire library.
Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
Group: Libraries
Requires: %{name}-libs = %{version}-%{release}
+Requires: alsa-lib >= 1.1.7
%description spa-module-alsa
PipeWire SPA plugin to play and record audio with ALSA API.
Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
Group: Libraries
Requires: %{name}-libs = %{version}-%{release}
+Requires: Vulkan-Loader >= 1.1.69
%description spa-module-vulkan
PipeWire SPA plugin to generate video frames using Vulkan.
Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
Group: Libraries
Requires: %{name} = %{version}-%{release}
+Requires: glib2 >= 1:2.32.0
Requires: pulseaudio >= 11.1
%description pulseaudio
Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: alsa-lib >= 1
+Requires: alsa-lib >= 1.1.7
%description -n alsa-plugin-pipewire
PipeWire integration plugin for ALSA sound system.
Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: gstreamer >= 1.0
-Requires: gstreamer-plugins-base >= 1.0
+Requires: glib2 >= 1:2.32.0
+Requires: gstreamer >= 1.10
+Requires: gstreamer-plugins-base >= 1.10
%description -n gstreamer-pipewire
PipeWire video sink and source plugin for GStreamer.
%build
%meson build \
-Daudiotestsrc=true \
+ -Dbluez5-backend-hsphfpd=true \
%{?with_apidocs:-Ddocs=true} \
%{?with_ffmpeg:-Dffmpeg=true} \
%{!?with_gstreamer:-Dgstreamer=false} \
%{!?with_jack:-Djack=false} \
-Dman=true \
%{!?with_jack:-Dpipewire-jack=false} \
- %{!?with_pulseaudio:-Dpipewire-pulseaudio=false} \
+ %{?with_pulseaudio:-Dpipewire-pulseaudio=true} \
-Dvideotestsrc=true \
-Dvolume=true
# TODO: -Devl=true
%attr(755,root,root) %{_bindir}/pw-cat
%attr(755,root,root) %{_bindir}/pw-cli
%attr(755,root,root) %{_bindir}/pw-dot
+%attr(755,root,root) %{_bindir}/pw-metadata
+%attr(755,root,root) %{_bindir}/pw-mididump
+%attr(755,root,root) %{_bindir}/pw-midiplay
+%attr(755,root,root) %{_bindir}/pw-midirecord
%attr(755,root,root) %{_bindir}/pw-mon
%attr(755,root,root) %{_bindir}/pw-play
-%attr(755,root,root) %{_bindir}/pw-record
%attr(755,root,root) %{_bindir}/pw-profiler
+%attr(755,root,root) %{_bindir}/pw-record
+%attr(755,root,root) %{_bindir}/pw-reserve
%attr(755,root,root) %{_bindir}/spa-inspect
%attr(755,root,root) %{_bindir}/spa-monitor
+# R: libsndfile
+%attr(755,root,root) %{_bindir}/spa-resample
%dir %{_sysconfdir}/pipewire
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire.conf
+%dir %{_sysconfdir}/pipewire/media-session.d
%{systemduserunitdir}/pipewire.service
%{systemduserunitdir}/pipewire.socket
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
# R: systemd-libs
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
+# R: dbus-libs systemd-libs
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
# R: dbus-libs
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
%dir %{_libdir}/spa-0.2/support
# R: dbus-libs
%attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
+# R: systemd-libs
+%attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
%attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
%dir %{_libdir}/spa-0.2/v4l2
# R: udev-libs
%dir %{_libdir}/spa-0.2/volume
%attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
%{_mandir}/man1/pipewire.1*
+%{_mandir}/man1/pw-cat.1*
%{_mandir}/man1/pw-cli.1*
+%{_mandir}/man1/pw-dot.1*
+%{_mandir}/man1/pw-metadata.1*
+%{_mandir}/man1/pw-mididump.1*
%{_mandir}/man1/pw-mon.1*
+%{_mandir}/man1/pw-profiler.1*
%{_mandir}/man5/pipewire.conf.5*
%files libs
%files spa-module-alsa
%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/spa-acp-tool
%dir %{_libdir}/spa-0.2/alsa
# R: alsa-lib udev-libs
%attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
+%{_datadir}/alsa-card-profile
%files spa-module-bluez
%defattr(644,root,root,755)
%if %{with jack}
%files jack
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libjack-pw.so.*.*.*
-%attr(755,root,root) %{_libdir}/libjack-pw.so
+%attr(755,root,root) %{_bindir}/pw-jack
+%{_sysconfdir}/pipewire/media-session.d/with-jack
+%dir %attr(755,root,root) %{_libdir}/pipewire-0.3/jack
+%attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
+%attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
+%attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
%endif
%if %{with pulseaudio}
%files pulseaudio
%defattr(644,root,root,755)
%doc pipewire-pulseaudio/README.md
-%attr(755,root,root) %{_libdir}/libpulse-mainloop-glib-pw.so.*.*.*
-%attr(755,root,root) %{_libdir}/libpulse-mainloop-glib-pw.so
-%attr(755,root,root) %{_libdir}/libpulse-pw.so.*.*.*
-%attr(755,root,root) %{_libdir}/libpulse-pw.so
-%attr(755,root,root) %{_libdir}/libpulse-simple-pw.so.*.*.*
-%attr(755,root,root) %{_libdir}/libpulse-simple-pw.so
+%attr(755,root,root) %{_bindir}/pipewire-pulse
+%attr(755,root,root) %{_bindir}/pw-pulse
+%{_sysconfdir}/pipewire/media-session.d/with-pulseaudio
+%dir %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse
+%attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse-mainloop-glib.so*
+%attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse.so*
+%attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse-simple.so*
+%{systemduserunitdir}/pipewire-pulse.service
+%{systemduserunitdir}/pipewire-pulse.socket
+%{_mandir}/man1/pw-pulse.1*
%endif
%files -n alsa-plugin-pipewire
%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
%attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
+/lib/udev/rules.d/90-pipewire-alsa.rules
%if %{with gstreamer}
%files -n gstreamer-pipewire