diff options
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 +} + |