1 # TODO: evl support (BR: libevl-devel, https://evlproject.org/)
2 # - libcamera integration (no releases yet; ARM specific?)
5 %bcond_without apidocs # Doxygen based API documentation
6 %bcond_without ffmpeg # ffmpeg spa plugin integration
7 %bcond_without gstreamer # GStreamer module
8 %bcond_without jack # pipewire-jack and jack spa plugin integration
9 %bcond_without pulseaudio # pipewire-pulseaudio integration
11 Summary: PipeWire - server and user space API to deal with multimedia pipelines
12 Summary(pl.UTF-8): PipeWire - serwer i API przestrzeni użytkownika do obsługi potoków multimedialnych
18 #Source0Download: https://github.com/PipeWire/pipewire/releases
19 Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
20 # Source0-md5: cf551f35c83a1fa77fd31983ade00082
21 Patch0: %{name}-gcc.patch
22 URL: https://pipewire.org/
24 BuildRequires: SDL2-devel >= 2
26 BuildRequires: Vulkan-Loader-devel >= 1.1.69
27 BuildRequires: alsa-lib-devel >= 1.1.7
28 BuildRequires: bluez-libs-devel >= 4.101
29 BuildRequires: dbus-devel
30 %{?with_apidocs:BuildRequires: doxygen}
31 # libavcodec libavformat libavfilter
32 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
33 BuildRequires: gcc >= 5:3.2
34 %if %{with gstreamer} || %{with pulseaudio}
35 BuildRequires: glib2-devel >= 1:2.32.0
37 %{?with_apidocs:BuildRequires: graphviz}
39 BuildRequires: gstreamer-devel >= 1.10
40 BuildRequires: gstreamer-plugins-base-devel >= 1.10
42 %{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.10}
43 BuildRequires: libsndfile-devel >= 1.0.20
44 BuildRequires: meson >= 0.50.0
45 BuildRequires: ninja >= 1.5
46 BuildRequires: pkgconfig
47 %{?with_pulseaudio:BuildRequires: pulseaudio-devel >= 11.1}
48 BuildRequires: rpmbuild(macros) >= 1.752
49 BuildRequires: sbc-devel
50 BuildRequires: systemd-devel
51 BuildRequires: udev-devel
52 BuildRequires: xmltoman
53 Requires: %{name}-libs = %{version}-%{release}
54 Requires: libsndfile >= 1.0.20
55 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
58 PipeWire is a server and user space API to deal with multimedia
59 pipelines. This includes:
60 - Making available sources of video (such as from a capture devices
61 or application provided streams) and multiplexing this with
63 - Accessing sources of video for consumption.
64 - Generating graphs for audio and video processing.
66 Nodes in the graph can be implemented as separate processes,
67 communicating with sockets and exchanging multimedia content using fd
70 %description -l pl.UTF-8
71 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
72 multimedialnych. Obejmuje to:
73 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
74 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
76 - dostęp do źródeł obrazu do pobierania
77 - generowanie grafów do przetwarzania dźwięku i obrazu
80 Summary: PipeWire shared library
81 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
85 PipeWire shared library.
87 %description libs -l pl.UTF-8
88 Biblioteka współdzielona PipeWire.
91 Summary: Header files for PipeWire library and Simple Plugin API
92 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
93 Group: Development/Libraries
94 Requires: %{name}-libs = %{version}-%{release}
97 Header files for PipeWire library and Simple Plugin API.
99 %description devel -l pl.UTF-8
100 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
103 Summary: API documentation for PipeWire library
104 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
109 API documentation for PipeWire library.
111 %description apidocs -l pl.UTF-8
112 Dokumentacja API biblioteki PipeWire.
114 %package spa-module-alsa
115 Summary: PipeWire SPA plugin to play and record audio with ALSA API
116 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
118 Requires: %{name}-libs = %{version}-%{release}
119 Requires: alsa-lib >= 1.1.7
121 %description spa-module-alsa
122 PipeWire SPA plugin to play and record audio with ALSA API.
124 %description spa-module-alsa -l pl.UTF-8
125 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
128 %package spa-module-bluez
129 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
130 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
132 Requires: %{name}-libs = %{version}-%{release}
133 Requires: bluez-libs >= 4.101
135 %description spa-module-bluez
136 PipeWire SPA plugin to play audio with Bluetooth A2DP.
138 %description spa-module-bluez -l pl.UTF-8
139 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
141 %package spa-module-ffmpeg
142 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
143 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
145 Requires: %{name}-libs = %{version}-%{release}
147 %description spa-module-ffmpeg
148 PipeWire SPA plugin to decode/encode with FFmpeg library.
150 %description spa-module-ffmpeg -l pl.UTF-8
151 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
154 %package spa-module-jack
155 Summary: PipeWire SPA plugin to play and record audio with JACK API
156 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
158 Requires: %{name}-libs = %{version}-%{release}
159 Requires: jack-audio-connection-kit >= 1.9.10
161 %description spa-module-jack
162 PipeWire SPA plugin to play and record audio with JACK API.
164 %description spa-module-jack -l pl.UTF-8
165 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
168 %package spa-module-vulkan
169 Summary: PipeWire SPA plugin to generate video frames using Vulkan
170 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
172 Requires: %{name}-libs = %{version}-%{release}
173 Requires: Vulkan-Loader >= 1.1.69
175 %description spa-module-vulkan
176 PipeWire SPA plugin to generate video frames using Vulkan.
178 %description spa-module-vulkan -l pl.UTF-8
179 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
182 Summary: PipeWire JACK sound system integration
183 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
185 Requires: %{name} = %{version}-%{release}
186 Requires: jack-audio-connection-kit >= 1.9.10
189 PipeWire JACK sound system integration.
191 %description jack -l pl.UTF-8
192 Integracja PipeWire z systemem dźwięku JACK.
195 Summary: PipeWire PulseAudio sound system integration
196 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
198 Requires: %{name} = %{version}-%{release}
199 Requires: glib2 >= 1:2.32.0
200 Requires: pulseaudio >= 11.1
202 %description pulseaudio
203 PipeWire PulseAudio sound system integration.
205 %description pulseaudio -l pl.UTF-8
206 Integracja PipeWire z systemem dźwięku PulseAudio.
208 %package -n alsa-plugin-pipewire
209 Summary: PipeWire integration plugin for ALSA sound system
210 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
212 Requires: %{name} = %{version}-%{release}
213 Requires: alsa-lib >= 1.1.7
215 %description -n alsa-plugin-pipewire
216 PipeWire integration plugin for ALSA sound system.
218 %description -n alsa-plugin-pipewire -l pl.UTF-8
219 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
221 %package -n gstreamer-pipewire
222 Summary: PipeWire video sink and source plugin for GStreamer
223 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
225 Requires: %{name} = %{version}-%{release}
226 Requires: glib2 >= 1:2.32.0
227 Requires: gstreamer >= 1.10
228 Requires: gstreamer-plugins-base >= 1.10
230 %description -n gstreamer-pipewire
231 PipeWire video sink and source plugin for GStreamer.
233 %description -n gstreamer-pipewire -l pl.UTF-8
234 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
242 -Daudiotestsrc=true \
243 -Dbluez5-backend-hsphfpd=true \
244 %{?with_apidocs:-Ddocs=true} \
245 %{?with_ffmpeg:-Dffmpeg=true} \
246 %{!?with_gstreamer:-Dgstreamer=false} \
247 %{!?with_jack:-Djack=false} \
249 %{!?with_jack:-Dpipewire-jack=false} \
250 %{?with_pulseaudio:-Dpipewire-pulseaudio=true} \
251 -Dvideotestsrc=true \
255 %ninja_build -C build
258 rm -rf $RPM_BUILD_ROOT
260 %ninja_install -C build
262 install -d $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
263 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
265 # packaged as %doc in -apidocs
266 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html
269 rm -rf $RPM_BUILD_ROOT
271 %post libs -p /sbin/ldconfig
272 %postun libs -p /sbin/ldconfig
275 %defattr(644,root,root,755)
276 %attr(755,root,root) %{_bindir}/pipewire
277 %attr(755,root,root) %{_bindir}/pipewire-media-session
278 %attr(755,root,root) %{_bindir}/pw-cat
279 %attr(755,root,root) %{_bindir}/pw-cli
280 %attr(755,root,root) %{_bindir}/pw-dot
281 %attr(755,root,root) %{_bindir}/pw-metadata
282 %attr(755,root,root) %{_bindir}/pw-mididump
283 %attr(755,root,root) %{_bindir}/pw-midiplay
284 %attr(755,root,root) %{_bindir}/pw-midirecord
285 %attr(755,root,root) %{_bindir}/pw-mon
286 %attr(755,root,root) %{_bindir}/pw-play
287 %attr(755,root,root) %{_bindir}/pw-profiler
288 %attr(755,root,root) %{_bindir}/pw-record
289 %attr(755,root,root) %{_bindir}/pw-reserve
290 %attr(755,root,root) %{_bindir}/spa-inspect
291 %attr(755,root,root) %{_bindir}/spa-monitor
293 %attr(755,root,root) %{_bindir}/spa-resample
294 %dir %{_sysconfdir}/pipewire
295 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire.conf
296 %dir %{_sysconfdir}/pipewire/media-session.d
297 %{systemduserunitdir}/pipewire.service
298 %{systemduserunitdir}/pipewire.socket
299 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
300 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
301 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
302 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
303 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
304 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
305 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
306 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
308 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
309 # R: dbus-libs systemd-libs
310 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
312 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
313 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
314 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
315 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
316 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
317 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
318 %dir %{_libdir}/spa-0.2/audioconvert
319 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
320 %dir %{_libdir}/spa-0.2/audiomixer
321 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
322 %dir %{_libdir}/spa-0.2/audiotestsrc
323 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
324 %dir %{_libdir}/spa-0.2/control
325 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
326 %dir %{_libdir}/spa-0.2/support
328 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
330 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
331 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
332 %dir %{_libdir}/spa-0.2/v4l2
334 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
335 %dir %{_libdir}/spa-0.2/videoconvert
336 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
337 %dir %{_libdir}/spa-0.2/videotestsrc
338 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
339 %dir %{_libdir}/spa-0.2/volume
340 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
341 %{_mandir}/man1/pipewire.1*
342 %{_mandir}/man1/pw-cat.1*
343 %{_mandir}/man1/pw-cli.1*
344 %{_mandir}/man1/pw-dot.1*
345 %{_mandir}/man1/pw-metadata.1*
346 %{_mandir}/man1/pw-mididump.1*
347 %{_mandir}/man1/pw-mon.1*
348 %{_mandir}/man1/pw-profiler.1*
349 %{_mandir}/man5/pipewire.conf.5*
352 %defattr(644,root,root,755)
353 %doc COPYING LICENSE NEWS README.md
354 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
355 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
356 %dir %{_libdir}/pipewire-0.3
357 %dir %{_libdir}/spa-0.2
360 %defattr(644,root,root,755)
361 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
362 %{_includedir}/pipewire-0.3
363 %{_includedir}/spa-0.2
364 %{_pkgconfigdir}/libpipewire-0.3.pc
365 %{_pkgconfigdir}/libspa-0.2.pc
369 %defattr(644,root,root,755)
370 %doc doc/design.txt build/doc/html/*
373 %files spa-module-alsa
374 %defattr(644,root,root,755)
375 %attr(755,root,root) %{_bindir}/spa-acp-tool
376 %dir %{_libdir}/spa-0.2/alsa
377 # R: alsa-lib udev-libs
378 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
379 %{_datadir}/alsa-card-profile
381 %files spa-module-bluez
382 %defattr(644,root,root,755)
383 %dir %{_libdir}/spa-0.2/bluez5
385 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
387 %files spa-module-ffmpeg
388 %defattr(644,root,root,755)
389 %dir %{_libdir}/spa-0.2/ffmpeg
391 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
394 %files spa-module-jack
395 %defattr(644,root,root,755)
396 %dir %{_libdir}/spa-0.2/jack
397 # R: jack-audio-connection-kit-libs
398 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
401 %files spa-module-vulkan
402 %defattr(644,root,root,755)
403 %dir %{_libdir}/spa-0.2/vulkan
405 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
409 %defattr(644,root,root,755)
410 %attr(755,root,root) %{_bindir}/pw-jack
411 %{_sysconfdir}/pipewire/media-session.d/with-jack
412 %dir %attr(755,root,root) %{_libdir}/pipewire-0.3/jack
413 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
414 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
415 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
418 %if %{with pulseaudio}
420 %defattr(644,root,root,755)
421 %doc pipewire-pulseaudio/README.md
422 %attr(755,root,root) %{_bindir}/pipewire-pulse
423 %attr(755,root,root) %{_bindir}/pw-pulse
424 %{_sysconfdir}/pipewire/media-session.d/with-pulseaudio
425 %dir %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse
426 %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse-mainloop-glib.so*
427 %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse.so*
428 %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse-simple.so*
429 %{systemduserunitdir}/pipewire-pulse.service
430 %{systemduserunitdir}/pipewire-pulse.socket
431 %{_mandir}/man1/pw-pulse.1*
434 %files -n alsa-plugin-pipewire
435 %defattr(644,root,root,755)
436 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
437 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
438 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
439 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
440 /lib/udev/rules.d/90-pipewire-alsa.rules
442 %if %{with gstreamer}
443 %files -n gstreamer-pipewire
444 %defattr(644,root,root,755)
445 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so