Skip to content

Commit

Permalink
media-sound/xmms2: bump up to 0.8_p20161122, latest snapshot
Browse files Browse the repository at this point in the history
This bump is a snapshot of a xmms2-devel/master git branch.
Devel tree has fixes like:
- waf bump (ruby-2.1 support)
- ffmpeg/libav upstream patches
- new plugins
- new s4 storage as a database (instead of sqlite)
- many other things

It's a a bit hard to backport patches to 6 years old release.

Reported-by: Toralf Förster
Bug: https://bugs.gentoo.org/618850
Package-Manager: Portage-2.3.6, Repoman-2.3.2
  • Loading branch information
Sergei Trofimovich committed May 20, 2017
1 parent 7ce38b3 commit 88e32c6
Show file tree
Hide file tree
Showing 5 changed files with 374 additions and 1 deletion.
1 change: 1 addition & 0 deletions media-sound/xmms2/Manifest
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
DIST xmms2-0.8DrO_o-949-gca15e830.tar.bz2 1928653 SHA256 58bd62f1e3ca83d4d82ad6854ee769b97238fc1c89967262c0e9e9e20e35092e SHA512 affd7fdd259cdb952e972b62f24ab8eb6afd2c87786254a7ae81adffdcfe1454dcf2fb95811a8b90db74dba84918526fd8c920e11582b36aa48725f293c73edb WHIRLPOOL 438d33793b808dd151b27ac51af9998b819ffc03cbc0ce789d693192f8aa5cab3c48402ef83f2b8fe1442dd9130248f561b1fe466168c0569c2e017ee1a0ede3
DIST xmms2-0.8DrO_o.tar.bz2 1670726 SHA256 c77e41e7bd5788889d5a2f78331ca8c748b8721bd2e59f36c36ad4c7cae8694a SHA512 478103d80264c0cb32912e828f74d0f5b2f10fe310f530a87ebecda7ca547a69e238cd572788f90bda29494494160d459fa6d1356b4fb87c7a8f0bf02e3b75f8 WHIRLPOOL 741dd85b8c065eea799675588a8d4c389c47fa3dcf129a9fd799bb5da0ffcb1eeffa45cfaca40af7c505908818b5e7960c1a54e947f53358edeb43841f2eaa5c
78 changes: 78 additions & 0 deletions media-sound/xmms2/files/xmms2-0.8_p20161122-tarball.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
diff --git a/utils/gen-changelog.py b/utils/gen-changelog.py
index b539088a..301c0461 100755
--- a/utils/gen-changelog.py
+++ b/utils/gen-changelog.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python2
from subprocess import check_output
import os

diff --git a/utils/gen-tarball.py b/utils/gen-tarball.py
index 2ae2a4d1..09ed5074 100755
--- a/utils/gen-tarball.py
+++ b/utils/gen-tarball.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
from subprocess import check_output, call
import tarfile
import os
@@ -40,15 +40,19 @@ def add_files(ball, prefix, template, files):

VERSION = check_output(["git", "describe"]).strip()

+# TODO: derive paths from submodule configuration
TUTORIAL_DIR="doc/tutorial"
+S4_DIR="src/lib/s4"

PREFIX="xmms2-%s" % VERSION
PREFIX_TUTORIAL="%s/%s" % (PREFIX, TUTORIAL_DIR)
+PREFIX_S4="%s/%s" % (PREFIX, S4_DIR)

DIST_DIR="dist"
DIST_XMMS2="%s/xmms2-%s.tar" % (DIST_DIR, VERSION)
DIST_XMMS2_BZ2="%s/xmms2-%s.tar.bz2" % (DIST_DIR, VERSION)
DIST_TUTORIAL="%s/xmms2-tutorial-%s.tar" % (DIST_DIR, VERSION)
+DIST_S4="%s/xmms2-tutorial-%s.tar" % (DIST_DIR, VERSION)

