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
10 Summary: PipeWire - server and user space API to deal with multimedia pipelines
11 Summary(pl.UTF-8): PipeWire - serwer i API przestrzeni użytkownika do obsługi potoków multimedialnych
17 #Source0Download: https://github.com/PipeWire/pipewire/releases
18 Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
19 # Source0-md5: 85949d26d49646b79dece9a0f49ed47d
20 Patch0: %{name}-gcc.patch
21 URL: https://pipewire.org/
23 BuildRequires: SDL2-devel >= 2
25 BuildRequires: Vulkan-Loader-devel >= 1.1.69
26 BuildRequires: alsa-lib-devel >= 1.1.7
27 BuildRequires: bluez-libs-devel >= 4.101
28 BuildRequires: dbus-devel
29 %{?with_apidocs:BuildRequires: doxygen}
30 BuildRequires: fdk-aac-devel
31 # libavcodec libavformat libavfilter
32 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
33 BuildRequires: gcc >= 5:3.2
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: ldacBT-devel
45 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
46 BuildRequires: libatomic-devel
48 BuildRequires: libopenaptx-devel
49 BuildRequires: libsndfile-devel >= 1.0.20
50 BuildRequires: meson >= 0.50.0
51 BuildRequires: ncurses-devel
52 BuildRequires: ninja >= 1.5
53 BuildRequires: pkgconfig
54 BuildRequires: rpmbuild(macros) >= 1.752
55 BuildRequires: sbc-devel
56 BuildRequires: systemd-devel
57 BuildRequires: udev-devel
58 BuildRequires: xmltoman
59 Requires: %{name}-libs = %{version}-%{release}
60 Requires: libsndfile >= 1.0.20
61 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
64 PipeWire is a server and user space API to deal with multimedia
65 pipelines. This includes:
66 - Making available sources of video (such as from a capture devices
67 or application provided streams) and multiplexing this with
69 - Accessing sources of video for consumption.
70 - Generating graphs for audio and video processing.
72 Nodes in the graph can be implemented as separate processes,
73 communicating with sockets and exchanging multimedia content using fd
76 %description -l pl.UTF-8
77 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
78 multimedialnych. Obejmuje to:
79 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
80 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
82 - dostęp do źródeł obrazu do pobierania
83 - generowanie grafów do przetwarzania dźwięku i obrazu
86 Summary: PipeWire shared library
87 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
91 PipeWire shared library.
93 %description libs -l pl.UTF-8
94 Biblioteka współdzielona PipeWire.
97 Summary: Header files for PipeWire library and Simple Plugin API
98 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
99 Group: Development/Libraries
100 Requires: %{name}-libs = %{version}-%{release}
103 Header files for PipeWire library and Simple Plugin API.
105 %description devel -l pl.UTF-8
106 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
109 Summary: API documentation for PipeWire library
110 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
115 API documentation for PipeWire library.
117 %description apidocs -l pl.UTF-8
118 Dokumentacja API biblioteki PipeWire.
120 %package spa-module-alsa
121 Summary: PipeWire SPA plugin to play and record audio with ALSA API
122 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
124 Requires: %{name}-libs = %{version}-%{release}
125 Requires: alsa-lib >= 1.1.7
127 %description spa-module-alsa
128 PipeWire SPA plugin to play and record audio with ALSA API.
130 %description spa-module-alsa -l pl.UTF-8
131 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
134 %package spa-module-bluez
135 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
136 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
138 Requires: %{name}-libs = %{version}-%{release}
139 Requires: bluez-libs >= 4.101
141 %description spa-module-bluez
142 PipeWire SPA plugin to play audio with Bluetooth A2DP.
144 %description spa-module-bluez -l pl.UTF-8
145 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
147 %package spa-module-ffmpeg
148 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
149 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
151 Requires: %{name}-libs = %{version}-%{release}
153 %description spa-module-ffmpeg
154 PipeWire SPA plugin to decode/encode with FFmpeg library.
156 %description spa-module-ffmpeg -l pl.UTF-8
157 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
160 %package spa-module-jack
161 Summary: PipeWire SPA plugin to play and record audio with JACK API
162 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
164 Requires: %{name}-libs = %{version}-%{release}
165 Requires: jack-audio-connection-kit >= 1.9.10
167 %description spa-module-jack
168 PipeWire SPA plugin to play and record audio with JACK API.
170 %description spa-module-jack -l pl.UTF-8
171 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
174 %package spa-module-vulkan
175 Summary: PipeWire SPA plugin to generate video frames using Vulkan
176 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
178 Requires: %{name}-libs = %{version}-%{release}
179 Requires: Vulkan-Loader >= 1.1.69
181 %description spa-module-vulkan
182 PipeWire SPA plugin to generate video frames using Vulkan.
184 %description spa-module-vulkan -l pl.UTF-8
185 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
188 Summary: PipeWire JACK sound system integration
189 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
191 Requires: %{name} = %{version}-%{release}
192 Requires: jack-audio-connection-kit >= 1.9.10
195 PipeWire JACK sound system integration.
197 %description jack -l pl.UTF-8
198 Integracja PipeWire z systemem dźwięku JACK.
201 Summary: PipeWire PulseAudio sound system integration
202 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
204 Requires: %{name} = %{version}-%{release}
206 %description pulseaudio
207 PipeWire PulseAudio sound system integration.
209 %description pulseaudio -l pl.UTF-8
210 Integracja PipeWire z systemem dźwięku PulseAudio.
212 %package -n alsa-plugin-pipewire
213 Summary: PipeWire integration plugin for ALSA sound system
214 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
216 Requires: %{name} = %{version}-%{release}
217 Requires: alsa-lib >= 1.1.7
219 %description -n alsa-plugin-pipewire
220 PipeWire integration plugin for ALSA sound system.
222 %description -n alsa-plugin-pipewire -l pl.UTF-8
223 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
225 %package -n gstreamer-pipewire
226 Summary: PipeWire video sink and source plugin for GStreamer
227 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
229 Requires: %{name} = %{version}-%{release}
230 Requires: glib2 >= 1:2.32.0
231 Requires: gstreamer >= 1.10
232 Requires: gstreamer-plugins-base >= 1.10
234 %description -n gstreamer-pipewire
235 PipeWire video sink and source plugin for GStreamer.
237 %description -n gstreamer-pipewire -l pl.UTF-8
238 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
246 -Daudiotestsrc=enabled \
247 -Dbluez5-backend-hsphfpd=enabled \
248 %{?with_apidocs:-Ddocs=enabled} \
249 %{?with_ffmpeg:-Dffmpeg=enabled} \
250 %{!?with_gstreamer:-Dgstreamer=disabled} \
251 %{!?with_jack:-Djack=disabled} \
253 %{!?with_jack:-Dpipewire-jack=disabled} \
254 -Dvideotestsrc=enabled \
256 # TODO: -Devl=enabled
258 %ninja_build -C build
261 rm -rf $RPM_BUILD_ROOT
263 %ninja_install -C build
265 install -d $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
266 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
268 # packaged as %doc in -apidocs
269 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html
274 rm -rf $RPM_BUILD_ROOT
276 %post libs -p /sbin/ldconfig
277 %postun libs -p /sbin/ldconfig
279 %files -f %{name}.lang
280 %defattr(644,root,root,755)
281 %attr(755,root,root) %{_bindir}/pipewire
282 %attr(755,root,root) %{_bindir}/pipewire-media-session
283 %attr(755,root,root) %{_bindir}/pw-cat
284 %attr(755,root,root) %{_bindir}/pw-cli
285 %attr(755,root,root) %{_bindir}/pw-dot
286 %attr(755,root,root) %{_bindir}/pw-dump
287 %attr(755,root,root) %{_bindir}/pw-link
288 %attr(755,root,root) %{_bindir}/pw-loopback
289 %attr(755,root,root) %{_bindir}/pw-metadata
290 %attr(755,root,root) %{_bindir}/pw-mididump
291 %attr(755,root,root) %{_bindir}/pw-midiplay
292 %attr(755,root,root) %{_bindir}/pw-midirecord
293 %attr(755,root,root) %{_bindir}/pw-mon
294 %attr(755,root,root) %{_bindir}/pw-play
295 %attr(755,root,root) %{_bindir}/pw-profiler
296 %attr(755,root,root) %{_bindir}/pw-record
297 %attr(755,root,root) %{_bindir}/pw-reserve
298 %attr(755,root,root) %{_bindir}/pw-top
299 %attr(755,root,root) %{_bindir}/spa-inspect
300 %attr(755,root,root) %{_bindir}/spa-json-dump
301 %attr(755,root,root) %{_bindir}/spa-monitor
303 %attr(755,root,root) %{_bindir}/spa-resample
304 %dir %{_sysconfdir}/pipewire
305 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client.conf
306 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client-rt.conf
307 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire.conf
308 %dir %{_sysconfdir}/pipewire/media-session.d
309 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/media-session.conf
310 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/v4l2-monitor.conf
311 %{systemduserunitdir}/pipewire.service
312 %{systemduserunitdir}/pipewire.socket
313 %{systemduserunitdir}/pipewire-media-session.service
314 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
315 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
316 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
317 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
318 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-echo-cancel.so
319 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
320 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-loopback.so
321 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
322 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
323 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
325 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
326 # R: dbus-libs systemd-libs
327 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
328 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-simple.so
330 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
331 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
332 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
333 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
334 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
335 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
336 %dir %{_libdir}/spa-0.2/audioconvert
337 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
338 %dir %{_libdir}/spa-0.2/audiomixer
339 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
340 %dir %{_libdir}/spa-0.2/audiotestsrc
341 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
342 %dir %{_libdir}/spa-0.2/control
343 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
344 %dir %{_libdir}/spa-0.2/support
346 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
348 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
349 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
350 %dir %{_libdir}/spa-0.2/v4l2
352 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
353 %dir %{_libdir}/spa-0.2/videoconvert
354 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
355 %dir %{_libdir}/spa-0.2/videotestsrc
356 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
357 %dir %{_libdir}/spa-0.2/volume
358 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
359 %{_mandir}/man1/pipewire.1*
360 %{_mandir}/man1/pw-cat.1*
361 %{_mandir}/man1/pw-cli.1*
362 %{_mandir}/man1/pw-dot.1*
363 %{_mandir}/man1/pw-metadata.1*
364 %{_mandir}/man1/pw-mididump.1*
365 %{_mandir}/man1/pw-mon.1*
366 %{_mandir}/man1/pw-profiler.1*
367 %{_mandir}/man5/pipewire.conf.5*
370 %defattr(644,root,root,755)
371 %doc COPYING LICENSE NEWS README.md
372 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
373 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
374 %dir %{_libdir}/pipewire-0.3
375 %dir %{_libdir}/spa-0.2
378 %defattr(644,root,root,755)
379 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
380 %{_includedir}/pipewire-0.3
381 %{_includedir}/spa-0.2
382 %{_pkgconfigdir}/libpipewire-0.3.pc
383 %{_pkgconfigdir}/libspa-0.2.pc
387 %defattr(644,root,root,755)
388 %doc doc/design.txt build/doc/html/*
391 %files spa-module-alsa
392 %defattr(644,root,root,755)
393 %attr(755,root,root) %{_bindir}/spa-acp-tool
394 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/alsa-monitor.conf
395 %dir %{_libdir}/spa-0.2/alsa
396 # R: alsa-lib udev-libs
397 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
398 %{_datadir}/alsa-card-profile
400 %files spa-module-bluez
401 %defattr(644,root,root,755)
402 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/bluez-monitor.conf
403 %dir %{_libdir}/spa-0.2/bluez5
405 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
407 %files spa-module-ffmpeg
408 %defattr(644,root,root,755)
409 %dir %{_libdir}/spa-0.2/ffmpeg
411 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
414 %files spa-module-jack
415 %defattr(644,root,root,755)
416 %dir %{_libdir}/spa-0.2/jack
417 # R: jack-audio-connection-kit-libs
418 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
421 %files spa-module-vulkan
422 %defattr(644,root,root,755)
423 %dir %{_libdir}/spa-0.2/vulkan
425 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
429 %defattr(644,root,root,755)
430 %attr(755,root,root) %{_bindir}/pw-jack
431 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/jack.conf
432 %{_sysconfdir}/pipewire/media-session.d/with-jack
433 %dir %attr(755,root,root) %{_libdir}/pipewire-0.3/jack
434 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
435 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
436 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
437 %{_mandir}/man1/pw-jack.1*
441 %defattr(644,root,root,755)
442 %attr(755,root,root) %{_bindir}/pipewire-pulse
443 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire-pulse.conf
444 %{_sysconfdir}/pipewire/media-session.d/with-pulseaudio
445 %{systemduserunitdir}/pipewire-pulse.service
446 %{systemduserunitdir}/pipewire-pulse.socket
448 %files -n alsa-plugin-pipewire
449 %defattr(644,root,root,755)
450 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
451 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
452 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
453 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
454 /lib/udev/rules.d/90-pipewire-alsa.rules
456 %if %{with gstreamer}
457 %files -n gstreamer-pipewire
458 %defattr(644,root,root,755)
459 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so