public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Pacho Ramos" <pacho@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: media-sound/pulseaudio/, media-sound/pulseaudio/files/
Date: Sun, 30 Jun 2019 11:23:01 +0000 (UTC)	[thread overview]
Message-ID: <1561893770.a4f08a1601d56e585c3c724d68b80e1614f9c49e.pacho@gentoo> (raw)

commit:     a4f08a1601d56e585c3c724d68b80e1614f9c49e
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 30 11:20:56 2019 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sun Jun 30 11:22:50 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a4f08a16

media-sound/pulseaudio: Fix relogin issues and alsa-lib compat

Closes: https://bugs.gentoo.org/686206
Package-Manager: Portage-2.3.67, Repoman-2.3.16
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 .../files/pulseaudio-12.2-alsa-header-path.patch   | 130 ++++++++
 .../files/pulseaudio-12.2-alsa-header-path2.patch  |  45 +++
 .../files/pulseaudio-12.2-exit-time-session.patch  | 181 ++++++++++
 media-sound/pulseaudio/pulseaudio-12.2-r2.ebuild   | 366 +++++++++++++++++++++
 4 files changed, 722 insertions(+)

diff --git a/media-sound/pulseaudio/files/pulseaudio-12.2-alsa-header-path.patch b/media-sound/pulseaudio/files/pulseaudio-12.2-alsa-header-path.patch
new file mode 100644
index 00000000000..334af3ee755
--- /dev/null
+++ b/media-sound/pulseaudio/files/pulseaudio-12.2-alsa-header-path.patch
@@ -0,0 +1,130 @@
+From 993d3fd89e5611997f1e165bf03edefb0204b0a4 Mon Sep 17 00:00:00 2001
+From: Olaf Hering <olaf@aepfle.de>
+Date: Wed, 27 Mar 2019 09:35:05 +0100
+Subject: [PATCH 287/375] alsa: Use correct header path
+
+Consumers are expected to use <alsa/asoundlib.h> instead of
+<asoundlib.h>.
+
+This is in preparation of an change to pkgconfig(alsa) to
+not pollute CFLAGS with -I/usr/include/alsa anymore.
+
+Signed-off-by: Olaf Hering <olaf@aepfle.de>
+---
+ src/modules/alsa/alsa-mixer.c         | 2 +-
+ src/modules/alsa/alsa-mixer.h         | 2 +-
+ src/modules/alsa/alsa-sink.c          | 2 +-
+ src/modules/alsa/alsa-source.c        | 2 +-
+ src/modules/alsa/alsa-ucm.c           | 2 +-
+ src/modules/alsa/alsa-util.c          | 2 +-
+ src/modules/alsa/alsa-util.h          | 2 +-
+ src/modules/alsa/module-alsa-source.c | 2 +-
+ 8 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
+index 5cb99c8fd..cd99a75f8 100644
+--- a/src/modules/alsa/alsa-mixer.c
++++ b/src/modules/alsa/alsa-mixer.c
+@@ -23,7 +23,7 @@
+ #endif
+ 
+ #include <sys/types.h>
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ #include <math.h>
+ 
+ #ifdef HAVE_VALGRIND_MEMCHECK_H
+diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h
+index 3ea4d7329..65b071165 100644
+--- a/src/modules/alsa/alsa-mixer.h
++++ b/src/modules/alsa/alsa-mixer.h
+@@ -21,7 +21,7 @@
+   along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
+ ***/
+ 
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+ #include <pulse/sample.h>
+ #include <pulse/mainloop-api.h>
+diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
+index 28143402a..4b46708ce 100644
+--- a/src/modules/alsa/alsa-sink.c
++++ b/src/modules/alsa/alsa-sink.c
+@@ -25,7 +25,7 @@
+ #include <signal.h>
+ #include <stdio.h>
+ 
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+ #ifdef HAVE_VALGRIND_MEMCHECK_H
+ #include <valgrind/memcheck.h>
+diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
+index 8129220b0..c8bf649e1 100644
+--- a/src/modules/alsa/alsa-source.c
++++ b/src/modules/alsa/alsa-source.c
+@@ -25,7 +25,7 @@
+ #include <signal.h>
+ #include <stdio.h>
+ 
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+ #include <pulse/rtclock.h>
+ #include <pulse/timeval.h>
+diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c
+index 341c8012e..0a40ca8fe 100644
+--- a/src/modules/alsa/alsa-ucm.c
++++ b/src/modules/alsa/alsa-ucm.c
+@@ -27,7 +27,7 @@
+ #include <ctype.h>
+ #include <sys/types.h>
+ #include <limits.h>
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+ #ifdef HAVE_VALGRIND_MEMCHECK_H
+ #include <valgrind/memcheck.h>
+diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
+index e8d712e72..bd0a47e50 100644
+--- a/src/modules/alsa/alsa-util.c
++++ b/src/modules/alsa/alsa-util.c
+@@ -23,7 +23,7 @@
+ #endif
+ 
+ #include <sys/types.h>
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+ #include <pulse/sample.h>
+ #include <pulse/xmalloc.h>
+diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
+index 6b27339ec..4ceaa06ee 100644
+--- a/src/modules/alsa/alsa-util.h
++++ b/src/modules/alsa/alsa-util.h
+@@ -21,7 +21,7 @@
+   along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
+ ***/
+ 
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+ #include <pulse/sample.h>
+ #include <pulse/channelmap.h>
+diff --git a/src/modules/alsa/module-alsa-source.c b/src/modules/alsa/module-alsa-source.c
+index af6800dd2..747ba9342 100644
+--- a/src/modules/alsa/module-alsa-source.c
++++ b/src/modules/alsa/module-alsa-source.c
+@@ -24,7 +24,7 @@
+ 
+ #include <stdio.h>
+ 
+-#include <asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+ #ifdef HAVE_VALGRIND_MEMCHECK_H
+ #include <valgrind/memcheck.h>
+-- 
+2.21.0
+

