- build bluez with ldacBT and aptX codecs
[packages/pipewire.git] / pipewire.spec
1 # TODO: evl support (BR: libevl-devel, https://evlproject.org/)
2 # - libcamera integration (no releases yet; ARM specific?)
3 #
4 # Conditional build:
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 #
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
12 Name:           pipewire
13 Version:        0.3.24
14 Release:        1
15 License:        LGPL v2+
16 Group:          Libraries
17 #Source0Download: https://github.com/PipeWire/pipewire/releases
18 Source0:        https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
19 # Source0-md5:  887be3193a91f18c7ea63e3f5c61976b
20 Patch0:         %{name}-gcc.patch
21 URL:            https://pipewire.org/
22 %if %{with jack}
23 BuildRequires:  SDL2-devel >= 2
24 %endif
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
34 %if %{with gstreamer}
35 BuildRequires:  glib2-devel >= 1:2.32.0
36 %endif
37 %{?with_apidocs:BuildRequires:  graphviz}
38 %if %{with gstreamer}
39 BuildRequires:  gstreamer-devel >= 1.10
40 BuildRequires:  gstreamer-plugins-base-devel >= 1.10
41 %endif
42 %{?with_jack:BuildRequires:     jack-audio-connection-kit-devel >= 1.9.10}
43 BuildRequires:  ldacBT-devel
44 %ifarch i386 i486
45 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
46 BuildRequires:  libatomic-devel
47 %endif
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)
62
63 %description
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
68    clients.
69  - Accessing sources of video for consumption.
70  - Generating graphs for audio and video processing.
71
72 Nodes in the graph can be implemented as separate processes,
73 communicating with sockets and exchanging multimedia content using fd
74 passing.
75
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
81    ich do klientów
82  - dostęp do źródeł obrazu do pobierania
83  - generowanie grafów do przetwarzania dźwięku i obrazu
84
85 %package libs
86 Summary:        PipeWire shared library
87 Summary(pl.UTF-8):      Biblioteka współdzielona PipeWire
88 Group:          Libraries
89
90 %description libs
91 PipeWire shared library.
92
93 %description libs -l pl.UTF-8
94 Biblioteka współdzielona PipeWire.
95
96 %package devel
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}
101
102 %description devel
103 Header files for PipeWire library and Simple Plugin API.
104
105 %description devel -l pl.UTF-8
106 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
107
108 %package apidocs
109 Summary:        API documentation for PipeWire library
110 Summary(pl.UTF-8):      Dokumentacja API biblioteki PipeWire
111 Group:          Documentation
112 BuildArch:      noarch
113
114 %description apidocs
115 API documentation for PipeWire library.
116
117 %description apidocs -l pl.UTF-8
118 Dokumentacja API biblioteki PipeWire.
119
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
123 Group:          Libraries
124 Requires:       %{name}-libs = %{version}-%{release}
125 Requires:       alsa-lib >= 1.1.7
126
127 %description spa-module-alsa
128 PipeWire SPA plugin to play and record audio with ALSA API.
129
130 %description spa-module-alsa -l pl.UTF-8
131 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
132 API ALSA.
133
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
137 Group:          Libraries
138 Requires:       %{name}-libs = %{version}-%{release}
139 Requires:       bluez-libs >= 4.101
140
141 %description spa-module-bluez
142 PipeWire SPA plugin to play audio with Bluetooth A2DP.
143
144 %description spa-module-bluez -l pl.UTF-8
145 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
146
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
150 Group:          Libraries
151 Requires:       %{name}-libs = %{version}-%{release}
152
153 %description spa-module-ffmpeg
154 PipeWire SPA plugin to decode/encode with FFmpeg library.
155
156 %description spa-module-ffmpeg -l pl.UTF-8
157 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
158 FFmpeg.
159
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
163 Group:          Libraries
164 Requires:       %{name}-libs = %{version}-%{release}
165 Requires:       jack-audio-connection-kit >= 1.9.10
166
167 %description spa-module-jack
168 PipeWire SPA plugin to play and record audio with JACK API.
169
170 %description spa-module-jack -l pl.UTF-8
171 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
172 API JACK.
173
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
177 Group:          Libraries
178 Requires:       %{name}-libs = %{version}-%{release}
179 Requires:       Vulkan-Loader >= 1.1.69
180
181 %description spa-module-vulkan
182 PipeWire SPA plugin to generate video frames using Vulkan.
183
184 %description spa-module-vulkan -l pl.UTF-8
185 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
186
187 %package jack
188 Summary:        PipeWire JACK sound system integration
189 Summary(pl.UTF-8):      Integracja PipeWire z systemem dźwięku JACK
190 Group:          Libraries
191 Requires:       %{name} = %{version}-%{release}
192 Requires:       jack-audio-connection-kit >= 1.9.10
193
194 %description jack
195 PipeWire JACK sound system integration.
196
197 %description jack -l pl.UTF-8
198 Integracja PipeWire z systemem dźwięku JACK.
199
200 %package pulseaudio
201 Summary:        PipeWire PulseAudio sound system integration
202 Summary(pl.UTF-8):      Integracja PipeWire z systemem dźwięku PulseAudio
203 Group:          Libraries
204 Requires:       %{name} = %{version}-%{release}
205
206 %description pulseaudio
207 PipeWire PulseAudio sound system integration.
208
209 %description pulseaudio -l pl.UTF-8
210 Integracja PipeWire z systemem dźwięku PulseAudio.
211
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
215 Group:          Libraries
216 Requires:       %{name} = %{version}-%{release}
217 Requires:       alsa-lib >= 1.1.7
218
219 %description -n alsa-plugin-pipewire
220 PipeWire integration plugin for ALSA sound system.
221
222 %description -n alsa-plugin-pipewire -l pl.UTF-8
223 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
224
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
228 Group:          Libraries
229 Requires:       %{name} = %{version}-%{release}
230 Requires:       glib2 >= 1:2.32.0
231 Requires:       gstreamer >= 1.10
232 Requires:       gstreamer-plugins-base >= 1.10
233
234 %description -n gstreamer-pipewire
235 PipeWire video sink and source plugin for GStreamer.
236
237 %description -n gstreamer-pipewire -l pl.UTF-8
238 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
239
240 %prep
241 %setup -q
242 %patch0 -p1
243
244 %build
245 %meson build \
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} \
252         -Dman=enabled \
253         %{!?with_jack:-Dpipewire-jack=disabled} \
254         -Dvideotestsrc=enabled \
255         -Dvolume=enabled
256 # TODO: -Devl=enabled
257
258 %ninja_build -C build
259
260 %install
261 rm -rf $RPM_BUILD_ROOT
262
263 %ninja_install -C build
264
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
267
268 # packaged as %doc in -apidocs
269 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html
270
271 %find_lang %{name}
272
273 %clean
274 rm -rf $RPM_BUILD_ROOT
275
276 %post   libs -p /sbin/ldconfig
277 %postun libs -p /sbin/ldconfig
278
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-metadata
288 %attr(755,root,root) %{_bindir}/pw-mididump
289 %attr(755,root,root) %{_bindir}/pw-midiplay
290 %attr(755,root,root) %{_bindir}/pw-midirecord
291 %attr(755,root,root) %{_bindir}/pw-mon
292 %attr(755,root,root) %{_bindir}/pw-play
293 %attr(755,root,root) %{_bindir}/pw-profiler
294 %attr(755,root,root) %{_bindir}/pw-record
295 %attr(755,root,root) %{_bindir}/pw-reserve
296 %attr(755,root,root) %{_bindir}/pw-top
297 %attr(755,root,root) %{_bindir}/spa-inspect
298 %attr(755,root,root) %{_bindir}/spa-json-dump
299 %attr(755,root,root) %{_bindir}/spa-monitor
300 # R: libsndfile
301 %attr(755,root,root) %{_bindir}/spa-resample
302 %dir %{_sysconfdir}/pipewire
303 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client.conf
304 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client-rt.conf
305 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire.conf
306 %dir %{_sysconfdir}/pipewire/media-session.d
307 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/media-session.conf
308 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/v4l2-monitor.conf
309 %{systemduserunitdir}/pipewire.service
310 %{systemduserunitdir}/pipewire.socket
311 %{systemduserunitdir}/pipewire-media-session.service
312 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
313 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
314 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
315 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
316 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
317 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
318 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
319 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
320 # R: systemd-libs
321 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
322 # R: dbus-libs systemd-libs
323 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
324 # R: dbus-libs
325 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
326 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
327 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
328 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
329 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
330 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
331 %dir %{_libdir}/spa-0.2/audioconvert
332 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
333 %dir %{_libdir}/spa-0.2/audiomixer
334 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
335 %dir %{_libdir}/spa-0.2/audiotestsrc
336 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
337 %dir %{_libdir}/spa-0.2/control
338 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
339 %dir %{_libdir}/spa-0.2/support
340 # R: dbus-libs
341 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
342 # R: systemd-libs
343 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
344 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
345 %dir %{_libdir}/spa-0.2/v4l2
346 # R: udev-libs
347 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
348 %dir %{_libdir}/spa-0.2/videoconvert
349 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
350 %dir %{_libdir}/spa-0.2/videotestsrc
351 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
352 %dir %{_libdir}/spa-0.2/volume
353 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
354 %{_mandir}/man1/pipewire.1*
355 %{_mandir}/man1/pw-cat.1*
356 %{_mandir}/man1/pw-cli.1*
357 %{_mandir}/man1/pw-dot.1*
358 %{_mandir}/man1/pw-metadata.1*
359 %{_mandir}/man1/pw-mididump.1*
360 %{_mandir}/man1/pw-mon.1*
361 %{_mandir}/man1/pw-profiler.1*
362 %{_mandir}/man5/pipewire.conf.5*
363
364 %files libs
365 %defattr(644,root,root,755)
366 %doc COPYING LICENSE NEWS README.md
367 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
368 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
369 %dir %{_libdir}/pipewire-0.3
370 %dir %{_libdir}/spa-0.2
371
372 %files devel
373 %defattr(644,root,root,755)
374 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
375 %{_includedir}/pipewire-0.3
376 %{_includedir}/spa-0.2
377 %{_pkgconfigdir}/libpipewire-0.3.pc
378 %{_pkgconfigdir}/libspa-0.2.pc
379
380 %if %{with apidocs}
381 %files apidocs
382 %defattr(644,root,root,755)
383 %doc doc/design.txt build/doc/html/*
384 %endif
385
386 %files spa-module-alsa
387 %defattr(644,root,root,755)
388 %attr(755,root,root) %{_bindir}/spa-acp-tool
389 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/alsa-monitor.conf
390 %dir %{_libdir}/spa-0.2/alsa
391 # R: alsa-lib udev-libs
392 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
393 %{_datadir}/alsa-card-profile
394
395 %files spa-module-bluez
396 %defattr(644,root,root,755)
397 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/bluez-monitor.conf
398 %dir %{_libdir}/spa-0.2/bluez5
399 # R: dbus-libs sbc
400 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
401
402 %files spa-module-ffmpeg
403 %defattr(644,root,root,755)
404 %dir %{_libdir}/spa-0.2/ffmpeg
405 # R: ffmpeg-libs
406 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
407
408 %if %{with jack}
409 %files spa-module-jack
410 %defattr(644,root,root,755)
411 %dir %{_libdir}/spa-0.2/jack
412 # R: jack-audio-connection-kit-libs
413 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
414 %endif
415
416 %files spa-module-vulkan
417 %defattr(644,root,root,755)
418 %dir %{_libdir}/spa-0.2/vulkan
419 # R: Vulkan-Loader
420 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
421
422 %if %{with jack}
423 %files jack
424 %defattr(644,root,root,755)
425 %attr(755,root,root) %{_bindir}/pw-jack
426 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/jack.conf
427 %{_sysconfdir}/pipewire/media-session.d/with-jack
428 %dir %attr(755,root,root) %{_libdir}/pipewire-0.3/jack
429 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
430 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
431 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
432 %endif
433
434 %files pulseaudio
435 %defattr(644,root,root,755)
436 %attr(755,root,root) %{_bindir}/pipewire-pulse
437 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire-pulse.conf
438 %{_sysconfdir}/pipewire/media-session.d/with-pulseaudio
439 %{systemduserunitdir}/pipewire-pulse.service
440 %{systemduserunitdir}/pipewire-pulse.socket
441
442 %files -n alsa-plugin-pipewire
443 %defattr(644,root,root,755)
444 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
445 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
446 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
447 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
448 /lib/udev/rules.d/90-pipewire-alsa.rules
449
450 %if %{with gstreamer}
451 %files -n gstreamer-pipewire
452 %defattr(644,root,root,755)
453 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so
454 %endif
This page took 0.090758 seconds and 3 git commands to generate.