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 lv2 # LV2 plugins support
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
16 License: MIT, LGPL v2+, GPL v2
18 #Source0Download: https://github.com/PipeWire/pipewire/releases
19 Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
20 # Source0-md5: 6e12461b046e45c4c47bd7face365818
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: avahi-devel
29 BuildRequires: bluez-libs-devel >= 4.101
30 BuildRequires: dbus-devel
32 BuildRequires: docutils
33 %{?with_apidocs:BuildRequires: doxygen}
34 BuildRequires: fdk-aac-devel
35 # libavcodec libavformat libavfilter
36 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
37 BuildRequires: gcc >= 5:3.2
38 BuildRequires: gettext-tools
40 BuildRequires: glib2-devel >= 1:2.32.0
42 %{?with_apidocs:BuildRequires: graphviz}
44 BuildRequires: gstreamer-devel >= 1.10
45 BuildRequires: gstreamer-plugins-base-devel >= 1.10
47 %{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.17}
48 BuildRequires: ldacBT-devel
49 %ifarch i386 i486 %{armv4} %{armv5} %{armv6}
50 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
51 BuildRequires: libatomic-devel
53 BuildRequires: libcap-devel
55 #BuildRequires: libdrm-devel >= 2.4.98
56 BuildRequires: libfreeaptx-devel
57 BuildRequires: libsndfile-devel >= 1.0.20
58 BuildRequires: libstdc++-devel >= 6:7
59 BuildRequires: libusb-devel >= 1.0
60 %{?with_lv2:BuildRequires: lilv-devel}
61 BuildRequires: meson >= 0.56.0
62 BuildRequires: ncurses-devel
63 BuildRequires: ninja >= 1.5
64 BuildRequires: openssl-devel
65 BuildRequires: pkgconfig
66 BuildRequires: pulseaudio-devel
67 BuildRequires: readline-devel >= 8.1.1-2
68 BuildRequires: rpm-build >= 4.6
69 BuildRequires: rpmbuild(macros) >= 2.011
70 BuildRequires: sbc-devel
71 BuildRequires: systemd-devel
72 BuildRequires: udev-devel
73 BuildRequires: webrtc-audio-processing-devel >= 0.2
74 BuildRequires: webrtc-audio-processing-devel < 1.0
75 Requires(post,preun): systemd-units >= 250.1
76 Requires: %{name}-libs = %{version}-%{release}
77 Requires: libsndfile >= 1.0.20
78 Requires: pipewire-session-manager
79 Requires: systemd-units >= 250.1
81 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
84 PipeWire is a server and user space API to deal with multimedia
85 pipelines. This includes:
86 - Making available sources of video (such as from a capture devices
87 or application provided streams) and multiplexing this with
89 - Accessing sources of video for consumption.
90 - Generating graphs for audio and video processing.
92 Nodes in the graph can be implemented as separate processes,
93 communicating with sockets and exchanging multimedia content using fd
96 %description -l pl.UTF-8
97 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
98 multimedialnych. Obejmuje to:
99 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
100 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
102 - dostęp do źródeł obrazu do pobierania
103 - generowanie grafów do przetwarzania dźwięku i obrazu
106 Summary: PipeWire shared library
107 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
111 PipeWire shared library.
113 %description libs -l pl.UTF-8
114 Biblioteka współdzielona PipeWire.
117 Summary: Header files for PipeWire library and Simple Plugin API
118 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
119 Group: Development/Libraries
120 Requires: %{name}-libs = %{version}-%{release}
123 Header files for PipeWire library and Simple Plugin API.
125 %description devel -l pl.UTF-8
126 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
129 Summary: API documentation for PipeWire library
130 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
135 API documentation for PipeWire library.
137 %description apidocs -l pl.UTF-8
138 Dokumentacja API biblioteki PipeWire.
140 %package spa-module-alsa
141 Summary: PipeWire SPA plugin to play and record audio with ALSA API
142 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
144 Requires: %{name}-libs = %{version}-%{release}
145 Requires: alsa-lib >= 1.1.7
147 %description spa-module-alsa
148 PipeWire SPA plugin to play and record audio with ALSA API.
150 %description spa-module-alsa -l pl.UTF-8
151 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
154 %package spa-module-bluez
155 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
156 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
158 Requires: %{name}-libs = %{version}-%{release}
159 Requires: bluez-libs >= 4.101
161 %description spa-module-bluez
162 PipeWire SPA plugin to play audio with Bluetooth A2DP.
164 %description spa-module-bluez -l pl.UTF-8
165 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
167 %package spa-module-ffmpeg
168 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
169 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
171 Requires: %{name}-libs = %{version}-%{release}
173 %description spa-module-ffmpeg
174 PipeWire SPA plugin to decode/encode with FFmpeg library.
176 %description spa-module-ffmpeg -l pl.UTF-8
177 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
180 %package spa-module-jack
181 Summary: PipeWire SPA plugin to play and record audio with JACK API
182 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
184 Requires: %{name}-libs = %{version}-%{release}
185 Requires: jack-audio-connection-kit >= 1.9.17
187 %description spa-module-jack
188 PipeWire SPA plugin to play and record audio with JACK API.
190 %description spa-module-jack -l pl.UTF-8
191 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
194 %package spa-module-vulkan
195 Summary: PipeWire SPA plugin to generate video frames using Vulkan
196 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
198 Requires: %{name}-libs = %{version}-%{release}
199 Requires: Vulkan-Loader >= 1.1.69
201 %description spa-module-vulkan
202 PipeWire SPA plugin to generate video frames using Vulkan.
204 %description spa-module-vulkan -l pl.UTF-8
205 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
208 Summary: PipeWire JACK sound system integration
209 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
211 Requires: %{name} = %{version}-%{release}
212 Requires: jack-audio-connection-kit >= 1.9.17
215 PipeWire JACK sound system integration.
217 %description jack -l pl.UTF-8
218 Integracja PipeWire z systemem dźwięku JACK.
221 Summary: PipeWire PulseAudio sound system integration
222 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
224 Requires(post,preun): systemd-units >= 250.1
225 Requires: %{name} = %{version}-%{release}
226 Requires: systemd-units >= 250.1
227 Suggests: pulseaudio-tools
229 %description pulseaudio
230 PipeWire PulseAudio sound system integration.
232 %description pulseaudio -l pl.UTF-8
233 Integracja PipeWire z systemem dźwięku PulseAudio.
235 %package -n alsa-plugin-pipewire
236 Summary: PipeWire integration plugin for ALSA sound system
237 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
239 Requires: %{name} = %{version}-%{release}
240 Requires: alsa-lib >= 1.1.7
242 %description -n alsa-plugin-pipewire
243 PipeWire integration plugin for ALSA sound system.
245 %description -n alsa-plugin-pipewire -l pl.UTF-8
246 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
248 %package -n gstreamer-pipewire
249 Summary: PipeWire video sink and source plugin for GStreamer
250 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
252 Requires: %{name} = %{version}-%{release}
253 Requires: glib2 >= 1:2.32.0
254 Requires: gstreamer >= 1.10
255 Requires: gstreamer-plugins-base >= 1.10
257 %description -n gstreamer-pipewire
258 PipeWire video sink and source plugin for GStreamer.
260 %description -n gstreamer-pipewire -l pl.UTF-8
261 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
269 -Daudiotestsrc=enabled \
270 -Dbluez5-backend-hsphfpd=enabled \
271 %{?with_apidocs:-Ddocs=enabled} \
272 %{?with_ffmpeg:-Dffmpeg=enabled} \
273 %{!?with_gstreamer:-Dgstreamer=disabled} \
274 %{!?with_jack:-Djack=disabled} \
275 %{!?with_lv2:-Dlv2=disabled} \
277 %{!?with_jack:-Dpipewire-jack=disabled} \
278 -Dsession-managers='[]' \
279 -Dvideotestsrc=enabled \
282 # TODO: -Devl=enabled
284 %ninja_build -C build
287 rm -rf $RPM_BUILD_ROOT
289 %ninja_install -C build
291 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/pipewire,%{_datadir}/alsa/alsa.conf.d}
292 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
294 # packaged as %doc in -apidocs
295 %{?with_apidocs:%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html}
300 rm -rf $RPM_BUILD_ROOT
303 %systemd_user_post pipewire.service
304 %systemd_user_post pipewire.socket
307 %systemd_user_preun pipewire.service
308 %systemd_user_preun pipewire.socket
310 %post libs -p /sbin/ldconfig
311 %postun libs -p /sbin/ldconfig
314 %systemd_user_post pipewire-pulse.service
315 %systemd_user_post pipewire-pulse.socket
318 %systemd_user_preun pipewire-pulse.service
319 %systemd_user_preun pipewire-pulse.socket
321 %files -f %{name}.lang
322 %defattr(644,root,root,755)
323 %attr(755,root,root) %{_bindir}/pipewire
324 %attr(755,root,root) %{_bindir}/pw-cat
325 %attr(755,root,root) %{_bindir}/pw-cli
326 %attr(755,root,root) %{_bindir}/pw-dot
327 %attr(755,root,root) %{_bindir}/pw-dsdplay
328 %attr(755,root,root) %{_bindir}/pw-dump
329 %attr(755,root,root) %{_bindir}/pw-link
330 %attr(755,root,root) %{_bindir}/pw-loopback
331 %attr(755,root,root) %{_bindir}/pw-metadata
332 %attr(755,root,root) %{_bindir}/pw-mididump
333 %attr(755,root,root) %{_bindir}/pw-midiplay
334 %attr(755,root,root) %{_bindir}/pw-midirecord
335 %attr(755,root,root) %{_bindir}/pw-mon
336 %attr(755,root,root) %{_bindir}/pw-play
337 %attr(755,root,root) %{_bindir}/pw-profiler
338 %attr(755,root,root) %{_bindir}/pw-record
339 %attr(755,root,root) %{_bindir}/pw-reserve
340 %attr(755,root,root) %{_bindir}/pw-top
341 %attr(755,root,root) %{_bindir}/pw-v4l2
342 %attr(755,root,root) %{_bindir}/spa-inspect
343 %attr(755,root,root) %{_bindir}/spa-json-dump
344 %attr(755,root,root) %{_bindir}/spa-monitor
346 %attr(755,root,root) %{_bindir}/spa-resample
347 %dir %{_sysconfdir}/pipewire
348 %dir %{_datadir}/pipewire
349 %{_datadir}/pipewire/client.conf
350 %{_datadir}/pipewire/client-rt.conf
351 %{_datadir}/pipewire/pipewire.conf
352 %dir %{_datadir}/pipewire/filter-chain
353 %{_datadir}/pipewire/filter-chain/demonic.conf
354 %{_datadir}/pipewire/filter-chain/sink-dolby-surround.conf
355 %{_datadir}/pipewire/filter-chain/sink-eq6.conf
356 %{_datadir}/pipewire/filter-chain/sink-matrix-spatialiser.conf
357 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-5.1-kemar.conf
358 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
359 %{_datadir}/pipewire/filter-chain/source-rnnoise.conf
360 %{systemduserunitdir}/pipewire.service
361 %{systemduserunitdir}/pipewire.socket
362 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
363 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
364 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
365 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
366 # R: webrtc-audio-processing >= 0.2
367 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-echo-cancel.so
368 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-filter-chain.so
369 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
370 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-loopback.so
371 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
373 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
374 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
376 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
377 # R: dbus-libs systemd-libs
378 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
379 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-simple.so
380 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-raop-discover.so
381 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-raop-sink.so
382 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rt.so
384 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
385 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
386 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
387 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
388 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
389 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
391 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-zeroconf-discover.so
392 %attr(755,root,root) %{_libdir}/pipewire-0.3/v4l2/libpw-v4l2.so
393 %dir %{_libdir}/spa-0.2/audioconvert
394 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
395 %dir %{_libdir}/spa-0.2/audiomixer
396 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
397 %dir %{_libdir}/spa-0.2/audiotestsrc
398 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
399 %dir %{_libdir}/spa-0.2/control
400 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
401 %dir %{_libdir}/spa-0.2/support
403 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
405 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
406 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
407 %dir %{_libdir}/spa-0.2/v4l2
409 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
410 %dir %{_libdir}/spa-0.2/videoconvert
411 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
412 %dir %{_libdir}/spa-0.2/videotestsrc
413 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
414 %dir %{_libdir}/spa-0.2/volume
415 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
416 %{_mandir}/man1/pipewire.1*
417 %{_mandir}/man1/pw-cat.1*
418 %{_mandir}/man1/pw-cli.1*
419 %{_mandir}/man1/pw-dot.1*
420 %{_mandir}/man1/pw-metadata.1*
421 %{_mandir}/man1/pw-mididump.1*
422 %{_mandir}/man1/pw-mon.1*
423 %{_mandir}/man1/pw-profiler.1*
424 %{_mandir}/man5/pipewire.conf.5*
427 %defattr(644,root,root,755)
428 %doc COPYING LICENSE NEWS README.md
429 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
430 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
431 %dir %{_libdir}/pipewire-0.3
432 %dir %{_libdir}/pipewire-0.3/v4l2
433 %dir %{_libdir}/spa-0.2
434 %dir %{_datadir}/spa-0.2
437 %defattr(644,root,root,755)
438 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
439 %{_includedir}/pipewire-0.3
440 %{_includedir}/spa-0.2
441 %{_pkgconfigdir}/libpipewire-0.3.pc
442 %{_pkgconfigdir}/libspa-0.2.pc
446 %defattr(644,root,root,755)
447 %doc build/doc/html/*
450 %files spa-module-alsa
451 %defattr(644,root,root,755)
452 %attr(755,root,root) %{_bindir}/spa-acp-tool
453 %dir %{_libdir}/spa-0.2/alsa
454 # R: alsa-lib udev-libs
455 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
456 %{_datadir}/alsa-card-profile
458 %files spa-module-bluez
459 %defattr(644,root,root,755)
460 %dir %{_libdir}/spa-0.2/bluez5
461 # R: bluez-libs >= 4.101 dbus-libs libusb >= 1.0 sbc
462 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
464 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aac.so
466 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aptx.so
468 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-faststream.so
470 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-ldac.so
472 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-sbc.so
473 %dir %{_datadir}/spa-0.2/bluez5
474 %{_datadir}/spa-0.2/bluez5/bluez-hardware.conf
476 %files spa-module-ffmpeg
477 %defattr(644,root,root,755)
478 %dir %{_libdir}/spa-0.2/ffmpeg
480 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
483 %files spa-module-jack
484 %defattr(644,root,root,755)
485 %dir %{_libdir}/spa-0.2/jack
486 # R: jack-audio-connection-kit-libs
487 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
490 %files spa-module-vulkan
491 %defattr(644,root,root,755)
492 %dir %{_libdir}/spa-0.2/vulkan
494 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
498 %defattr(644,root,root,755)
499 %attr(755,root,root) %{_bindir}/pw-jack
500 %dir %{_libdir}/pipewire-0.3/jack
501 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
502 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
503 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
504 %{_datadir}/pipewire/jack.conf
505 %{_mandir}/man1/pw-jack.1*
509 %defattr(644,root,root,755)
510 %attr(755,root,root) %{_bindir}/pipewire-pulse
512 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-pulse-tunnel.so
513 %{_datadir}/pipewire/pipewire-pulse.conf
514 %{systemduserunitdir}/pipewire-pulse.service
515 %{systemduserunitdir}/pipewire-pulse.socket
516 %{_mandir}/man1/pipewire-pulse.1*
518 %files -n alsa-plugin-pipewire
519 %defattr(644,root,root,755)
520 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
521 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
522 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
523 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
524 /lib/udev/rules.d/90-pipewire-alsa.rules
526 %if %{with gstreamer}
527 %files -n gstreamer-pipewire
528 %defattr(644,root,root,755)
529 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so