diff options
| author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2018-06-28 18:03:43 +0300 | 
|---|---|---|
| committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2018-06-28 18:03:43 +0300 | 
| commit | 98bb12b7ecbfd6d3acbe09452183a8124684bdd0 (patch) | |
| tree | 7218206d678687a76cbf37d1159e6441d2f8fd75 | |
| parent | aacb2cd9351575d4149269f5cb69f7e2f93bcb18 (diff) | |
pulseaudio from desktop, slightly edited
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 +} +  | 
