| # Copyright 1999-2010 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Header: /var/cvsroot/gentoo-x86/media-sound/pulseaudio/pulseaudio-0.9.21.2.ebuild,v 1.1 2010/03/07 17:15:27 flameeyes Exp $ |
| |
| EAPI=2 |
| |
| inherit eutils libtool flag-o-matic versionator |
| |
| DESCRIPTION="A networked sound server with an advanced plugin system" |
| HOMEPAGE="http://www.pulseaudio.org/" |
| |
| if [[ $(get_version_component_count) == 4 ]]; then |
| # Lennart does not produce point-releases, but I do so get them |
| # from my website instead. |
| SRC_URI="http://www.flameeyes.eu/gentoo-distfiles/${P}.tar.gz" |
| elif [[ ${PV/_rc/} == ${PV} ]]; then |
| SRC_URI="http://0pointer.de/lennart/projects/${PN}/${P}.tar.gz" |
| else |
| SRC_URI="http://0pointer.de/public/${P/_rc/-test}.tar.gz" |
| fi |
| |
| S="${WORKDIR}/${P/_rc/-test}" |
| |
| LICENSE="LGPL-2 GPL-2" |
| SLOT="0" |
| KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 sh sparc x86" |
| IUSE="+alsa avahi +caps jack lirc oss tcpd +X hal dbus libsamplerate gnome bluetooth +asyncns +glib test doc +udev ipv6 system-wide" |
| |
| RDEPEND="X? ( x11-libs/libX11 x11-libs/libSM x11-libs/libICE x11-libs/libXtst ) |
| caps? ( sys-libs/libcap ) |
| libsamplerate? ( >=media-libs/libsamplerate-0.1.1-r1 ) |
| alsa? ( >=media-libs/alsa-lib-1.0.19 ) |
| glib? ( >=dev-libs/glib-2.4.0 ) |
| avahi? ( >=net-dns/avahi-0.6.12[dbus] ) |
| >=dev-libs/liboil-0.3.0 |
| jack? ( >=media-sound/jack-audio-connection-kit-0.100 ) |
| tcpd? ( sys-apps/tcp-wrappers ) |
| lirc? ( app-misc/lirc ) |
| dbus? ( >=sys-apps/dbus-1.0.0 ) |
| gnome? ( >=gnome-base/gconf-2.4.0 ) |
| hal? ( |
| >=sys-apps/hal-0.5.11 |
| >=sys-apps/dbus-1.0.0 |
| ) |
| app-admin/eselect-esd |
| bluetooth? ( |
| || ( >=net-wireless/bluez-4 |
| >=net-wireless/bluez-libs-3 ) |
| >=sys-apps/dbus-1.0.0 |
| ) |
| asyncns? ( net-libs/libasyncns ) |
| udev? ( >=sys-fs/udev-143[extras] ) |
| >=media-libs/speex-1.2_beta |
| >=media-libs/libsndfile-1.0.20 |
| >=dev-libs/liboil-0.3.6 |
| sys-libs/gdbm |
| >=sys-devel/libtool-2.2.4" # it's a valid RDEPEND, libltdl.so is used |
| |
| DEPEND="${RDEPEND} |
| doc? ( app-doc/doxygen ) |
| X? ( |
| x11-proto/xproto |
| || ( >=x11-libs/libXtst-1.0.99.2 <x11-proto/xextproto-7.0.99 ) |
| ) |
| dev-libs/libatomic_ops |
| dev-util/pkgconfig |
| system-wide? ( || ( dev-util/unifdef sys-freebsd/freebsd-ubin ) ) |
| dev-util/intltool" |
| |
| # alsa-utils dep is for the alsasound init.d script (see bug #155707) |
| # bluez-utils dep is for the bluetooth init.d script |
| RDEPEND="${RDEPEND} |
| gnome-extra/gnome-audio |
| system-wide? ( |
| sys-apps/openrc |
| alsa? ( media-sound/alsa-utils ) |
| bluetooth? ( |
| || ( >=net-wireless/bluez-4 |
| >=net-wireless/bluez-utils-3 ) ) |
| )" |
| |
| pkg_setup() { |
| enewgroup audio 18 # Just make sure it exists |
| enewgroup pulse-access |
| enewgroup pulse |
| enewuser pulse -1 -1 /var/run/pulse pulse,audio |
| |
| if use udev && use hal; then |
| elog "Please note that enabling both udev and hal will build both" |
| elog "discover modules, but only udev will be used automatically." |
| elog "If you wish to use hal you have to enable it explicitly" |
| elog "or you might just disable the hal USE flag entirely." |
| fi |
| } |
| |
| src_prepare() { |
| epatch "${FILESDIR}/${P}-default-volume.patch" |
| epatch "${FILESDIR}/${P}-stereo-to-mono.patch" |
| epatch "${FILESDIR}/${P}-mic.patch" |
| epatch "${FILESDIR}/${P}-no-suid.patch" |
| elibtoolize |
| } |
| |
| src_configure() { |
| # It's a binutils bug, once I can find time to fix that I'll add a |
| # proper dependency and fix this up. — flameeyes |
| append-ldflags $(no-as-needed) |
| |
| econf \ |
| --enable-largefile \ |
| $(use_enable glib glib2) \ |
| --disable-solaris \ |
| $(use_enable asyncns) \ |
| $(use_enable oss oss-output) \ |
| $(use_enable alsa) \ |
| $(use_enable lirc) \ |
| $(use_enable tcpd tcpwrap) \ |
| $(use_enable jack) \ |
| $(use_enable lirc) \ |
| $(use_enable avahi) \ |
| $(use_enable hal) \ |
| $(use_enable dbus) \ |
| $(use_enable gnome gconf) \ |
| $(use_enable libsamplerate samplerate) \ |
| $(use_enable bluetooth bluez) \ |
| $(use_enable X x11) \ |
| $(use_enable test default-build-tests) \ |
| $(use_enable udev) \ |
| $(use_enable ipv6) \ |
| $(use_with caps) \ |
| --localstatedir=/var \ |
| --disable-per-user-esound-socket \ |
| --with-database=gdbm \ |
| || die "econf failed" |
| |
| if use doc; then |
| pushd doxygen |
| doxygen doxygen.conf || die |
| popd |
| fi |
| } |
| |
| src_test() { |
| # We avoid running the toplevel check target because that will run |
| # po/'s tests too, and they are broken. Officially, it should work |
| # with intltool 0.41, but that doesn't look like a stable release. |
| emake -C src check || die |
| } |
| |
| minimize_install() { |
| rm_mod_list="\ |
| module-alsa-sink.so \ |
| module-alsa-source.so \ |
| module-cli-protocol-tcp.so \ |
| module-cli.so \ |
| module-combine.so \ |
| module-detect.so \ |
| module-device-manager.so \ |
| module-esound-compat-spawnfd.so \ |
| module-esound-compat-spawnpid.so \ |
| module-esound-protocol-tcp.so \ |
| module-esound-protocol-unix.so \ |
| module-esound-sink.so \ |
| module-hal-detect.so \ |
| module-http-protocol-tcp.so \ |
| module-http-protocol-unix.so \ |
| module-ladspa-sink.so \ |
| module-loopback.so \ |
| module-match.so \ |
| module-mmkbd-evdev.so \ |
| module-native-protocol-tcp.so \ |
| module-pipe-sink.so \ |
| module-pipe-source.so \ |
| module-raop-sink.so \ |
| module-remap-sink.so \ |
| module-rtp-recv.so \ |
| module-rtp-send.so \ |
| module-rygel-media-server.so \ |
| module-simple-protocol-tcp.so \ |
| module-simple-protocol-unix.so \ |
| module-sine-source.so \ |
| module-sine.so \ |
| module-tunnel-sink.so \ |
| module-tunnel-source.so \ |
| module-volume-restore.so \ |
| module-x11-bell.so \ |
| module-x11-cork-request.so \ |
| module-x11-publish.so \ |
| module-x11-xsmp.so" |
| mod_dir="${D}usr/lib/pulse-0.9.21/modules" |
| for fn in $rm_mod_list; do |
| if [ -e "${mod_dir}/${fn}" ]; then |
| rm ${mod_dir}/${fn} || \ |
| die "couldn't rm ${mod_dir}/${fn}" |
| fi |
| done |
| } |
| |
| src_install() { |
| emake -j1 DESTDIR="${D}" install || die "make install failed" |
| minimize_install |
| |
| # Drop the script entirely if X is disabled |
| use X || rm "${D}"/usr/bin/start-pulseaudio-x11 |
| |
| if use system-wide; then |
| newconfd "${FILESDIR}/pulseaudio.conf.d" pulseaudio |
| |
| use_define() { |
| local define=${2:-$(echo $1 | tr '[:lower:]' '[:upper:]')} |
| |
| use "$1" && echo "-D$define" || echo "-U$define" |
| } |
| |
| unifdef $(use_define hal) \ |
| $(use_define avahi) \ |
| $(use_define alsa) \ |
| $(use_define bluetooth) \ |
| $(use_define udev) \ |
| "${FILESDIR}/pulseaudio.init.d-4" \ |
| > "${T}/pulseaudio" |
| |
| doinitd "${T}/pulseaudio" |
| fi |
| |
| use avahi && sed -i -e '/module-zeroconf-publish/s:^#::' "${D}/etc/pulse/default.pa" |
| |
| if use hal && ! use udev; then |
| sed -i -e 's:-udev:-hal:' "${D}/etc/pulse/default.pa" || die |
| fi |
| |
| dodoc README ChangeLog todo || die |
| |
| if use doc; then |
| pushd doxygen/html |
| dohtml * || die |
| popd |
| fi |
| |
| # Create the state directory |
| diropts -o pulse -g pulse -m0755 |
| keepdir /var/run/pulse |
| |
| find "${D}" -name '*.la' -delete |
| } |
| |
| pkg_postinst() { |
| if use system-wide; then |
| elog "PulseAudio in Gentoo can use a system-wide pulseaudio daemon." |
| elog "This support is enabled by starting the pulseaudio init.d ." |
| elog "To be able to access that you need to be in the group pulse-access." |
| elog "If you choose to use this feature, please make sure that you" |
| elog "really want to run PulseAudio this way:" |
| elog " http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode" |
| elog "For more information about system-wide support, please refer to:" |
| elog " http://pulseaudio.org/wiki/SystemWideInstance" |
| if use gnome ; then |
| elog |
| elog "By enabling gnome USE flag, you enabled gconf support. Please note" |
| elog "that you might need to remove the gnome USE flag or disable the" |
| elog "gconf module on /etc/pulse/system.pa to be able to use PulseAudio" |
| elog "with a system-wide instance." |
| fi |
| elog |
| elog "To use the ESounD wrapper while using a system-wide daemon, you also" |
| elog "need to enable auth-anonymous for the esound-unix module, or to copy" |
| elog "/var/run/pulse/.esd_auth into each home directory." |
| elog |
| fi |
| if use bluetooth; then |
| elog |
| elog "The BlueTooth proximity module is not enabled in the default" |
| elog "configuration file. If you do enable it, you'll have to have" |
| elog "your BlueTooth controller enabled and inserted at bootup or" |
| elog "PulseAudio will refuse to start." |
| elog |
| elog "Please note that the BlueTooth proximity module seems itself" |
| elog "still experimental, so please report to upstream if you have" |
| elog "problems with it." |
| fi |
| if use alsa; then |
| local pkg="media-plugins/alsa-plugins" |
| if has_version ${pkg} && ! built_with_use --missing false ${pkg} pulseaudio; then |
| elog |
| elog "You have alsa support enabled so you probably want to install" |
| elog "${pkg} with pulseaudio support to have" |
| elog "alsa using applications route their sound through pulseaudio" |
| fi |
| fi |
| |
| eselect esd update --if-unset |
| } |