udev-detect: Changes default latency 50ms to 25ms
[platform/upstream/pulseaudio.git] / packaging / pulseaudio.spec
1 %define udev_dir %{_prefix}/lib/udev
2 %global _vpath_builddir build
3
4 Name:             pulseaudio
5 Summary:          Improved Linux sound server
6 Version:          15.0
7 Release:          30
8 Group:            Multimedia/Audio
9 License:          LGPL-2.1
10 URL:              http://pulseaudio.org
11 Source0:          http://www.freedesktop.org/software/pulseaudio/releases/%{name}-%{version}.tar.gz
12 Source1001:       pulseaudio.manifest
13 BuildRequires:    libtool-ltdl-devel
14 BuildRequires:    libtool
15 BuildRequires:    intltool
16 BuildRequires:    fdupes
17 BuildRequires:    meson >= 0.50.0
18 BuildRequires:    pkgconfig(speexdsp)
19 BuildRequires:    pkgconfig(sndfile)
20 BuildRequires:    pkgconfig(alsa)
21 BuildRequires:    pkgconfig(glib-2.0)
22 %if "%{tizen_profile_name}" != "tv"
23 BuildRequires:    pkgconfig(sbc)
24 %endif
25 BuildRequires:    pkgconfig(dbus-1)
26 BuildRequires:    pkgconfig(libudev)
27 BuildRequires:    pkgconfig(openssl3)
28 BuildRequires:    pkgconfig(json-c)
29 BuildRequires:    pkgconfig(dlog)
30 BuildRequires:    pkgconfig(cynara-client)
31 BuildRequires:    pkgconfig(cynara-creds-socket)
32 BuildRequires:    pkgconfig(cynara-session)
33 BuildRequires:    pkgconfig(vconf)
34 BuildRequires:    systemd-devel
35 BuildRequires:    libcap-devel
36 BuildRequires:    doxygen
37 %if "%{tizen_profile_name}" == "tv"
38 BuildRequires:    pkgconfig(lwipc)
39 BuildRequires:    pkgconfig(capi-boost-tv)
40 BuildRequires:    pkgconfig(capi-system-info)
41 %endif
42 Requires:         udev
43 Requires(post):   /sbin/ldconfig
44 Requires(postun): /sbin/ldconfig
45
46 %description
47 PulseAudio is a sound server for Linux and other Unix like operating
48 systems. It is intended to be an improved drop-in replacement for the
49 Enlightened Sound Daemon (ESOUND).
50
51 %package -n libpulse
52 Summary:    PulseAudio client libraries
53 Group:      Multimedia/Audio
54
55 %description -n libpulse
56 Client libraries used by applications that access a PulseAudio sound server
57 via PulseAudio's native interface.
58
59 %package -n libpulse-mainloop-glib
60 Summary:        GLIB  2
61 Group:          Multimedia/Audio
62
63 %description -n libpulse-mainloop-glib
64 pulseaudio is a networked sound server for Linux and other Unix like
65 operating systems and Microsoft Windows. It is intended to be an
66 improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
67
68 This package contains the GLIB Main Loop bindings for the PulseAudio
69 sound server.
70
71 %package -n libpulse-devel
72 Summary:    PulseAudio client development headers and libraries
73 Group:      Multimedia/Development
74 Requires:   libpulse = %{version}
75 Requires:   libpulse-mainloop-glib = %{version}
76
77 %description -n libpulse-devel
78 Headers and libraries for developing applications that access a PulseAudio
79 sound server via PulseAudio's native interface
80
81 %package utils
82 Summary:    Command line tools for the PulseAudio sound server
83 Group:      Multimedia/Audio
84 Requires:   %{name} = %{version}-%{release}
85
86 %description utils
87 These tools provide command line access to various features of the
88 PulseAudio sound server. Included tools are:
89 pabrowse - Browse available PulseAudio servers on the local network.
90 paplay - Playback a WAV file via a PulseAudio sink.
91 pacat - Cat raw audio data to a PulseAudio sink.
92 parec - Cat raw audio data from a PulseAudio source.
93 pacmd - Connect to PulseAudio's built-in command line control interface.
94 pactl - Send a control command to a PulseAudio server.
95 padsp - /dev/dsp wrapper to transparently support OSS applications.
96 pax11publish - Store/retrieve PulseAudio default server/sink/source
97 settings in the X11 root window.
98
99 %package module-bluetooth
100 Summary:    Bluetooth module for PulseAudio sound server
101 Group:      Multimedia/Audio
102 Requires:   %{name} = %{version}-%{release}
103
104 %description module-bluetooth
105 This module enables PulseAudio to work with bluetooth devices, like headset
106 or audio gateway
107
108 %package config
109 Summary: PA default configuration
110 Group: System Environment/Configuration
111
112 %description config
113 Default configuration for PulseAudio.
114
115 %package module-raop
116 Summary: PA module-raop
117 Group:   Multimedia/Audio
118
119 %description module-raop
120 PulseAudio module-raop.
121
122 %package module-augment-properties
123 Summary: PA module-augment-properties
124 Group:   Multimedia/Audio
125
126 %description module-augment-properties
127 PulseAudio module-augment-properties.
128
129 %package module-dbus-protocol
130 Summary: PA module-dbus-protocol
131 Group:   Multimedia/Audio
132
133 %description module-dbus-protocol
134 PulseAudio module-dbus-protocol.
135
136 %package module-switch-on-connect
137 Summary: PA module-swich-on-connect
138 Group:   Multimedia/Audio
139
140 %description module-switch-on-connect
141 PulseAudio module-swich-on-connect.
142
143 %package vala-bindings
144 Summary:    PA Vala bindings
145 Group:      Multimedia/Audio
146 Requires:   %{name} = %{version}-%{release}
147
148 %description vala-bindings
149 PulseAudio Vala bindings.
150
151 %package realtime-scheduling
152 Summary:    PA realtime scheduling
153 Group:      Multimedia/Audio
154 Requires:   %{name} = %{version}-%{release}
155 Requires:   libcap-tools
156
157 %description realtime-scheduling
158 PulseAudio realtime-scheduling.
159
160 %prep
161 %setup -q -T -b0
162 echo "%{version}" > .tarball-version
163 cp %{SOURCE1001} .
164 %if "%{tizen_profile_name}" == "tv"
165 cp src/daemon/systemd/system/pulseaudio-tv.service.in src/daemon/systemd/system/pulseaudio.service.in
166 %endif
167
168 %build
169 export CFLAGS="%{optflags} -fno-strict-aliasing -D__TIZEN__ -DTIZEN_BT_A2DP_MULTISTREAM -D__TIZEN_BT__ -D__TIZEN_LOG__ %{?asan:-ldl -fPIC }"
170 %if 0%{?sec_build_binary_debug_enable}
171 export CFLAGS+=" -DTIZEN_DEBUG_ENABLE"
172 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
173 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
174 %endif
175
176 %if "%{tizen_profile_name}" == "mobile"
177 echo "tizen profile mobile"
178 export CFLAGS+=" -DTIZEN_PROFILE_MOBILE "
179 %endif
180
181 %if "%{tizen_profile_name}" == "wearable"
182 echo "tizen profile wearable"
183 export CFLAGS+=" -DTIZEN_PROFILE_WEARABLE"
184 %endif
185
186 %if "%{tizen_profile_name}" == "tv"
187 echo "tizen profile tv"
188 export CFLAGS+=" -DTIZEN_TV_PROD "
189 %endif
190
191 export LD_AS_NEEDED=0
192
193 mkdir -p %{_vpath_builddir}
194 %meson --auto-features=auto \
195     -Dhal-datadir=%{_hal_datadir} \
196     -Dhal-sysconfdir=%{_hal_sysconfdir} \
197     -Dtests=false \
198     -Ddatabase=simple \
199     -Dbluez5-native-headset=false \
200     -Dgsettings=disabled \
201     -Dhal-compat=false \
202     -Dipv6=false \
203 %if "%{tizen_profile_name}" == "tv"
204     -Dprelink=true \
205     -Dlwipc=true \
206     -Dbluez5=false \
207     -Dcpu-boosting=true \
208 %endif
209     -Doss-output=disabled \
210     -Dudevrulesdir=%{udev_dir}/rules.d
211
212 %meson_build
213
214 %install
215 %meson_install
216 %find_lang %{name}
217
218 rm -rf  %{buildroot}%{_sysconfdir}/xdg/autostart/pulseaudio-kde.desktop
219 rm -rf  %{buildroot}%{_bindir}/start-pulseaudio-kde
220 rm -rf  %{buildroot}%{_bindir}/start-pulseaudio-x11
221 rm -rf  %{buildroot}%{_libdir}/pulse-%{version}/modules/module-device-manager.so
222 rm -rf  %{buildroot}%{_libdir}/pulse-%{version}/modules/module-systemd-login.so
223 mkdir -p %{buildroot}%{_includedir}/pulsecore/filter
224 cp %{buildroot}%{_includedir}/pulsecore/lfe-filter.h %{buildroot}%{_includedir}/pulsecore/filter
225
226 %if "%{tizen_profile_name}" == "tv"
227 mkdir -p %{buildroot}%{_unitdir}/sysinit.target.wants/
228 ln -s  ../pulseaudio.service  %{buildroot}%{_unitdir}/sysinit.target.wants/pulseaudio.service
229 %else
230 mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants/
231 ln -s  ../pulseaudio.service  %{buildroot}%{_unitdir}/multi-user.target.wants/pulseaudio.service
232 %endif
233
234 fdupes  %{buildroot}%{_hal_datadir}
235 fdupes  %{buildroot}%{_includedir}
236
237 # get rid of *.la files
238 rm -f %{buildroot}%{_libdir}/*.la
239 rm -f %{buildroot}%{_libdir}/pulseaudio/*.la
240
241 %post
242 /sbin/ldconfig
243
244 %preun
245
246 %postun -p /sbin/ldconfig
247
248 %post   -n libpulse -p /sbin/ldconfig
249 %postun -n libpulse -p /sbin/ldconfig
250
251 %post   -n libpulse-mainloop-glib -p /sbin/ldconfig
252 %postun -n libpulse-mainloop-glib -p /sbin/ldconfig
253
254 %post   realtime-scheduling
255 setcap cap_sys_nice+ep /usr/bin/pulseaudio
256
257 %postun realtime-scheduling
258 setcap -r /usr/bin/pulseaudio
259
260 %lang_package
261
262 %files
263 %manifest %{name}.manifest
264 %defattr(-,root,root,-)
265 %license LICENSE LGPL
266 %{_bindir}/pulseaudio
267 %{_libdir}/pulseaudio/libpulsecore-%{version}.so
268 %{udev_dir}/rules.d/90-pulseaudio.rules
269 %config(noreplace) /etc/dbus-1/system.d/pulseaudio-system.conf
270 # list all modules
271 %{_libdir}/pulse-%{version}/modules/libalsa-util.so
272 %{_libdir}/pulse-%{version}/modules/libcli.so
273 %{_libdir}/pulse-%{version}/modules/libprotocol-cli.so
274 %{_libdir}/pulse-%{version}/modules/libprotocol-http.so
275 %{_libdir}/pulse-%{version}/modules/libprotocol-native.so
276 %{_libdir}/pulse-%{version}/modules/libprotocol-simple.so
277 %{_libdir}/pulse-%{version}/modules/librtp.so
278 %{_libdir}/pulse-%{version}/modules/module-allow-passthrough.so
279 %{_libdir}/pulse-%{version}/modules/module-alsa-card.so
280 %{_libdir}/pulse-%{version}/modules/module-alsa-sink.so
281 %{_libdir}/pulse-%{version}/modules/module-alsa-source.so
282 %{_libdir}/pulse-%{version}/modules/module-always-sink.so
283 %{_libdir}/pulse-%{version}/modules/module-always-source.so
284 %{_libdir}/pulse-%{version}/modules/module-card-restore.so
285 %{_libdir}/pulse-%{version}/modules/module-cli-protocol-tcp.so
286 %{_libdir}/pulse-%{version}/modules/module-cli-protocol-unix.so
287 %{_libdir}/pulse-%{version}/modules/module-cli.so
288 %{_libdir}/pulse-%{version}/modules/module-combine.so
289 %{_libdir}/pulse-%{version}/modules/module-combine-sink.so
290 %{_libdir}/pulse-%{version}/modules/module-console-kit.so
291 %{_libdir}/pulse-%{version}/modules/module-default-device-restore.so
292 %{_libdir}/pulse-%{version}/modules/module-detect.so
293 %{_libdir}/pulse-%{version}/modules/module-device-restore.so
294 %{_libdir}/pulse-%{version}/modules/module-echo-cancel.so
295 %{_libdir}/pulse-%{version}/modules/module-filter-apply.so
296 %{_libdir}/pulse-%{version}/modules/module-filter-heuristics.so
297 %{_libdir}/pulse-%{version}/modules/module-http-protocol-tcp.so
298 %{_libdir}/pulse-%{version}/modules/module-http-protocol-unix.so
299 %{_libdir}/pulse-%{version}/modules/module-intended-roles.so
300 %{_libdir}/pulse-%{version}/modules/module-ladspa-sink.so
301 %{_libdir}/pulse-%{version}/modules/module-loopback.so
302 %{_libdir}/pulse-%{version}/modules/module-match.so
303 %{_libdir}/pulse-%{version}/modules/module-mmkbd-evdev.so
304 %{_libdir}/pulse-%{version}/modules/module-native-protocol-fd.so
305 %{_libdir}/pulse-%{version}/modules/module-native-protocol-tcp.so
306 %{_libdir}/pulse-%{version}/modules/module-native-protocol-unix.so
307 %{_libdir}/pulse-%{version}/modules/module-null-sink.so
308 %{_libdir}/pulse-%{version}/modules/module-null-source.so
309 %{_libdir}/pulse-%{version}/modules/module-pipe-sink.so
310 %{_libdir}/pulse-%{version}/modules/module-pipe-source.so
311 %{_libdir}/pulse-%{version}/modules/module-position-event-sounds.so
312 %{_libdir}/pulse-%{version}/modules/module-remap-sink.so
313 %{_libdir}/pulse-%{version}/modules/module-remap-source.so
314 %{_libdir}/pulse-%{version}/modules/module-rescue-streams.so
315 %{_libdir}/pulse-%{version}/modules/module-role-ducking.so
316 %{_libdir}/pulse-%{version}/modules/module-role-cork.so
317 %{_libdir}/pulse-%{version}/modules/module-rtp-recv.so
318 %{_libdir}/pulse-%{version}/modules/module-rtp-send.so
319 %{_libdir}/pulse-%{version}/modules/module-rygel-media-server.so
320 %{_libdir}/pulse-%{version}/modules/module-simple-protocol-tcp.so
321 %{_libdir}/pulse-%{version}/modules/module-simple-protocol-unix.so
322 %{_libdir}/pulse-%{version}/modules/module-sine.so
323 %{_libdir}/pulse-%{version}/modules/module-sine-source.so
324 %{_libdir}/pulse-%{version}/modules/module-stream-restore.so
325 %{_libdir}/pulse-%{version}/modules/module-suspend-on-idle.so
326 %{_libdir}/pulse-%{version}/modules/module-switch-on-port-available.so
327 %{_libdir}/pulse-%{version}/modules/module-tunnel-sink.so
328 %{_libdir}/pulse-%{version}/modules/module-tunnel-sink-new.so
329 %{_libdir}/pulse-%{version}/modules/module-tunnel-source.so
330 %{_libdir}/pulse-%{version}/modules/module-tunnel-source-new.so
331 %{_libdir}/pulse-%{version}/modules/module-udev-detect.so
332 %{_libdir}/pulse-%{version}/modules/module-virtual-sink.so
333 %{_libdir}/pulse-%{version}/modules/module-virtual-source.so
334 %{_libdir}/pulse-%{version}/modules/module-volume-restore.so
335
336
337 %exclude %{_unitdir_user}/pulseaudio.service
338 %exclude %{_unitdir_user}/pulseaudio.socket
339 %exclude %{_unitdir_user}/pulseaudio-x11.service
340 %{_unitdir}/pulseaudio.service
341 %if "%{tizen_profile_name}" == "tv"
342 %{_unitdir}/sysinit.target.wants/pulseaudio.service
343 %else
344 %{_unitdir}/multi-user.target.wants/pulseaudio.service
345 %endif
346 %exclude %{_hal_datadir}/bash-completion/completions/*
347 %exclude %{_hal_datadir}/zsh/site-functions/_pulseaudio
348
349
350 %files -n libpulse
351 %manifest %{name}.manifest
352 %license LICENSE LGPL
353 %defattr(-,root,root,-)
354 %{_libdir}/libpulse.so.*
355 %{_libdir}/libpulse-simple.so.*
356 %{_libdir}/pulseaudio/libpulsecommon-*.so
357
358 %files -n libpulse-devel
359 %manifest %{name}.manifest
360 %defattr(-,root,root,-)
361 %{_includedir}/pulse/*
362 %{_includedir}/pulsecore/*
363 %{_includedir}/pulsecore/filter/*
364 %{_libdir}/libpulse.so
365 %{_libdir}/libpulse-simple.so
366 %{_libdir}/libpulse-mainloop-glib.so
367 %{_libdir}/pkgconfig/libpulse*.pc
368 %{_libdir}/pkgconfig/pulsecore.pc
369 %{_hal_datadir}/vala/vapi/libpulse.vapi
370 # cmake stuff
371 %{_libdir}/cmake/PulseAudio/PulseAudioConfig.cmake
372 %{_libdir}/cmake/PulseAudio/PulseAudioConfigVersion.cmake
373
374 %files -n libpulse-mainloop-glib
375 %manifest %{name}.manifest
376 %defattr(-,root,root)
377 %{_libdir}/libpulse-mainloop-glib.so.*
378
379 %files utils
380 %manifest %{name}.manifest
381 %license LICENSE LGPL
382 %defattr(-,root,root,-)
383 %doc %{_mandir}/man1/*
384 %doc %{_mandir}/man5/*
385 %{_bindir}/pacat
386 %{_bindir}/pacmd
387 %{_bindir}/pactl
388 %{_bindir}/paplay
389 %{_bindir}/parec
390 %{_bindir}/pamon
391 %{_bindir}/parecord
392 %{_bindir}/pasuspender
393 %exclude %{_bindir}/pa-info
394
395 %files module-bluetooth
396 %manifest %{name}.manifest
397 %license LICENSE LGPL
398 %if "%{tizen_profile_name}" != "tv"
399 %defattr(-,root,root,-)
400 %{_libdir}/pulse-%{version}/modules/module-bluetooth-discover.so
401 %{_libdir}/pulse-%{version}/modules/module-bluetooth-policy.so
402 %{_libdir}/pulse-%{version}/modules/module-bluez5-discover.so
403 %{_libdir}/pulse-%{version}/modules/module-bluez5-device.so
404 %{_libdir}/pulse-%{version}/modules/libbluez5-util.so
405 %endif
406
407 %files module-raop
408 %manifest %{name}.manifest
409 %defattr(-,root,root,-)
410 %{_libdir}/pulse-%{version}/modules/libraop.so
411 %{_libdir}/pulse-%{version}/modules/module-raop*.so
412
413 %files module-augment-properties
414 %manifest %{name}.manifest
415 %defattr(-,root,root,-)
416 %{_libdir}/pulse-%{version}/modules/module-augment-properties.so
417
418 %files module-dbus-protocol
419 %manifest %{name}.manifest
420 %defattr(-,root,root,-)
421 %{_libdir}/pulse-%{version}/modules/module-dbus-protocol.so
422
423 %files module-switch-on-connect
424 %manifest %{name}.manifest
425 %defattr(-,root,root,-)
426 %{_libdir}/pulse-%{version}/modules/module-switch-on-connect.so
427
428 %files config
429 %manifest %{name}.manifest
430 %defattr(-,root,root,-)
431 %config(noreplace) %{_hal_sysconfdir}/pulse/daemon.conf
432 %config(noreplace) %{_hal_sysconfdir}/pulse/default.pa
433 %config(noreplace) %{_hal_sysconfdir}/pulse/client.conf
434 %config(noreplace) %{_hal_sysconfdir}/pulse/system.pa
435
436 %{_hal_datadir}/pulseaudio/alsa-mixer/paths/*
437 %{_hal_datadir}/pulseaudio/alsa-mixer/profile-sets/*
438
439 %files vala-bindings
440 %manifest %{name}.manifest
441 %defattr(-,root,root,-)
442 %{_hal_datadir}/vala/vapi/*
443
444 %files realtime-scheduling
445 %defattr(-,root,root,-)
446
447 %docs_package