diff --git a/media-sound/pulseaudio/files/pulseaudio-12.2-alsa-header-path2.patch b/media-sound/pulseaudio/files/pulseaudio-12.2-alsa-header-path2.patch
new file mode 100644
index 00000000000..c592da2205e
--- /dev/null
+++ b/media-sound/pulseaudio/files/pulseaudio-12.2-alsa-header-path2.patch
@@ -0,0 +1,45 @@
+From b89d33bb182c42db5ad3987b0e91b7bf62f421e8 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Sun, 21 Apr 2019 11:59:30 +0200
+Subject: [PATCH 304/375] alsa: Fix inclusion of use-case.h
+
+The recent change in ALSA upstream stripped -I$include/alsa path from
+pkgconfig.  We already fixed for this change in some places but still
+the code for UCM was overlooked, and this resulted in the unresolved
+symbols in alsa card module. Fix them as well.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ configure.ac                | 2 +-
+ src/modules/alsa/alsa-ucm.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c004bd70d..b44ed1595 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -826,7 +826,7 @@ AS_IF([test "x$enable_alsa" = "xyes" && test "x$HAVE_ALSA" = "x0"],
+ AS_IF([test "x$HAVE_ALSA" = "x1"],
+     [
+         save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $ASOUNDLIB_CFLAGS"
+-        AC_CHECK_HEADERS([use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
++        AC_CHECK_HEADERS([alsa/use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
+         CPPFLAGS="$save_CPPFLAGS"
+     ],
+     HAVE_ALSA_UCM=0)
+diff --git a/src/modules/alsa/alsa-ucm.h b/src/modules/alsa/alsa-ucm.h
+index 53abf3f90..c926f3cc3 100644
+--- a/src/modules/alsa/alsa-ucm.h
++++ b/src/modules/alsa/alsa-ucm.h
+@@ -23,7 +23,7 @@
+ ***/
+ 
+ #ifdef HAVE_ALSA_UCM
+-#include <use-case.h>
++#include <alsa/use-case.h>
+ #else
+ typedef void snd_use_case_mgr_t;
+ #endif
+-- 
+2.21.0
+

diff --git a/media-sound/pulseaudio/files/pulseaudio-12.2-exit-time-session.patch b/media-sound/pulseaudio/files/pulseaudio-12.2-exit-time-session.patch
new file mode 100644
index 00000000000..045ab5567d8
--- /dev/null
+++ b/media-sound/pulseaudio/files/pulseaudio-12.2-exit-time-session.patch
@@ -0,0 +1,181 @@
+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
+

diff --git a/media-sound/pulseaudio/pulseaudio-12.2-r2.ebuild b/media-sound/pulseaudio/pulseaudio-12.2-r2.ebuild
new file mode 100644
index 00000000000..4e7497c6168
--- /dev/null
+++ b/media-sound/pulseaudio/pulseaudio-12.2-r2.ebuild
@@ -0,0 +1,366 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+inherit autotools bash-completion-r1 flag-o-matic gnome2-utils linux-info systemd user udev multilib-minimal
+
+DESCRIPTION="A networked sound server with an advanced plugin system"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/PulseAudio/"
+SRC_URI="https://freedesktop.org/software/pulseaudio/releases/${P}.tar.xz"
+
+# libpulse-simple and libpulse link to libpulse-core; this is daemon's
+# library and can link to gdbm and other GPL-only libraries. In this
+# cases, we have a fully GPL-2 package. Leaving the rest of the
+# GPL-forcing USE flags for those who use them.
+LICENSE="!gdbm? ( LGPL-2.1 ) gdbm? ( GPL-2 )"
+
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~amd64-linux ~x86-linux"
+
+# +alsa-plugin as discussed in bug #519530
+IUSE="+alsa +alsa-plugin +asyncns bluetooth +caps dbus doc equalizer elogind gconf
++gdbm +glib gtk ipv6 jack libsamplerate libressl lirc native-headset neon
+ofono-headset +orc oss qt5 realtime selinux sox ssl systemd system-wide tcpd test
++udev +webrtc-aec +X zeroconf"
+
+# See "*** BLUEZ support not found (requires D-Bus)" in configure.ac
+REQUIRED_USE="
+	?? ( elogind systemd )
+	bluetooth? ( dbus )
+	equalizer? ( dbus )
+	ofono-headset? ( bluetooth )
+	native-headset? ( bluetooth )
+	realtime? ( dbus )
+	udev? ( || ( alsa oss ) )
+"
+
+# libpcre needed in some cases, bug #472228
+CDEPEND="
+	|| (
+		elibc_glibc? ( virtual/libc )
+		elibc_uclibc? ( virtual/libc )
+		dev-libs/libpcre
+	)
+	>=media-libs/libsndfile-1.0.20[${MULTILIB_USEDEP}]
+	X? (
+		>=x11-libs/libX11-1.4.0[${MULTILIB_USEDEP}]
+		>=x11-libs/libxcb-1.6[${MULTILIB_USEDEP}]
+		x11-libs/libSM[${MULTILIB_USEDEP}]
+		x11-libs/libICE[${MULTILIB_USEDEP}]
+		x11-libs/libXtst[${MULTILIB_USEDEP}]
+	)
+	caps? ( >=sys-libs/libcap-2.22-r2[${MULTILIB_USEDEP}] )
+	libsamplerate? ( >=media-libs/libsamplerate-0.1.1-r1 )
+	alsa? ( >=media-libs/alsa-lib-1.0.19 )
+	glib? ( >=dev-libs/glib-2.26.0:2[${MULTILIB_USEDEP}] )
+	zeroconf? ( >=net-dns/avahi-0.6.12[dbus] )
+	jack? ( virtual/jack )
+	tcpd? ( sys-apps/tcp-wrappers[${MULTILIB_USEDEP}] )
+	lirc? ( app-misc/lirc )
+	dbus? ( >=sys-apps/dbus-1.0.0[${MULTILIB_USEDEP}] )
+	gtk? ( x11-libs/gtk+:3 )
+	bluetooth? (
+		>=net-wireless/bluez-5
+		>=sys-apps/dbus-1.0.0
+		media-libs/sbc
+	)
+	asyncns? ( net-libs/libasyncns[${MULTILIB_USEDEP}] )
+	udev? ( >=virtual/udev-143[hwdb(+)] )
+	equalizer? ( sci-libs/fftw:3.0 )
+	ofono-headset? ( >=net-misc/ofono-1.13 )
+	orc? ( >=dev-lang/orc-0.4.15 )
+	sox? ( >=media-libs/soxr-0.1.1 )
+	ssl? (
+		!libressl? ( dev-libs/openssl:0= )
+		libressl? ( dev-libs/libressl:= )
+	)
+	media-libs/speexdsp
+	gdbm? ( sys-libs/gdbm:= )
+	webrtc-aec? ( >=media-libs/webrtc-audio-processing-0.2 )
+	elogind? ( sys-auth/elogind )
+	systemd? ( sys-apps/systemd:0=[${MULTILIB_USEDEP}] )
+	dev-libs/libltdl:0
+	selinux? ( sec-policy/selinux-pulseaudio )
+" # libltdl is a valid RDEPEND, libltdl.so is used for native abi in pulsecore and daemon
+
+RDEPEND="${CDEPEND}
+	realtime? ( sys-auth/rtkit )
+	gconf? ( >=gnome-base/gconf-3.2.6 )
+"
+
+DEPEND="${RDEPEND}
+	sys-devel/m4
+	doc? ( app-doc/doxygen )
+	test? ( >=dev-libs/check-0.9.10 )
+	X? (
+		x11-base/xorg-proto
+		>=x11-libs/libXtst-1.0.99.2[${MULTILIB_USEDEP}]
+	)
+	dev-libs/libatomic_ops
+	virtual/pkgconfig
+	system-wide? ( || ( dev-util/unifdef sys-freebsd/freebsd-ubin ) )
+	dev-util/intltool
+	>=sys-devel/gettext-0.18.1
+"
+# This is a PDEPEND to avoid a circular dep
+PDEPEND="
+	alsa? ( alsa-plugin? ( >=media-plugins/alsa-plugins-1.0.27-r1[pulseaudio,${MULTILIB_USEDEP}] ) )
+"
+
+# alsa-utils dep is for the alsasound init.d script (see bug #155707)
+# bluez dep is for the bluetooth init.d script
+# PyQt5 dep is for the qpaeq script
+RDEPEND="${RDEPEND}
+	equalizer? ( qt5? ( dev-python/PyQt5[dbus,widgets] ) )
+	system-wide? (
+		alsa? ( media-sound/alsa-utils )
+		bluetooth? ( >=net-wireless/bluez-5 )
+	)
+"
+
+PATCHES=(
+	"${FILESDIR}"/pulseaudio-11.1-disable-flat-volumes.patch # bug 627894
+	# Backports from Fedora
+	"${FILESDIR}"/${P}-exit-time-session.patch
+	"${FILESDIR}"/${P}-alsa-header-path.patch
+	"${FILESDIR}"/${P}-alsa-header-path2.patch
+)
+
+pkg_pretend() {
+	CONFIG_CHECK="~HIGH_RES_TIMERS"
+	WARNING_HIGH_RES_TIMERS="CONFIG_HIGH_RES_TIMERS:\tis not set (required for enabling timer-based scheduling in pulseaudio)\n"
+	check_extra_config
+
+	if linux_config_exists; then
+		local snd_hda_prealloc_size=$(linux_chkconfig_string SND_HDA_PREALLOC_SIZE)
+		if [ -n "${snd_hda_prealloc_size}" ] && [ "${snd_hda_prealloc_size}" -lt 2048 ]; then
+			ewarn "A preallocated buffer-size of 2048 (kB) or higher is recommended for the HD-audio driver!"
+			ewarn "CONFIG_SND_HDA_PREALLOC_SIZE=${snd_hda_prealloc_size}"
+		fi
+	fi
+}
+
+pkg_setup() {
+	linux-info_pkg_setup
+	gnome2_environment_reset #543364
+
+	enewgroup audio 18 # Just make sure it exists
+
+	if use system-wide; then
+		enewgroup pulse-access
+		enewgroup pulse
+		enewuser pulse -1 -1 /var/run/pulse pulse,audio
+	fi
+}
+
+src_prepare() {
+	default
+
+	# Skip test that cannot work with sandbox, bug #501846
+	sed -i -e '/lock-autospawn-test /d' src/Makefile.am || die
+	sed -i -e 's/lock-autospawn-test$(EXEEXT) //' src/Makefile.in || die
+
+	eautoreconf
+}
+
+multilib_src_configure() {
+	local myconf=(
+		--disable-adrian-aec
+		--disable-bluez4
+		--disable-esound
+		--disable-gconf
+		--disable-solaris
+		--enable-largefile
+		--localstatedir="${EPREFIX}"/var
+		--with-systemduserunitdir=$(systemd_get_userunitdir)
+		--with-udev-rules-dir="${EPREFIX}/$(get_udevdir)"/rules.d
+		$(multilib_native_use_enable alsa)
+		$(multilib_native_use_enable bluetooth bluez5)
+		$(multilib_native_use_enable glib gsettings)
+		$(multilib_native_use_enable gtk gtk3)
+		$(multilib_native_use_enable jack)
+		$(multilib_native_use_enable libsamplerate samplerate)
+		$(multilib_native_use_enable lirc)
+		$(multilib_native_use_enable orc)
+		$(multilib_native_use_enable oss oss-output)
+		$(multilib_native_use_enable ssl openssl)
+		# tests involve random modules, so just do them for the native
+		$(multilib_native_use_enable test default-build-tests)
+		$(multilib_native_use_enable udev)
+		$(multilib_native_use_enable webrtc-aec)
+		$(multilib_native_use_enable zeroconf avahi)
+		$(multilib_native_use_with equalizer fftw)
+		$(multilib_native_use_with sox soxr)
+		$(multilib_native_usex gdbm '--with-database=gdbm' '--with-database=simple')
+		$(use_enable glib glib2)
+		$(use_enable asyncns)
+		$(use_enable neon neon-opt)
+		$(use_enable tcpd tcpwrap)
+		$(use_enable dbus)
+		$(use_enable X x11)
+		$(use_enable systemd systemd-daemon)
+		# systemd-login isn't necessary for non-native, but the rest of systemd are; not changing it at this point close to a meson port
+		$(use_enable systemd systemd-login)
+		$(use_enable systemd systemd-journal)
+		$(use_enable ipv6)
+		$(use_with caps)
+	)
+
+	if use elogind && multilib_is_native_abi; then
+		myconf+=(
+			--enable-systemd-login
+			SYSTEMDLOGIN_CFLAGS=`pkg-config --cflags "libelogind" 2>/dev/null`
+			SYSTEMDLOGIN_LIBS=`pkg-config --libs "libelogind" 2>/dev/null`
+		)
+	fi
+
+	if use bluetooth; then
+		myconf+=(
+			$(multilib_native_use_enable native-headset bluez5-native-headset)
+			$(multilib_native_use_enable ofono-headset bluez5-ofono-headset)
+		)
+	fi
+
+	if ! multilib_is_native_abi; then
+		myconf+=(
+			# hack around unnecessary checks
+			# (results don't matter, we're not building anything using it)
+			ac_cv_lib_ltdl_lt_dladvise_init=yes
+			LIBSPEEX_CFLAGS=' '
+			LIBSPEEX_LIBS=' '
+		)
+	else
+		# Make padsp work for non-native ABI, supposedly only possible with glibc; this is used by /usr/bin/padsp that comes from native build, thus we need this argument for native build
+		if use elibc_glibc ; then
+			myconf+=( --with-pulsedsp-location="${EPREFIX}"'/usr/\\$$LIB/pulseaudio' )
+		fi
+	fi
+
+	ECONF_SOURCE=${S} \
+	econf "${myconf[@]}"
+}
+
+multilib_src_compile() {
+	if multilib_is_native_abi; then
+		emake
+		use doc && emake doxygen
+	else
+		local targets=( libpulse.la libpulsedsp.la libpulse-simple.la )
+		use glib && targets+=( libpulse-mainloop-glib.la )
+		emake -C src ${targets[*]}
+	fi
+}
+
+multilib_src_test() {
+	# We avoid running the toplevel check target because that will run
+	# po/'s tests too, and they are broken. Officially, it should work
+	# with intltool 0.41, but that doesn't look like a stable release.
+	if multilib_is_native_abi; then
+		emake -C src check
+	fi
+}
+
+multilib_src_install() {
+	if multilib_is_native_abi; then
+		emake -j1 DESTDIR="${D}" bashcompletiondir="$(get_bashcompdir)" install
+		if use doc ; then
+			docinto html
+			dodoc -r doxygen/html/
+		fi
+	else
+		local targets=( libpulse.la libpulse-simple.la )
+		use glib && targets+=( libpulse-mainloop-glib.la )
+		emake DESTDIR="${D}" install-pkgconfigDATA
+		emake DESTDIR="${D}" -C src \
+			install-libLTLIBRARIES \
+			install-padsplibLTLIBRARIES \
+			lib_LTLIBRARIES="${targets[*]}" \
+			install-pulseincludeHEADERS
+	fi
+}
+
+multilib_src_install_all() {
+	if use system-wide; then
+		newconfd "${FILESDIR}/pulseaudio.conf.d" pulseaudio
+
+		use_define() {
+			local define=${2:-$(echo $1 | tr '[:lower:]' '[:upper:]')}
+
+			use "$1" && echo "-D$define" || echo "-U$define"
+		}
+
+		unifdef $(use_define zeroconf AVAHI) \
+			$(use_define alsa) \
+			$(use_define bluetooth) \
+			$(use_define udev) \
+			"${FILESDIR}/pulseaudio.init.d-5" \
+			> "${T}/pulseaudio"
+
+		doinitd "${T}/pulseaudio"
+
+		systemd_dounit "${FILESDIR}/${PN}.service"
+
+		# We need /var/run/pulse, bug #442852
+		systemd_newtmpfilesd "${FILESDIR}/${PN}.tmpfiles" "${PN}.conf"
+	else
+		# Prevent warnings when system-wide is not used, bug #447694
+		if use dbus ; then
+			rm "${ED%/}"/etc/dbus-1/system.d/pulseaudio-system.conf || die
+		fi
+	fi
+
+	if use zeroconf ; then
+		sed -e '/module-zeroconf-publish/s:^#::' \
+			-i "${ED%/}/etc/pulse/default.pa" || die
+	fi
+
+	dodoc NEWS README todo
+
+	# Create the state directory
+	use prefix || diropts -o pulse -g pulse -m0755
+
+	find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die
+}
+
+pkg_postinst() {
+	gnome2_schemas_update
+	if use system-wide; then
+		elog "You have enabled the 'system-wide' USE flag for pulseaudio."
+		elog "This mode should only be used on headless servers, embedded systems,"
+		elog "or thin clients. It will usually require manual configuration, and is"
+		elog "incompatible with many expected pulseaudio features."
+		elog "On normal desktop systems, system-wide mode is STRONGLY DISCOURAGED."
+		elog "For more information, see"
+		elog "    https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/"
+		elog "    https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/"
+		elog "    https://wiki.gentoo.org/wiki/PulseAudio#Headless_server"
+	fi
+
+	if use equalizer && ! use qt5; then
+		elog "You've enabled the 'equalizer' USE-flag but not the 'qt5' USE-flag."
+		elog "This will build the equalizer module, but the 'qpaeq' tool"
+		elog "which is required to set equalizer levels will not work."
+	fi
+
+	if use equalizer && use qt5; then
+		elog "You will need to load some extra modules to make qpaeq work."
+		elog "You can do that by adding the following two lines in"
+		elog "/etc/pulse/default.pa and restarting pulseaudio:"
+		elog "load-module module-equalizer-sink"
+		elog "load-module module-dbus-protocol"
+	fi
+
+	if use native-headset && use ofono-headset; then
+		elog "You have enabled both native and ofono headset profiles. The runtime decision"
+		elog "which to use is done via the 'headset' argument of module-bluetooth-discover."
+	fi
+
+	if use libsamplerate; then
+		elog "The libsamplerate based resamplers are now deprecated, because they offer no"
+		elog "particular advantage over speex. Upstream suggests disabling them."
+	fi
+}
+
+pkg_postrm() {
+	gnome2_schemas_update
+}


             reply	other threads:[~2019-06-30 11:23 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-30 11:23 Pacho Ramos [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-31  3:40 [gentoo-commits] repo/gentoo:master commit in: media-sound/pulseaudio/, media-sound/pulseaudio/files/ Sam James
2021-08-18 20:10 Sam James
2021-06-21 11:18 Thomas Deutschmann
2021-06-21  0:26 Thomas Deutschmann
2018-12-28  7:48 Mart Raudsepp
2018-06-02 17:09 Andreas Sturmlechner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1561893770.a4f08a1601d56e585c3c724d68b80e1614f9c49e.pacho@gentoo \
    --to=pacho@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox