summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/media-sound/pulseaudio/files/dfb0460fb4743aec047cdf755a660a9ac2d0f3fb.patch65
-rw-r--r--packages/media-sound/pulseaudio/files/pulse-rt.conf8
-rw-r--r--packages/media-sound/pulseaudio/files/pulseaudio-support-elogind.patch80
-rw-r--r--packages/media-sound/pulseaudio/pulseaudio-11.1-r2.exheres-011
-rw-r--r--packages/media-sound/pulseaudio/pulseaudio-scm.exheres-07
-rw-r--r--packages/media-sound/pulseaudio/pulseaudio.exlib211
6 files changed, 382 insertions, 0 deletions
diff --git a/packages/media-sound/pulseaudio/files/dfb0460fb4743aec047cdf755a660a9ac2d0f3fb.patch b/packages/media-sound/pulseaudio/files/dfb0460fb4743aec047cdf755a660a9ac2d0f3fb.patch
new file mode 100644
index 0000000..eeb93a8
--- /dev/null
+++ b/packages/media-sound/pulseaudio/files/dfb0460fb4743aec047cdf755a660a9ac2d0f3fb.patch
@@ -0,0 +1,65 @@
+Source/Upstream: Yes, fixed in git master
+Reason: Fix build with glibc 2.27
+
+From dfb0460fb4743aec047cdf755a660a9ac2d0f3fb Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen <tanuk@iki.fi>
+Date: Wed, 24 Jan 2018 03:51:49 +0200
+Subject: memfd-wrappers: only define memfd_create() if not already defined
+
+glibc 2.27 is to be released soon, and it will provide memfd_create().
+If glibc provides the function, we must not define it ourselves,
+otherwise building fails due to conflict between the two implementations
+of the same function.
+
+BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104733
+---
+ configure.ac | 3 +++
+ src/pulsecore/memfd-wrappers.h | 7 ++++---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0084c86..0eb44b0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -610,6 +610,9 @@ AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"],
+ [AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory.
+ *** Use linux v3.17 or higher for such a feature.])])
+
++AS_IF([test "x$HAVE_MEMFD" = "x1"],
++ AC_CHECK_FUNCS([memfd_create]))
++
+ AC_SUBST(HAVE_MEMFD)
+ AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1])
+ AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.]))
+diff --git a/src/pulsecore/memfd-wrappers.h b/src/pulsecore/memfd-wrappers.h
+index 3bed9b2..c7aadfd 100644
+--- a/src/pulsecore/memfd-wrappers.h
++++ b/src/pulsecore/memfd-wrappers.h
+@@ -20,13 +20,14 @@
+ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
+ ***/
+
+-#ifdef HAVE_MEMFD
++#if defined(HAVE_MEMFD) && !defined(HAVE_MEMFD_CREATE)
+
+ #include <sys/syscall.h>
+ #include <fcntl.h>
+
+ /*
+- * No glibc wrappers exist for memfd_create(2), so provide our own.
++ * Before glibc version 2.27 there was no wrapper for memfd_create(2),
++ * so we have to provide our own.
+ *
+ * Also define memfd fcntl sealing macros. While they are already
+ * defined in the kernel header file <linux/fcntl.h>, that file as
+@@ -63,6 +64,6 @@ static inline int memfd_create(const char *name, unsigned int flags) {
+ #define F_SEAL_WRITE 0x0008 /* prevent writes */
+ #endif
+
+-#endif /* HAVE_MEMFD */
++#endif /* HAVE_MEMFD && !HAVE_MEMFD_CREATE */
+
+ #endif
+--
+cgit v1.1
+
diff --git a/packages/media-sound/pulseaudio/files/pulse-rt.conf b/packages/media-sound/pulseaudio/files/pulse-rt.conf
new file mode 100644
index 0000000..646f291
--- /dev/null
+++ b/packages/media-sound/pulseaudio/files/pulse-rt.conf
@@ -0,0 +1,8 @@
+# /etc/security/limits.d/pulse-rt.conf
+
+# Define capability limits for the pulse-rt group
+
+# setrlimit
+@pulse-rt - rtprio 9
+@pulse-rt - rtprio -11
+
diff --git a/packages/media-sound/pulseaudio/files/pulseaudio-support-elogind.patch b/packages/media-sound/pulseaudio/files/pulseaudio-support-elogind.patch
new file mode 100644
index 0000000..c30ce96
--- /dev/null
+++ b/packages/media-sound/pulseaudio/files/pulseaudio-support-elogind.patch
@@ -0,0 +1,80 @@
+Upstream: No
+Author: Rasmus Thomsen <cogitri@exherbo.org>
+Reason: Support elogind session tracking
+diff --git a/configure.ac b/configure.ac
+index 77b5ff5..1f9709d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1220,6 +1220,11 @@ AC_ARG_ENABLE([systemd-login],
+ AC_ARG_ENABLE([systemd-journal],
+ AS_HELP_STRING([--disable-systemd-journal],[Disable optional systemd journal support]))
+
++#### elogind support (optional) ####
++
++AC_ARG_ENABLE([elogind-login],
++ AS_HELP_STRING([--disable-elogind-login],[Disable optional elogind login support]))
++
+ # Newer systemd's combine their subcomponent libraries into one
+ # If it exists, we should use it for the further checks
+
+@@ -1267,6 +1272,19 @@ AC_SUBST(HAVE_SYSTEMD_LOGIN)
+ AM_CONDITIONAL([HAVE_SYSTEMD_LOGIN], [test "x$HAVE_SYSTEMD_LOGIN" = x1])
+ AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], AC_DEFINE([HAVE_SYSTEMD_LOGIN], 1, [Have SYSTEMDLOGIN?]))
+
++#### elogind login support (optional) ####
++
++AS_IF([test "x$enable_elogind_login" != "xno"],
++ [AS_IF([test "x$HAVE_ELOGIND_LOGIN" != "x1"], [PKG_CHECK_MODULES(LIBELOGIND, [ libelogind ], HAVE_ELOGIND_LOGIN=1, HAVE_ELOGIND_LOGIN=0)])],
++ HAVE_ELOGIND_LOGIN=0)
++
++AS_IF([test "x$enable_elogind_login" = "xyes" && test "x$HAVE_ELOGIND_LOGIN" = "x0"],
++ [AC_MSG_ERROR([*** Needed elogind login support not found])])
++
++AC_SUBST(HAVE_ELOGIND_LOGIN)
++AM_CONDITIONAL([HAVE_ELOGIND_LOGIN], [test "x$HAVE_ELOGIND_LOGIN" = x1])
++AS_IF([test "x$HAVE_ELOGIND_LOGIN" = "x1"], AC_DEFINE([HAVE_ELOGIND_LOGIN], 1, [Have ELOGINDLOGIN?]))
++
+ #### systemd journal support (optional) ####
+
+ AS_IF([test "x$enable_systemd_journal" != "xno"],
+@@ -1565,6 +1583,7 @@ AS_IF([test "x$HAVE_UDEV" = "x1"], ENABLE_UDEV=yes, ENABLE_UDEV=no)
+ AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], ENABLE_SYSTEMD_DAEMON=yes, ENABLE_SYSTEMD_DAEMON=no)
+ AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], ENABLE_SYSTEMD_LOGIN=yes, ENABLE_SYSTEMD_LOGIN=no)
+ AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" = "x1"], ENABLE_SYSTEMD_JOURNAL=yes, ENABLE_SYSTEMD_JOURNAL=no)
++AS_IF([test "x$HAVE_ELOGIND_LOGIN" = "x1"], ENABLE_ELOGIND_LOGIN=yes, ENABLE_ELOGIND_LOGIN=no)
+ AS_IF([test "x$HAVE_BLUEZ_4" = "x1"], ENABLE_BLUEZ_4=yes, ENABLE_BLUEZ_4=no)
+ AS_IF([test "x$HAVE_BLUEZ_5" = "x1"], ENABLE_BLUEZ_5=yes, ENABLE_BLUEZ_5=no)
+ AS_IF([test "x$HAVE_BLUEZ_5_OFONO_HEADSET" = "x1"], ENABLE_BLUEZ_5_OFONO_HEADSET=yes, ENABLE_BLUEZ_5_OFONO_HEADSET=no)
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 3ff1139..16ae3f6 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1421,6 +1421,11 @@ modlibexec_LTLIBRARIES += \
+ module-systemd-login.la
+ endif
+
++if HAVE_ELOGIND_LOGIN
++modlibexec_LTLIBRARIES += \
++ module-systemd-login.la
++endif
++
+ if HAVE_DBUS
+ modlibexec_LTLIBRARIES += \
+ module-rygel-media-server.la \
+diff --git a/src/modules/module-systemd-login.c b/src/modules/module-systemd-login.c
+index d15bee5..a8b0dc5 100644
+--- a/src/modules/module-systemd-login.c
++++ b/src/modules/module-systemd-login.c
+@@ -28,7 +28,12 @@
+ #include <stdlib.h>
+ #include <sys/types.h>
+
++#ifdef HAVE_SYSTEMD_LOGIN
+ #include <systemd/sd-login.h>
++#endif
++#ifdef HAVE_ELOGIND_LOGIN
++#include <elogind/sd-login.h>
++#endif
+
+ #include <pulse/xmalloc.h>
+
diff --git a/packages/media-sound/pulseaudio/pulseaudio-11.1-r2.exheres-0 b/packages/media-sound/pulseaudio/pulseaudio-11.1-r2.exheres-0
new file mode 100644
index 0000000..82dd564
--- /dev/null
+++ b/packages/media-sound/pulseaudio/pulseaudio-11.1-r2.exheres-0
@@ -0,0 +1,11 @@
+# Copyright 2009 Saleem Abdulrasool <compnerd@compnerd.org>
+# Distributed under the terms of the GNU General Public License v2
+
+require pulseaudio
+
+PLATFORMS="~amd64 ~x86"
+
+DEFAULT_SRC_PREPARE_PATCHES+=(
+ "${FILES}"/dfb0460fb4743aec047cdf755a660a9ac2d0f3fb.patch
+)
+
diff --git a/packages/media-sound/pulseaudio/pulseaudio-scm.exheres-0 b/packages/media-sound/pulseaudio/pulseaudio-scm.exheres-0
new file mode 100644
index 0000000..33e7121
--- /dev/null
+++ b/packages/media-sound/pulseaudio/pulseaudio-scm.exheres-0
@@ -0,0 +1,7 @@
+# Copyright 2009 Saleem Abdulrasool <compnerd@compnerd.org>
+# Distributed under the terms of the GNU General Public License v2
+
+require pulseaudio
+
+PLATFORMS="~amd64 ~x86"
+
diff --git a/packages/media-sound/pulseaudio/pulseaudio.exlib b/packages/media-sound/pulseaudio/pulseaudio.exlib
new file mode 100644
index 0000000..694b984
--- /dev/null
+++ b/packages/media-sound/pulseaudio/pulseaudio.exlib
@@ -0,0 +1,211 @@
+# Copyright 2009 Saleem Abdulrasool <compnerd@compnerd.org>
+# Distributed under the terms of the GNU General Public License v2
+
+require bash-completion \
+ option-renames [ renames=[ 'gtk3 gtk' 'systemd providers:systemd' ] ] \
+ systemd-service \
+ udev-rules \
+ zsh-completion \
+ autotools [ supported_autoconf=[ 2.5 ] supported_automake=[ 1.16 1.15 ] ]
+
+export_exlib_phases src_prepare src_install
+
+SUMMARY="A sound server for POSIX and Win32 systems"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/PulseAudio"
+
+if ever is_scm; then
+ DOWNLOADS=""
+ SCM_REPOSITORY="https://anongit.freedesktop.org/git/${PN}/${PN}.git"
+ require scm-git
+else
+ DOWNLOADS="https://freedesktop.org/software/${PN}/releases/${PNV}.tar.xz"
+fi
+
+REMOTE_IDS="freecode:${PN}"
+
+UPSTREAM_CHANGELOG="${HOMEPAGE}/Notes/${PV} [[ lang = en ]]"
+
+LICENCES="
+ AGPL-3 [[ note = [ src/utils/qpaeq ] ]]
+ LGPL-2.1
+ MIT [[ note = [ src/modules/reserve{-monitor,}.{c,h} src/modules/rtkit.{c,h} ] ]]
+ g711 [[ note = [ src/pulsecore/g711.c ] ]]
+ adrian-license [[ note = [ src/modules/echo-cancel/* ] ]]
+ as-is [[ note = [ src/pulsecore/g711.h ] ]]
+
+ bluetooth? (
+ GPL-2 [[ note = [ src/modules/bluetooth/{a2dp-codecs.h,proximity-helper.c}, everything using
+ the bluetooth module (libpulsecore and everything linking against it), see LICENSE ] ]]
+ LGPL-2.1 [[ note = [ the pulseaudio client lib (libpulse), see LICENSE ] ]]
+ )
+"
+SLOT="0"
+MYOPTIONS="
+ X [[ description = [ Enable X session integration ] ]]
+ async-dns [[ description = [ Support for asynchronous name service queries ] ]]
+ avahi
+ bluetooth
+ caps
+ equalizer [[ description = [ Modules which need equalizer functions ] ]]
+ gtk
+ jack
+ journald
+ oss
+ tcpd
+ webrtc-aec [[ description = [ Alternative to speex for echo cancellation, has higher quality ] ]]
+ arm_cpu_features: neon
+ ( linguas: as be bn_IN ca cs de de_CH el es fi fr gl gu he hi hr hu id it ja kn ko lt ml mr nl
+ nn oc or pa pl pt pt_BR ru sk sr sr@latin sv ta te tr uk zh_CN zh_TW )
+ ( providers: libressl openssl ) [[ number-selected = exactly-one ]]
+ ( providers: eudev systemd ) [[ number-selected = exactly-one ]]
+ ( providers: consolekit elogind systemd ) [[
+ *description = [ Session tracking provider ]
+ number-selected = at-most-one
+ ]]
+"
+
+DEPENDENCIES="
+ build:
+ dev-util/intltool[>=0.35.0]
+ sys-devel/gettext[>=0.18.1]
+ virtual/pkg-config[>=0.20]
+ build+run:
+ group/audio
+ group/pulse
+ group/pulse-access
+ group/pulse-rt
+ user/pulse
+ dev-libs/glib:2[>=2.4.0]
+ dev-libs/orc:0.4[>=0.4.16] [[
+ note = [ dev-libs/orc-0.4.15 is known to cause freezes, see https://bugs.freedesktop.org/show_bug.cgi?id=41589 ]
+ ]]
+ media-libs/libsndfile[>=1.0.20]
+ media-libs/soxr[>=0.1.1]
+ media-libs/speexdsp
+ sys-apps/dbus[>=1.4.12][providers:consolekit?][providers:elogind?][providers:systemd?]
+ sys-devel/libtool[>=2.4]
+ sys-libs/gdbm
+ sys-sound/alsa-lib[>=1.0.19]
+ X? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11[xcb(+)]
+ x11-libs/libxcb[>=1.6]
+ x11-libs/libXtst
+ x11-utils/xcb-util
+ )
+ async-dns? ( net-libs/libasyncns[>=0.1] )
+ avahi? ( net-dns/avahi[>=0.6.0][dbus] )
+ bluetooth? (
+ media-libs/sbc[>=1.0]
+ net-wireless/bluez[>=5.0]
+ )
+ caps? ( sys-libs/libcap )
+ equalizer? ( sci-libs/fftw )
+ gtk? ( x11-libs/gtk+:3[>=3.0] )
+ jack? ( media-sound/jack-audio-connection-kit[>=0.117] )
+ journald? ( sys-apps/systemd[>=165] )
+ providers:elogind? ( sys-auth/elogind[>=165] )
+ providers:eudev? ( sys-apps/eudev )
+ providers:libressl? ( dev-libs/libressl:= )
+ providers:openssl? ( dev-libs/openssl )
+ providers:systemd? ( sys-apps/systemd[>=165] )
+ tcpd? ( sys-apps/tcp-wrappers )
+ webrtc-aec? ( media-libs/webrtc-audio-processing[>=0.2] )
+ run:
+ providers:consolekit? ( sys-auth/ConsoleKit2 )
+ test:
+ dev-libs/check[>=0.9.10]
+ suggestion:
+ media-sound/pavucontrol [[ description = [ Provides a simple GTK based volume mixer tool ] ]]
+ media-sound/pulseaudio-dlna [[ description = [ Stream to DLNA/UPNP and Chromecast devices via PulseAudio ] ]]
+ sys-sound/oss [[ description = [ Provides an alternative sound architecture instead of ALSA ] ]]
+ sound-themes/sound-theme-freedesktop [[ description = [ Sample PulseAudio event sounds mentioned in default.pa ] ]]
+"
+
+DEFAULT_SRC_PREPARE_PATCHES=(
+ "${FILES}"/pulseaudio-support-elogind.patch
+)
+
+DEFAULT_SRC_CONFIGURE_PARAMS=(
+ --localstatedir=/var
+ --enable-alsa # udev needs alsa or oss support
+ --enable-dbus # recommended by upstream
+ --enable-glib2
+ --enable-ipv6
+ --enable-manpages
+ --enable-memfd
+ --enable-openssl
+ --enable-udev
+ --disable-adrian-aec # alternative to speex
+ --disable-bluez4
+ --disable-bluez5-ofono-headset
+ --disable-esound
+ --disable-gconf
+ --disable-lirc
+ --disable-per-user-esound-socket
+ --disable-samplerate
+ --disable-solaris
+ --with-database=gdbm # alternative tdb or simple
+ --with-speex # recommended and default resampler
+ --with-soxr # will eventually replace speex as the default resampler
+ --with-systemduserunitdir="${SYSTEMDUSERUNITDIR}"
+ --with-udev-rules-dir="${UDEVRULESDIR}"
+ CFLAGS="${CFLAGS} -D_GNU_SOURCE"
+)
+
+DEFAULT_SRC_CONFIGURE_OPTION_ENABLES=(
+ 'X x11'
+ 'arm_cpu_features:neon neon-opt'
+ 'async-dns asyncns'
+ avahi
+ 'bluetooth bluez5'
+ 'bluetooth bluez5-native-headset'
+ 'gtk gtk3'
+ jack
+ 'journald systemd-journal'
+ 'oss oss-output'
+ 'oss oss-wrapper'
+ 'providers:elogind elogind-login'
+ 'providers:systemd systemd-daemon'
+ 'providers:systemd systemd-login'
+ 'tcpd tcpwrap'
+ webrtc-aec
+)
+DEFAULT_SRC_CONFIGURE_OPTION_WITHS=(
+ "bash-completion bash-completion-dir /usr/share/bash-completion/completions"
+ caps
+ "equalizer fftw"
+ "zsh-completion zsh-completion-dir /usr/share/zsh/site-functions"
+)
+DEFAULT_SRC_CONFIGURE_TESTS=( '--enable-tests --disable-tests' )
+
+AT_M4DIR=( m4 )
+
+pulseaudio_src_prepare() {
+ # Pulseaudio i18n is weird
+ edo mkdir -p build-aux
+ edo touch build-aux/config.rpath
+
+ edo intltoolize --automake --copy --force
+ autotools_src_prepare
+}
+
+pulseaudio_src_install() {
+ default
+
+ # keep the administrator's override directives directories
+ keepdir /etc/pulse/{client,deamon}.conf.d
+
+ insinto /etc/security/limits.d/
+ doins "${FILES}"/pulse-rt.conf
+
+ keepdir /usr/$(exhost --target)/libexec/pulse
+
+ option providers:systemd || option providers:elogind && edo sed \
+ -e '/module-console-kit/,/.endif/{ /^#/!{ s/^/#/ } }' \
+ -i "${IMAGE}"/etc/pulse/default.pa
+
+ ! option zsh-completion && edo rm -r "${IMAGE}"/no
+}
+