# Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/media-sound/xmms2/xmms2-0.8-r2.ebuild,v 1.2 2013/11/22 13:10:47 slyfox Exp $ EAPI=3 inherit eutils python toolchain-funcs MY_P="${P}DrO_o" DESCRIPTION="X(cross)platform Music Multiplexing System. The new generation of the XMMS player." HOMEPAGE="http://xmms2.org/wiki/Main_Page" SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2" LICENSE="GPL-2 LGPL-2.1" SLOT="0" KEYWORDS="~alpha ~amd64 ~ppc ~x86" IUSE="aac airplay +alsa ao asf avahi cdda curl cxx ffmpeg flac gvfs ices jack mac mlib-update mms +mad modplug mp3 mp4 musepack ofa oss perl phonehome pulseaudio python ruby samba +server sid sndfile speex test +vorbis vocoder wavpack xml" RDEPEND="server? ( >=dev-db/sqlite-3.3.4 aac? ( >=media-libs/faad2-2.0 ) airplay? ( dev-libs/openssl ) alsa? ( media-libs/alsa-lib ) ao? ( media-libs/libao ) avahi? ( net-dns/avahi[mdnsresponder-compat] ) cdda? ( || ( dev-libs/libcdio-paranoia =media-libs/libdiscid-0.1.1 >=media-sound/cdparanoia-3.9.8 ) curl? ( >=net-misc/curl-7.15.1 ) ffmpeg? ( virtual/ffmpeg ) flac? ( media-libs/flac ) gvfs? ( gnome-base/gnome-vfs ) ices? ( media-libs/libogg media-libs/libshout media-libs/libvorbis ) jack? ( >=media-sound/jack-audio-connection-kit-0.101.1 ) mac? ( media-sound/mac ) mms? ( virtual/ffmpeg >=media-libs/libmms-0.3 ) modplug? ( media-libs/libmodplug ) mad? ( media-libs/libmad ) mp3? ( >=media-sound/mpg123-1.5.1 ) musepack? ( media-sound/musepack-tools ) ofa? ( media-libs/libofa ) pulseaudio? ( media-sound/pulseaudio ) samba? ( net-fs/samba[smbclient] ) sid? ( media-sound/sidplay media-libs/resid ) sndfile? ( media-libs/libsndfile ) speex? ( media-libs/speex media-libs/libogg ) vorbis? ( media-libs/libvorbis ) vocoder? ( sci-libs/fftw media-libs/libsamplerate ) wavpack? ( media-sound/wavpack ) xml? ( dev-libs/libxml2 ) ) >=dev-libs/glib-2.12.9 cxx? ( >=dev-libs/boost-1.32 ) perl? ( >=dev-lang/perl-5.8.8 ) python? ( dev-lang/python ) ruby? ( >=dev-lang/ruby-1.8.5 ) " DEPEND="${RDEPEND} dev-lang/python python? ( dev-python/pyrex ) perl? ( virtual/perl-Module-Build ) virtual/pkgconfig test? ( dev-util/cunit ) " S="${WORKDIR}/${MY_P}" # use_enable() is taken as proto # $1 - useflag # $2 - xmms2 option/plugin name (equals to $1 if not set) xmms2_flag() { [[ -z $1 ]] && eerror "!!! empty arg. usage: xmms2_flag []." local UWORD=${2:-$1} case $1 in ENABLED) echo ",${UWORD}" ;; DISABLED) ;; *) use $1 && echo ",${UWORD}" ;; esac } pkg_setup() { python_pkg_setup } src_prepare() { ./waf # inflate waf cd .waf* || die epatch "${FILESDIR}/${PN}"-0.8DrO_o-waflib-fix-perl.patch cd "${S}" epatch "${FILESDIR}/${P}"-ffmpeg-0.11.patch #443256 epatch "${FILESDIR}/${P}"-libav-9-p2.patch #443256 epatch "${FILESDIR}/${P}"-libav-9.patch #443256 epatch "${FILESDIR}/${P}"-cython-0.19.1.patch epatch "${FILESDIR}/${P}"-memset.patch if has_version dev-libs/libcdio-paranoia; then sed -i -e 's:cdio/cdda.h:cdio/paranoia/cdda.h:' src/plugins/cdda/cdda.c || die fi } src_configure() { # ./configure alike options. local waf_params="--prefix=/usr \ --libdir=/usr/$(get_libdir) \ --with-target-platform=${CHOST} \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ --datadir=/usr/share \ --sysconfdir=/etc \ --localstatedir=/var/lib" local optionals="" local plugins="" if ! use server ; then waf_params+=" --without-xmms2d" else # some fun static mappings: local option_map=( # USE # sorted xmms2 option flag (same, as USE if empty) "phonehome et" "ENABLED launcher" "mlib-update medialib-updater" "ENABLED nycli" " perl" "ENABLED pixmaps" " python" " ruby" "DISABLED tests" "DISABLED vistest" "cxx xmmsclient++" "cxx xmmsclient++-glib" "DISABLED xmmsclient-cf" "DISABLED xmmsclient-ecore" # not in tree "test tests" ) local plugin_map=( # USE # sorted xmms2 plugin flag (same, as USE if empty) " alsa" " airplay" " ao" "ffmpeg apefile" "ffmpeg avcodec" " asf" "ENABLED asx" " cdda" "DISABLED coreaudio" # MacOS only? " curl" "ENABLED cue" "avahi daap" "ENABLED diskwrite" "ENABLED equalizer" "aac faad" "ENABLED file" " flac" "ffmpeg flv" "ffmpeg tta" "DISABLED gme" # not in tree " gvfs" "ENABLED html" " ices" "ENABLED icymetaint" "ENABLED id3v2" " jack" "ENABLED karaoke" "ENABLED m3u" " mac" " mms" " mad" " mp4" # bug #387961 (aac, mp3, ape can sit there) "mp3 mpg123" " modplug" " musepack" "DISABLED nms" # not in tree "ENABLED normalize" "ENABLED null" "ENABLED nulstripper" " ofa" " oss" "ENABLED pls" "pulseaudio pulse" "ENABLED replaygain" "xml rss" " samba" "DISABLED sc68" #not in tree " sid" " sndfile" " speex" "DISABLED sun" # {Open,Net}BSD only "DISABLED tremor" # not in tree " vorbis" " vocoder" "ffmpeg tta" "ENABLED wave" "DISABLED waveout" # windows only " wavpack" "xml xspf" "ENABLED xml" ) local option for option in "${option_map[@]}"; do optionals+=$(xmms2_flag $option) done local plugin for plugin in "${plugin_map[@]}"; do plugins+=$(xmms2_flag $plugin) done fi # ! server # pass them explicitely even if empty as we try to avoid magic deps waf_params+=" --with-optionals=${optionals:1}" # skip first ',' if yet waf_params+=" --with-plugins=${plugins:1}" CC="$(tc-getCC)" \ CPP="$(tc-getCPP)" \ AR="$(tc-getAR)" \ RANLIB="$(tc-getRANLIB)" \ CXX="$(tc-getCXX)" \ ./waf configure ${waf_params} || die "'waf configure' failed" } src_compile() { # waf is very keen to run tests in build phase (bug #424377) but # it does not bother running tests twice, so the hack below works: ./waf --verbose build || ./waf --verbose build || die "waf build failed" } src_test() { # rerun tests ./waf --alltests || die "waf --alltests failed" } src_install() { ./waf --without-ldconfig --destdir="${D}" install || die "'waf install' failed" dodoc AUTHORS TODO README use python && python_need_rebuild } pkg_postinst() { elog "This version is built on experimental development code" elog "If you encounter any errors report them at http://bugs.xmms2.org" elog "and visit #xmms2 at irc://irc.freenode.net" if use phonehome ; then einfo "" einfo "The phone-home client xmms2-et was activated" einfo "This client sends anonymous usage-statistics to the xmms2" einfo "developers which may help finding bugs" einfo "Disable the phonehome useflag if you don't like that" fi use python && python_mod_optimize xmmsclient } pkg_postrm() { use python && python_mod_cleanup xmmsclient }