if not os.path.exists(DIST_DIR):
os.mkdir(DIST_DIR)
@@ -62,6 +66,9 @@ if os.path.exists(DIST_XMMS2_BZ2):
if os.path.exists(DIST_TUTORIAL):
os.unlink(DIST_TUTORIAL)

+if os.path.exists(DIST_S4):
+ os.unlink(DIST_S4)
+
# Tar up XMMS2
call("git archive --format=tar --prefix=%s/ HEAD > %s" % (PREFIX, DIST_XMMS2), shell=True)

@@ -69,9 +76,11 @@ call("git archive --format=tar --prefix=%s/ HEAD > %s" % (PREFIX, DIST_XMMS2), s
call("git submodule init", shell=True)
call("git submodule update", shell=True)
call("git --git-dir=%s/.git archive --format=tar --prefix=%s/ HEAD > %s" % (TUTORIAL_DIR, PREFIX_TUTORIAL, DIST_TUTORIAL), shell=True)
+call("git --git-dir=%s/.git archive --format=tar --prefix=%s/ HEAD > %s" % (S4_DIR, PREFIX_S4, DIST_S4), shell=True)

-# Append the tutorials to the XMMS2 archive
+# Append the tutorials and s4 to the XMMS2 archive
call("tar -Af %s %s" % (DIST_XMMS2, DIST_TUTORIAL), shell=True)
+call("tar -Af %s %s" % (DIST_XMMS2, DIST_S4), shell=True)

# Append ChangeLog and a summary of all file hashes."
add_files(DIST_XMMS2, PREFIX, get_template(DIST_XMMS2, os.path.join(PREFIX, "wscript")), [
diff --git a/utils/gen-tree-hashes.py b/utils/gen-tree-hashes.py
index 7f8b9e4f..9d27adb0 100755
--- a/utils/gen-tree-hashes.py
+++ b/utils/gen-tree-hashes.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
from subprocess import check_output
from operator import itemgetter
import os
@@ -21,3 +21,4 @@ def collect_hashes(*paths):

print check_output("git describe", shell=True)
print collect_hashes(".", "doc/tutorial")
+print collect_hashes(".", "src/lib/s4")
2 changes: 2 additions & 0 deletions media-sound/xmms2/metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,12 @@
<use>
<flag name="airplay">Support for airplay format</flag>
<flag name="asf">Support for Monkey's Audio (APE) format with help of bundled libasf</flag>
<flag name="fluidsynth">Enable fluidsynth support (MIDI)</flag>
<flag name="gvfs">Transport for glibs virtual filesystem</flag>
<flag name="ices">Icecast source output plugin</flag>
<flag name="mac">Support for Monkey's Audio (APE) format with help of <pkg>media-sound/mac</pkg></flag>
<flag name="ofa">Support for Open Fingerprint Architecture (OFA)</flag>
<flag name="opus">Enable Opus audio codec support</flag>
<flag name="phonehome">This client sends anonymous usage-statistics to the xmms2</flag>
<flag name="server">Build xmms2 player daemon (otherwise only clients are built)</flag>
<flag name="sid">Support for C64 SID</flag>
Expand Down
2 changes: 1 addition & 1 deletion media-sound/xmms2/xmms2-0.8-r4.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ RDEPEND="server? (
musepack? ( media-sound/musepack-tools )
ofa? ( media-libs/libofa )
pulseaudio? ( media-sound/pulseaudio )
samba? ( >=net-fs/samba-4.2[client] )
samba? ( >=net-fs/samba-4.2 )
sid? ( media-sound/sidplay
media-libs/resid )
sndfile? ( media-libs/libsndfile )
Expand Down
292 changes: 292 additions & 0 deletions media-sound/xmms2/xmms2-0.8_p20161122.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,292 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

# waf fails on python3_5: AttributeError: Can't pickle local object 'Context.__init__.<locals>.node_class'
PYTHON_COMPAT=( python{2_7,3_4} )
USE_RUBY="ruby20 ruby21 ruby22"

inherit eutils multiprocessing python-single-r1 ruby-single toolchain-funcs

# generated as 'python2 ./utils/gen-tarball.py' from clean git tree
MY_P="${P%_p*}DrO_o-949-gca15e830"

DESCRIPTION="X(cross)platform Music Multiplexing System. Next generation of the XMMS player"
HOMEPAGE="http://xmms2.org/wiki/Main_Page"
#SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2"
SRC_URI="https://dev.gentoo.org/~slyfox/distfiles/${MY_P}.tar.bz2"
LICENSE="GPL-2 LGPL-2.1"

SLOT="0"
KEYWORDS="~alpha ~amd64 ~ppc ~x86"

IUSE="aac airplay +alsa ao asf cdda curl cxx ffmpeg flac fluidsynth gvfs ices
jack mac mlib-update mms +mad modplug mp3 mp4 musepack ofa opus oss
perl phonehome pulseaudio python ruby samba +server sid sndfile speex
test valgrind +vorbis vocoder wavpack xml zeroconf"

RDEPEND="server? (
>=dev-db/sqlite-3.3.4
aac? ( >=media-libs/faad2-2.0 )
airplay? ( dev-libs/openssl:0= )
alsa? ( media-libs/alsa-lib )
ao? ( media-libs/libao )
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 )
fluidsynth? ( media-sound/fluidsynth )
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 )
opus? ( media-libs/opus
media-libs/opusfile )
pulseaudio? ( media-sound/pulseaudio )
samba? ( >=net-fs/samba-4.2 )
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:3.0= media-libs/libsamplerate )
wavpack? ( media-sound/wavpack )
xml? ( dev-libs/libxml2 )
zeroconf? ( net-dns/avahi[mdnsresponder-compat] )
)
>=dev-libs/glib-2.12.9
cxx? ( >=dev-libs/boost-1.32 )
perl? ( >=dev-lang/perl-5.8.8 )
python? ( ${PYTHON_DEPS} )
ruby? ( ${RUBY_DEPS} )
"

