From 88e32c614265db1783bc02782cdae880d786d227 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Sat, 20 May 2017 11:21:13 +0100 Subject: [PATCH] media-sound/xmms2: bump up to 0.8_p20161122, latest snapshot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- media-sound/xmms2/Manifest | 1 + .../files/xmms2-0.8_p20161122-tarball.patch | 78 +++++ media-sound/xmms2/metadata.xml | 2 + media-sound/xmms2/xmms2-0.8-r4.ebuild | 2 +- media-sound/xmms2/xmms2-0.8_p20161122.ebuild | 292 ++++++++++++++++++ 5 files changed, 374 insertions(+), 1 deletion(-) create mode 100644 media-sound/xmms2/files/xmms2-0.8_p20161122-tarball.patch create mode 100644 media-sound/xmms2/xmms2-0.8_p20161122.ebuild diff --git a/media-sound/xmms2/Manifest b/media-sound/xmms2/Manifest index be39c6eeee9ba..442ad25250d2d 100644 --- a/media-sound/xmms2/Manifest +++ b/media-sound/xmms2/Manifest @@ -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 diff --git a/media-sound/xmms2/files/xmms2-0.8_p20161122-tarball.patch b/media-sound/xmms2/files/xmms2-0.8_p20161122-tarball.patch new file mode 100644 index 0000000000000..eef49b13f16ff --- /dev/null +++ b/media-sound/xmms2/files/xmms2-0.8_p20161122-tarball.patch @@ -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") diff --git a/media-sound/xmms2/metadata.xml b/media-sound/xmms2/metadata.xml index acb83130968b6..26ce4e0e0a61a 100644 --- a/media-sound/xmms2/metadata.xml +++ b/media-sound/xmms2/metadata.xml @@ -33,10 +33,12 @@ Support for airplay format Support for Monkey's Audio (APE) format with help of bundled libasf + Enable fluidsynth support (MIDI) Transport for glibs virtual filesystem Icecast source output plugin Support for Monkey's Audio (APE) format with help of media-sound/mac Support for Open Fingerprint Architecture (OFA) + Enable Opus audio codec support This client sends anonymous usage-statistics to the xmms2 Build xmms2 player daemon (otherwise only clients are built) Support for C64 SID diff --git a/media-sound/xmms2/xmms2-0.8-r4.ebuild b/media-sound/xmms2/xmms2-0.8-r4.ebuild index ae57af19d2218..b01887b80b148 100644 --- a/media-sound/xmms2/xmms2-0.8-r4.ebuild +++ b/media-sound/xmms2/xmms2-0.8-r4.ebuild @@ -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 ) diff --git a/media-sound/xmms2/xmms2-0.8_p20161122.ebuild b/media-sound/xmms2/xmms2-0.8_p20161122.ebuild new file mode 100644 index 0000000000000..f9e24892bd0b5 --- /dev/null +++ b/media-sound/xmms2/xmms2-0.8_p20161122.ebuild @@ -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__..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 []." + + 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 +}