!28 update to version 15.0 and split packages

Merge pull request !28 from zhouwenpei/openEuler-22.03-LTS-Next
This commit is contained in:
openeuler-ci-bot 2021-12-27 08:15:24 +00:00 committed by Gitee
commit f4ea5fc19d
8 changed files with 103 additions and 281 deletions

View File

@ -1,181 +0,0 @@
From de705a0eeaa27a8ac1abdc2625e639340323595a Mon Sep 17 00:00:00 2001
From: Tanu Kaskinen <tanuk@iki.fi>
Date: Tue, 6 Mar 2018 15:09:06 +0200
Subject: [PATCH 08/77] set exit_idle_time to 0 when we detect a session
As the comments explain, this fixes relogin problems on some systems
that remove our sockets on logout without terminating the daemon.
---
man/pulse-daemon.conf.5.xml.in | 15 ++++++++++++---
man/pulseaudio.1.xml.in | 17 +++++++++++++++--
src/modules/module-console-kit.c | 13 +++++++++++++
src/modules/module-systemd-login.c | 14 ++++++++++++++
src/modules/x11/module-x11-xsmp.c | 13 +++++++++++++
src/pulsecore/core.c | 10 ++++++++++
src/pulsecore/core.h | 2 ++
7 files changed, 79 insertions(+), 5 deletions(-)
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index f0550f3b..f49fa9b0 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -292,9 +292,18 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>exit-idle-time=</opt> Terminate the daemon after the
last client quit and this time in seconds passed. Use a negative value to
- disable this feature. Defaults to 20. The
- <opt>--exit-idle-time</opt> command line option takes
- precedence.</p>
+ disable this feature. Defaults to 20. The <opt>--exit-idle-time</opt>
+ command line option takes precedence.</p>
+
+ <p>When PulseAudio runs in the per-user mode and detects a login
+ session, then any positive value will be reset to 0 so that PulseAudio
+ will terminate immediately on logout. A positive value therefore has
+ effect only in environments where there's no support for login session
+ tracking. A negative value can still be used to disable any automatic
+ exit.</p>
+
+ <p>When PulseAudio runs in the system mode, automatic exit is always
+ disabled, so this option does nothing.</p>
</option>
<option>
diff --git a/man/pulseaudio.1.xml.in b/man/pulseaudio.1.xml.in
index f732b8ae..824eddb4 100644
--- a/man/pulseaudio.1.xml.in
+++ b/man/pulseaudio.1.xml.in
@@ -189,8 +189,21 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>--exit-idle-time</opt><arg>=SECS</arg></p>
- <optdesc><p>Terminate the daemon when idle and the specified
- number of seconds passed.</p></optdesc>
+ <optdesc>
+ <p>Terminate the daemon after the last client quit and this time in
+ seconds passed. Use a negative value to disable this feature. Defaults
+ to 20.</p>
+
+ <p>When PulseAudio runs in the per-user mode and detects a login
+ session, then any positive value will be reset to 0 so that PulseAudio
+ will terminate immediately on logout. A positive value therefore has
+ effect only in environments where there's no support for login session
+ tracking. A negative value can still be used to disable any automatic
+ exit.</p>
+
+ <p>When PulseAudio runs in the system mode, automatic exit is always
+ disabled, so this option does nothing.</p>
+ </optdesc>
</option>
<option>
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index c7938849..c8fe2ed2 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -118,6 +118,19 @@ static void add_session(struct userdata *u, const char *id) {
pa_log_debug("Added new session %s", id);
+ /* Positive exit_idle_time is only useful when we have no session tracking
+ * capability, so we can set it to 0 now that we have detected a session.
+ * The benefit of setting exit_idle_time to 0 is that pulseaudio will exit
+ * immediately when the session ends. That in turn is useful, because some
+ * systems (those that use pam_systemd but don't use systemd for managing
+ * pulseaudio) clean $XDG_RUNTIME_DIR on logout, but fail to terminate all
+ * services that depend on the files in $XDG_RUNTIME_DIR. The directory
+ * contains our sockets, and if the sockets are removed without terminating
+ * pulseaudio, a quick relogin will likely cause trouble, because a new
+ * instance will be spawned while the old instance is still running. */
+ if (u->core->exit_idle_time > 0)
+ pa_core_set_exit_idle_time(u->core, 0);
+
fail:
if (m)
diff --git a/src/modules/module-systemd-login.c b/src/modules/module-systemd-login.c
index 87981592..51401575 100644
--- a/src/modules/module-systemd-login.c
+++ b/src/modules/module-systemd-login.c
@@ -84,6 +84,20 @@ static int add_session(struct userdata *u, const char *id) {
pa_hashmap_put(u->sessions, session->id, session);
pa_log_debug("Added new session %s", id);
+
+ /* Positive exit_idle_time is only useful when we have no session tracking
+ * capability, so we can set it to 0 now that we have detected a session.
+ * The benefit of setting exit_idle_time to 0 is that pulseaudio will exit
+ * immediately when the session ends. That in turn is useful, because some
+ * systems (those that use pam_systemd but don't use systemd for managing
+ * pulseaudio) clean $XDG_RUNTIME_DIR on logout, but fail to terminate all
+ * services that depend on the files in $XDG_RUNTIME_DIR. The directory
+ * contains our sockets, and if the sockets are removed without terminating
+ * pulseaudio, a quick relogin will likely cause trouble, because a new
+ * instance will be spawned while the old instance is still running. */
+ if (u->core->exit_idle_time > 0)
+ pa_core_set_exit_idle_time(u->core, 0);
+
return 0;
}
diff --git a/src/modules/x11/module-x11-xsmp.c b/src/modules/x11/module-x11-xsmp.c
index 0238e516..6f801237 100644
--- a/src/modules/x11/module-x11-xsmp.c
+++ b/src/modules/x11/module-x11-xsmp.c
@@ -206,6 +206,19 @@ int pa__init(pa_module*m) {
if (!u->client)
goto fail;
+ /* Positive exit_idle_time is only useful when we have no session tracking
+ * capability, so we can set it to 0 now that we have detected a session.
+ * The benefit of setting exit_idle_time to 0 is that pulseaudio will exit
+ * immediately when the session ends. That in turn is useful, because some
+ * systems (those that use pam_systemd but don't use systemd for managing
+ * pulseaudio) clean $XDG_RUNTIME_DIR on logout, but fail to terminate all
+ * services that depend on the files in $XDG_RUNTIME_DIR. The directory
+ * contains our sockets, and if the sockets are removed without terminating
+ * pulseaudio, a quick relogin will likely cause trouble, because a new
+ * instance will be spawned while the old instance is still running. */
+ if (u->core->exit_idle_time > 0)
+ pa_core_set_exit_idle_time(u->core, 0);
+
pa_modargs_free(ma);
return 0;
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index 79abbc04..da42a13e 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -426,6 +426,16 @@ void pa_core_update_default_source(pa_core *core) {
pa_hook_fire(&core->hooks[PA_CORE_HOOK_DEFAULT_SOURCE_CHANGED], core->default_source);
}
+void pa_core_set_exit_idle_time(pa_core *core, int time) {
+ pa_assert(core);
+
+ if (time == core->exit_idle_time)
+ return;
+
+ pa_log_info("exit_idle_time: %i -> %i", core->exit_idle_time, time);
+ core->exit_idle_time = time;
+}
+
static void exit_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
pa_core *c = userdata;
pa_assert(c->exit_event == e);
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index 213964ce..38622f61 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -258,6 +258,8 @@ void pa_core_set_configured_default_source(pa_core *core, const char *source);
void pa_core_update_default_sink(pa_core *core);
void pa_core_update_default_source(pa_core *core);
+void pa_core_set_exit_idle_time(pa_core *core, int time);
+
/* Check whether no one is connected to this core */
void pa_core_check_idle(pa_core *c);
--
2.17.1

Binary file not shown.

View File

@ -1 +0,0 @@
961b23ca1acfd28f2bc87414c27bb40e12436efcf2158d29721b1e89f3f28057 pulseaudio-13.0.tar.xz

BIN
pulseaudio-15.0.tar.xz Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
a40b887a3ba98cc26976eb11bdb6613988f145b19024d1b6555c6a03c9cba1a0 *pulseaudio-15.0.tar.xz

View File

@ -1,48 +0,0 @@
diff -up pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in.disable_flat_volumes pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in
--- pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in.disable_flat_volumes 2016-05-26 23:21:17.000000000 -0500
+++ pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in 2016-05-31 10:01:55.679976730 -0500
@@ -220,7 +220,7 @@ License along with PulseAudio; if not, s
<p><opt>flat-volumes=</opt> Enable 'flat' volumes, i.e. where
possible let the sink volume equal the maximum of the volumes of
the inputs connected to it. Takes a boolean argument, defaults
- to <opt>yes</opt>.</p>
+ to <opt>no</opt>.</p>
</option>
</section>
diff -up pulseaudio-8.99.2/src/daemon/daemon-conf.c.disable_flat_volumes pulseaudio-8.99.2/src/daemon/daemon-conf.c
--- pulseaudio-8.99.2/src/daemon/daemon-conf.c.disable_flat_volumes 2016-05-26 23:21:17.000000000 -0500
+++ pulseaudio-8.99.2/src/daemon/daemon-conf.c 2016-05-31 10:01:55.680976735 -0500
@@ -68,7 +68,7 @@ static const pa_daemon_conf default_conf
.realtime_priority = 5, /* Half of JACK's default rtprio */
.disallow_module_loading = false,
.disallow_exit = false,
- .flat_volumes = true,
+ .flat_volumes = false,
.exit_idle_time = 20,
.scache_idle_time = 20,
.script_commands = NULL,
diff -up pulseaudio-8.99.2/src/daemon/daemon.conf.in.disable_flat_volumes pulseaudio-8.99.2/src/daemon/daemon.conf.in
--- pulseaudio-8.99.2/src/daemon/daemon.conf.in.disable_flat_volumes 2016-05-31 10:01:55.680976735 -0500
+++ pulseaudio-8.99.2/src/daemon/daemon.conf.in 2016-05-31 10:02:28.048133267 -0500
@@ -57,7 +57,7 @@ ifelse(@HAVE_DBUS@, 1, [dnl
; enable-lfe-remixing = no
; lfe-crossover-freq = 0
-; flat-volumes = yes
+; flat-volumes = no
ifelse(@HAVE_SYS_RESOURCE_H@, 1, [dnl
; rlimit-fsize = -1
diff -up pulseaudio-8.99.2/src/pulsecore/core.c.disable_flat_volumes pulseaudio-8.99.2/src/pulsecore/core.c
--- pulseaudio-8.99.2/src/pulsecore/core.c.disable_flat_volumes 2016-05-26 23:21:17.000000000 -0500
+++ pulseaudio-8.99.2/src/pulsecore/core.c 2016-05-31 10:01:55.681976740 -0500
@@ -135,7 +135,7 @@ pa_core* pa_core_new(pa_mainloop_api *m,
c->exit_idle_time = -1;
c->scache_idle_time = 20;
- c->flat_volumes = true;
+ c->flat_volumes = false;
c->disallow_module_loading = false;
c->disallow_exit = false;
c->running_as_daemon = false;

View File

@ -1,6 +1,13 @@
diff -up pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in
--- pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart 2015-02-12 08:10:35.000000000 -0600
+++ pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in 2015-06-22 11:24:13.561614127 -0500
---
src/daemon/start-pulseaudio-x11.in | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/daemon/start-pulseaudio-x11.in b/src/daemon/start-pulseaudio-x11.in
index 722a639..7cdf14e 100755
--- a/src/daemon/start-pulseaudio-x11.in
+++ b/src/daemon/start-pulseaudio-x11.in
@@ -17,6 +17,9 @@
set -e
@ -8,6 +15,9 @@ diff -up pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart pulseaudio-
+# probe to test if autospawn works, else resort to starting manually
+@PACTL_BINARY@ info > /dev/null 2>&1 || @PA_BINARY@ --start "$@"
+
if [ x"$DISPLAY" != x ] ; then
@PACTL_BINARY@ load-module module-x11-publish "display=$DISPLAY" > /dev/null
if [ -n "$1" ] ; then
case $1 in
stop)
--
2.27.0

View File

@ -5,17 +5,17 @@
Name: pulseaudio
Summary: Improved Linux Sound Server
Version: 13.0
Release: 5
Version: 15.0
Release: 1
License: LGPLv2+
URL: https://www.freedesktop.org/wiki/Software/PulseAudio
Source0: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz
Source1: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz.sha256
Source1: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz.sha256sum
Source5: default.pa-for-gdm
Patch201: pulseaudio-autostart.patch
Patch202: pulseaudio-9.0-disable_flat_volumes.patch
BuildRequires: meson
BuildRequires: automake libtool gcc-c++ bash-completion
BuildRequires: m4 libtool-ltdl-devel intltool pkgconfig doxygen xmltoman libsndfile-devel
BuildRequires: alsa-lib-devel glib2-devel gtk2-devel GConf2-devel avahi-devel check-devel
@ -24,13 +24,14 @@ BuildRequires: xorg-x11-proto-devel libXtst-devel libXi-devel libSM-devel libX1
BuildRequires: libICE-devel xcb-util-devel openssl-devel orc-devel libtdb-devel speexdsp-devel
BuildRequires: libasyncns-devel systemd-devel systemd dbus-devel libcap-devel fftw-devel
BuildRequires: webrtc-audio-processing-devel
BuildRequires: pkgconfig(gstreamer-1.0) pkgconfig(gstreamer-app-1.0) pkgconfig(gstreamer-rtp-1.0)
Obsoletes: padevchooser < 1.0
Provides: %{name}-module-x11 %{name}-module-bluetooth %{name}-libs %{name}-libs-glib2 %{name}-utils %{name}-esound-compat %{name}-module-zeroconf %{name}-module-gconf %{name}-module-gsettings
Obsoletes: %{name}-module-x11 %{name}-module-bluetooth %{name}-libs %{name}-libs-glib2 %{name}-utils %{name}-esound-compat %{name}-module-zeroconf %{name}-module-gconf %{name}-module-gsettings
Provides: %{name}-module-x11 %{name}-utils %{name}-esound-compat %{name}-module-zeroconf %{name}-module-gconf %{name}-module-gsettings
Obsoletes: %{name}-module-x11 %{name}-utils %{name}-esound-compat %{name}-module-zeroconf %{name}-module-gconf %{name}-module-gsettings
Requires(pre): shadow-utils
Requires: rtkit bluez >= 5.0
Requires: rtkit bluez >= 5.0 webrtc-audio-processing
%description
PulseAudio is a sound server for Linux and other Unix like operating
@ -44,14 +45,39 @@ Requires: python3-qt5 python3-dbus
%description qpaeq
qpaeq is a equalizer interface for pulseaudio's equalizer sinks.
%package devel
%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 libs
Summary: Libraries for PulseAudio clients
License: LGPLv2+
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: LGPLv2+
Requires: %{name}-libs = %{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: LGPLv2+
Requires: %{name} = %{version}-%{release}
Provides: %{name}-libs-devel %{name}-libs-devel%{?_isa}
Obsoletes: %{name}-libs-devel
Requires: %{name}-libs = %{version}-%{release}
Requires: %{name}-libs-glib2 = %{version}-%{release}
%description devel
%description libs-devel
Headers and libraries for developing applications that can communicate with
a PulseAudio sound server.
@ -64,33 +90,34 @@ sed -i.no_consolekit -e \
's/^load-module module-console-kit/#load-module module-console-kit/' \
src/daemon/default.pa.in
NOCONFIGURE=1 ./bootstrap.sh
%build
%configure \
--disable-silent-rules --disable-rpath --with-system-user=pulse \
--with-system-group=pulse --with-access-group=pulse-access \
--disable-oss-output --disable-jack --disable-lirc \
--disable-bluez4 --enable-bluez5 --enable-gconf \
--enable-gsettings --enable-webrtc-aec --enable-tests
%meson \
-D system_user=pulse \
-D system_group=pulse \
-D access_group=pulse-access \
-D oss-output=disabled \
-D jack=disabled \
-D 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 webrtc-aec=enabled \
-D systemd=disabled \
-D tests=true
%meson_build
%make_build V=1
make doxygen
%meson_build doxygen
%install
%make_install
%ifarch %{multilib_archs}
pushd %{buildroot}%{_bindir}
%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
%meson_install
mkdir -p $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
@ -107,7 +134,7 @@ install -p -m644 %{name}-%{_arch}.conf $RPM_BUILD_ROOT/etc/ld.so.conf.d/
%check
%make_build check || TESTS_ERROR=$?
%meson_test || TESTS_ERROR=$?
if [ "${TESTS_ERROR}" != "" ]; then
cat src/test-suite.log
exit $TESTS_ERROR
@ -144,8 +171,6 @@ exit 0
%{_sysconfdir}/dbus-1/system.d/pulseaudio-system.conf
%{_sysconfdir}/xdg/autostart/pulseaudio.desktop
%{bash_completionsdir}/*
%{_userunitdir}/pulseaudio.*
%{_bindir}/esdcompat
%{_bindir}/pulseaudio
%{_bindir}/start-pulseaudio-x11
%{_bindir}/pacat
@ -156,31 +181,45 @@ exit 0
%{_bindir}/pamon
%{_bindir}/parecord
%{_bindir}/pax11publish
%{_bindir}/padsp
%{_bindir}/pasuspender
%{_bindir}/pa-info
%ifarch %{multilib_archs}
%{_bindir}/padsp-32
%endif
%{_libdir}/*.so.*
%{_libdir}/pulseaudio/*.so
%{_libdir}/pulse-%{version}/modules/*.so
%exclude %{_libdir}/pulse-%{version}/modules/module-equalizer-sink.so
%exclude %{_libdir}/pulse-%{version}/modules/module-detect.so
%{_prefix}/lib/udev/rules.d/90-pulseaudio.rules
%{_libexecdir}/pulse/*-helper
%{_datadir}/locale/*
%{_datadir}/pulseaudio/alsa-mixer/*/
%{_datadir}/zsh/site-functions/_pulseaudio
%{_datadir}/GConf/gsettings/pulseaudio.convert
%config(noreplace) %{_sysconfdir}/xdg/Xwayland-session.d/00-pulseaudio-x11
%files qpaeq
%defattr(-,root,root)
%{_bindir}/qpaeq
%{_libdir}/pulse-%{version}/modules/module-equalizer-sink.so
%files devel
%files module-bluetooth
%{_libdir}/pulse-15.0/modules/libbluez*-util.so
%{_libdir}/pulse-15.0/modules/module-bluez*-device.so
%{_libdir}/pulse-15.0/modules/module-bluez*-discover.so
%{_libdir}/pulse-15.0/modules/module-bluetooth-discover.so
%{_libdir}/pulse-15.0/modules/module-bluetooth-policy.so
%files libs
%dir %{_sysconfdir}/pulse/
%config(noreplace) %{_sysconfdir}/pulse/client.conf
%{_libdir}/libpulse.so.0*
%{_libdir}/libpulse-simple.so.0*
%dir %{_libdir}/pulseaudio/
%{_libdir}/pulseaudio/libpulsecommon-15.0.so
%files libs-glib2
%{_libdir}/libpulse-mainloop-glib.so.0*
%files libs-devel
%defattr(-,root,root)
%{_includedir}/pulse/
%{_libdir}/*.so
@ -190,12 +229,14 @@ exit 0
%files help
%defattr(-,root,root)
%doc README doxygen/html
%{_mandir}/man*/*
%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml
%changelog
* Fri Sep 3 2021 zhouwenpei <zhouwenpei11@huawei.com> - 13.0-5
* Tue Dec 21 2021 zhouwenpei <zhouwenpei1@huawei.com> - 15.0-1
- update to version 15.0 and split packages
* Fri Sep 3 2021 zhouwenpei <zhouwenpei1@huawei.com> - 13.0-5
- delete rpath info
* Fri Oct 30 2020 xinghe <xinghe1@huawei.com> - 13.0-4