summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@gentoo.org>2009-07-16 14:00:05 +0000
committerDiego Elio Pettenò <flameeyes@gentoo.org>2009-07-16 14:00:05 +0000
commit77dc66dfdffb2ccc56cce3aaabad571a4c5dad39 (patch)
tree04f16767b95f7d37278d60fc94e00d50f97d24cc /media-sound
parentSparc stable, bug #278039. (diff)
downloadgentoo-2-77dc66dfdffb2ccc56cce3aaabad571a4c5dad39.tar.gz
gentoo-2-77dc66dfdffb2ccc56cce3aaabad571a4c5dad39.tar.bz2
gentoo-2-77dc66dfdffb2ccc56cce3aaabad571a4c5dad39.zip
Add patch to fix CVE-2009-1894, see bug #276986.
(Portage version: 2.2_rc33/cvs/Linux x86_64, RepoMan options: --force)
Diffstat (limited to 'media-sound')
-rw-r--r--media-sound/pulseaudio/ChangeLog15
-rw-r--r--media-sound/pulseaudio/files/pulseaudio-0.9.15-CVE-2009-1894.patch49
-rw-r--r--media-sound/pulseaudio/files/pulseaudio-0.9.16-CVE-2009-1894.patch85
-rw-r--r--media-sound/pulseaudio/files/pulseaudio-0.9.9-CVE-2009-1894.patch64
-rw-r--r--media-sound/pulseaudio/pulseaudio-0.9.15-r2.ebuild154
-rw-r--r--media-sound/pulseaudio/pulseaudio-0.9.15-r51.ebuild199
-rw-r--r--media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r2.ebuild171
-rw-r--r--media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r51.ebuild213
-rw-r--r--media-sound/pulseaudio/pulseaudio-0.9.9-r1.ebuild175
9 files changed, 1124 insertions, 1 deletions
diff --git a/media-sound/pulseaudio/ChangeLog b/media-sound/pulseaudio/ChangeLog
index ef5da8a802c0..03956d2e962b 100644
--- a/media-sound/pulseaudio/ChangeLog
+++ b/media-sound/pulseaudio/ChangeLog
@@ -1,6 +1,19 @@
# ChangeLog for media-sound/pulseaudio
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/ChangeLog,v 1.134 2009/07/03 00:14:32 flameeyes Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/ChangeLog,v 1.135 2009/07/16 14:00:05 flameeyes Exp $
+
+*pulseaudio-0.9.16_rc2-r51 (16 Jul 2009)
+*pulseaudio-0.9.16_rc2-r2 (16 Jul 2009)
+*pulseaudio-0.9.15-r51 (16 Jul 2009)
+*pulseaudio-0.9.15-r2 (16 Jul 2009)
+
+ 16 Jul 2009; Diego E. Pettenò <flameeyes@gentoo.org>
+ +pulseaudio-0.9.9-r1.ebuild, +files/pulseaudio-0.9.9-CVE-2009-1894.patch,
+ +pulseaudio-0.9.15-r2.ebuild, +pulseaudio-0.9.15-r51.ebuild,
+ +files/pulseaudio-0.9.15-CVE-2009-1894.patch,
+ +pulseaudio-0.9.16_rc2-r2.ebuild, +pulseaudio-0.9.16_rc2-r51.ebuild,
+ +files/pulseaudio-0.9.16-CVE-2009-1894.patch:
+ Add patch to fix CVE-2009-1894, see bug #276986.
03 Jul 2009; Diego E. Pettenò <flameeyes@gentoo.org>
pulseaudio-0.9.16_rc2-r1.ebuild, pulseaudio-0.9.16_rc2-r50.ebuild,
diff --git a/media-sound/pulseaudio/files/pulseaudio-0.9.15-CVE-2009-1894.patch b/media-sound/pulseaudio/files/pulseaudio-0.9.15-CVE-2009-1894.patch
new file mode 100644
index 000000000000..729ed9178286
--- /dev/null
+++ b/media-sound/pulseaudio/files/pulseaudio-0.9.15-CVE-2009-1894.patch
@@ -0,0 +1,49 @@
+Index: pulseaudio-0.9.15/src/daemon/main.c
+===================================================================
+--- pulseaudio-0.9.15.orig/src/daemon/main.c
++++ pulseaudio-0.9.15/src/daemon/main.c
+@@ -399,28 +399,6 @@ int main(int argc, char *argv[]) {
+ pa_log_set_level(PA_LOG_NOTICE);
+ pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET);
+
+-#if defined(__linux__) && defined(__OPTIMIZE__)
+- /*
+- Disable lazy relocations to make usage of external libraries
+- more deterministic for our RT threads. We abuse __OPTIMIZE__ as
+- a check whether we are a debug build or not.
+- */
+-
+- if (!getenv("LD_BIND_NOW")) {
+- char *rp;
+-
+- /* We have to execute ourselves, because the libc caches the
+- * value of $LD_BIND_NOW on initialization. */
+-
+- pa_set_env("LD_BIND_NOW", "1");
+-
+- if ((rp = pa_readlink("/proc/self/exe")))
+- pa_assert_se(execv(rp, argv) == 0);
+- else
+- pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?");
+- }
+-#endif
+-
+ #ifdef HAVE_GETUID
+ real_root = getuid() == 0;
+ suid_root = !real_root && geteuid() == 0;
+Index: pulseaudio-0.9.15/src/Makefile.am
+===================================================================
+--- pulseaudio-0.9.15.orig/src/Makefile.am
++++ pulseaudio-0.9.15/src/Makefile.am
+@@ -153,9 +153,9 @@ PREOPEN_LIBS = $(modlibexec_LTLIBRARIES)
+ endif
+
+ if FORCE_PREOPEN
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -Wl,-z,now -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
+ else
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -Wl,-z,now -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
+ endif
+
+ if HAVE_POLKIT
diff --git a/media-sound/pulseaudio/files/pulseaudio-0.9.16-CVE-2009-1894.patch b/media-sound/pulseaudio/files/pulseaudio-0.9.16-CVE-2009-1894.patch
new file mode 100644
index 000000000000..64e672377ac0
--- /dev/null
+++ b/media-sound/pulseaudio/files/pulseaudio-0.9.16-CVE-2009-1894.patch
@@ -0,0 +1,85 @@
+From fdd11d6cc0f4c75f75c62fb7d419d157ce00c956 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?Diego=20Elio=20'Flameeyes'=20Petten=C3=B2?= <flameeyes@gmail.com>
+Date: Tue, 7 Jul 2009 20:51:53 +0200
+Subject: [PATCH] Remove exploitable LD_BIND_NOW hack.
+
+Instead of trying to re-execute pulseaudio itself with LD_BIND_NOW set,
+just find the correct flag for the linker to request immediate bindings
+(all ELF files support that option), and use that when linking the daemon.
+
+Reduce the amount of compiled and executed code as well.
+---
+ configure.ac | 6 ++++++
+ src/Makefile.am | 4 ++--
+ src/daemon/main.c | 22 ----------------------
+ 3 files changed, 8 insertions(+), 24 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9c96d1c..cc7f674 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -113,6 +113,12 @@ CC_CHECK_LDFLAGS([${tmp_ldflag}],
+ [VERSIONING_LDFLAGS='-Wl,-version-script=$(srcdir)/map-file'])
+ AC_SUBST([VERSIONING_LDFLAGS])
+
++dnl Use immediate (now) bindings; avoids the funky re-call in itself
++dnl the -z now syntax is lifted from Sun's linker and works with GNU's too
++dnl other linkes might be added later
++CC_CHECK_LDFLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS="-Wl,-z,now"])
++AC_SUBST([IMMEDIATE_LDFLAGS])
++
+ dnl Check for the proper way to build libraries that have no undefined
+ dnl symbols; on some hosts this needs to be avoided but the macro
+ dnl takes care of it.
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 7ebf1f8..ac627c8 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -183,9 +183,9 @@ PREOPEN_LIBS = $(modlibexec_LTLIBRARIES)
+ endif
+
+ if FORCE_PREOPEN
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
+ else
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
+ endif
+
+ ###################################
+diff --git a/src/daemon/main.c b/src/daemon/main.c
+index eb378d2..0f6fc90 100644
+--- a/src/daemon/main.c
++++ b/src/daemon/main.c
+@@ -401,28 +401,6 @@ int main(int argc, char *argv[]) {
+ pa_log_set_level(PA_LOG_NOTICE);
+ pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET);
+
+-#if defined(__linux__) && defined(__OPTIMIZE__)
+- /*
+- Disable lazy relocations to make usage of external libraries
+- more deterministic for our RT threads. We abuse __OPTIMIZE__ as
+- a check whether we are a debug build or not.
+- */
+-
+- if (!getenv("LD_BIND_NOW")) {
+- char *rp;
+-
+- /* We have to execute ourselves, because the libc caches the
+- * value of $LD_BIND_NOW on initialization. */
+-
+- pa_set_env("LD_BIND_NOW", "1");
+-
+- if ((rp = pa_readlink("/proc/self/exe")))
+- pa_assert_se(execv(rp, argv) == 0);
+- else
+- pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?");
+- }
+-#endif
+-
+ if ((e = getenv("PULSE_PASSED_FD"))) {
+ passed_fd = atoi(e);
+
+--
+1.6.3.3
+
diff --git a/media-sound/pulseaudio/files/pulseaudio-0.9.9-CVE-2009-1894.patch b/media-sound/pulseaudio/files/pulseaudio-0.9.9-CVE-2009-1894.patch
new file mode 100644
index 000000000000..affa986d2f8d
--- /dev/null
+++ b/media-sound/pulseaudio/files/pulseaudio-0.9.9-CVE-2009-1894.patch
@@ -0,0 +1,64 @@
+From fdd11d6cc0f4c75f75c62fb7d419d157ce00c956 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?Diego=20Elio=20'Flameeyes'=20Petten=C3=B2?= <flameeyes@gmail.com>
+Date: Tue, 7 Jul 2009 20:51:53 +0200
+Subject: [PATCH] Remove exploitable LD_BIND_NOW hack.
+
+Instead of trying to re-execute pulseaudio itself with LD_BIND_NOW set,
+just find the correct flag for the linker to request immediate bindings
+(all ELF files support that option), and use that when linking the daemon.
+
+Reduce the amount of compiled and executed code as well.
+---
+ src/Makefile.am | 4 ++--
+ src/daemon/main.c | 19 -------------------
+ 2 files changed, 2 insertions(+), 21 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 2ac4f3d..7d1c431 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -147,9 +147,9 @@ PREOPEN_LIBS = $(modlibexec_LTLIBRARIES)
+ endif
+
+ if FORCE_PREOPEN
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -Wl,-z,now -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
+ else
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -Wl,-z,now -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
+ endif
+
+ if HAVE_POLKIT
+diff --git a/src/daemon/main.c b/src/daemon/main.c
+index 4276d1d..c788917 100644
+--- a/src/daemon/main.c
++++ b/src/daemon/main.c
+@@ -340,25 +340,6 @@ int main(int argc, char *argv[]) {
+ #endif
+
+
+-#if defined(__linux__) && defined(__OPTIMIZE__)
+- /*
+- Disable lazy relocations to make usage of external libraries
+- more deterministic for our RT threads. We abuse __OPTIMIZE__ as
+- a check whether we are a debug build or not.
+- */
+-
+- if (!getenv("LD_BIND_NOW")) {
+- char *rp;
+-
+- /* We have to execute ourselves, because the libc caches the
+- * value of $LD_BIND_NOW on initialization. */
+-
+- putenv(pa_xstrdup("LD_BIND_NOW=1"));
+- pa_assert_se(rp = pa_readlink("/proc/self/exe"));
+- pa_assert_se(execv(rp, argv) == 0);
+- }
+-#endif
+-
+ #ifdef HAVE_GETUID
+ real_root = getuid() == 0;
+ suid_root = !real_root && geteuid() == 0;
+--
+1.6.3.3
+
diff --git a/media-sound/pulseaudio/pulseaudio-0.9.15-r2.ebuild b/media-sound/pulseaudio/pulseaudio-0.9.15-r2.ebuild
new file mode 100644
index 000000000000..17a38ad8c5e8
--- /dev/null
+++ b/media-sound/pulseaudio/pulseaudio-0.9.15-r2.ebuild
@@ -0,0 +1,154 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/pulseaudio-0.9.15-r2.ebuild,v 1.1 2009/07/16 14:00:05 flameeyes Exp $
+
+EAPI=2
+
+inherit eutils libtool flag-o-matic
+
+DESCRIPTION="A networked sound server with an advanced plugin system"
+HOMEPAGE="http://www.pulseaudio.org/"
+if [[ ${PV/_rc/} == ${PV} ]]; then
+ SRC_URI="http://0pointer.de/lennart/projects/${PN}/${P}.tar.gz"
+else
+ SRC_URI="http://0pointer.de/public/${P/_rc/-test}.tar.gz"
+fi
+
+S="${WORKDIR}/${P/_rc/-test}"
+
+LICENSE="LGPL-2 GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="alsa avahi caps jack lirc oss tcpd X hal dbus libsamplerate gnome bluetooth policykit asyncns +glib test"
+
+RDEPEND="X? ( x11-libs/libX11 x11-libs/libSM x11-libs/libICE x11-libs/libXtst )
+ caps? ( sys-libs/libcap )
+ libsamplerate? ( >=media-libs/libsamplerate-0.1.1-r1 )
+ alsa? ( >=media-libs/alsa-lib-1.0.19 )
+ glib? ( >=dev-libs/glib-2.4.0 )
+ avahi? ( >=net-dns/avahi-0.6.12[dbus] )
+ >=dev-libs/liboil-0.3.0
+ jack? ( >=media-sound/jack-audio-connection-kit-0.100 )
+ tcpd? ( sys-apps/tcp-wrappers )
+ lirc? ( app-misc/lirc )
+ dbus? ( >=sys-apps/dbus-1.0.0 )
+ gnome? ( >=gnome-base/gconf-2.4.0 )
+ hal? (
+ >=sys-apps/hal-0.5.7
+ >=sys-apps/dbus-1.0.0
+ )
+ app-admin/eselect-esd
+ bluetooth? (
+ || ( >=net-wireless/bluez-4
+ >=net-wireless/bluez-libs-3 )
+ >=sys-apps/dbus-1.0.0
+ )
+ policykit? ( sys-auth/policykit )
+ asyncns? ( net-libs/libasyncns )
+ >=media-libs/audiofile-0.2.6-r1
+ >=media-libs/speex-1.2_beta
+ >=media-libs/libsndfile-1.0.10
+ >=dev-libs/liboil-0.3.6
+ sys-libs/gdbm
+ >=sys-devel/libtool-2.2.4" # it's a valid RDEPEND, libltdl.so is used
+
+DEPEND="${RDEPEND}
+ X? ( x11-proto/xproto )
+ dev-libs/libatomic_ops
+ dev-util/pkgconfig
+ dev-util/intltool"
+
+RDEPEND="${RDEPEND}
+ gnome-extra/gnome-audio"
+
+pkg_setup() {
+ enewgroup audio 18 # Just make sure it exists
+ enewgroup realtime
+ enewgroup pulse-access
+ enewgroup pulse
+ enewuser pulse -1 -1 /var/run/pulse pulse,audio
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/${P}-bsd.patch"
+ epatch "${FILESDIR}/${P}-CVE-2009-1894.patch"
+ elibtoolize
+}
+
+src_configure() {
+ # To properly fix CVE-2008-0008
+ append-flags -UNDEBUG
+
+ append-ldflags -Wl,--no-as-needed
+
+ econf \
+ --enable-largefile \
+ $(use_enable glib glib2) \
+ --disable-solaris \
+ $(use_enable asyncns) \
+ $(use_enable oss) \
+ $(use_enable alsa) \
+ $(use_enable lirc) \
+ $(use_enable tcpd tcpwrap) \
+ $(use_enable jack) \
+ $(use_enable lirc) \
+ $(use_enable avahi) \
+ $(use_enable hal) \
+ $(use_enable dbus) \
+ $(use_enable gnome gconf) \
+ $(use_enable libsamplerate samplerate) \
+ $(use_enable bluetooth bluez) \
+ $(use_enable policykit polkit) \
+ $(use_enable X x11) \
+ $(use_enable test default-build-tests) \
+ $(use_with caps) \
+ --localstatedir=/var \
+ --with-realtime-group=realtime \
+ --disable-per-user-esound-socket \
+ || die "econf failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "make install failed"
+
+ use avahi && sed -i -e '/module-zeroconf-publish/s:^#::' "${D}/etc/pulse/default.pa"
+
+ dohtml -r doc
+ dodoc README
+
+ # Create the state directory
+ diropts -o pulse -g pulse -m0755
+ keepdir /var/run/pulse
+
+ find "${D}" -name '*.la' -delete
+}
+
+pkg_postinst() {
+ elog "If you want to make use of realtime capabilities of PulseAudio"
+ elog "you should follow the realtime guide to create and set up a realtime"
+ elog "user group: http://www.gentoo.org/proj/en/desktop/sound/realtime.xml"
+ elog "Make sure you also have baselayout installed with pam USE flag"
+ elog "enabled, if you're using the rlimit method."
+ if use bluetooth; then
+ elog
+ elog "The BlueTooth proximity module is not enabled in the default"
+ elog "configuration file. If you do enable it, you'll have to have"
+ elog "your BlueTooth controller enabled and inserted at bootup or"
+ elog "PulseAudio will refuse to start."
+ elog
+ elog "Please note that the BlueTooth proximity module seems itself"
+ elog "still experimental, so please report to upstream if you have"
+ elog "problems with it."
+ fi
+ if use alsa; then
+ local pkg="media-plugins/alsa-plugins"
+ if has_version ${pkg} && ! built_with_use --missing false ${pkg} pulseaudio; then
+ elog
+ elog "You have alsa support enabled so you probably want to install"
+ elog "${pkg} with pulseaudio support to have"
+ elog "alsa using applications route their sound through pulseaudio"
+ fi
+ fi
+
+ eselect esd update --if-unset
+}
diff --git a/media-sound/pulseaudio/pulseaudio-0.9.15-r51.ebuild b/media-sound/pulseaudio/pulseaudio-0.9.15-r51.ebuild
new file mode 100644
index 000000000000..4519e15d714e
--- /dev/null
+++ b/media-sound/pulseaudio/pulseaudio-0.9.15-r51.ebuild
@@ -0,0 +1,199 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/pulseaudio-0.9.15-r51.ebuild,v 1.1 2009/07/16 14:00:05 flameeyes Exp $
+
+EAPI=2
+
+inherit eutils libtool flag-o-matic
+
+DESCRIPTION="A networked sound server with an advanced plugin system"
+HOMEPAGE="http://www.pulseaudio.org/"
+if [[ ${PV/_rc/} == ${PV} ]]; then
+ SRC_URI="http://0pointer.de/lennart/projects/${PN}/${P}.tar.gz"
+else
+ SRC_URI="http://0pointer.de/public/${P/_rc/-test}.tar.gz"
+fi
+
+S="${WORKDIR}/${P/_rc/-test}"
+
+LICENSE="LGPL-2 GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="alsa avahi caps jack lirc oss tcpd X hal dbus libsamplerate gnome bluetooth policykit asyncns +glib test"
+
+RDEPEND="X? ( x11-libs/libX11 x11-libs/libSM x11-libs/libICE x11-libs/libXtst )
+ caps? ( sys-libs/libcap )
+ libsamplerate? ( >=media-libs/libsamplerate-0.1.1-r1 )
+ alsa? ( >=media-libs/alsa-lib-1.0.19 )
+ glib? ( >=dev-libs/glib-2.4.0 )
+ avahi? ( >=net-dns/avahi-0.6.12[dbus] )
+ >=dev-libs/liboil-0.3.0
+ jack? ( >=media-sound/jack-audio-connection-kit-0.100 )
+ tcpd? ( sys-apps/tcp-wrappers )
+ lirc? ( app-misc/lirc )
+ dbus? ( >=sys-apps/dbus-1.0.0 )
+ gnome? ( >=gnome-base/gconf-2.4.0 )
+ hal? (
+ >=sys-apps/hal-0.5.7
+ >=sys-apps/dbus-1.0.0
+ )
+ app-admin/eselect-esd
+ bluetooth? (
+ || ( >=net-wireless/bluez-4
+ >=net-wireless/bluez-libs-3 )
+ >=sys-apps/dbus-1.0.0
+ )
+ policykit? ( sys-auth/policykit )
+ asyncns? ( net-libs/libasyncns )
+ >=media-libs/audiofile-0.2.6-r1
+ >=media-libs/speex-1.2_beta
+ >=media-libs/libsndfile-1.0.10
+ >=dev-libs/liboil-0.3.6
+ sys-libs/gdbm
+ >=sys-devel/libtool-2.2.4" # it's a valid RDEPEND, libltdl.so is used
+
+DEPEND="${RDEPEND}
+ X? ( x11-proto/xproto )
+ dev-libs/libatomic_ops
+ dev-util/pkgconfig
+ || ( dev-util/unifdef sys-freebsd/freebsd-ubin )
+ dev-util/intltool"
+
+# alsa-utils dep is for the alsasound init.d script (see bug #155707)
+# bluez-utils dep is for the bluetooth init.d script
+RDEPEND="${RDEPEND}
+ sys-apps/openrc
+ gnome-extra/gnome-audio
+ alsa? ( media-sound/alsa-utils )
+ bluetooth? (
+ || ( >=net-wireless/bluez-4
+ >=net-wireless/bluez-utils-3 ) )"
+
+pkg_setup() {
+ enewgroup audio 18 # Just make sure it exists
+ enewgroup realtime
+ enewgroup pulse-access
+ enewgroup pulse
+ enewuser pulse -1 -1 /var/run/pulse pulse,audio
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/${P}-bsd.patch"
+ epatch "${FILESDIR}/${P}-CVE-2009-1894.patch"
+ elibtoolize
+}
+
+src_configure() {
+ # To properly fix CVE-2008-0008
+ append-flags -UNDEBUG
+
+ append-ldflags -Wl,--no-as-needed
+
+ econf \
+ --enable-largefile \
+ $(use_enable glib glib2) \
+ --disable-solaris \
+ $(use_enable asyncns) \
+ $(use_enable oss) \
+ $(use_enable alsa) \
+ $(use_enable lirc) \
+ $(use_enable tcpd tcpwrap) \
+ $(use_enable jack) \
+ $(use_enable lirc) \
+ $(use_enable avahi) \
+ $(use_enable hal) \
+ $(use_enable dbus) \
+ $(use_enable gnome gconf) \
+ $(use_enable libsamplerate samplerate) \
+ $(use_enable bluetooth bluez) \
+ $(use_enable policykit polkit) \
+ $(use_enable X x11) \
+ $(use_enable test default-build-tests) \
+ $(use_with caps) \
+ --localstatedir=/var \
+ --with-realtime-group=realtime \
+ --disable-per-user-esound-socket \
+ || die "econf failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "make install failed"
+
+ 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 hal) \
+ $(use_define avahi) \
+ $(use_define alsa) \
+ $(use_define bluetooth) \
+ "${FILESDIR}/pulseaudio.init.d-4" \
+ > "${T}/pulseaudio"
+
+ doinitd "${T}/pulseaudio"
+
+ use avahi && sed -i -e '/module-zeroconf-publish/s:^#::' "${D}/etc/pulse/default.pa"
+
+ dohtml -r doc
+ dodoc README
+
+ # Create the state directory
+ diropts -o pulse -g pulse -m0755
+ keepdir /var/run/pulse
+
+ find "${D}" -name '*.la' -delete
+}
+
+pkg_postinst() {
+ elog "PulseAudio in Gentoo can use a system-wide pulseaudio daemon."
+ elog "This support is enabled by starting the pulseaudio init.d ."
+ elog "To be able to access that you need to be in the group pulse-access."
+ elog "If you choose to use this feature, please make sure that you"
+ elog "really want to run PulseAudio this way:"
+ elog " http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode"
+ elog "For more information about system-wide support, please refer to:"
+ elog " http://pulseaudio.org/wiki/SystemWideInstance"
+ if use gnome; then
+ elog
+ elog "By enabling gnome USE flag, you enabled gconf support. Please note"
+ elog "that you might need to remove the gnome USE flag or disable the"
+ elog "gconf module on /etc/pulse/system.pa to be able to use PulseAudio"
+ elog "with a system-wide instance."
+ fi
+ elog
+ elog "To use the ESounD wrapper while using a system-wide daemon, you also"
+ elog "need to enable auth-anonymous for the esound-unix module, or to copy"
+ elog "/var/run/pulse/.esd_auth into each home directory."
+ elog
+ elog "If you want to make use of realtime capabilities of PulseAudio"
+ elog "you should follow the realtime guide to create and set up a realtime"
+ elog "user group: http://www.gentoo.org/proj/en/desktop/sound/realtime.xml"
+ elog "Make sure you also have baselayout installed with pam USE flag"
+ elog "enabled, if you're using the rlimit method."
+ if use bluetooth; then
+ elog
+ elog "The BlueTooth proximity module is not enabled in the default"
+ elog "configuration file. If you do enable it, you'll have to have"
+ elog "your BlueTooth controller enabled and inserted at bootup or"
+ elog "PulseAudio will refuse to start."
+ elog
+ elog "Please note that the BlueTooth proximity module seems itself"
+ elog "still experimental, so please report to upstream if you have"
+ elog "problems with it."
+ fi
+ if use alsa; then
+ local pkg="media-plugins/alsa-plugins"
+ if has_version ${pkg} && ! built_with_use --missing false ${pkg} pulseaudio; then
+ elog
+ elog "You have alsa support enabled so you probably want to install"
+ elog "${pkg} with pulseaudio support to have"
+ elog "alsa using applications route their sound through pulseaudio"
+ fi
+ fi
+
+ eselect esd update --if-unset
+}
diff --git a/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r2.ebuild b/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r2.ebuild
new file mode 100644
index 000000000000..b1dadff08214
--- /dev/null
+++ b/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r2.ebuild
@@ -0,0 +1,171 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r2.ebuild,v 1.1 2009/07/16 14:00:05 flameeyes Exp $
+
+EAPI=2
+
+inherit eutils libtool flag-o-matic
+
+DESCRIPTION="A networked sound server with an advanced plugin system"
+HOMEPAGE="http://www.pulseaudio.org/"
+if [[ ${PV/_rc/} == ${PV} ]]; then
+ SRC_URI="http://0pointer.de/lennart/projects/${PN}/${P}.tar.gz"
+else
+ SRC_URI="http://0pointer.de/public/${P/_rc/-test}.tar.gz"
+fi
+
+S="${WORKDIR}/${P/_rc/-test}"
+
+LICENSE="LGPL-2 GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="alsa avahi caps jack lirc oss tcpd X hal dbus libsamplerate gnome bluetooth policykit asyncns +glib test doc"
+
+RDEPEND="X? ( x11-libs/libX11 x11-libs/libSM x11-libs/libICE x11-libs/libXtst )
+ caps? ( sys-libs/libcap )
+ libsamplerate? ( >=media-libs/libsamplerate-0.1.1-r1 )
+ alsa? ( >=media-libs/alsa-lib-1.0.19 )
+ glib? ( >=dev-libs/glib-2.4.0 )
+ avahi? ( >=net-dns/avahi-0.6.12[dbus] )
+ >=dev-libs/liboil-0.3.0
+ jack? ( >=media-sound/jack-audio-connection-kit-0.100 )
+ tcpd? ( sys-apps/tcp-wrappers )
+ lirc? ( app-misc/lirc )
+ dbus? ( >=sys-apps/dbus-1.0.0 )
+ gnome? ( >=gnome-base/gconf-2.4.0 )
+ hal? (
+ >=sys-apps/hal-0.5.7
+ >=sys-apps/dbus-1.0.0
+ )
+ app-admin/eselect-esd
+ bluetooth? (
+ || ( >=net-wireless/bluez-4
+ >=net-wireless/bluez-libs-3 )
+ >=sys-apps/dbus-1.0.0
+ )
+ policykit? ( sys-auth/policykit )
+ asyncns? ( net-libs/libasyncns )
+ >=media-libs/audiofile-0.2.6-r1
+ >=media-libs/speex-1.2_beta
+ >=media-libs/libsndfile-1.0.10
+ >=dev-libs/liboil-0.3.6
+ sys-libs/gdbm
+ >=sys-devel/libtool-2.2.4" # it's a valid RDEPEND, libltdl.so is used
+
+DEPEND="${RDEPEND}
+ doc? ( app-doc/doxygen )
+ X? ( x11-proto/xproto )
+ dev-libs/libatomic_ops
+ dev-util/pkgconfig
+ dev-util/intltool"
+
+RDEPEND="${RDEPEND}
+ gnome-extra/gnome-audio"
+
+pkg_setup() {
+ enewgroup audio 18 # Just make sure it exists
+ enewgroup realtime
+ enewgroup pulse-access
+ enewgroup pulse
+ enewuser pulse -1 -1 /var/run/pulse pulse,audio
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/${PN}-0.9.16-CVE-2009-1894.patch"
+ elibtoolize
+}
+
+src_configure() {
+ # To properly fix CVE-2008-0008
+ append-flags -UNDEBUG
+
+ append-ldflags -Wl,--no-as-needed
+
+ econf \
+ --enable-largefile \
+ $(use_enable glib glib2) \
+ --disable-solaris \
+ $(use_enable asyncns) \
+ $(use_enable oss) \
+ $(use_enable alsa) \
+ $(use_enable lirc) \
+ $(use_enable tcpd tcpwrap) \
+ $(use_enable jack) \
+ $(use_enable lirc) \
+ $(use_enable avahi) \
+ $(use_enable hal) \
+ $(use_enable dbus) \
+ $(use_enable gnome gconf) \
+ $(use_enable libsamplerate samplerate) \
+ $(use_enable bluetooth bluez) \
+ $(use_enable policykit polkit) \
+ $(use_enable X x11) \
+ $(use_enable test default-build-tests) \
+ $(use_with caps) \
+ --localstatedir=/var \
+ --with-realtime-group=realtime \
+ --disable-per-user-esound-socket \
+ || die "econf failed"
+
+ if use doc; then
+ pushd doxygen
+ doxygen doxygen.conf || die
+ popd
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "make install failed"
+
+ use avahi && sed -i -e '/module-zeroconf-publish/s:^#::' "${D}/etc/pulse/default.pa"
+
+ # the “true” condition should be replaced by “use udev” once
+ # that's enabled.
+ if use hal && true; then
+ sed -i -e 's:-udev:-hal:' "${D}/etc/pulse/default.pa" || die
+ fi
+
+ dodoc README ChangeLog todo || die
+
+ if use doc; then
+ pushd doxygen/html
+ dohtml * || die
+ popd
+ fi
+
+ # Create the state directory
+ diropts -o pulse -g pulse -m0755
+ keepdir /var/run/pulse
+
+ find "${D}" -name '*.la' -delete
+}
+
+pkg_postinst() {
+ elog "If you want to make use of realtime capabilities of PulseAudio"
+ elog "you should follow the realtime guide to create and set up a realtime"
+ elog "user group: http://www.gentoo.org/proj/en/desktop/sound/realtime.xml"
+ elog "Make sure you also have baselayout installed with pam USE flag"
+ elog "enabled, if you're using the rlimit method."
+ if use bluetooth; then
+ elog
+ elog "The BlueTooth proximity module is not enabled in the default"
+ elog "configuration file. If you do enable it, you'll have to have"
+ elog "your BlueTooth controller enabled and inserted at bootup or"
+ elog "PulseAudio will refuse to start."
+ elog
+ elog "Please note that the BlueTooth proximity module seems itself"
+ elog "still experimental, so please report to upstream if you have"
+ elog "problems with it."
+ fi
+ if use alsa; then
+ local pkg="media-plugins/alsa-plugins"
+ if has_version ${pkg} && ! built_with_use --missing false ${pkg} pulseaudio; then
+ elog
+ elog "You have alsa support enabled so you probably want to install"
+ elog "${pkg} with pulseaudio support to have"
+ elog "alsa using applications route their sound through pulseaudio"
+ fi
+ fi
+
+ eselect esd update --if-unset
+}
diff --git a/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r51.ebuild b/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r51.ebuild
new file mode 100644
index 000000000000..33ffdb70046e
--- /dev/null
+++ b/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r51.ebuild
@@ -0,0 +1,213 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/pulseaudio-0.9.16_rc2-r51.ebuild,v 1.1 2009/07/16 14:00:05 flameeyes Exp $
+
+EAPI=2
+
+inherit eutils libtool flag-o-matic
+
+MY_P=${P/_rc/-test}
+
+DESCRIPTION="A networked sound server with an advanced plugin system"
+HOMEPAGE="http://www.pulseaudio.org/"
+SRC_URI="http://0pointer.de/public/${MY_P}.tar.gz"
+
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="LGPL-2 GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="alsa avahi caps jack lirc oss tcpd X hal dbus libsamplerate gnome bluetooth policykit asyncns +glib test doc"
+
+RDEPEND="X? ( x11-libs/libX11 x11-libs/libSM x11-libs/libICE x11-libs/libXtst )
+ caps? ( sys-libs/libcap )
+ libsamplerate? ( >=media-libs/libsamplerate-0.1.1-r1 )
+ alsa? ( >=media-libs/alsa-lib-1.0.19 )
+ glib? ( >=dev-libs/glib-2.4.0 )
+ avahi? ( >=net-dns/avahi-0.6.12[dbus] )
+ >=dev-libs/liboil-0.3.0
+ jack? ( >=media-sound/jack-audio-connection-kit-0.100 )
+ tcpd? ( sys-apps/tcp-wrappers )
+ lirc? ( app-misc/lirc )
+ dbus? ( >=sys-apps/dbus-1.0.0 )
+ gnome? ( >=gnome-base/gconf-2.4.0 )
+ hal? (
+ >=sys-apps/hal-0.5.7
+ >=sys-apps/dbus-1.0.0
+ )
+ app-admin/eselect-esd
+ bluetooth? (
+ || ( >=net-wireless/bluez-4
+ >=net-wireless/bluez-libs-3 )
+ >=sys-apps/dbus-1.0.0
+ )
+ policykit? ( sys-auth/policykit )
+ asyncns? ( net-libs/libasyncns )
+ >=media-libs/audiofile-0.2.6-r1
+ >=media-libs/speex-1.2_beta
+ >=media-libs/libsndfile-1.0.10
+ >=dev-libs/liboil-0.3.6
+ sys-libs/gdbm
+ >=sys-devel/libtool-2.2.4" # it's a valid RDEPEND, libltdl.so is used
+
+DEPEND="${RDEPEND}
+ doc? ( app-doc/doxygen )
+ X? ( x11-proto/xproto )
+ dev-libs/libatomic_ops
+ dev-util/pkgconfig
+ || ( dev-util/unifdef sys-freebsd/freebsd-ubin )
+ dev-util/intltool"
+
+# alsa-utils dep is for the alsasound init.d script (see bug #155707)
+# bluez-utils dep is for the bluetooth init.d script
+RDEPEND="${RDEPEND}
+ sys-apps/openrc
+ gnome-extra/gnome-audio
+ alsa? ( media-sound/alsa-utils )
+ bluetooth? (
+ || ( >=net-wireless/bluez-4
+ >=net-wireless/bluez-utils-3 ) )"
+
+pkg_setup() {
+ enewgroup audio 18 # Just make sure it exists
+ enewgroup pulse-access
+ enewgroup pulse
+ enewuser pulse -1 -1 /var/run/pulse pulse,audio
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/${PN}-0.9.16-CVE-2009-1894.patch"
+ elibtoolize
+}
+
+src_configure() {
+ # To properly fix CVE-2008-0008
+ append-flags -UNDEBUG
+
+ # It's a binutils bug, once I can find time to fix that I'll add a
+ # proper dependency and fix this up. — flameeyes
+ append-ldflags -Wl,--no-as-needed
+
+ # udev is disabled because we don't have the right version just
+ # yet, and thus we need to avoid it for now. Once we have the
+ # version I'll revbump PA. — flameeyes
+ econf \
+ --enable-largefile \
+ $(use_enable glib glib2) \
+ --disable-solaris \
+ $(use_enable asyncns) \
+ $(use_enable oss) \
+ $(use_enable alsa) \
+ $(use_enable lirc) \
+ $(use_enable tcpd tcpwrap) \
+ $(use_enable jack) \
+ $(use_enable lirc) \
+ $(use_enable avahi) \
+ $(use_enable hal) \
+ $(use_enable dbus) \
+ $(use_enable gnome gconf) \
+ $(use_enable libsamplerate samplerate) \
+ $(use_enable bluetooth bluez) \
+ $(use_enable X x11) \
+ $(use_enable test default-build-tests) \
+ $(use_with caps) \
+ --disable-udev \
+ --localstatedir=/var \
+ --disable-per-user-esound-socket \
+ --with-database=gdbm \
+ || die "econf failed"
+
+ if use doc; then
+ pushd doxygen
+ doxygen doxygen.conf || die
+ popd
+ fi
+}
+
+src_install() {
+ emake -j1 DESTDIR="${D}" install || die "make install failed"
+
+ 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 hal) \
+ $(use_define avahi) \
+ $(use_define alsa) \
+ $(use_define bluetooth) \
+ "${FILESDIR}/pulseaudio.init.d-4" \
+ > "${T}/pulseaudio"
+
+ doinitd "${T}/pulseaudio"
+
+ use avahi && sed -i -e '/module-zeroconf-publish/s:^#::' "${D}/etc/pulse/default.pa"
+
+ # the “true” condition should be replaced by “use udev” once
+ # that's enabled.
+ if use hal && true; then
+ sed -i -e 's:-udev:-hal:' "${D}/etc/pulse/default.pa" || die
+ fi
+
+ dodoc README ChangeLog todo || die
+
+ if use doc; then
+ pushd doxygen/html
+ dohtml * || die
+ popd
+ fi
+
+ # Create the state directory
+ diropts -o pulse -g pulse -m0755
+ keepdir /var/run/pulse
+
+ find "${D}" -name '*.la' -delete
+}
+
+pkg_postinst() {
+ elog "PulseAudio in Gentoo can use a system-wide pulseaudio daemon."
+ elog "This support is enabled by starting the pulseaudio init.d ."
+ elog "To be able to access that you need to be in the group pulse-access."
+ elog "If you choose to use this feature, please make sure that you"
+ elog "really want to run PulseAudio this way:"
+ elog " http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode"
+ elog "For more information about system-wide support, please refer to:"
+ elog " http://pulseaudio.org/wiki/SystemWideInstance"
+ if use gnome; then
+ elog
+ elog "By enabling gnome USE flag, you enabled gconf support. Please note"
+ elog "that you might need to remove the gnome USE flag or disable the"
+ elog "gconf module on /etc/pulse/system.pa to be able to use PulseAudio"
+ elog "with a system-wide instance."
+ fi
+ elog
+ elog "To use the ESounD wrapper while using a system-wide daemon, you also"
+ elog "need to enable auth-anonymous for the esound-unix module, or to copy"
+ elog "/var/run/pulse/.esd_auth into each home directory."
+ elog
+ if use bluetooth; then
+ elog
+ elog "The BlueTooth proximity module is not enabled in the default"
+ elog "configuration file. If you do enable it, you'll have to have"
+ elog "your BlueTooth controller enabled and inserted at bootup or"
+ elog "PulseAudio will refuse to start."
+ elog
+ elog "Please note that the BlueTooth proximity module seems itself"
+ elog "still experimental, so please report to upstream if you have"
+ elog "problems with it."
+ fi
+ if use alsa; then
+ local pkg="media-plugins/alsa-plugins"
+ if has_version ${pkg} && ! built_with_use --missing false ${pkg} pulseaudio; then
+ elog
+ elog "You have alsa support enabled so you probably want to install"
+ elog "${pkg} with pulseaudio support to have"
+ elog "alsa using applications route their sound through pulseaudio"
+ fi
+ fi
+
+ eselect esd update --if-unset
+}
diff --git a/media-sound/pulseaudio/pulseaudio-0.9.9-r1.ebuild b/media-sound/pulseaudio/pulseaudio-0.9.9-r1.ebuild
new file mode 100644
index 000000000000..7cf160d3faa0
--- /dev/null
+++ b/media-sound/pulseaudio/pulseaudio-0.9.9-r1.ebuild
@@ -0,0 +1,175 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/pulseaudio-0.9.9-r1.ebuild,v 1.3 2009/07/16 14:00:05 flameeyes Exp $
+
+inherit eutils libtool autotools flag-o-matic
+
+DESCRIPTION="A networked sound server with an advanced plugin system"
+HOMEPAGE="http://www.pulseaudio.org"
+SRC_URI="http://0pointer.de/lennart/projects/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-2 GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 sh sparc x86"
+IUSE="alsa avahi caps jack lirc oss tcpd X hal dbus libsamplerate gnome bluetooth policykit asyncns"
+
+RDEPEND="X? ( x11-libs/libX11 )
+ caps? ( sys-libs/libcap )
+ >=media-libs/audiofile-0.2.6-r1
+ libsamplerate? ( >=media-libs/libsamplerate-0.1.1-r1 )
+ >=media-libs/libsndfile-1.0.10
+ >=dev-libs/liboil-0.3.6
+ alsa? ( >=media-libs/alsa-lib-1.0.10 )
+ >=dev-libs/glib-2.4.0
+ avahi? ( >=net-dns/avahi-0.6.12 )
+ >=dev-libs/liboil-0.3.0
+ jack? ( >=media-sound/jack-audio-connection-kit-0.100 )
+ tcpd? ( sys-apps/tcp-wrappers )
+ lirc? ( app-misc/lirc )
+ dbus? ( >=sys-apps/dbus-1.0.0 )
+ gnome? ( >=gnome-base/gconf-2.4.0 )
+ hal? (
+ >=sys-apps/hal-0.5.7
+ >=sys-apps/dbus-1.0.0
+ )
+ app-admin/eselect-esd
+ bluetooth? (
+ >=net-wireless/bluez-libs-3
+ >=sys-apps/dbus-1.0.0
+ )
+ policykit? ( sys-auth/policykit )
+ asyncns? ( net-libs/libasyncns )
+ >=sys-devel/libtool-1.5.24" # it's a valid RDEPEND, libltdl.so is used
+DEPEND="${RDEPEND}
+ dev-libs/libatomic_ops
+ dev-util/pkgconfig"
+
+# alsa-utils dep is for the alsasound init.d script (see bug #155707)
+# bluez-utils dep is for the bluetooth init.d script
+RDEPEND="${RDEPEND}
+ gnome-extra/gnome-audio
+ alsa? ( media-sound/alsa-utils )
+ bluetooth? ( >=net-wireless/bluez-utils-3 )"
+
+pkg_setup() {
+ if use avahi && ! built_with_use net-dns/avahi dbus ; then
+ echo
+ eerror "In order to compile pulseaudio with avahi support, you need to have"
+ eerror "net-dns/avahi emerged with 'dbus' in your USE flag. Please add that"
+ eerror "flag, re-emerge avahi, and then emerge pulseaudio again."
+ die "net-dns/avahi is missing the D-Bus bindings."
+ fi
+
+ enewgroup audio 18 # Just make sure it exists
+ enewgroup realtime
+ enewgroup pulse-access
+ enewgroup pulse
+ enewuser pulse -1 -1 /var/run/pulse pulse,audio
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}/${PN}-0.9.8-svn2074.patch"
+ epatch "${FILESDIR}/${PN}-0.9.8-polkit.patch"
+ epatch "${FILESDIR}/${PN}-0.9.8-bt-nohal.patch"
+ epatch "${FILESDIR}/${PN}-0.9.8-esoundpath.patch"
+ epatch "${FILESDIR}/${PN}-0.9.8-create-directory.patch"
+ epatch "${FILESDIR}/${P}-CVE-2009-1894.patch"
+
+ eautoreconf
+ elibtoolize
+}
+
+src_compile() {
+ # To properly fix CVE-2008-0008
+ append-flags -UNDEBUG
+
+ econf \
+ --enable-largefile \
+ --enable-glib2 \
+ --disable-solaris \
+ $(use_enable asyncns) \
+ $(use_enable oss) \
+ $(use_enable alsa) \
+ $(use_enable lirc) \
+ $(use_enable tcpd tcpwrap) \
+ $(use_enable jack) \
+ $(use_enable lirc) \
+ $(use_enable avahi) \
+ $(use_enable hal) \
+ $(use_enable dbus) \
+ $(use_enable gnome gconf) \
+ $(use_enable libsamplerate samplerate) \
+ $(use_enable bluetooth bluez) \
+ $(use_enable policykit polkit) \
+ $(use_with caps) \
+ $(use_with X x) \
+ --disable-ltdl-install \
+ --localstatedir=/var \
+ --with-realtime-group=realtime \
+ || die "econf failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake -j1 DESTDIR="${D}" install || die "make install failed"
+
+ newconfd "${FILESDIR}/pulseaudio.conf.d" pulseaudio
+
+ local neededservices
+ use alsa && neededservices="$neededservices alsasound"
+ use avahi && neededservices="$neededservices avahi-daemon"
+ use hal && neededservices="$neededservices hald"
+ use bluetooth && neededservices="$neededservices bluetooth"
+ [[ -n ${neededservices} ]] && sed -e "s/@neededservices@/need $neededservices/" "${FILESDIR}/pulseaudio.init.d-2" > "${T}/pulseaudio"
+ doinitd "${T}/pulseaudio"
+
+ use avahi && sed -i -e '/module-zeroconf-publish/s:^#::' "${D}/etc/pulse/default.pa"
+
+ dohtml -r doc
+ dodoc README
+
+ # Create the state directory
+ diropts -o pulse -g pulse -m0755
+ keepdir /var/run/pulse
+}
+
+pkg_postinst() {
+ elog "PulseAudio in Gentoo can use a system-wide pulseaudio daemon."
+ elog "This support is enabled by starting the pulseaudio init.d ."
+ elog "To be able to access that you need to be in the group pulse-access."
+ elog "For more information about system-wide support, please refer to"
+ elog " http://pulseaudio.org/wiki/SystemWideInstance"
+ if use gnome; then
+ elog
+ elog "By enabling gnome USE flag, you enabled gconf support. Please note"
+ elog "that you might need to remove the gnome USE flag or disable the"
+ elog "gconf module on /etc/pulse/default.pa to be able to use PulseAudio"
+ elog "with a system-wide instance."
+ fi
+ elog
+ elog "To use the ESounD wrapper while using a system-wide daemon, you also"
+ elog "need to enable auth-anonymous for the esound-unix module, or to copy"
+ elog "/var/run/pulse/.esd_auth into each home directory."
+ elog
+ elog "If you want to make use of realtime capabilities of PulseAudio"
+ elog "you should follow the realtime guide to create and set up a realtime"
+ elog "user group: http://www.gentoo.org/proj/en/desktop/sound/realtime.xml"
+ elog "Make sure you also have baselayout installed with pam USE flag"
+ elog "enabled, if you're using the rlimit method."
+ if use bluetooth; then
+ elog
+ elog "The BlueTooth proximity module is not enabled in the default"
+ elog "configuration file. If you do enable it, you'll have to have"
+ elog "your BlueTooth controller enabled and inserted at bootup or"
+ elog "PulseAudio will refuse to start."
+ elog
+ elog "Please note that the BlueTooth proximity module seems itself"
+ elog "still experimental, so please report to upstream if you have"
+ elog "problems with it."
+ fi
+
+ eselect esd update --if-unset
+}