DEPEND="${RDEPEND}
dev-lang/python
virtual/pkgconfig
perl? ( dev-perl/Module-Build
virtual/perl-Module-Metadata )
python? ( >=dev-python/cython-0.15.1
dev-python/pyrex )
test? ( dev-util/cunit
valgrind? ( dev-util/valgrind ) )
"

REQUIRED_USE="${PYTHON_REQUIRED_USE}"

S="${WORKDIR}/${MY_P}"

pkg_setup() {
# used both for building xmms2 and
# optionally linking client library
# against python
python-single-r1_pkg_setup
}

# 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 <USEFLAG> [<xmms2_flagname>]."

local UWORD=${2:-$1}

case $1 in
ENABLED)
echo ",${UWORD}"
;;
DISABLED)
;;
*)
use $1 && echo ",${UWORD}"
;;
esac
}

src_prepare() {
./waf # inflate waf
cd .waf* || die
# needs port
#epatch "${FILESDIR}/${PN}"-0.8DrO_o-waflib-fix-perl.patch #578778
cd "${S}"

eapply "${FILESDIR}/${PN}"-0.8-ffmpeg2.patch #536232

eapply "${FILESDIR}/${PN}"-0.8-rtvg.patch #424377

# required to build tarball from git tree
eapply "${FILESDIR}/${P}"-tarball.patch

eapply_user
}

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"
"zeroconf daap"
"ENABLED diskwrite"
"ENABLED equalizer"
"aac faad"
"ENABLED file"
" flac"
" fluidsynth"
"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"
"ENABLED midsquash"
" 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"
" opus"
" 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}"
waf_params+=" $(use_with valgrind)"

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
}

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
}

0 comments on commit 88e32c6

Please sign in to comment.