diff options
author | Sam James <sam@gentoo.org> | 2024-01-03 10:34:00 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-01-03 10:39:53 +0000 |
commit | f1e4b343e8eb99e399d8ff048db3e00b6edc5c38 (patch) | |
tree | bea20f0542706d6dadc89dfe10c642d21b59f86f | |
parent | net-dns/libidn2: pass -Wl,--undefined-version for other linkers if supported (diff) | |
download | gentoo-f1e4b343e8eb99e399d8ff048db3e00b6edc5c38.tar.gz gentoo-f1e4b343e8eb99e399d8ff048db3e00b6edc5c38.tar.bz2 gentoo-f1e4b343e8eb99e399d8ff048db3e00b6edc5c38.zip |
media-libs/libpulse: pass -Wl,--undefined-version for other linkers if supported
Revbump as it's a library.
Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r-- | media-libs/libpulse/libpulse-16.1-r5.ebuild | 215 | ||||
-rw-r--r-- | media-libs/libpulse/libpulse-16.99.1-r1.ebuild | 210 |
2 files changed, 425 insertions, 0 deletions
diff --git a/media-libs/libpulse/libpulse-16.1-r5.ebuild b/media-libs/libpulse/libpulse-16.1-r5.ebuild new file mode 100644 index 000000000000..bcf2a2ee25ce --- /dev/null +++ b/media-libs/libpulse/libpulse-16.1-r5.ebuild @@ -0,0 +1,215 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +MY_PV="${PV/_pre*}" +MY_P="pulseaudio-${MY_PV}" +inherit bash-completion-r1 flag-o-matic gnome2-utils meson-multilib optfeature systemd udev + +DESCRIPTION="Libraries for PulseAudio clients" +HOMEPAGE="https://www.freedesktop.org/wiki/Software/PulseAudio/" + +if [[ ${PV} = 9999 ]]; then + inherit git-r3 + EGIT_BRANCH="master" + EGIT_REPO_URI="https://gitlab.freedesktop.org/pulseaudio/pulseaudio" +else + SRC_URI="https://freedesktop.org/software/pulseaudio/releases/${MY_P}.tar.xz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux" +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="LGPL-2.1+" + +SLOT="0" +IUSE="+asyncns dbus doc +glib gtk selinux systemd test valgrind X" +RESTRICT="!test? ( test )" + +# NOTE: libpcre needed in some cases, bug #472228 +# TODO: libatomic_ops is only needed on some architectures and conditions, and then at runtime too +RDEPEND=" + dev-libs/libatomic_ops + >=media-libs/libsndfile-1.0.20[${MULTILIB_USEDEP}] + asyncns? ( >=net-libs/libasyncns-0.1[${MULTILIB_USEDEP}] ) + dbus? ( >=sys-apps/dbus-1.4.12[${MULTILIB_USEDEP}] ) + elibc_mingw? ( dev-libs/libpcre:3 ) + glib? ( >=dev-libs/glib-2.28.0:2[${MULTILIB_USEDEP}] ) + gtk? ( x11-libs/gtk+:3 ) + selinux? ( sec-policy/selinux-pulseaudio ) + systemd? ( sys-apps/systemd:= ) + valgrind? ( dev-util/valgrind ) + X? ( + x11-libs/libX11[${MULTILIB_USEDEP}] + >=x11-libs/libxcb-1.6[${MULTILIB_USEDEP}] + ) + !<media-sound/pulseaudio-15.0-r100 + !<media-sound/pulseaudio-daemon-16.1-r8 +" + +DEPEND="${RDEPEND} + test? ( >=dev-libs/check-0.9.10 ) + X? ( x11-base/xorg-proto ) +" + +# pulseaudio ships a bundled xmltoman, which uses XML::Parser +BDEPEND=" + dev-lang/perl + dev-perl/XML-Parser + sys-devel/gettext + sys-devel/m4 + virtual/libiconv + virtual/libintl + virtual/pkgconfig + doc? ( app-doc/doxygen ) +" +PDEPEND=" + || ( + media-video/pipewire[sound-server(+)] + media-sound/pulseaudio-daemon + media-sound/pulseaudio[daemon(+)] + ) +" + +DOCS=( NEWS README ) + +# patches merged upstream, to be removed with 16.2 or later bump +PATCHES=( + "${FILESDIR}"/pulseaudio-16.1-memfd-cleanup.patch + "${FILESDIR}"/pulseaudio-16.1-proplist-util-without-gdkx.patch + "${FILESDIR}"/pulseaudio-16.1-smoother-start-paused.patch + "${FILESDIR}"/pulseaudio-16.1-smoother-time-calculation.patch + "${FILESDIR}"/pulseaudio-16.1-fix-memblock-alignment.patch + "${FILESDIR}"/pulseaudio-16.1-add-more-standard-samplerates.patch +) + +src_prepare() { + default + + # disable autospawn by client + sed -i -e 's:; autospawn = yes:autospawn = no:g' src/pulse/client.conf.in || die + + gnome2_environment_reset +} + +multilib_src_configure() { + append-ldflags $(test-flags-CCLD -Wl,--undefined-version) + + local emesonargs=( + --localstatedir="${EPREFIX}"/var + + -Ddaemon=false + -Dclient=true + $(meson_native_use_bool doc doxygen) + -Dgcov=false + # tests involve random modules, so just do them for the native # TODO: tests should run always + $(meson_native_use_bool test tests) + -Ddatabase=simple # Not used for non-daemon, simple database avoids external dep checks + -Dstream-restore-clear-old-devices=true + -Drunning-from-build-tree=false + + # Paths + -Dmodlibexecdir="${EPREFIX}/usr/$(get_libdir)/pulseaudio/modules" # Was $(get_libdir)/${P} + -Dsystemduserunitdir=$(systemd_get_userunitdir) + -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d" + -Dbashcompletiondir="$(get_bashcompdir)" # Alternatively DEPEND on app-shells/bash-completion for pkg-config to provide the value + + # Optional features + -Dalsa=disabled + $(meson_feature asyncns) + -Davahi=disabled + -Dbluez5=disabled + -Dbluez5-gstreamer=disabled + -Dbluez5-native-headset=false + -Dbluez5-ofono-headset=false + $(meson_feature dbus) + -Delogind=disabled + -Dfftw=disabled + $(meson_feature glib) # WARNING: toggling this likely changes ABI + -Dgsettings=disabled + -Dgstreamer=disabled + $(meson_native_use_feature gtk) + -Dhal-compat=false + -Dipv6=true + -Djack=disabled + -Dlirc=disabled + -Dopenssl=disabled + -Dorc=disabled + -Doss-output=disabled + -Dsamplerate=disabled # Matches upstream + -Dsoxr=disabled + -Dspeex=disabled + $(meson_native_use_feature systemd) + -Dtcpwrap=disabled + -Dudev=disabled + $(meson_native_use_feature valgrind) + $(meson_feature X x11) + + # Echo cancellation + -Dadrian-aec=false + -Dwebrtc-aec=disabled + ) + + if multilib_is_native_abi; then + # Make padsp work for non-native ABI, supposedly only possible with glibc; + # this is used by /usr/bin/padsp that comes from native build, thus we need + # this argument for native build + if use elibc_glibc; then + emesonargs+=( -Dpulsedsp-location="${EPREFIX}"'/usr/\\$$LIB/pulseaudio' ) + fi + else + emesonargs+=( -Dman=false ) + if ! use elibc_glibc; then + # Non-glibc multilib is probably non-existent but just in case: + ewarn "padsp wrapper for OSS emulation will only work with native ABI applications!" + fi + fi + + meson_src_configure +} + +multilib_src_compile() { + meson_src_compile + + if multilib_is_native_abi; then + if use doc; then + einfo "Generating documentation ..." + meson_src_compile doxygen + fi + fi +} + +multilib_src_install() { + # The files referenced in the DOCS array do not exist in the multilib source directory, + # therefore clear the variable when calling the function that will access it. + DOCS= meson_src_install + + # Upstream installs 'pactl' if client is built, with all symlinks except for + # 'pulseaudio', 'pacmd' and 'pasuspender' which are installed if server is built. + # This trips QA warning, workaround: + # - install missing aliases in media-libs/libpulse (client build) + # - remove corresponding symlinks in media-sound/pulseaudio-daemonclient (server build) + bashcomp_alias pactl pulseaudio + bashcomp_alias pactl pacmd + bashcomp_alias pactl pasuspender + + if multilib_is_native_abi; then + if use doc; then + einfo "Installing documentation ..." + docinto html + dodoc -r doxygen/html/. + fi + fi +} + +multilib_src_install_all() { + einstalldocs + + find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die +} + +pkg_postinst() { + optfeature_header "PulseAudio can be enhanced by installing the following:" + use dbus && optfeature "restricted realtime capabilities via D-Bus" sys-auth/rtkit +} diff --git a/media-libs/libpulse/libpulse-16.99.1-r1.ebuild b/media-libs/libpulse/libpulse-16.99.1-r1.ebuild new file mode 100644 index 000000000000..680ac1f67b16 --- /dev/null +++ b/media-libs/libpulse/libpulse-16.99.1-r1.ebuild @@ -0,0 +1,210 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +MY_PV="${PV/_pre*}" +MY_P="pulseaudio-${MY_PV}" +inherit bash-completion-r1 flag-o-matic gnome2-utils meson-multilib optfeature systemd udev + +DESCRIPTION="Libraries for PulseAudio clients" +HOMEPAGE="https://www.freedesktop.org/wiki/Software/PulseAudio/" + +if [[ ${PV} = 9999 ]]; then + inherit git-r3 + EGIT_BRANCH="master" + EGIT_REPO_URI="https://gitlab.freedesktop.org/pulseaudio/pulseaudio" +else + SRC_URI="https://freedesktop.org/software/pulseaudio/releases/${MY_P}.tar.xz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux" +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="LGPL-2.1+" + +SLOT="0" +IUSE="+asyncns dbus doc +glib gtk selinux systemd test valgrind X" +RESTRICT="!test? ( test )" + +# NOTE: libpcre needed in some cases, bug #472228 +# TODO: libatomic_ops is only needed on some architectures and conditions, and then at runtime too +RDEPEND=" + dev-libs/libatomic_ops + >=media-libs/libsndfile-1.0.20[${MULTILIB_USEDEP}] + asyncns? ( >=net-libs/libasyncns-0.1[${MULTILIB_USEDEP}] ) + dbus? ( >=sys-apps/dbus-1.4.12[${MULTILIB_USEDEP}] ) + elibc_mingw? ( dev-libs/libpcre:3 ) + glib? ( >=dev-libs/glib-2.28.0:2[${MULTILIB_USEDEP}] ) + gtk? ( x11-libs/gtk+:3 ) + selinux? ( sec-policy/selinux-pulseaudio ) + systemd? ( sys-apps/systemd:= ) + valgrind? ( dev-util/valgrind ) + X? ( + x11-libs/libX11[${MULTILIB_USEDEP}] + >=x11-libs/libxcb-1.6[${MULTILIB_USEDEP}] + ) + !<media-sound/pulseaudio-16.1 + !<media-sound/pulseaudio-daemon-16.99.1 +" + +DEPEND="${RDEPEND} + test? ( >=dev-libs/check-0.9.10 ) + X? ( x11-base/xorg-proto ) +" + +# pulseaudio ships a bundled xmltoman, which uses XML::Parser +BDEPEND=" + dev-lang/perl + dev-perl/XML-Parser + sys-devel/gettext + sys-devel/m4 + virtual/libiconv + virtual/libintl + virtual/pkgconfig + doc? ( app-doc/doxygen ) +" +PDEPEND=" + || ( + media-video/pipewire[sound-server(+)] + media-sound/pulseaudio-daemon + media-sound/pulseaudio[daemon(+)] + ) +" + +DOCS=( NEWS README ) + +# patches merged upstream, to be removed with 16.99.2 or later bump +PATCHES=( + "${FILESDIR}"/pulseaudio-16.99.1-memfd-compat.patch +) + +src_prepare() { + default + + # disable autospawn by client + sed -i -e 's:; autospawn = yes:autospawn = no:g' src/pulse/client.conf.in || die + + gnome2_environment_reset +} + +multilib_src_configure() { + append-ldflags $(test-flags-CCLD -Wl,--undefined-version) + + local emesonargs=( + --localstatedir="${EPREFIX}"/var + + -Ddaemon=false + -Dclient=true + $(meson_native_use_bool doc doxygen) + -Dgcov=false + # tests involve random modules, so just do them for the native # TODO: tests should run always + $(meson_native_use_bool test tests) + -Ddatabase=simple # Not used for non-daemon, simple database avoids external dep checks + -Dstream-restore-clear-old-devices=true + -Drunning-from-build-tree=false + + # Paths + -Dmodlibexecdir="${EPREFIX}/usr/$(get_libdir)/pulseaudio/modules" # Was $(get_libdir)/${P} + -Dsystemduserunitdir=$(systemd_get_userunitdir) + -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d" + -Dbashcompletiondir="$(get_bashcompdir)" # Alternatively DEPEND on app-shells/bash-completion for pkg-config to provide the value + + # Optional features + -Dalsa=disabled + $(meson_feature asyncns) + -Davahi=disabled + -Dbluez5=disabled + -Dbluez5-gstreamer=disabled + -Dbluez5-native-headset=false + -Dbluez5-ofono-headset=false + $(meson_feature dbus) + -Delogind=disabled + -Dfftw=disabled + $(meson_feature glib) # WARNING: toggling this likely changes ABI + -Dgsettings=disabled + -Dgstreamer=disabled + $(meson_native_use_feature gtk) + -Dhal-compat=false + -Dipv6=true + -Djack=disabled + -Dlirc=disabled + -Dopenssl=disabled + -Dorc=disabled + -Doss-output=disabled + -Dsamplerate=disabled # Matches upstream + -Dsoxr=disabled + -Dspeex=disabled + $(meson_native_use_feature systemd) + -Dtcpwrap=disabled + -Dudev=disabled + $(meson_native_use_feature valgrind) + $(meson_feature X x11) + + # Echo cancellation + -Dadrian-aec=false + -Dwebrtc-aec=disabled + ) + + if multilib_is_native_abi; then + # Make padsp work for non-native ABI, supposedly only possible with glibc; + # this is used by /usr/bin/padsp that comes from native build, thus we need + # this argument for native build + if use elibc_glibc; then + emesonargs+=( -Dpulsedsp-location="${EPREFIX}"'/usr/\\$$LIB/pulseaudio' ) + fi + else + emesonargs+=( -Dman=false ) + if ! use elibc_glibc; then + # Non-glibc multilib is probably non-existent but just in case: + ewarn "padsp wrapper for OSS emulation will only work with native ABI applications!" + fi + fi + + meson_src_configure +} + +multilib_src_compile() { + meson_src_compile + + if multilib_is_native_abi; then + if use doc; then + einfo "Generating documentation ..." + meson_src_compile doxygen + fi + fi +} + +multilib_src_install() { + # The files referenced in the DOCS array do not exist in the multilib source directory, + # therefore clear the variable when calling the function that will access it. + DOCS= meson_src_install + + # Upstream installs 'pactl' if client is built, with all symlinks except for + # 'pulseaudio', 'pacmd' and 'pasuspender' which are installed if server is built. + # This trips QA warning, workaround: + # - install missing aliases in media-libs/libpulse (client build) + # - remove corresponding symlinks in media-sound/pulseaudio-daemonclient (server build) + bashcomp_alias pactl pulseaudio + bashcomp_alias pactl pacmd + bashcomp_alias pactl pasuspender + + if multilib_is_native_abi; then + if use doc; then + einfo "Installing documentation ..." + docinto html + dodoc -r doxygen/html/. + fi + fi +} + +multilib_src_install_all() { + einstalldocs + + find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die +} + +pkg_postinst() { + optfeature_header "PulseAudio can be enhanced by installing the following:" + use dbus && optfeature "restricted realtime capabilities via D-Bus" sys-auth/rtkit +} |