diff --git a/0001-tests-Don-t-run-volume-tests-with-impossible-alignme.patch b/0001-tests-Don-t-run-volume-tests-with-impossible-alignme.patch new file mode 100644 index 0000000000000000000000000000000000000000..7e919999834505c4b8b5290cc33da0581b657726 --- /dev/null +++ b/0001-tests-Don-t-run-volume-tests-with-impossible-alignme.patch @@ -0,0 +1,105 @@ +From 84f5b742e39ba3e375bac9144e0243b7331f4019 Mon Sep 17 00:00:00 2001 +From: Arun Raghavan +Date: Fri, 22 Mar 2024 09:31:48 -0400 +Subject: [PATCH] tests: Don't run volume tests with impossible alignments + +This worked so far somehow, but we were sending in some samples at +unrealistic alignments (given that pa_memblockq will be frame-aligned, +and we expect all operations to occur per-frame as well). + +Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/3803 +Part-of: +--- + src/tests/cpu-volume-test.c | 33 ++++++++++++++++----------------- + 1 file changed, 16 insertions(+), 17 deletions(-) + +diff --git a/src/tests/cpu-volume-test.c b/src/tests/cpu-volume-test.c +index c7d73be04..24811ead0 100644 +--- a/src/tests/cpu-volume-test.c ++++ b/src/tests/cpu-volume-test.c +@@ -43,6 +43,7 @@ static void run_volume_test( + int channels, + bool correct, + bool perf) { ++ fail_unless(align % channels == 0); + + PA_DECLARE_ALIGNED(8, int16_t, s[SAMPLES]) = { 0 }; + PA_DECLARE_ALIGNED(8, int16_t, s_ref[SAMPLES]) = { 0 }; +@@ -56,8 +57,6 @@ static void run_volume_test( + samples_ref = s_ref + (8 - align); + samples_orig = s_orig + (8 - align); + nsamples = SAMPLES - (8 - align); +- if (nsamples % channels) +- nsamples -= nsamples % channels; + size = nsamples * sizeof(int16_t); + + pa_random(samples, size); +@@ -119,12 +118,12 @@ START_TEST (svolume_mmx_test) { + + pa_log_debug("Checking MMX svolume"); + for (i = 1; i <= 3; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(mmx_func, orig_func, j, i, true, false); ++ for (j = 0; j <= 7; j += i) ++ run_volume_test(mmx_func, orig_func, j, i, true, j == 0); + } + run_volume_test(mmx_func, orig_func, 7, 1, true, true); +- run_volume_test(mmx_func, orig_func, 7, 2, true, true); +- run_volume_test(mmx_func, orig_func, 7, 3, true, true); ++ run_volume_test(mmx_func, orig_func, 6, 2, true, true); ++ run_volume_test(mmx_func, orig_func, 6, 3, true, true); + } + END_TEST + +@@ -146,12 +145,12 @@ START_TEST (svolume_sse_test) { + + pa_log_debug("Checking SSE2 svolume"); + for (i = 1; i <= 3; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(sse_func, orig_func, j, i, true, false); ++ for (j = 0; j < 7; j += i) ++ run_volume_test(sse_func, orig_func, j, i, true, j == 0); + } + run_volume_test(sse_func, orig_func, 7, 1, true, true); +- run_volume_test(sse_func, orig_func, 7, 2, true, true); +- run_volume_test(sse_func, orig_func, 7, 3, true, true); ++ run_volume_test(sse_func, orig_func, 6, 2, true, true); ++ run_volume_test(sse_func, orig_func, 6, 3, true, true); + } + END_TEST + #endif /* defined (__i386__) || defined (__amd64__) */ +@@ -175,12 +174,12 @@ START_TEST (svolume_arm_test) { + + pa_log_debug("Checking ARM svolume"); + for (i = 1; i <= 3; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(arm_func, orig_func, j, i, true, false); ++ for (j = 0; j < 7; j += i) ++ run_volume_test(arm_func, orig_func, j, i, true, j == 0); + } + run_volume_test(arm_func, orig_func, 7, 1, true, true); +- run_volume_test(arm_func, orig_func, 7, 2, true, true); +- run_volume_test(arm_func, orig_func, 7, 3, true, true); ++ run_volume_test(arm_func, orig_func, 6, 2, true, true); ++ run_volume_test(arm_func, orig_func, 6, 3, true, true); + } + END_TEST + #endif /* defined (__arm__) && defined (__linux__) */ +@@ -207,11 +206,11 @@ START_TEST (svolume_orc_test) { + + pa_log_debug("Checking Orc svolume"); + for (i = 1; i <= 2; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(orc_func, orig_func, j, i, true, false); ++ for (j = 0; j < 7; j += i) ++ run_volume_test(orc_func, orig_func, j, i, true, j == 0); + } + run_volume_test(orc_func, orig_func, 7, 1, true, true); +- run_volume_test(orc_func, orig_func, 7, 2, true, true); ++ run_volume_test(orc_func, orig_func, 6, 2, true, true); + } + END_TEST + +-- +2.45.0 + diff --git a/default.pa-for-gdm b/default.pa-for-gdm index d633aee9109acc49d4c2993c318c48027c8152fb..5e414d31e206169e5d34c2d7ccf21f646f08333b 100644 --- a/default.pa-for-gdm +++ b/default.pa-for-gdm @@ -1,3 +1,4 @@ + load-module module-device-restore load-module module-card-restore load-module module-udev-detect @@ -8,3 +9,4 @@ load-module module-always-sink load-module module-intended-roles load-module module-suspend-on-idle load-module module-position-event-sounds + diff --git a/pulseaudio-11.1-autospawn_disable.patch b/pulseaudio-11.1-autospawn_disable.patch new file mode 100644 index 0000000000000000000000000000000000000000..ebaf029b8e92429a77b1333b9cfae516c6a55c96 --- /dev/null +++ b/pulseaudio-11.1-autospawn_disable.patch @@ -0,0 +1,25 @@ +diff -up pulseaudio-11.1/src/pulse/client-conf.c.autospawn pulseaudio-11.1/src/pulse/client-conf.c +--- pulseaudio-11.1/src/pulse/client-conf.c.autospawn 2018-03-01 15:52:25.304612437 -0600 ++++ pulseaudio-11.1/src/pulse/client-conf.c 2018-03-01 15:56:17.643552698 -0600 +@@ -63,7 +63,7 @@ static const pa_client_conf default_conf + .cookie_from_x11_valid = false, + .cookie_file_from_application = NULL, + .cookie_file_from_client_conf = NULL, +- .autospawn = true, ++ .autospawn = false, + .disable_shm = false, + .disable_memfd = false, + .shm_size = 0, +diff -up pulseaudio-11.1/src/pulse/client.conf.in.autospawn pulseaudio-11.1/src/pulse/client.conf.in +--- pulseaudio-11.1/src/pulse/client.conf.in.autospawn 2016-08-23 07:50:10.000000000 -0500 ++++ pulseaudio-11.1/src/pulse/client.conf.in 2018-03-01 15:56:01.201344622 -0600 +@@ -22,7 +22,7 @@ + ; default-server = + ; default-dbus-server = + +-; autospawn = yes ++; autospawn = no + ; daemon-binary = @PA_BINARY@ + ; extra-arguments = --log-target=syslog + + diff --git a/pulseaudio-16.1.tar.xz b/pulseaudio-16.1.tar.xz deleted file mode 100644 index fa6246e0c62f3e66a717250e2a4182e80a2c0881..0000000000000000000000000000000000000000 Binary files a/pulseaudio-16.1.tar.xz and /dev/null differ diff --git a/pulseaudio-16.1.tar.xz.sha256sum b/pulseaudio-16.1.tar.xz.sha256sum deleted file mode 100644 index 2caba28a78c8481842f5728e5ee66a25abfd173c..0000000000000000000000000000000000000000 --- a/pulseaudio-16.1.tar.xz.sha256sum +++ /dev/null @@ -1 +0,0 @@ -8eef32ce91d47979f95fd9a935e738cd7eb7463430dabc72863251751e504ae4 *pulseaudio-16.1.tar.xz diff --git a/pulseaudio-17.0.tar.xz b/pulseaudio-17.0.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..7ea3022f56512431d4c265995c9da4fb61c1c226 Binary files /dev/null and b/pulseaudio-17.0.tar.xz differ diff --git a/pulseaudio-17.0.tar.xz.sha256sum b/pulseaudio-17.0.tar.xz.sha256sum new file mode 100644 index 0000000000000000000000000000000000000000..f92669ff84ec740aad6b24b4ed4074ca7637a331 --- /dev/null +++ b/pulseaudio-17.0.tar.xz.sha256sum @@ -0,0 +1 @@ +053794d6671a3e397d849e478a80b82a63cb9d8ca296bd35b73317bb5ceb87b5 *pulseaudio-17.0.tar.xz diff --git a/pulseaudio-autostart.patch b/pulseaudio-autostart.patch new file mode 100644 index 0000000000000000000000000000000000000000..be3506ec7a87c41ef00bbae8451191907d455fa2 --- /dev/null +++ b/pulseaudio-autostart.patch @@ -0,0 +1,16 @@ +diff --git a/src/daemon/start-pulseaudio-x11.in b/src/daemon/start-pulseaudio-x11.in +index 722a639c0..7cdf14e4d 100755 +--- a/src/daemon/start-pulseaudio-x11.in ++++ b/src/daemon/start-pulseaudio-x11.in +@@ -17,6 +17,9 @@ + + set -e + ++# probe to test if autospawn works, else resort to starting manually ++@PACTL_BINARY@ info > /dev/null 2>&1 || /usr/bin/pulseaudio --start "$@" ++ + if [ -n "$1" ] ; then + case $1 in + stop) + + diff --git a/pulseaudio.spec b/pulseaudio.spec index e985e0826f20df9984f52db21b0e9f111e1ef800..87935741025061abf6f6e566e9e542107cc5d854 100644 --- a/pulseaudio.spec +++ b/pulseaudio.spec @@ -1,128 +1,174 @@ -%define anolis_release 3 -%undefine _strict_symbol_defs_build -%global pa_major 16 -%global pa_minor 1 -%global bash_completionsdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null || echo '/etc/bash_completion.d') -%bcond_without webrtc -%bcond_without systemd -%bcond_without tests -%bcond_without gdm_hooks +%define anolis_release 1 + +%global pa_major 17.0 +#global pa_minor 0 + +#global snap 20200105 +#global gitrel 103 +#global gitcommit f5d3606fe76302c7dbdb0f6a80400df829a5f846 +#global shortcommit %%(c=%%{gitcommit}; echo ${c:0:5}) + +%global with_webrtc 1 + +#%if 0%{?fedora} +%global enable_daemon 1 +%global enable_lirc 1 +%global enable_jack 1 +#%endif + +# https://bugzilla.redhat.com/983606 +%global _hardened_build 1 + +## support systemd activation +%global systemd 1 + +# gdm-hooks moved to gdm packaging f28+ +#%if 0%{?fedora} < 28 && 0%{?rhel} < 8 +%global gdm_hooks 1 +#%endif + +## comment to disable tests +%global tests 1 + +# where/how to apply multilib hacks +%global multilib_archs x86_64 Name: pulseaudio +Summary: Improved Linux Sound Server Version: %{pa_major}.%{pa_minor} Release: %{anolis_release}%{?dist} -Summary: Improved Linux Sound Server -License: LGPLv2+ +License: LGPL-2.1-or-later URL: http://www.freedesktop.org/wiki/Software/PulseAudio -Source0: http://freedesktop.org/software/%{name}/releases/%{name}-%{version}.tar.xz -Source1: http://freedesktop.org/software/%{name}/releases/%{name}-%{version}.tar.xz.sha256sum +#%if 0%{?gitrel} +# git clone git://anongit.freedesktop.org/pulseaudio/pulseaudio +# cd pulseaudio; git reset --hard %{gitcommit}; ./autogen.sh; make; make distcheck +#Source0: pulseaudio-%{version}-%{gitrel}-g%{shortcommit}.tar.xz +#%else +Source0: http://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz +Source1: http://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz.sha256sum +#%endif + +Source5: default.pa-for-gdm + +# revert upstream commit to rely solely on autospawn for autostart, instead +# include a fallback to manual launch when autospawn fails, like when +# user disables autospawn, or logging in as root +# valid even when using systemd socket activation too +Patch201: pulseaudio-autostart.patch + +# disable autospawn +Patch206: pulseaudio-11.1-autospawn_disable.patch -Source2: default.pa-for-gdm +## upstream patches -Patch1: fix-volume-level-scroll-bar-cannot-be-selected.patch +# https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/812 +Patch1: 0001-tests-Don-t-run-volume-tests-with-impossible-alignme.patch -BuildRequires: meson >= 0.50.0 gcc g++ intltool doxygen xmltoman -BuildRequires: pkgconfig(bash-completion) pkgconfig(bluez) >= 5.0 pkgconfig(speexdsp) >= 1.2 -BuildRequires: pkgconfig(gstreamer-1.0) >= 1.16.0 pkgconfig(gstreamer-app-1.0) >= 1.16.0 pkgconfig(gstreamer-rtp-1.0) >= 1.16.0 -BuildRequires: libtool-ltdl-devel libsndfile-devel libsndfile-devel alsa-lib-devel glib2-devel gtk2-devel avahi-devel +## upstreamable patches + +BuildRequires: meson >= 0.50.0 +BuildRequires: gcc +BuildRequires: g++ +BuildRequires: pkgconfig(bash-completion) +%global bash_completionsdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null || echo '/etc/bash_completion.d') +BuildRequires: m4 +BuildRequires: pkgconfig +BuildRequires: doxygen +BuildRequires: xmltoman +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(sndfile) +%if 0%{?systemd} +BuildRequires: pkgconfig(libsystemd) +%endif +BuildRequires: pkgconfig(x11-xcb) +BuildRequires: pkgconfig(fftw3f) +BuildRequires: pkgconfig(libasyncns) >= 0.1 +BuildRequires: pkgconfig(gtk+-3.0) +%if 0%{?tests} +BuildRequires: pkgconfig(check) +%endif + +%if 0%{?enable_daemon} + +BuildRequires: libtool-ltdl-devel +BuildRequires: alsa-lib-devel +BuildRequires: avahi-devel BuildRequires: libatomic_ops-static, libatomic_ops-devel -BuildRequires: sbc-devel xcb-util-devel xorg-x11-proto-devel openssl-devel orc-devel -BuildRequires: libXtst-devel libXt-devel libXi-devel libSM-devel libX11-devel libICE-devel libtdb-devel libasyncns-devel -%if %{with systemd} -BuildRequires: systemd-devel >= 184 systemd +BuildRequires: pkgconfig(bluez) >= 5.0 +BuildRequires: sbc-devel +BuildRequires: libXt-devel +BuildRequires: xorg-x11-proto-devel +BuildRequires: libXtst-devel +BuildRequires: libXi-devel +BuildRequires: libSM-devel +BuildRequires: libX11-devel +BuildRequires: libICE-devel +BuildRequires: xcb-util-devel +BuildRequires: openssl-devel +BuildRequires: orc-devel +BuildRequires: libtdb-devel +#%if 0%{?fedora} +#BuildRequires: pkgconfig(soxr) +#%endif +BuildRequires: pkgconfig(speexdsp) >= 1.2 +BuildRequires: libasyncns-devel +%if 0%{?systemd} +BuildRequires: systemd-devel >= 184 +BuildRequires: systemd %{?systemd_requires} %endif -BuildRequires: dbus-devel libcap-devel pkgconfig(fftw3f) -%if %{with webrtc} -BuildRequires: pkgconfig(webrtc-audio-processing) >= 0.2 -%endif -%if %{with tests} -BuildRequires: pkgconfig(check) +BuildRequires: libcap-devel +%if 0%{?with_webrtc} +BuildRequires: pkgconfig(webrtc-audio-processing-1) >= 1.0 %endif +BuildRequires: pkgconfig(gstreamer-1.0) >= 1.16.0 +BuildRequires: pkgconfig(gstreamer-app-1.0) >= 1.16.0 +BuildRequires: pkgconfig(gstreamer-rtp-1.0) >= 1.16.0 # retired along with -libs-zeroconf, add Obsoletes here for lack of anything better Obsoletes: padevchooser < 1.0 Requires(pre): shadow-utils -Requires: %{name}-libs = %{version}-%{release} rtkit +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: rtkit # Virtual Provides to support swapping between PipeWire-PA and PA -Provides: %{name}-daemon -Conflicts: %{name}-daemon -Obsoletes: %{name}-esound-compat < 15.0 %{name}-module-gconf < 15.0 - -%description -PulseAudio is a sound server system for POSIX OSes, meaning that it is a -proxy for your sound applications. It is an integral part of all relevant -modern Linux distributions and is used in various mobile devices, by -multiple vendors. It performs advanced operations on sound data as it -passes between your application and hardware. - -%package libs -Summary: Libraries for PulseAudio clients -License: LGPLv2+ -Obsoletes: %{name}-libs-zeroconf < 1.1 +Provides: pulseaudio-daemon +Conflicts: pulseaudio-daemon -%description libs -This package contains the runtime libraries for any application that wishes -to interface with a PulseAudio sound server. - -%package libs-glib2 -Summary: GLIB 2.x bindings for PulseAudio clients -License: LGPLv2+ -Requires: %{name}-libs = %{version}-%{release} +# Packages removed in 15.0 +Obsoletes: pulseaudio-esound-compat < 15.0 +Obsoletes: pulseaudio-module-gconf < 15.0 -%description libs-glib2 -This package contains bindings to integrate the PulseAudio client library with -a GLIB 2.x based application. - -%package libs-devel -Summary: Headers and libraries for PulseAudio client development -License: LGPLv2+ -Requires: %{name}-libs = %{version}-%{release} -Requires: %{name}-libs-glib2 = %{version}-%{release} - -%description libs-devel -Headers and libraries for developing applications that can communicate with -a PulseAudio sound server. +%endif -%if %{with gdm_hooks} -%package gdm-hooks -Summary: PulseAudio GDM integration -License: LGPLv2+ -Requires: gdm >= 1:2.22.0 -# for the gdm user -Requires(pre): gdm +%description +PulseAudio is a sound server for Linux and other Unix like operating +systems. It is intended to be an improved drop-in replacement for the +Enlightened Sound Daemon (ESOUND). -%description gdm-hooks -This package contains GDM integration hooks for the PulseAudio sound server. -%endif +%if 0%{?enable_daemon} %package qpaeq Summary: Pulseaudio equalizer interface -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python3-qt5-base Requires: python3-dbus %description qpaeq -qpaeq is a equalizer interface for %{name}'s equalizer sinks. +qpaeq is a equalizer interface for pulseaudio's equalizer sinks. -%package module-bluetooth -Summary: Bluetooth support for the PulseAudio sound server -Requires: %{name} = %{version}-%{release} -Requires: bluez >= 5.0 - -%description module-bluetooth -Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server. - -%package module-gsettings -Summary: Gsettings support for the PulseAudio sound server -Requires: %{name} = %{version}-%{release} - -%description module-gsettings -GSettings configuration backend for the PulseAudio sound server. +%if 0%{?enable_lirc} +%package module-lirc +Summary: LIRC support for the PulseAudio sound server +BuildRequires: lirc-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +%description module-lirc +LIRC volume control module for the PulseAudio sound server. +%endif %package module-x11 Summary: X11 support for the PulseAudio sound server -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-utils %description module-x11 @@ -130,89 +176,140 @@ X11 bell and security modules for the PulseAudio sound server. %package module-zeroconf Summary: Zeroconf support for the PulseAudio sound server -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-utils %description module-zeroconf Zeroconf publishing module for the PulseAudio sound server. +%package module-bluetooth +Summary: Bluetooth support for the PulseAudio sound server +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: bluez >= 5.0 + +%description module-bluetooth +Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server. + %if 0%{?enable_jack} %package module-jack Summary: JACK support for the PulseAudio sound server BuildRequires: jack-audio-connection-kit-devel -Requires: %{name} = %{version}-%{release} - +Requires: %{name}%{?_isa} = %{version}-%{release} %description module-jack JACK sink and source modules for the PulseAudio sound server. %endif -%if 0%{?enable_lirc} -%package module-lirc -Summary: LIRC support for the PulseAudio sound server -BuildRequires: lirc-devel -Requires: %{name} = %{version}-%{release} +%package module-gsettings +Summary: Gsettings support for the PulseAudio sound server +Requires: %{name}%{?_isa} = %{version}-%{release} +%description module-gsettings +GSettings configuration backend for the PulseAudio sound server. -%description module-lirc -LIRC volume control module for the PulseAudio sound server. %endif +%package libs +Summary: Libraries for PulseAudio clients +License: LGPL-2.1-or-later +Obsoletes: pulseaudio-libs-zeroconf < 1.1 + +%description libs +This package contains the runtime libraries for any application that wishes +to interface with a PulseAudio sound server. + +%package libs-glib2 +Summary: GLIB 2.x bindings for PulseAudio clients +License: LGPL-2.1-or-later +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description libs-glib2 +This package contains bindings to integrate the PulseAudio client library with +a GLIB 2.x based application. + +%package libs-devel +Summary: Headers and libraries for PulseAudio client development +License: LGPL-2.1-or-later +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs-glib2%{?_isa} = %{version}-%{release} +%description libs-devel +Headers and libraries for developing applications that can communicate with +a PulseAudio sound server. + %package utils Summary: PulseAudio sound server utilities -License: LGPLv2+ -Requires: %{name}-libs = %{version}-%{release} -Obsoletes: %{name}-utils < 3.0 +License: LGPL-2.1-or-later +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +# when made non-multilib'd, https://bugzilla.redhat.com/891425 +Obsoletes: pulseaudio-utils < 3.0-3 %description utils This package contains command line utilities for the PulseAudio sound server. -%package doc -Summary: Documentation files for %{name} -Requires: %{name} = %{version}-%{release} -BuildArch: noarch +%if 0%{?gdm_hooks} +%package gdm-hooks +Summary: PulseAudio GDM integration +License: LGPL-2.1-or-later +Requires: gdm >= 1:2.22.0 +# for the gdm user +Requires(pre): gdm + +%description gdm-hooks +This package contains GDM integration hooks for the PulseAudio sound server. +%endif -%description doc -The %{name}-doc package contains documentation files for %{name}. %prep -%autosetup -p1 -T -b0 -n %{name}-%{version} +%setup -q -T -b0 -n %{name}-%{version} + +## upstream patches +%patch 1 -p1 -b .volume_test + +## upstreamable patches + +%patch 201 -p1 -b .autostart +%if 0%{?systemd} +%patch 206 -p1 -b .autospawn_disable +%endif + +%if 0%{?gitrel:1} +# fixup PACKAGE_VERSION that leaks into pkgconfig files and friends +sed -i.PACKAGE_VERSION -e "s|^PACKAGE_VERSION=.*|PACKAGE_VERSION=\'%{version}\'|" configure +%else + +#if "%{_libdir}" != "/usr/lib" +#sed -i -e 's|"/lib /usr/lib|"/%{_lib} %{_libdir}|' configure +#endif +%endif -sed -i.no_consolekit -e \ - 's/^load-module module-console-kit/#load-module module-console-kit/' \ - src/daemon/default.pa.in %build %meson \ + -D client=true \ + -D valgrind=disabled \ + -D systemd=%{?systemd:enabled}%{!?systemd:disabled} \ + -D oss-output=enabled \ + -D gtk=disabled \ +%if 0%{?enable_daemon} + -D daemon=true \ -D system_user=pulse \ -D system_group=pulse \ -D access_group=pulse-access \ - -D oss-output=disabled \ + -D jack=%{?enable_jack:enabled}%{!?enable_jack:disabled} \ + -D lirc=%{?enable_lirc:enabled}%{!?enable_lirc:disabled} \ -D tcpwrap=disabled \ -D bluez5=enabled \ -D gstreamer=enabled \ -D bluez5-gstreamer=enabled \ -D gsettings=enabled \ -D elogind=disabled \ - -D valgrind=disabled \ - -D gtk=disabled \ - -D soxr=disabled \ - -D jack=%{?enable_jack:enabled}%{!?enable_jack:disabled} \ - -D lirc=%{?enable_lirc:enabled}%{!?enable_lirc:disabled} \ -%if %{with webrtc} - -D webrtc-aec=enabled \ + -D webrtc-aec=%{?with_webrtc:enabled}%{!?with_webrtc:disabled} \ + -D consolekit=disabled \ %else - -D webrtc-aec=disabled \ -%endif -%if %{with systemd} - -D systemd=enabled \ -%else - -D systemd=disabled \ -%endif -%if %{with tests} - -D tests=true \ -%else - -D tests=false \ + -D daemon=false \ %endif + -D tests=%{?tests:true}%{!?tests:false} +# -D soxr=%{?fedora:enabled}%{!?fedora:disabled} \ +# we really should preopen here --preopen-mods=module-udev-detect.la, --force-preopen %meson_build %meson_build doxygen @@ -220,17 +317,50 @@ sed -i.no_consolekit -e \ %install %meson_install +## padsp multilib hack alert +%ifarch %{multilib_archs} +pushd %{buildroot}%{_bindir} +# make 32 bit version available as padsp-32 +# %%{_libdir} == /usr/lib may be a naive check for 32bit-ness +# but should be the only case we care about here -- rex +%if "%{_libdir}" == "/usr/lib" +ln -s padsp padsp-32 +%else +cp -a padsp padsp-32 +sed -i -e "s|%{_libdir}/pulseaudio/libpulsedsp.so|/usr/lib/pulseaudio/libpulsedsp.so|g" padsp-32 +%endif +popd +%endif + +%if 0%{?enable_daemon} +# upstream should use udev.pc mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/udev/rules.d -mv -fv $RPM_BUILD_ROOT/lib/udev/rules.d/90-%{name}.rules $RPM_BUILD_ROOT%{_prefix}/lib/udev/rules.d +mv -fv $RPM_BUILD_ROOT/lib/udev/rules.d/90-pulseaudio.rules $RPM_BUILD_ROOT%{_prefix}/lib/udev/rules.d +%endif + +%if 0%{?gdm_hooks} +install -p -m644 -D %{SOURCE5} $RPM_BUILD_ROOT%{_localstatedir}/lib/gdm/.pulse/default.pa +%endif -%if %{with gdm_hooks} -install -p -m644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_localstatedir}/lib/gdm/.pulse/default.pa +## unpackaged files +# PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-detect!"); +rm -fv $RPM_BUILD_ROOT%{_libdir}/pulseaudio/modules/module-detect.so +rm -fv $RPM_BUILD_ROOT%{_libdir}/pulseaudio/modules/liboss-util.so +rm -fv $RPM_BUILD_ROOT%{_libdir}/pulseaudio/modules/module-oss.so +%if !0%{?enable_daemon} +# only partially usable with pipewire-pulseaudio +rm -fv $RPM_BUILD_ROOT%{_bindir}/pa-info %endif %find_lang %{name} + %check -%if %{with tests} +%if 0%{?tests} +#%if 0%{?fedora} > 27 +# regression'ish failures on rawhide, not worth failing build (for now) -- rex +#%global tests_nonfatal 1 +#%endif %meson_test || TESTS_ERROR=$? if [ "${TESTS_ERROR}" != "" ]; then cat src/test-suite.log @@ -238,6 +368,9 @@ cat src/test-suite.log fi %endif + +%if 0%{?enable_daemon} + %pre getent group pulse-access >/dev/null || groupadd -r pulse-access getent group pulse-rt >/dev/null || groupadd -r pulse-rt @@ -259,137 +392,213 @@ exit 0 ) ||: %post -%if %{with systemd} -%systemd_user_post %{name}.service -%systemd_user_post %{name}.socket +%{?ldconfig} +%if 0%{?systemd} +# unsure if we want both .socket and .service here (or only socket) +# test socket-only on f31+ -- rex +#%if 0%{?fedora} < 31 +%systemd_user_post pulseaudio.service +#%endif +%systemd_user_post pulseaudio.socket +%endif +%if 0%{?systemd} %preun -%systemd_user_preun %{name}.service -%systemd_user_preun %{name}.socket +#%if 0%{?fedora} < 31 +%systemd_user_preun pulseaudio.service +#%endif +%systemd_user_preun pulseaudio.socket +%endif -%triggerun -- %{name} < 12.2-4 +%ldconfig_postun + +%if 0%{?systemd} +#%triggerun -- pulseaudio < 12.2-4 +# This is for upgrades from previous versions which had a static symlink. # The %%post scriptlet above only does anything on initial package installation. -systemctl --no-reload preset --global %{name}.socket >/dev/null 2>&1 || : +# Remove before F33. +systemctl --no-reload preset --global pulseaudio.socket >/dev/null 2>&1 || : %endif +%endif + +%if 0%{?enable_daemon} + %files -%license GPL LGPL LICENSE +%doc README +%license LICENSE GPL LGPL %config(noreplace) %{_sysconfdir}/pulse/daemon.conf %config(noreplace) %{_sysconfdir}/pulse/default.pa %config(noreplace) %{_sysconfdir}/pulse/system.pa -%{_sysconfdir}/dbus-1/system.d/%{name}-system.conf -%{bash_completionsdir}/%{name} -%if %{with systemd} -%{_userunitdir}/%{name}.service -%{_userunitdir}/%{name}.socket +%{bash_completionsdir}/pulseaudio +%if 0%{?systemd} +%{_userunitdir}/pulseaudio.service +%{_userunitdir}/pulseaudio.socket %endif %{_bindir}/pa-info -%{_bindir}/%{name} -%{_libdir}/%{name}/libpulsecore-%{version}.so -%dir %{_libdir}/%{name}/ -%dir %{_libdir}/%{name}/modules/ -%{_libdir}/%{name}/modules/libalsa-util.so -%{_libdir}/%{name}/modules/libcli.so -%{_libdir}/%{name}/modules/libprotocol-cli.so -%{_libdir}/%{name}/modules/libprotocol-http.so -%{_libdir}/%{name}/modules/libprotocol-native.so -%{_libdir}/%{name}/modules/libprotocol-simple.so -%{_libdir}/%{name}/modules/librtp.so -%if %{with webrtc} -%{_libdir}/%{name}/modules/libwebrtc-util.so -%endif -%{_libdir}/%{name}/modules/module-allow-passthrough.so -%{_libdir}/%{name}/modules/module-alsa-sink.so -%{_libdir}/%{name}/modules/module-alsa-source.so -%{_libdir}/%{name}/modules/module-alsa-card.so -%{_libdir}/%{name}/modules/module-always-sink.so -%{_libdir}/%{name}/modules/module-always-source.so -%{_libdir}/%{name}/modules/module-augment-properties.so -%{_libdir}/%{name}/modules/module-cli-protocol-tcp.so -%{_libdir}/%{name}/modules/module-cli-protocol-unix.so -%{_libdir}/%{name}/modules/module-cli.so -%{_libdir}/%{name}/modules/module-combine.so -%{_libdir}/%{name}/modules/module-combine-sink.so -%{_libdir}/%{name}/modules/module-card-restore.so -%{_libdir}/%{name}/modules/module-console-kit.so -%{_libdir}/%{name}/modules/module-dbus-protocol.so -%{_libdir}/%{name}/modules/module-detect.so -%{_libdir}/%{name}/modules/module-default-device-restore.so -%{_libdir}/%{name}/modules/module-device-restore.so -%{_libdir}/%{name}/modules/module-device-manager.so -%{_libdir}/%{name}/modules/module-echo-cancel.so -%{_libdir}/%{name}/modules/module-filter-apply.so -%{_libdir}/%{name}/modules/module-filter-heuristics.so -%{_libdir}/%{name}/modules/module-hal-detect.so -%{_libdir}/%{name}/modules/module-http-protocol-tcp.so -%{_libdir}/%{name}/modules/module-http-protocol-unix.so -%{_libdir}/%{name}/modules/module-intended-roles.so -%{_libdir}/%{name}/modules/module-loopback.so -%{_libdir}/%{name}/modules/module-ladspa-sink.so -%{_libdir}/%{name}/modules/module-match.so -%{_libdir}/%{name}/modules/module-mmkbd-evdev.so -%{_libdir}/%{name}/modules/module-native-protocol-fd.so -%{_libdir}/%{name}/modules/module-native-protocol-tcp.so -%{_libdir}/%{name}/modules/module-native-protocol-unix.so -%{_libdir}/%{name}/modules/module-null-sink.so -%{_libdir}/%{name}/modules/module-null-source.so -%{_libdir}/%{name}/modules/module-pipe-sink.so -%{_libdir}/%{name}/modules/module-pipe-source.so -%{_libdir}/%{name}/modules/module-position-event-sounds.so -%{_libdir}/%{name}/modules/module-remap-source.so -%{_libdir}/%{name}/modules/module-rescue-streams.so -%{_libdir}/%{name}/modules/module-role-ducking.so -%{_libdir}/%{name}/modules/module-role-cork.so -%{_libdir}/%{name}/modules/module-rtp-recv.so -%{_libdir}/%{name}/modules/module-rtp-send.so -%{_libdir}/%{name}/modules/module-rygel-media-server.so -%{_libdir}/%{name}/modules/module-remap-sink.so -%{_libdir}/%{name}/modules/module-simple-protocol-tcp.so -%{_libdir}/%{name}/modules/module-simple-protocol-unix.so -%{_libdir}/%{name}/modules/module-sine.so -%{_libdir}/%{name}/modules/module-sine-source.so -%{_libdir}/%{name}/modules/module-switch-on-port-available.so -%{_libdir}/%{name}/modules/module-switch-on-connect.so -%{_libdir}/%{name}/modules/module-systemd-login.so -%{_libdir}/%{name}/modules/module-stream-restore.so -%{_libdir}/%{name}/modules/module-suspend-on-idle.so -%{_libdir}/%{name}/modules/module-tunnel-sink.so -%{_libdir}/%{name}/modules/module-tunnel-sink-new.so -%{_libdir}/%{name}/modules/module-tunnel-source-new.so -%{_libdir}/%{name}/modules/module-tunnel-source.so -%{_libdir}/%{name}/modules/module-udev-detect.so -%{_libdir}/%{name}/modules/module-volume-restore.so -%{_libdir}/%{name}/modules/module-virtual-sink.so -%{_libdir}/%{name}/modules/module-virtual-source.so -%{_libdir}/%{name}/modules/module-virtual-surround-sink.so -%dir %{_datadir}/%{name}/ -%dir %{_datadir}/%{name}/alsa-mixer/ -%{_datadir}/%{name}/alsa-mixer/paths/ -%{_datadir}/%{name}/alsa-mixer/profile-sets/ -%{_mandir}/man1/%{name}.1* +%{_bindir}/pulseaudio +%{_libdir}/pulseaudio/libpulsecore-%{pa_major}.so +%dir %{_libdir}/pulseaudio/ +%dir %{_libdir}/pulseaudio/modules/ +%{_libdir}/pulseaudio/modules/libalsa-util.so +%{_libdir}/pulseaudio/modules/libcli.so +%{_libdir}/pulseaudio/modules/libprotocol-cli.so +%{_libdir}/pulseaudio/modules/libprotocol-http.so +%{_libdir}/pulseaudio/modules/libprotocol-native.so +%{_libdir}/pulseaudio/modules/libprotocol-simple.so +%{_libdir}/pulseaudio/modules/librtp.so +%if 0%{?with_webrtc} +%{_libdir}/pulseaudio/modules/libwebrtc-util.so +%endif +%{_libdir}/pulseaudio/modules/module-allow-passthrough.so +%{_libdir}/pulseaudio/modules/module-alsa-sink.so +%{_libdir}/pulseaudio/modules/module-alsa-source.so +%{_libdir}/pulseaudio/modules/module-alsa-card.so +%{_libdir}/pulseaudio/modules/module-cli-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-cli-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-cli.so +%{_libdir}/pulseaudio/modules/module-combine.so +%{_libdir}/pulseaudio/modules/module-combine-sink.so +%{_libdir}/pulseaudio/modules/module-dbus-protocol.so +%{_libdir}/pulseaudio/modules/module-filter-apply.so +%{_libdir}/pulseaudio/modules/module-filter-heuristics.so +%{_libdir}/pulseaudio/modules/module-device-manager.so +%{_libdir}/pulseaudio/modules/module-loopback.so +%{_libdir}/pulseaudio/modules/module-udev-detect.so +%{_libdir}/pulseaudio/modules/module-hal-detect.so +%{_libdir}/pulseaudio/modules/module-http-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-http-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-match.so +%{_libdir}/pulseaudio/modules/module-mmkbd-evdev.so +%{_libdir}/pulseaudio/modules/module-native-protocol-fd.so +%{_libdir}/pulseaudio/modules/module-native-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-native-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-null-sink.so +%{_libdir}/pulseaudio/modules/module-null-source.so +%{_libdir}/pulseaudio/modules/module-pipe-sink.so +%{_libdir}/pulseaudio/modules/module-pipe-source.so +%{_libdir}/pulseaudio/modules/module-remap-source.so +%{_libdir}/pulseaudio/modules/module-rescue-streams.so +%{_libdir}/pulseaudio/modules/module-role-ducking.so +%{_libdir}/pulseaudio/modules/module-rtp-recv.so +%{_libdir}/pulseaudio/modules/module-rtp-send.so +%{_libdir}/pulseaudio/modules/module-simple-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-simple-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-sine.so +%{_libdir}/pulseaudio/modules/module-switch-on-port-available.so +%{_libdir}/pulseaudio/modules/module-systemd-login.so +%{_libdir}/pulseaudio/modules/module-tunnel-sink-new.so +%{_libdir}/pulseaudio/modules/module-tunnel-sink.so +%{_libdir}/pulseaudio/modules/module-tunnel-source-new.so +%{_libdir}/pulseaudio/modules/module-tunnel-source.so +%{_libdir}/pulseaudio/modules/module-volume-restore.so +%{_libdir}/pulseaudio/modules/module-suspend-on-idle.so +%{_libdir}/pulseaudio/modules/module-default-device-restore.so +%{_libdir}/pulseaudio/modules/module-device-restore.so +%{_libdir}/pulseaudio/modules/module-stream-restore.so +%{_libdir}/pulseaudio/modules/module-card-restore.so +%{_libdir}/pulseaudio/modules/module-ladspa-sink.so +%{_libdir}/pulseaudio/modules/module-remap-sink.so +%{_libdir}/pulseaudio/modules/module-always-sink.so +%{_libdir}/pulseaudio/modules/module-always-source.so +%{_libdir}/pulseaudio/modules/module-position-event-sounds.so +%{_libdir}/pulseaudio/modules/module-augment-properties.so +%{_libdir}/pulseaudio/modules/module-role-cork.so +%{_libdir}/pulseaudio/modules/module-sine-source.so +%{_libdir}/pulseaudio/modules/module-intended-roles.so +%{_libdir}/pulseaudio/modules/module-rygel-media-server.so +%{_libdir}/pulseaudio/modules/module-echo-cancel.so +%{_libdir}/pulseaudio/modules/module-switch-on-connect.so +%{_libdir}/pulseaudio/modules/module-virtual-sink.so +%{_libdir}/pulseaudio/modules/module-virtual-source.so +%{_libdir}/pulseaudio/modules/module-virtual-surround-sink.so +%dir %{_datadir}/pulseaudio/ +%dir %{_datadir}/pulseaudio/alsa-mixer/ +%{_datadir}/pulseaudio/alsa-mixer/paths/ +%{_datadir}/pulseaudio/alsa-mixer/profile-sets/ +%{_datadir}/dbus-1/system.d/pulseaudio-system.conf +%{_mandir}/man1/pulseaudio.1* %{_mandir}/man5/default.pa.5* %{_mandir}/man5/pulse-cli-syntax.5* -%{_mandir}/man5/pulse-client.conf.5* %{_mandir}/man5/pulse-daemon.conf.5* -%{_prefix}/lib/udev/rules.d/90-%{name}.rules +%{_prefix}/lib/udev/rules.d/90-pulseaudio.rules %dir %{_libexecdir}/pulse %dir %{_datadir}/zsh/ %dir %{_datadir}/zsh/site-functions/ -%{_datadir}/zsh/site-functions/_%{name} +%{_datadir}/zsh/site-functions/_pulseaudio + +%files qpaeq +%{_bindir}/qpaeq +%{_libdir}/pulseaudio/modules/module-equalizer-sink.so + +%if 0%{?enable_lirc} +%files module-lirc +%{_libdir}/pulseaudio/modules/module-lirc.so +%endif + +%files module-x11 +%config(noreplace) %{_sysconfdir}/xdg/autostart/pulseaudio.desktop +%config(noreplace) %{_sysconfdir}/xdg/Xwayland-session.d/00-pulseaudio-x11 +%{_userunitdir}/pulseaudio-x11.service +#{_bindir}/start-pulseaudio-kde +%{_bindir}/start-pulseaudio-x11 +%{_libdir}/pulseaudio/modules/module-x11-bell.so +%{_libdir}/pulseaudio/modules/module-x11-publish.so +%{_libdir}/pulseaudio/modules/module-x11-xsmp.so +%{_libdir}/pulseaudio/modules/module-x11-cork-request.so +%{_mandir}/man1/start-pulseaudio-x11.1.gz + +%files module-zeroconf +%{_libdir}/pulseaudio/modules/libavahi-wrap.so +%{_libdir}/pulseaudio/modules/module-zeroconf-publish.so +%{_libdir}/pulseaudio/modules/module-zeroconf-discover.so +%{_libdir}/pulseaudio/modules/libraop.so +%{_libdir}/pulseaudio/modules/module-raop-discover.so +%{_libdir}/pulseaudio/modules/module-raop-sink.so + +%if 0%{?enable_jack} +%files module-jack +%{_libdir}/pulseaudio/modules/module-jackdbus-detect.so +%{_libdir}/pulseaudio/modules/module-jack-sink.so +%{_libdir}/pulseaudio/modules/module-jack-source.so +%endif + +%files module-bluetooth +%{_libdir}/pulseaudio/modules/libbluez*-util.so +%{_libdir}/pulseaudio/modules/module-bluez*-device.so +%{_libdir}/pulseaudio/modules/module-bluez*-discover.so +%{_libdir}/pulseaudio/modules/module-bluetooth-discover.so +%{_libdir}/pulseaudio/modules/module-bluetooth-policy.so + +%files module-gsettings +%{_libdir}/pulseaudio/modules/module-gsettings.so +%{_libexecdir}/pulse/gsettings-helper +%{_datadir}/GConf/gsettings/pulseaudio.convert +%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml + +%endif + +%ldconfig_scriptlets libs %files libs -f %{name}.lang +%doc README %license LICENSE GPL LGPL %dir %{_sysconfdir}/pulse/ %config(noreplace) %{_sysconfdir}/pulse/client.conf %{_libdir}/libpulse.so.0* %{_libdir}/libpulse-simple.so.0* -%dir %{_libdir}/%{name}/ -%{_libdir}/%{name}/libpulsecommon-%{version}.so +%dir %{_libdir}/pulseaudio/ +%{_libdir}/pulseaudio/libpulsecommon-%{pa_major}.so +%{_libdir}/pulseaudio/libpulsedsp.so + + +%ldconfig_scriptlets libs-glib2 %files libs-glib2 %{_libdir}/libpulse-mainloop-glib.so.0* %files libs-devel +%doc %{_vpath_builddir}/doxygen/html %{_includedir}/pulse/ %{_libdir}/libpulse.so %{_libdir}/libpulse-mainloop-glib.so @@ -407,92 +616,58 @@ systemctl --no-reload preset --global %{name}.socket >/dev/null 2>&1 || : %dir %{_libdir}/cmake %{_libdir}/cmake/PulseAudio/ -%if %{with gdm_hooks} -%files gdm-hooks -%attr(0700, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.pulse -%attr(0600, gdm, gdm) %{_localstatedir}/lib/gdm/.pulse/default.pa -%endif - -%files qpaeq -%{_bindir}/qpaeq -%{_libdir}/%{name}/modules/module-equalizer-sink.so - -%files module-bluetooth -%{_libdir}/%{name}/modules/libbluez*-util.so -%{_libdir}/%{name}/modules/module-bluez*-device.so -%{_libdir}/%{name}/modules/module-bluez*-discover.so -%{_libdir}/%{name}/modules/module-bluetooth-discover.so -%{_libdir}/%{name}/modules/module-bluetooth-policy.so - -%files module-gsettings -%{_libdir}/%{name}/modules/module-gsettings.so -%{_libexecdir}/pulse/gsettings-helper -%{_datadir}/GConf/gsettings/%{name}.convert -%{_datadir}/glib-2.0/schemas/org.freedesktop.%{name}.gschema.xml - -%files module-x11 -%config(noreplace) %{_sysconfdir}/xdg/autostart/%{name}.desktop -%config(noreplace) %{_sysconfdir}/xdg/Xwayland-session.d/00-%{name}-x11 -%{_userunitdir}/%{name}-x11.service -%{_bindir}/start-%{name}-x11 -%{_libdir}/%{name}/modules/module-x11-bell.so -%{_libdir}/%{name}/modules/module-x11-publish.so -%{_libdir}/%{name}/modules/module-x11-xsmp.so -%{_libdir}/%{name}/modules/module-x11-cork-request.so -%{_mandir}/man1/start-%{name}-x11.1* - -%files module-zeroconf -%{_libdir}/%{name}/modules/libavahi-wrap.so -%{_libdir}/%{name}/modules/module-zeroconf-publish.so -%{_libdir}/%{name}/modules/module-zeroconf-discover.so -%{_libdir}/%{name}/modules/libraop.so -%{_libdir}/%{name}/modules/module-raop-discover.so -%{_libdir}/%{name}/modules/module-raop-sink.so - -%if 0%{?enable_jack} -%files module-jack -%{_libdir}/%{name}/modules/module-jackdbus-detect.so -%{_libdir}/%{name}/modules/module-jack-sink.so -%{_libdir}/%{name}/modules/module-jack-source.so -%endif - -%if 0%{?enable_lirc} -%files module-lirc -%{_libdir}/%{name}/modules/module-lirc.so -%endif - %files utils %{_bindir}/pacat -%{_bindir}/pacmd %{_bindir}/pactl %{_bindir}/paplay %{_bindir}/parec %{_bindir}/pamon %{_bindir}/parecord %{_bindir}/pax11publish +%{_bindir}/padsp +%ifarch %{multilib_archs} +%{_bindir}/padsp-32 +%endif +%if 0%{?enable_daemon} +%{_bindir}/pacmd %{_bindir}/pasuspender +%endif %{_mandir}/man1/pacat.1* -%{_mandir}/man1/pacmd.1* %{_mandir}/man1/pactl.1* +%{_mandir}/man1/padsp.1* %{_mandir}/man1/pamon.1* %{_mandir}/man1/paplay.1* %{_mandir}/man1/parec.1* %{_mandir}/man1/parecord.1* -%{_mandir}/man1/pasuspender.1* %{_mandir}/man1/pax11publish.1* +%if 0%{?enable_daemon} +%{_mandir}/man1/pacmd.1* +%{_mandir}/man1/pasuspender.1* +%endif +%{_mandir}/man5/pulse-client.conf.5* %{bash_completionsdir}/pacat -%{bash_completionsdir}/pacmd %{bash_completionsdir}/pactl %{bash_completionsdir}/padsp %{bash_completionsdir}/paplay %{bash_completionsdir}/parec %{bash_completionsdir}/parecord +%if 0%{?enable_daemon} +%{bash_completionsdir}/pacmd %{bash_completionsdir}/pasuspender +%endif +%{_datadir}/zsh/site-functions/_pulseaudio + +%if 0%{?gdm_hooks} +%files gdm-hooks +%attr(0700, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.pulse +%attr(0600, gdm, gdm) %{_localstatedir}/lib/gdm/.pulse/default.pa +%endif -%files doc -%doc %{_vpath_builddir}/doxygen/html README %changelog +* Fri Jun 20 2025 zjl02254423 -17.0-1 +- update to 17.0 + * Fri Dec 13 2024 yangxinyu - 16.1-3 - add fix-volume-level-scroll-bar-cannot-be-selected.patch