diff options
Diffstat (limited to 'media-sound/xmms2')
-rw-r--r-- | media-sound/xmms2/Manifest | 2 | ||||
-rw-r--r-- | media-sound/xmms2/files/xmms2-0.8_p20161122-cpp-client.patch | 68 | ||||
-rw-r--r-- | media-sound/xmms2/xmms2-0.8_p20161122-r5.ebuild | 300 |
3 files changed, 370 insertions, 0 deletions
diff --git a/media-sound/xmms2/Manifest b/media-sound/xmms2/Manifest index f4accf8f1969..52ee5358935a 100644 --- a/media-sound/xmms2/Manifest +++ b/media-sound/xmms2/Manifest @@ -2,11 +2,13 @@ AUX xmms2-0.8-ffmpeg2.patch 455 BLAKE2B 4009dd67794554c3dd98199944410f435f978d1e AUX xmms2-0.8-rtvg.patch 1539 BLAKE2B b359db6f477f0ca6a8e528645f731ccb33ec13067ff4c9fa1ca2ce1f13108c8c42b242562d08bd9997c06845873bb8efaba0f04e23bb2a79cb863c76223a86af SHA512 b8c6b908f48ab239c2c734452eebd2b9a4a2f4f2b98278bb0951d9a97e0d3df03b5443bc3a6bb92ff3133894d7b6239373b3323251f34c6852eee988aae5205f AUX xmms2-0.8DrO_o-waflib-fix-perl.patch 1693 BLAKE2B 6057da2c8493ea7887ea03322d16d45ca0726174e7deb1a64f76b289fdeaba02c7659944803a23d7a32a0a74de7a39de1404d5566b43dd3306004a29876af038 SHA512 0f7f86cebd0ff75ed53366776f8c93abb54adf5942f53d7424183a4bd6913b73493882d4d3caadba6a959ddf22da0a22fa53d0fc18ce5b8508eb5670482e8c92 AUX xmms2-0.8_p20161122-be-hash.patch 1075 BLAKE2B 7c9678016751b207a5ef48c0f7963bc0a2e3e99fb461e52b5745bc5e2dde6c329bb358e58802c127aef96d5912e22a7df7a64f719286e9cf7787703765c4b18f SHA512 051e22907315bb6bda201497e1c2ef84d919fc7d39aefac187b3616c5f6c41e768cdd79cfe197fbadfdda3863f9e9c96b5f72fa07d5e1655451328cde8ba5781 +AUX xmms2-0.8_p20161122-cpp-client.patch 2326 BLAKE2B a59da287dafafe8a3a177c11673eb7de5918fc6efef2e32c707832d7ea202091493e41f907f3e2dc370cd34d990571eed1d274fddf05f715dff7462973fb802f SHA512 095f2878afe9616bc7982037c0a9b0cc610164e04d116d40fe138df0280160680c19f6bf5c2f9aed6e9d31d42ee2f310570aefae28872ee15496f886d20ee2e9 AUX xmms2-0.8_p20161122-mac-4.patch 1632 BLAKE2B 5bc5c7d499df5faee2fc6b4307af18269b784360bbbcaef33b1db4b880704f88e8dad06168e3737a43fcdb71ba722da1ffb5ba77f3f61ecf07674e1ad0988f5a SHA512 d2fe5f9a0c59205c787386e7b219c3fa9a334c30787b9a343214cc1c4dbf9f5d47f5dad9b2efd7deac1e96a227c827cc66198215a89b0e788c9d856cff51b16b AUX xmms2-0.8_p20161122-perl-no-local.patch 697 BLAKE2B 86ab6bb3594fd45e9a9bdbd07d85d3740ed206eea24652161c7fbbdf620c98a6b002b646aba65a3f017e263bb82d6dc7b933fb53540012c2005d65dd2e667b06 SHA512 eb5afb39409c7c199a844d9452ab829a653d2a1ce8f5d9f1361fa995e851914d5a962d25d8116947a265fabc649f8560aa1947a24cf45d954da7743954fc3cd7 AUX xmms2-0.8_p20161122-tarball.patch 2764 BLAKE2B 1d6ea9bc40db3145460a8ef06c732114475087ea05eef65fd837d6c3bf346478579d7c6ab0bf33387d2228a319245e0e4d2562935be75a58abd04e88205d4373 SHA512 5b03d129a55ac14462a68e47ecba29c2817eb83d122a3614c624c743ecc29a7bac066644aa61d5ac74f9cb59808d1a9bac077dc360c507da722c206b948301ac DIST xmms2-0.8DrO_o-949-gca15e830.tar.bz2 1928653 BLAKE2B f34abf0c68f4574593eb706744cc4354bc9b679d005bcaf4a9f03ef90fcb14935428c73d3d74565c41a70efcfa6541af15a455d091b6d17e7ca613229c1c1390 SHA512 affd7fdd259cdb952e972b62f24ab8eb6afd2c87786254a7ae81adffdcfe1454dcf2fb95811a8b90db74dba84918526fd8c920e11582b36aa48725f293c73edb EBUILD xmms2-0.8_p20161122-r3.ebuild 7519 BLAKE2B ad7093c0b9af101e3f29ad81b6eda1fac3842cbeaf7dd2322704ed8ff2394038c141d72a9bcc6b4ab14ee12d36d2af3e12b8fc9851fdb2ec17bd5bdb5c107c93 SHA512 3fe26a7e0f1542ef9ec787d87d4ff7ee5c6ad19543c66d1a6c31ceae5d921ad5bd48c20b5d7a546aea69a87b1877e0144d1cdee7ac8c06eba96826185f982185 EBUILD xmms2-0.8_p20161122-r4.ebuild 7577 BLAKE2B 449e5421e5bd4c1febb2403b1fabf53af35ed8c22a06488805fff23fef27b8691cda0cfd2d7b6fe230160929d3549c081581fb736d9fb34b6ebad4c28325959a SHA512 189a0fe53beb27adac0326c3370d147706c3072f933fb0d09d0bc3503555108b2d8acd8f2046902b59e20a3078c19262632241722bd2e9f1028b42b188941eb6 +EBUILD xmms2-0.8_p20161122-r5.ebuild 7701 BLAKE2B 825f60294354e9779581c4e74a936672ecfcd513a3b420c026dbe1dd50db87e066c6b519c8fc02fc6dfd7d92adcb3ebf4dd0da27309922d5a1687ab5a3689330 SHA512 8d24d878b985fd8a9eff773bae5fd53cb28d7a0e995089ca04ca103088e480c4ea03c5bb6e11f25923c4b2925527bed4555c0660c41e8dc4a248c78d0ecac7a1 EBUILD xmms2-0.8_p20161122.ebuild 7389 BLAKE2B bb82ad9ed821fefab30cb8a3f9a4b77e50ec6cc219b297506e8e2fbe8aba2b347c1da0a1b675d072b8bd97263dd03c47bcb8589daddeea8e3d0e7a85020c44c2 SHA512 2c09816bf4c22b89e885b4c6c64f0bbf42729eba0f77834451d9fc943057aba9a15f0362b81458192d21c48e61918f689d7f9b0fd7dea22e416b96598caa293d MISC metadata.xml 2560 BLAKE2B 267abaaa9bf07aa218ef3d2613c4ff94c183f84f5caf2525a1d902dbdecebc724e94bdf84f09bd820cec2579bb293478777459b2a0d801e560f853270746d576 SHA512 f92c04cad82b65f335aa44d0890f133df1f1bbdba97592f1c69bb90e9fa2a8d8827029ff10998cb4fb8ab936dc1f2c9a7402b6259e5000e2644467e89b23b26e diff --git a/media-sound/xmms2/files/xmms2-0.8_p20161122-cpp-client.patch b/media-sound/xmms2/files/xmms2-0.8_p20161122-cpp-client.patch new file mode 100644 index 000000000000..cedc87fcc469 --- /dev/null +++ b/media-sound/xmms2/files/xmms2-0.8_p20161122-cpp-client.patch @@ -0,0 +1,68 @@ +https://github.com/xmms2/xmms2-devel/pull/5 + +From 82741bf3094c8e0bca8eb1b7f3bc147eeb51ea06 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyfox@gentoo.org> +Date: Thu, 6 Dec 2018 07:19:08 +0000 +Subject: [PATCH] OTHER: fix c++ client dangling reference + +On #xmm2 Chewi reported c++/tut7 to be broken at start: + +``` +GLib-WARNING **: glib-2.56.2/glib/giounix.c:410 +Error while getting flags for FD: Bad file descriptor (9) +``` + +valgrind shows the problem as read of uninitialized data: + +``` +$ valgrind ./tut7 + +==32268== Conditional jump or move depends on uninitialised value(s) +==32268== at 0x49DC36B: xmmsc_mainloop_gmain_init (xmmsclient-glib.c:80) +==32268== by 0x49E11BE: Xmms::GMainloop::GMainloop(xmmsc_connection_St*) (xmmsclient++-glib.cpp:11) +==32268== by 0x10C64D: main (in /home/slyfox/dev/git/xmms2-devel/doc/tutorial/c++/tut7) +==32268== Uninitialised value was created by a stack allocation +==32268== at 0x49E119A: Xmms::GMainloop::GMainloop(xmmsc_connection_St*) (xmmsclient++-glib.cpp:8) +``` + +This happens due to use of dangling C++ reference to stack variable: + +``` +// somewhere in src/include/xmmsclient/xmmsclient++/mainloop.h +class MainloopInterface { + MainloopInterface( xmmsc_connection_t* conn ) : + running_( false ), conn_( conn ) { } + protected: + bool running_; + xmmsc_connection_t*& conn_; +} +``` + +Note: `conn_` refers to dangling local variable of +`MainloopInterface::MainloopInterface` constructor. + +The fix is to pass through pointer reference. +`MainLoop::MainLoop()` already does it. + +Reported-by: James Le Cuirot +Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> +--- + src/include/xmmsclient/xmmsclient++/mainloop.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/include/xmmsclient/xmmsclient++/mainloop.h b/src/include/xmmsclient/xmmsclient++/mainloop.h +index de97e20d..268ca6f7 100644 +--- a/src/include/xmmsclient/xmmsclient++/mainloop.h ++++ b/src/include/xmmsclient/xmmsclient++/mainloop.h +@@ -41,7 +41,7 @@ namespace Xmms + * @note The constructor should only initialize the + * mainloop, not start it! + */ +- MainloopInterface( xmmsc_connection_t* conn ) : ++ MainloopInterface( xmmsc_connection_t*& conn ) : + running_( false ), conn_( conn ) { } + + /** Destructor. Should also stop the loop. +-- +2.19.2 + diff --git a/media-sound/xmms2/xmms2-0.8_p20161122-r5.ebuild b/media-sound/xmms2/xmms2-0.8_p20161122-r5.ebuild new file mode 100644 index 000000000000..d6d2392bada7 --- /dev/null +++ b/media-sound/xmms2/xmms2-0.8_p20161122-r5.ebuild @@ -0,0 +1,300 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} ) +USE_RUBY="ruby23 ruby24 ruby25" + +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="https://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 ~arm ~ppc ~x86" + +IUSE="aac airplay +alsa ao asf cdda curl cxx ffmpeg flac fluidsynth 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 ) + ices? ( media-libs/libogg + media-libs/libshout + media-libs/libvorbis ) + jack? ( virtual/jack ) + 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 + eapply "${FILESDIR}/${PN}"-0.8_p20161122-perl-no-local.patch + 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 + + # fix hash to be the same on LE/BE platforms + eapply "${FILESDIR}/${P}"-be-hash.patch + + # handle mac-3 -> -4 API change + eapply "${FILESDIR}/${P}"-mac-4.patch + + # C++ client dangling reference: https://github.com/xmms2/xmms2-devel/pull/5 + eapply "${FILESDIR}/${P}"-cpp-client.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 + "DISABLED gvfs" # obsolete #647604 + "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 https://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 +} |