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