You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
237 lines
5.7 KiB
237 lines
5.7 KiB
# Copyright 1999-2021 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
PYTHON_COMPAT=( python3_{8..10} )
|
|
inherit multiprocessing optfeature perl-functions python-single-r1 toolchain-funcs
|
|
|
|
XMMS2_COMMIT="46da10f0e20c53fd2b40843617ed182c0cba4ebb"
|
|
S4_COMMIT="652ac581df7a0bca04334da397f8bb4f86eb7b59"
|
|
WAF_VER="2.0.22"
|
|
|
|
DESCRIPTION="X(cross)platform Music Multiplexing System, next generation of the XMMS player"
|
|
HOMEPAGE="https://github.com/XMMS2"
|
|
SRC_URI="
|
|
https://github.com/xmms2/xmms2-devel/archive/${XMMS2_COMMIT}.tar.gz -> ${P}.tar.gz
|
|
https://github.com/xmms2/s4/archive/${S4_COMMIT}.tar.gz -> ${PN}-s4-${PV}.tar.gz
|
|
https://waf.io/waf-${WAF_VER}.tar.bz2"
|
|
S="${WORKDIR}/${PN}-devel-${XMMS2_COMMIT}"
|
|
|
|
LICENSE="GPL-2+ LGPL-2.1+"
|
|
SLOT="0"
|
|
KEYWORDS="~alpha amd64 ~arm ppc x86"
|
|
|
|
# IUSE static map to be passed to --with-{optionals,plugins}=opt1,opt2,...
|
|
# flag:opt = `usev flag opt`, opt = `usev opt`, :opt = `echo opt`
|
|
XMMS2_OPTIONALS=(
|
|
cxx:xmmsclient++,xmmsclient++-glib :launcher mlib-update:medialib-updater
|
|
:nycli perl :pixmaps python server:s4 test:tests
|
|
# disabled: et,mdns,migrate-collections,ruby,sqlite2s4,vistest,xmmsclient-cf,xmmsclient-ecore
|
|
)
|
|
XMMS2_PLUGINS=(
|
|
aac:faad airplay alsa ao asf :asx cdda :cue curl :diskwrite :equalizer
|
|
ffmpeg:apefile,avcodec,flv,tta :file flac fluidsynth:fluidsynth,mid1,midsquash
|
|
gme :html ices :icymetaint :id3v2 jack :karaoke :m3u mac +mad mms modplug
|
|
mp3:mpg123 :mp4 musepack :normalize :null :nulstripper ofa opus oss :pls
|
|
pulseaudio:pulse :replaygain samba sid sndfile speex tremor vocoder +vorbis
|
|
:wave wavpack :xml xml:rss,xspf zeroconf:daap
|
|
# disabled: coreaudio,gvfs,nms,sc68,sun,waveout
|
|
)
|
|
|
|
IUSE="
|
|
${XMMS2_OPTIONALS[@]%:*}
|
|
${XMMS2_PLUGINS[@]%:*}
|
|
+server valgrind"
|
|
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
|
|
RESTRICT="!test? ( test ) !server? ( test )"
|
|
|
|
COMMON_DEPEND="
|
|
dev-libs/glib:2
|
|
sys-libs/readline:=
|
|
server? (
|
|
aac? ( media-libs/faad2 )
|
|
airplay? ( dev-libs/openssl:= )
|
|
alsa? ( media-libs/alsa-lib )
|
|
ao? ( media-libs/libao )
|
|
cdda? (
|
|
dev-libs/libcdio-paranoia:=
|
|
dev-libs/libcdio:=
|
|
media-libs/libdiscid
|
|
)
|
|
curl? ( net-misc/curl )
|
|
ffmpeg? ( media-video/ffmpeg:= )
|
|
flac? ( media-libs/flac )
|
|
fluidsynth? ( media-sound/fluidsynth:= )
|
|
gme? ( media-libs/game-music-emu )
|
|
ices? (
|
|
media-libs/libogg
|
|
media-libs/libshout
|
|
media-libs/libvorbis
|
|
)
|
|
jack? ( virtual/jack )
|
|
mac? ( media-sound/mac )
|
|
mad? ( media-libs/libmad )
|
|
mms? (
|
|
media-libs/libmms
|
|
media-video/ffmpeg:=
|
|
)
|
|
modplug? ( media-libs/libmodplug )
|
|
mp3? ( media-sound/mpg123 )
|
|
musepack? ( media-sound/musepack-tools )
|
|
ofa? (
|
|
dev-libs/expat
|
|
media-libs/libofa
|
|
sci-libs/fftw:3.0=
|
|
)
|
|
opus? (
|
|
media-libs/libogg
|
|
media-libs/opus
|
|
media-libs/opusfile
|
|
)
|
|
pulseaudio? ( media-sound/pulseaudio )
|
|
samba? ( net-fs/samba )
|
|
sid? ( media-libs/libsidplay:2 )
|
|
sndfile? ( media-libs/libsndfile )
|
|
speex? (
|
|
media-libs/libogg
|
|
media-libs/speex
|
|
)
|
|
tremor? ( media-libs/tremor )
|
|
vocoder? (
|
|
media-libs/libsamplerate
|
|
sci-libs/fftw:3.0=
|
|
)
|
|
vorbis? ( media-libs/libvorbis )
|
|
wavpack? ( media-sound/wavpack )
|
|
xml? ( dev-libs/libxml2 )
|
|
zeroconf? (
|
|
net-dns/avahi[mdnsresponder-compat]
|
|
net-misc/curl
|
|
)
|
|
)
|
|
python? ( virtual/libcrypt:= )"
|
|
RDEPEND="
|
|
${COMMON_DEPEND}
|
|
perl? (
|
|
dev-lang/perl
|
|
dev-perl/glib-perl
|
|
virtual/perl-Carp
|
|
virtual/perl-IO
|
|
virtual/perl-Scalar-List-Utils
|
|
)
|
|
python? (
|
|
${PYTHON_DEPS}
|
|
$(python_gen_cond_dep 'dev-python/pygobject[${PYTHON_USEDEP}]')
|
|
)"
|
|
DEPEND="
|
|
${COMMON_DEPEND}
|
|
cxx? ( dev-libs/boost )
|
|
test? ( dev-util/cunit )"
|
|
BDEPEND="
|
|
${PYTHON_DEPS}
|
|
virtual/pkgconfig
|
|
perl? ( dev-perl/Pod-Parser )
|
|
python? ( $(python_gen_cond_dep 'dev-python/cython[${PYTHON_USEDEP}]') )
|
|
test? ( valgrind? ( dev-util/valgrind ) )"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-0.8-rtvg.patch
|
|
"${FILESDIR}"/${PN}-0.8_p20161122-mac-4.patch
|
|
"${FILESDIR}"/${PN}-0.8_p20161122-cpp-client.patch
|
|
"${FILESDIR}"/${PN}-0.8_p20161122-faad.patch
|
|
)
|
|
|
|
src_prepare() {
|
|
rmdir src/lib/s4 && mv ../s4-${S4_COMMIT} src/lib/s4 || die
|
|
mv ../waf-${WAF_VER}/waf{,lib} . || die
|
|
|
|
default
|
|
|
|
sed -e "s|/path/to/.*sf2|${EPREFIX}/usr/share/sounds/sf2/FluidR3_GM.sf2|" \
|
|
-i src/plugins/fluidsynth/fluidsynth.c || die
|
|
}
|
|
|
|
src_configure() {
|
|
local waf=(
|
|
./waf configure
|
|
--prefix="${EPREFIX}"/usr
|
|
--libdir="${EPREFIX}"/usr/$(get_libdir)
|
|
--boost-includes="${ESYSROOT}"/usr/include # needed for prefix
|
|
--with-custom-version="%(version)s (git commit: ${XMMS2_COMMIT:0:8})"
|
|
--with-target-platform="${CHOST}"
|
|
)
|
|
|
|
xmms2_flag() {
|
|
local IFS=:
|
|
set -- ${1#+}
|
|
|
|
if [[ ${1} ]]; then
|
|
usev ${1} ,${2:-${1}}
|
|
else
|
|
echo ,${2}
|
|
fi
|
|
}
|
|
|
|
local flag optionals plugins
|
|
|
|
if use server; then
|
|
for flag in "${XMMS2_PLUGINS[@]}"; do
|
|
plugins+=$(xmms2_flag ${flag})
|
|
done
|
|
else
|
|
waf+=( --without-xmms2d )
|
|
fi
|
|
|
|
for flag in "${XMMS2_OPTIONALS[@]}"; do
|
|
optionals+=$(xmms2_flag ${flag})
|
|
done
|
|
|
|
waf+=(
|
|
# pass even if empty to avoid automagic
|
|
--with-optionals=${optionals:1}
|
|
--with-plugins=${plugins:1}
|
|
)
|
|
|
|
if use perl; then
|
|
perl_set_version
|
|
waf+=( --with-perl-archdir="${ARCH_LIB}" )
|
|
fi
|
|
|
|
if use valgrind; then
|
|
if valgrind true &>/dev/null; then
|
|
waf+=( --with-valgrind )
|
|
else
|
|
ewarn "valgrind was disabled due to failing a basic sanity check" #807271
|
|
fi
|
|
fi
|
|
|
|
tc-export AR CC CXX
|
|
|
|
echo "${waf[*]}"
|
|
"${waf[@]}" || die
|
|
}
|
|
|
|
src_compile() {
|
|
./waf build -j$(makeopts_jobs) --verbose --notests || die
|
|
}
|
|
|
|
src_test() {
|
|
./waf --alltests || die
|
|
}
|
|
|
|
src_install() {
|
|
./waf install --destdir="${D}" --without-ldconfig --notests || die
|
|
|
|
einstalldocs
|
|
|
|
use python && python_optimize
|
|
|
|
# to avoid editing waftools/man.py (use find given not always installed)
|
|
find "${ED}" -name '*.gz' -exec gzip -d {} + || die
|
|
}
|
|
|
|
pkg_postinst() {
|
|
use fluidsynth && optfeature "the default MIDI soundfont" media-sound/fluid-soundfont
|
|
}
|