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.
215 lines
5.2 KiB
215 lines
5.2 KiB
# Copyright 1999-2023 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
PYTHON_COMPAT=( python3_{10..12} )
|
|
PYTHON_REQ_USE="threads(+)"
|
|
inherit flag-o-matic optfeature perl-functions python-single-r1 waf-utils
|
|
|
|
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/releases/download/${PV}/${P}.tar.xz"
|
|
|
|
LICENSE="GPL-2+ LGPL-2.1+"
|
|
SLOT="0"
|
|
KEYWORDS="~alpha amd64 ~arm ~loong ppc ~riscv x86"
|
|
|
|
# IUSE static map to be passed to --with-{optionals,plugins}=opt1,opt2,...
|
|
# flag:opt = `usev flag opt`, opt = `usev opt`, :opt = `echo opt`
|
|
# (if have a use for some of these disabled features, please file a bug)
|
|
XMMS2_OPTIONALS=(
|
|
cxx:xmmsclient++,xmmsclient++-glib :launcher mlib-update:medialib-updater
|
|
:nycli perl :pixmaps python server:s4 test:tests libvisual:vistest
|
|
# disabled: et,mdns,migrate-collections,ruby,sqlite2s4,xmmsclient-cf,xmmsclient-ecore
|
|
)
|
|
XMMS2_PLUGINS=(
|
|
aac:faad airplay alsa ao :asx cdda :cue curl :diskwrite :equalizer
|
|
ffmpeg:apefile,asf,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 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,ofa,sc68,sun,waveout
|
|
)
|
|
|
|
IUSE="
|
|
${XMMS2_OPTIONALS[@]%:*}
|
|
${XMMS2_PLUGINS[@]%:*}
|
|
+server"
|
|
REQUIRED_USE="
|
|
${PYTHON_REQUIRED_USE}
|
|
test? ( server )"
|
|
RESTRICT="!test? ( test )"
|
|
|
|
COMMON_DEPEND="
|
|
dev-libs/glib:2
|
|
sys-libs/readline:=
|
|
libvisual? (
|
|
media-libs/libsdl[opengl,video]
|
|
media-libs/libvisual:0.4
|
|
)
|
|
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-4.12 )
|
|
mad? ( media-libs/libmad )
|
|
mms? (
|
|
media-libs/libmms
|
|
media-video/ffmpeg:=
|
|
)
|
|
modplug? ( media-libs/libmodplug )
|
|
mp3? ( media-sound/mpg123 )
|
|
musepack? ( media-sound/musepack-tools )
|
|
opus? ( media-libs/opusfile )
|
|
pulseaudio? ( media-libs/libpulse )
|
|
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
|
|
)
|
|
)"
|
|
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}]') )"
|
|
|
|
QA_CONFIG_IMPL_DECL_SKIP=(
|
|
avcodec_free_frame # succcessfully detects that this is gone in newer ffmpeg
|
|
)
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-0.9.1-cpp-client.patch
|
|
"${FILESDIR}"/${PN}-0.9.1-faad.patch
|
|
)
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
# meant to be configured, but give a default for out-of-the-box midi
|
|
sed -e "s|/path/to/.*sf2|${EPREFIX}/usr/share/sounds/sf2/FluidR3_GM.sf2|" \
|
|
-i src/plugins/fluidsynth/fluidsynth.c || die
|
|
}
|
|
|
|
src_configure() {
|
|
filter-lto # `xmms2 add somefile` breaks with lto + fortify=2
|
|
|
|
local wafargs=(
|
|
--boost-includes="${ESYSROOT}"/usr/include
|
|
--with-target-platform="${CHOST}"
|
|
--without-valgrind
|
|
)
|
|
|
|
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
|
|
wafargs+=( --without-xmms2d )
|
|
fi
|
|
|
|
for flag in "${XMMS2_OPTIONALS[@]}"; do
|
|
optionals+=$(xmms2_flag ${flag})
|
|
done
|
|
|
|
wafargs+=(
|
|
# pass even if empty to avoid automagic
|
|
--with-optionals=${optionals:1}
|
|
--with-plugins=${plugins:1}
|
|
)
|
|
|
|
if use perl; then
|
|
perl_set_version
|
|
wafargs+=( --with-perl-archdir="${ARCH_LIB}" )
|
|
fi
|
|
|
|
waf-utils_src_configure "${wafargs[@]}"
|
|
}
|
|
|
|
src_compile() {
|
|
waf-utils_src_compile --notests
|
|
}
|
|
|
|
src_test() {
|
|
waf-utils_src_compile --alltests
|
|
}
|
|
|
|
src_install() {
|
|
local DOCS=( AUTHORS README.mdown *.ChangeLog )
|
|
waf-utils_src_install --without-ldconfig --notests
|
|
|
|
use libvisual && dobin _build_/src/clients/vistest/xmms2-libvisual
|
|
|
|
use python && python_optimize
|
|
|
|
# to avoid editing waftools/man.py (use find given not always installed)
|
|
find "${ED}" -type f -name '*.gz' -exec gzip -d {} + || die
|
|
}
|
|
|
|
pkg_postinst() {
|
|
use fluidsynth && optfeature "the default MIDI soundfont" media-sound/fluid-soundfont
|
|
}
|