1 # TODO: evl support (BR: libevl-devel, https://evlproject.org/)
2 # - libcamera integration (no releases yet; ARM specific?)
3 # - ldacBT-enc, ldacBT-abr, libopenaptx for bluez5 codecs
6 %bcond_without apidocs # Doxygen based API documentation
7 %bcond_without ffmpeg # ffmpeg spa plugin integration
8 %bcond_without gstreamer # GStreamer module
9 %bcond_without jack # pipewire-jack and jack spa plugin 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: 887be3193a91f18c7ea63e3f5c61976b
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 BuildRequires: fdk-aac-devel
32 # libavcodec libavformat libavfilter
33 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
34 BuildRequires: gcc >= 5:3.2
36 BuildRequires: glib2-devel >= 1:2.32.0
38 %{?with_apidocs:BuildRequires: graphviz}
40 BuildRequires: gstreamer-devel >= 1.10
41 BuildRequires: gstreamer-plugins-base-devel >= 1.10
43 %{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.10}
45 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
46 BuildRequires: libatomic-devel
48 BuildRequires: libsndfile-devel >= 1.0.20
49 BuildRequires: meson >= 0.50.0
50 BuildRequires: ncurses-devel
51 BuildRequires: ninja >= 1.5
52 BuildRequires: pkgconfig
53 BuildRequires: rpmbuild(macros) >= 1.752
54 BuildRequires: sbc-devel
55 BuildRequires: systemd-devel
56 BuildRequires: udev-devel
57 BuildRequires: xmltoman
58 Requires: %{name}-libs = %{version}-%{release}
59 Requires: libsndfile >= 1.0.20
60 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
63 PipeWire is a server and user space API to deal with multimedia
64 pipelines. This includes:
65 - Making available sources of video (such as from a capture devices
66 or application provided streams) and multiplexing this with
68 - Accessing sources of video for consumption.
69 - Generating graphs for audio and video processing.
71 Nodes in the graph can be implemented as separate processes,
72 communicating with sockets and exchanging multimedia content using fd
75 %description -l pl.UTF-8
76 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
77 multimedialnych. Obejmuje to:
78 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
79 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
81 - dostęp do źródeł obrazu do pobierania
82 - generowanie grafów do przetwarzania dźwięku i obrazu
85 Summary: PipeWire shared library
86 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
90 PipeWire shared library.
92 %description libs -l pl.UTF-8
93 Biblioteka współdzielona PipeWire.
96 Summary: Header files for PipeWire library and Simple Plugin API
97 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
98 Group: Development/Libraries
99 Requires: %{name}-libs = %{version}-%{release}
102 Header files for PipeWire library and Simple Plugin API.
104 %description devel -l pl.UTF-8
105 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
108 Summary: API documentation for PipeWire library
109 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
114 API documentation for PipeWire library.
116 %description apidocs -l pl.UTF-8
117 Dokumentacja API biblioteki PipeWire.
119 %package spa-module-alsa
120 Summary: PipeWire SPA plugin to play and record audio with ALSA API
121 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
123 Requires: %{name}-libs = %{version}-%{release}
124 Requires: alsa-lib >= 1.1.7
126 %description spa-module-alsa
127 PipeWire SPA plugin to play and record audio with ALSA API.
129 %description spa-module-alsa -l pl.UTF-8
130 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
133 %package spa-module-bluez
134 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
135 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
137 Requires: %{name}-libs = %{version}-%{release}
138 Requires: bluez-libs >= 4.101
140 %description spa-module-bluez
141 PipeWire SPA plugin to play audio with Bluetooth A2DP.
143 %description spa-module-bluez -l pl.UTF-8
144 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
146 %package spa-module-ffmpeg
147 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
148 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
150 Requires: %{name}-libs = %{version}-%{release}
152 %description spa-module-ffmpeg
153 PipeWire SPA plugin to decode/encode with FFmpeg library.
155 %description spa-module-ffmpeg -l pl.UTF-8
156 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
159 %package spa-module-jack
160 Summary: PipeWire SPA plugin to play and record audio with JACK API
161 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
163 Requires: %{name}-libs = %{version}-%{release}
164 Requires: jack-audio-connection-kit >= 1.9.10
166 %description spa-module-jack
167 PipeWire SPA plugin to play and record audio with JACK API.
169 %description spa-module-jack -l pl.UTF-8
170 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
173 %package spa-module-vulkan
174 Summary: PipeWire SPA plugin to generate video frames using Vulkan
175 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
177 Requires: %{name}-libs = %{version}-%{release}
178 Requires: Vulkan-Loader >= 1.1.69
180 %description spa-module-vulkan
181 PipeWire SPA plugin to generate video frames using Vulkan.
183 %description spa-module-vulkan -l pl.UTF-8
184 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
187 Summary: PipeWire JACK sound system integration
188 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
190 Requires: %{name} = %{version}-%{release}
191 Requires: jack-audio-connection-kit >= 1.9.10
194 PipeWire JACK sound system integration.
196 %description jack -l pl.UTF-8
197 Integracja PipeWire z systemem dźwięku JACK.
200 Summary: PipeWire PulseAudio sound system integration
201 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
203 Requires: %{name} = %{version}-%{release}
205 %description pulseaudio
206 PipeWire PulseAudio sound system integration.
208 %description pulseaudio -l pl.UTF-8
209 Integracja PipeWire z systemem dźwięku PulseAudio.
211 %package -n alsa-plugin-pipewire
212 Summary: PipeWire integration plugin for ALSA sound system
213 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
215 Requires: %{name} = %{version}-%{release}
216 Requires: alsa-lib >= 1.1.7
218 %description -n alsa-plugin-pipewire
219 PipeWire integration plugin for ALSA sound system.
221 %description -n alsa-plugin-pipewire -l pl.UTF-8
222 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
224 %package -n gstreamer-pipewire
225 Summary: PipeWire video sink and source plugin for GStreamer
226 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
228 Requires: %{name} = %{version}-%{release}
229 Requires: glib2 >= 1:2.32.0
230 Requires: gstreamer >= 1.10
231 Requires: gstreamer-plugins-base >= 1.10
233 %description -n gstreamer-pipewire
234 PipeWire video sink and source plugin for GStreamer.
236 %description -n gstreamer-pipewire -l pl.UTF-8
237 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
245 -Daudiotestsrc=enabled \
246 -Dbluez5-backend-hsphfpd=enabled \
247 %{?with_apidocs:-Ddocs=enabled} \
248 %{?with_ffmpeg:-Dffmpeg=enabled} \
249 %{!?with_gstreamer:-Dgstreamer=disabled} \
250 %{!?with_jack:-Djack=disabled} \
252 %{!?with_jack:-Dpipewire-jack=disabled} \
253 -Dvideotestsrc=enabled \
255 # TODO: -Devl=enabled
257 %ninja_build -C build
260 rm -rf $RPM_BUILD_ROOT
262 %ninja_install -C build
264 install -d $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
265 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
267 # packaged as %doc in -apidocs
268 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html
273 rm -rf $RPM_BUILD_ROOT
275 %post libs -p /sbin/ldconfig
276 %postun libs -p /sbin/ldconfig
278 %files -f %{name}.lang
279 %defattr(644,root,root,755)
280 %attr(755,root,root) %{_bindir}/pipewire
281 %attr(755,root,root) %{_bindir}/pipewire-media-session
282 %attr(755,root,root) %{_bindir}/pw-cat
283 %attr(755,root,root) %{_bindir}/pw-cli
284 %attr(755,root,root) %{_bindir}/pw-dot
285 %attr(755,root,root) %{_bindir}/pw-dump
286 %attr(755,root,root) %{_bindir}/pw-metadata
287 %attr(755,root,root) %{_bindir}/pw-mididump
288 %attr(755,root,root) %{_bindir}/pw-midiplay
289 %attr(755,root,root) %{_bindir}/pw-midirecord
290 %attr(755,root,root) %{_bindir}/pw-mon
291 %attr(755,root,root) %{_bindir}/pw-play
292 %attr(755,root,root) %{_bindir}/pw-profiler
293 %attr(755,root,root) %{_bindir}/pw-record
294 %attr(755,root,root) %{_bindir}/pw-reserve
295 %attr(755,root,root) %{_bindir}/pw-top
296 %attr(755,root,root) %{_bindir}/spa-inspect
297 %attr(755,root,root) %{_bindir}/spa-json-dump
298 %attr(755,root,root) %{_bindir}/spa-monitor
300 %attr(755,root,root) %{_bindir}/spa-resample
301 %dir %{_sysconfdir}/pipewire
302 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client.conf
303 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client-rt.conf
304 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire.conf
305 %dir %{_sysconfdir}/pipewire/media-session.d
306 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/media-session.conf
307 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/v4l2-monitor.conf
308 %{systemduserunitdir}/pipewire.service
309 %{systemduserunitdir}/pipewire.socket
310 %{systemduserunitdir}/pipewire-media-session.service
311 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
312 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
313 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
314 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
315 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
316 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
317 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
318 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
320 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
321 # R: dbus-libs systemd-libs
322 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
324 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
325 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
326 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
327 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
328 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
329 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
330 %dir %{_libdir}/spa-0.2/audioconvert
331 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
332 %dir %{_libdir}/spa-0.2/audiomixer
333 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
334 %dir %{_libdir}/spa-0.2/audiotestsrc
335 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
336 %dir %{_libdir}/spa-0.2/control
337 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
338 %dir %{_libdir}/spa-0.2/support
340 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
342 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
343 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
344 %dir %{_libdir}/spa-0.2/v4l2
346 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
347 %dir %{_libdir}/spa-0.2/videoconvert
348 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
349 %dir %{_libdir}/spa-0.2/videotestsrc
350 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
351 %dir %{_libdir}/spa-0.2/volume
352 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
353 %{_mandir}/man1/pipewire.1*
354 %{_mandir}/man1/pw-cat.1*
355 %{_mandir}/man1/pw-cli.1*
356 %{_mandir}/man1/pw-dot.1*
357 %{_mandir}/man1/pw-metadata.1*
358 %{_mandir}/man1/pw-mididump.1*
359 %{_mandir}/man1/pw-mon.1*
360 %{_mandir}/man1/pw-profiler.1*
361 %{_mandir}/man5/pipewire.conf.5*
364 %defattr(644,root,root,755)
365 %doc COPYING LICENSE NEWS README.md
366 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
367 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
368 %dir %{_libdir}/pipewire-0.3
369 %dir %{_libdir}/spa-0.2
372 %defattr(644,root,root,755)
373 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
374 %{_includedir}/pipewire-0.3
375 %{_includedir}/spa-0.2
376 %{_pkgconfigdir}/libpipewire-0.3.pc
377 %{_pkgconfigdir}/libspa-0.2.pc
381 %defattr(644,root,root,755)
382 %doc doc/design.txt build/doc/html/*
385 %files spa-module-alsa
386 %defattr(644,root,root,755)
387 %attr(755,root,root) %{_bindir}/spa-acp-tool
388 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/alsa-monitor.conf
389 %dir %{_libdir}/spa-0.2/alsa
390 # R: alsa-lib udev-libs
391 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
392 %{_datadir}/alsa-card-profile
394 %files spa-module-bluez
395 %defattr(644,root,root,755)
396 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/bluez-monitor.conf
397 %dir %{_libdir}/spa-0.2/bluez5
399 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
401 %files spa-module-ffmpeg
402 %defattr(644,root,root,755)
403 %dir %{_libdir}/spa-0.2/ffmpeg
405 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
408 %files spa-module-jack
409 %defattr(644,root,root,755)
410 %dir %{_libdir}/spa-0.2/jack
411 # R: jack-audio-connection-kit-libs
412 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
415 %files spa-module-vulkan
416 %defattr(644,root,root,755)
417 %dir %{_libdir}/spa-0.2/vulkan
419 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
423 %defattr(644,root,root,755)
424 %attr(755,root,root) %{_bindir}/pw-jack
425 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/jack.conf
426 %{_sysconfdir}/pipewire/media-session.d/with-jack
427 %dir %attr(755,root,root) %{_libdir}/pipewire-0.3/jack
428 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
429 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
430 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
434 %defattr(644,root,root,755)
435 %attr(755,root,root) %{_bindir}/pipewire-pulse
436 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire-pulse.conf
437 %{_sysconfdir}/pipewire/media-session.d/with-pulseaudio
438 %{systemduserunitdir}/pipewire-pulse.service
439 %{systemduserunitdir}/pipewire-pulse.socket
441 %files -n alsa-plugin-pipewire
442 %defattr(644,root,root,755)
443 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
444 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
445 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
446 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
447 /lib/udev/rules.d/90-pipewire-alsa.rules
449 %if %{with gstreamer}
450 %files -n gstreamer-pipewire
451 %defattr(644,root,root,755)
452 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so