8cd2ff55a591ed48a7760da52c5846f965b87c22
[packages/pipewire.git] / pipewire.spec
1 # TODO: evl support (BR: libevl-devel, https://evlproject.org/)
2 #
3 # Conditional build:
4 %bcond_without  apidocs         # Doxygen based API documentation
5 %bcond_without  ffmpeg          # ffmpeg spa plugin integration
6 %bcond_without  gstreamer       # GStreamer module
7 %bcond_without  jack            # pipewire-jack and jack spa plugin integration
8 %bcond_without  pulseaudio      # pipewire-pulseaudio 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.12
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:  66f8577f1f9acaf012858c23c05d9322
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
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 # libavcodec libavformat libavfilter
31 %{?with_ffmpeg:BuildRequires:   ffmpeg-devel}
32 BuildRequires:  gcc >= 5:3.2
33 %if %{with gstreamer} || %{with pulseaudio}
34 BuildRequires:  glib2-devel >= 1:2.32.0
35 %endif
36 %{?with_apidocs:BuildRequires:  graphviz}
37 %if %{with gstreamer}
38 BuildRequires:  gstreamer-devel >= 1.10
39 BuildRequires:  gstreamer-plugins-base-devel >= 1.10
40 %endif
41 %{?with_jack:BuildRequires:     jack-audio-connection-kit-devel >= 1.9.10}
42 BuildRequires:  libsndfile-devel >= 1.0.20
43 BuildRequires:  meson >= 0.50.0
44 BuildRequires:  ninja >= 1.5
45 BuildRequires:  pkgconfig
46 %{?with_pulseaudio:BuildRequires:       pulseaudio-devel >= 11.1}
47 BuildRequires:  rpmbuild(macros) >= 1.736
48 BuildRequires:  sbc-devel
49 BuildRequires:  systemd-devel
50 BuildRequires:  udev-devel
51 BuildRequires:  xmltoman
52 Requires:       %{name}-libs = %{version}-%{release}
53 Requires:       libsndfile >= 1.0.20
54 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
55
56 %description
57 PipeWire is a server and user space API to deal with multimedia
58 pipelines. This includes:
59  - Making available sources of video (such as from a capture devices
60    or application provided streams) and multiplexing this with
61    clients.
62  - Accessing sources of video for consumption.
63  - Generating graphs for audio and video processing.
64
65 Nodes in the graph can be implemented as separate processes,
66 communicating with sockets and exchanging multimedia content using fd
67 passing.
68
69 %description -l pl.UTF-8
70 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
71 multimedialnych. Obejmuje to:
72  - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
73    lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
74    ich do klientów
75  - dostęp do źródeł obrazu do pobierania
76  - generowanie grafów do przetwarzania dźwięku i obrazu
77
78 %package libs
79 Summary:        PipeWire shared library
80 Summary(pl.UTF-8):      Biblioteka współdzielona PipeWire
81 Group:          Libraries
82
83 %description libs
84 PipeWire shared library.
85
86 %description libs -l pl.UTF-8
87 Biblioteka współdzielona PipeWire.
88
89 %package devel
90 Summary:        Header files for PipeWire library and Simple Plugin API
91 Summary(pl.UTF-8):      Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
92 Group:          Development/Libraries
93 Requires:       %{name}-libs = %{version}-%{release}
94
95 %description devel
96 Header files for PipeWire library and Simple Plugin API.
97
98 %description devel -l pl.UTF-8
99 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
100
101 %package apidocs
102 Summary:        API documentation for PipeWire library
103 Summary(pl.UTF-8):      Dokumentacja API biblioteki PipeWire
104 Group:          Documentation
105 %if "%{_rpmversion}" >= "4.6"
106 BuildArch:      noarch
107 %endif
108
109 %description apidocs
110 API documentation for PipeWire library.
111
112 %description apidocs -l pl.UTF-8
113 Dokumentacja API biblioteki PipeWire.
114
115 %package spa-module-alsa
116 Summary:        PipeWire SPA plugin to play and record audio with ALSA API
117 Summary(pl.UTF-8):      Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
118 Group:          Libraries
119 Requires:       %{name}-libs = %{version}-%{release}
120 Requires:       alsa-lib >= 1.1.7
121
122 %description spa-module-alsa
123 PipeWire SPA plugin to play and record audio with ALSA API.
124
125 %description spa-module-alsa -l pl.UTF-8
126 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
127 API ALSA.
128
129 %package spa-module-bluez
130 Summary:        PipeWire SPA plugin to play audio with Bluetooth A2DP
131 Summary(pl.UTF-8):      Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
132 Group:          Libraries
133 Requires:       %{name}-libs = %{version}-%{release}
134 Requires:       bluez-libs >= 4.101
135
136 %description spa-module-bluez
137 PipeWire SPA plugin to play audio with Bluetooth A2DP.
138
139 %description spa-module-bluez -l pl.UTF-8
140 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
141
142 %package spa-module-ffmpeg
143 Summary:        PipeWire SPA plugin to decode/encode with FFmpeg library
144 Summary(pl.UTF-8):      Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
145 Group:          Libraries
146 Requires:       %{name}-libs = %{version}-%{release}
147
148 %description spa-module-ffmpeg
149 PipeWire SPA plugin to decode/encode with FFmpeg library.
150
151 %description spa-module-ffmpeg -l pl.UTF-8
152 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
153 FFmpeg.
154
155 %package spa-module-jack
156 Summary:        PipeWire SPA plugin to play and record audio with JACK API
157 Summary(pl.UTF-8):      Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
158 Group:          Libraries
159 Requires:       %{name}-libs = %{version}-%{release}
160 Requires:       jack-audio-connection-kit >= 1.9.10
161
162 %description spa-module-jack
163 PipeWire SPA plugin to play and record audio with JACK API.
164
165 %description spa-module-jack -l pl.UTF-8
166 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
167 API JACK.
168
169 %package spa-module-vulkan
170 Summary:        PipeWire SPA plugin to generate video frames using Vulkan
171 Summary(pl.UTF-8):      Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
172 Group:          Libraries
173 Requires:       %{name}-libs = %{version}-%{release}
174
175 %description spa-module-vulkan
176 PipeWire SPA plugin to generate video frames using Vulkan.
177
178 %description spa-module-vulkan -l pl.UTF-8
179 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
180
181 %package jack
182 Summary:        PipeWire JACK sound system integration
183 Summary(pl.UTF-8):      Integracja PipeWire z systemem dźwięku JACK
184 Group:          Libraries
185 Requires:       %{name} = %{version}-%{release}
186 Requires:       jack-audio-connection-kit >= 1.9.10
187
188 %description jack
189 PipeWire JACK sound system integration.
190
191 %description jack -l pl.UTF-8
192 Integracja PipeWire z systemem dźwięku JACK.
193
194 %package pulseaudio
195 Summary:        PipeWire PulseAudio sound system integration
196 Summary(pl.UTF-8):      Integracja PipeWire z systemem dźwięku PulseAudio
197 Group:          Libraries
198 Requires:       %{name} = %{version}-%{release}
199 Requires:       glib2 >= 1:2.32.0
200 Requires:       pulseaudio >= 11.1
201
202 %description pulseaudio
203 PipeWire PulseAudio sound system integration.
204
205 %description pulseaudio -l pl.UTF-8
206 Integracja PipeWire z systemem dźwięku PulseAudio.
207
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
211 Group:          Libraries
212 Requires:       %{name} = %{version}-%{release}
213 Requires:       alsa-lib >= 1.1.7
214
215 %description -n alsa-plugin-pipewire
216 PipeWire integration plugin for ALSA sound system.
217
218 %description -n alsa-plugin-pipewire -l pl.UTF-8
219 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
220
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
224 Group:          Libraries
225 Requires:       %{name} = %{version}-%{release}
226 Requires:       glib2 >= 1:2.32.0
227 Requires:       gstreamer >= 1.10
228 Requires:       gstreamer-plugins-base >= 1.10
229
230 %description -n gstreamer-pipewire
231 PipeWire video sink and source plugin for GStreamer.
232
233 %description -n gstreamer-pipewire -l pl.UTF-8
234 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
235
236 %prep
237 %setup -q
238 %patch0 -p1
239
240 %build
241 %meson build \
242         -Daudiotestsrc=true \
243         %{?with_apidocs:-Ddocs=true} \
244         %{?with_ffmpeg:-Dffmpeg=true} \
245         %{!?with_gstreamer:-Dgstreamer=false} \
246         %{!?with_jack:-Djack=false} \
247         -Dman=true \
248         %{!?with_jack:-Dpipewire-jack=false} \
249         %{!?with_pulseaudio:-Dpipewire-pulseaudio=false} \
250         -Dvideotestsrc=true \
251         -Dvolume=true
252 # TODO: -Devl=true
253
254 %ninja_build -C build
255
256 %install
257 rm -rf $RPM_BUILD_ROOT
258
259 %ninja_install -C build
260
261 install -d $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
262 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
263
264 # packaged as %doc in -apidocs
265 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html
266
267 %clean
268 rm -rf $RPM_BUILD_ROOT
269
270 %post   libs -p /sbin/ldconfig
271 %postun libs -p /sbin/ldconfig
272
273 %files
274 %defattr(644,root,root,755)
275 %attr(755,root,root) %{_bindir}/pipewire
276 %attr(755,root,root) %{_bindir}/pipewire-media-session
277 %attr(755,root,root) %{_bindir}/pw-cat
278 %attr(755,root,root) %{_bindir}/pw-cli
279 %attr(755,root,root) %{_bindir}/pw-dot
280 %attr(755,root,root) %{_bindir}/pw-metadata
281 %attr(755,root,root) %{_bindir}/pw-mididump
282 %attr(755,root,root) %{_bindir}/pw-midiplay
283 %attr(755,root,root) %{_bindir}/pw-midirecord
284 %attr(755,root,root) %{_bindir}/pw-mon
285 %attr(755,root,root) %{_bindir}/pw-play
286 %attr(755,root,root) %{_bindir}/pw-record
287 %attr(755,root,root) %{_bindir}/pw-profiler
288 %attr(755,root,root) %{_bindir}/spa-inspect
289 %attr(755,root,root) %{_bindir}/spa-monitor
290 %dir %{_sysconfdir}/pipewire
291 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire.conf
292 %{systemduserunitdir}/pipewire.service
293 %{systemduserunitdir}/pipewire.socket
294 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
295 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
296 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
297 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
298 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
299 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
300 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
301 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
302 # R: systemd-libs
303 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
304 # R: dbus-libs
305 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
306 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
307 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
308 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
309 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
310 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
311 %dir %{_libdir}/spa-0.2/audioconvert
312 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
313 %dir %{_libdir}/spa-0.2/audiomixer
314 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
315 %dir %{_libdir}/spa-0.2/audiotestsrc
316 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
317 %dir %{_libdir}/spa-0.2/control
318 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
319 %dir %{_libdir}/spa-0.2/support
320 # R: dbus-libs
321 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
322 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
323 %dir %{_libdir}/spa-0.2/v4l2
324 # R: udev-libs
325 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
326 %dir %{_libdir}/spa-0.2/videoconvert
327 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
328 %dir %{_libdir}/spa-0.2/videotestsrc
329 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
330 %dir %{_libdir}/spa-0.2/volume
331 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
332 %{_mandir}/man1/pipewire.1*
333 %{_mandir}/man1/pw-cat.1*
334 %{_mandir}/man1/pw-cli.1*
335 %{_mandir}/man1/pw-dot.1*
336 %{_mandir}/man1/pw-metadata.1*
337 %{_mandir}/man1/pw-mididump.1*
338 %{_mandir}/man1/pw-mon.1*
339 %{_mandir}/man1/pw-profiler.1*
340 %{_mandir}/man1/pw-pulse.1*
341 %{_mandir}/man5/pipewire.conf.5*
342
343 %files libs
344 %defattr(644,root,root,755)
345 %doc COPYING LICENSE NEWS README.md
346 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
347 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
348 %dir %{_libdir}/pipewire-0.3
349 %dir %{_libdir}/spa-0.2
350
351 %files devel
352 %defattr(644,root,root,755)
353 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
354 %{_includedir}/pipewire-0.3
355 %{_includedir}/spa-0.2
356 %{_pkgconfigdir}/libpipewire-0.3.pc
357 %{_pkgconfigdir}/libspa-0.2.pc
358
359 %if %{with apidocs}
360 %files apidocs
361 %defattr(644,root,root,755)
362 %doc doc/design.txt build/doc/html/*
363 %endif
364
365 %files spa-module-alsa
366 %defattr(644,root,root,755)
367 %dir %{_libdir}/spa-0.2/alsa
368 # R: alsa-lib udev-libs
369 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
370 %{_datadir}/alsa-card-profile
371
372 %files spa-module-bluez
373 %defattr(644,root,root,755)
374 %dir %{_libdir}/spa-0.2/bluez5
375 # R: dbus-libs sbc
376 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
377
378 %files spa-module-ffmpeg
379 %defattr(644,root,root,755)
380 %dir %{_libdir}/spa-0.2/ffmpeg
381 # R: ffmpeg-libs
382 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
383
384 %if %{with jack}
385 %files spa-module-jack
386 %defattr(644,root,root,755)
387 %dir %{_libdir}/spa-0.2/jack
388 # R: jack-audio-connection-kit-libs
389 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
390 %endif
391
392 %files spa-module-vulkan
393 %defattr(644,root,root,755)
394 %dir %{_libdir}/spa-0.2/vulkan
395 # R: Vulkan-Loader
396 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
397
398 %if %{with jack}
399 %files jack
400 %defattr(644,root,root,755)
401 %attr(755,root,root) %{_bindir}/pw-jack
402 %dir %attr(755,root,root) %{_libdir}/pipewire-0.3/jack
403 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
404 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
405 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
406 %endif
407
408 %if %{with pulseaudio}
409 %files pulseaudio
410 %defattr(644,root,root,755)
411 %doc pipewire-pulseaudio/README.md
412 %attr(755,root,root) %{_bindir}/pw-pulse
413 %dir %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse
414 %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse-mainloop-glib.so*
415 %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse.so*
416 %attr(755,root,root) %{_libdir}/pipewire-0.3/pulse/libpulse-simple.so*
417 %endif
418
419 %files -n alsa-plugin-pipewire
420 %defattr(644,root,root,755)
421 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
422 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
423 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
424 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
425 /lib/udev/rules.d/90-pipewire-alsa.rules
426
427 %if %{with gstreamer}
428 %files -n gstreamer-pipewire
429 %defattr(644,root,root,755)
430 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so
431 %endif
This page took 0.116362 seconds and 2 git commands to generate.