summaryrefslogtreecommitdiff
path: root/packages/media-sound/pulseaudio/pulseaudio.exlib
blob: 6f91ccb10130787e2c7e3ae9d8f4dd2813935f45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# 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_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
}