diff options
Diffstat (limited to 'community-testing/xmms2')
-rw-r--r-- | community-testing/xmms2/PKGBUILD | 83 | ||||
-rw-r--r-- | community-testing/xmms2/ffmpeg-0.11.diff | 10 | ||||
-rw-r--r-- | community-testing/xmms2/vorbis-albumart.patch | 200 | ||||
-rw-r--r-- | community-testing/xmms2/xmms2-helpers.patch | 13 | ||||
-rw-r--r-- | community-testing/xmms2/xmms2-ruby-1.9.patch | 59 | ||||
-rw-r--r-- | community-testing/xmms2/xmms2.install | 3 | ||||
-rw-r--r-- | community-testing/xmms2/xmms2d.conf | 31 | ||||
-rw-r--r-- | community-testing/xmms2/xmms2d.rc | 39 |
8 files changed, 438 insertions, 0 deletions
diff --git a/community-testing/xmms2/PKGBUILD b/community-testing/xmms2/PKGBUILD new file mode 100644 index 000000000..3e8493bbf --- /dev/null +++ b/community-testing/xmms2/PKGBUILD @@ -0,0 +1,83 @@ +# $Id: PKGBUILD 73341 2012-07-06 15:24:10Z ibiru $ +# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> + +pkgname=xmms2 +pkgver=0.8DrO_o +pkgrel=7 +pkgdesc="complete rewrite of the popular music player" +arch=('i686' 'x86_64') +url="http://xmms2.org/" +license=('LGPL') +backup=('etc/conf.d/xmms2d.conf') +depends=('sqlite' 'libmad') +makedepends=('alsa-lib' 'boost' 'curl' 'faad2' 'ffmpeg' 'fftw' 'flac' 'glib' + 'jack' 'libao' 'libmms' 'libmpcdec' 'libofa' 'libsamplerate' 'libshout' + 'libvorbis' 'libxml2' 'mpg123' 'oss' 'perl' 'pulseaudio' 'pyrex' + 'ruby' 'smbclient' 'speex' 'wavpack' 'libmodplug' 'python' 'python2' 'libgme' 'avahi') +optdepends=('alsa-lib: ALSA audio output' + 'avahi: announce xmms2d via bonjour/mDNS/zeroconf' + 'boost: C++ language bindings' + 'curl: play HTTP streams' + 'faad2: AAC support' + 'ffmpeg: WMA, avcodec & avformat support' + 'fftw: calculations for visualization' + 'flac: FLAC support' + 'jack: JACK audio output' + 'libao: liboa audio output' + 'libgme: game-music-emu support' + 'libofa: MusicDNS fingerprinting' + 'libmms: play MMS streams' + 'libmodplug: to play MOD files' + 'libmpcdec: Musepack support' + 'libsamplerate: vocoder support' + 'libshout: Icecast audio output' + 'libvorbis: Ogg Vorbis support' + 'libxml2: XSPF and podcast support' + 'mpg123: alternative MP3 plugin' + 'oss: OSS audio output' + 'perl: Perl language bindings' + 'pulseaudio: PulseAudio audio output' + 'pyrex: Python language bindings' + 'ruby: Ruby language bindings' + 'smbclient: direct CIFS/SMB access' + 'speex: Speex support' + 'wavpack: WavPack support') +# 'sidplay: to play a Commodore 64 music files AKA zaks' +# we do not have sidplay 2 series in repos; also it's +# somehow connected with resid i guess(not in repos also) +conflicts=('xmms2-devel') +install=xmms2.install +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2 + xmms2d.conf + xmms2d.rc + 'ffmpeg-0.11.diff') +md5sums=('84d5c05a70bfd31ed392a4e3f701eaa3' + 'af13c937bf3c86b77ae6820107aab9b8' + '9d8e3e1a434f271423bdd228a1e9bd7c' + 'e176971ef96807f72fa8fc17d260c20a') + +build() { + cd xmms2-${pkgver}/src/plugins/avcodec/ + # remove call to avcodec_init + # http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=3211932c513338566b31d990d06957e15a644d13 + patch -Np0 -i ${srcdir}/ffmpeg-0.11.diff + + cd ${srcdir}/${pkgname}-${pkgver} + + # python2 fix +# sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' waf + + ./waf configure --prefix=/usr \ + --with-optionals=python,launcher,xmmsclient++,xmmsclient++-glib,perl,ruby,nycli,pixmaps,et,mdns,medialib-updater \ + --with-ruby-archdir=`ruby -e 'puts RbConfig::CONFIG["vendorarchdir"]'` \ + --with-ruby-libdir=`ruby -e 'puts RbConfig::CONFIG["vendorlibdir"]'` + ./waf build + ./waf --destdir=${pkgdir} install + + PYTHON=/usr/bin/python2 ./waf configure --prefix=/usr --with-optionals=python --without-xmms2d + ./waf build + ./waf --destdir=${pkgdir} install + + install -D -m 0755 ../xmms2d.rc ${pkgdir}/etc/rc.d/xmms2d + install -D -m 0644 ../xmms2d.conf ${pkgdir}/etc/conf.d/xmms2d.conf +} diff --git a/community-testing/xmms2/ffmpeg-0.11.diff b/community-testing/xmms2/ffmpeg-0.11.diff new file mode 100644 index 000000000..91d3a3106 --- /dev/null +++ b/community-testing/xmms2/ffmpeg-0.11.diff @@ -0,0 +1,10 @@ +--- avcodec.c.orig 2012-06-07 15:08:23.796225671 -0500 ++++ avcodec.c 2012-06-07 15:08:36.649489373 -0500 +@@ -134,7 +134,6 @@ + + xmms_xform_private_data_set (xform, data); + +- avcodec_init (); + avcodec_register_all (); + + mimetype = xmms_xform_indata_get_str (xform, diff --git a/community-testing/xmms2/vorbis-albumart.patch b/community-testing/xmms2/vorbis-albumart.patch new file mode 100644 index 000000000..de4305f6f --- /dev/null +++ b/community-testing/xmms2/vorbis-albumart.patch @@ -0,0 +1,200 @@ +From f38882beb1c9b4f3e3c63ac7d65603ad5917cd9d Mon Sep 17 00:00:00 2001 +From: Brad Jorsch <anomie@users.sourceforge.net> +Date: Tue, 09 Mar 2010 15:41:33 +0000 +Subject: OTHER: Add support for METADATA_BLOCK_PICTURE in Vorbis plugin + +Bug-Debian: http://bugs.debian.org/565479 +--- +diff --git a/src/plugins/vorbis_common/common.c b/src/plugins/vorbis_common/common.c +index c1f4ef9..fc4ff1b 100644 +--- a/src/plugins/vorbis_common/common.c ++++ b/src/plugins/vorbis_common/common.c +@@ -243,6 +243,74 @@ get_replaygain (xmms_xform_t *xform, vorbis_comment *vc) + } + } + ++static void ++handle_image_comment (xmms_xform_t *xform, const gchar *value, gsize len) ++{ ++ guint32 typ, mime_len, desc_len, img_len; ++ guchar *pos, *end, *mime_data, *img_data; ++ gchar hash[33]; ++ ++ pos = value; ++ end = value + len; ++ ++ if (pos + 4 > end) { ++ XMMS_DBG ("Malformed picture comment"); ++ return; ++ } ++ typ = GUINT32_FROM_BE (*(guint32 *)pos); ++ if (typ != 0 && typ != 3) { ++ XMMS_DBG ("Picture type %d not handled", typ); ++ return; ++ } ++ pos += 4; ++ ++ if (pos + 4 > end) { ++ XMMS_DBG ("Malformed picture comment"); ++ return; ++ } ++ mime_len = GUINT32_FROM_BE (*(guint32 *)pos); ++ pos += 4; ++ mime_data = pos; ++ pos += mime_len; ++ ++ if (pos + 4 > end) { ++ XMMS_DBG ("Malformed picture comment"); ++ return; ++ } ++ desc_len = GUINT32_FROM_BE (*(guint32 *)pos); ++ pos += 4; ++ pos += desc_len; ++ ++ pos += 4; /* width */ ++ pos += 4; /* height */ ++ pos += 4; /* depth */ ++ pos += 4; /* indexed palette length */ ++ ++ if (pos + 4 > end) { ++ XMMS_DBG ("Malformed picture comment"); ++ return; ++ } ++ img_len = GUINT32_FROM_BE (*(guint32 *)pos); ++ pos += 4; ++ img_data = pos; ++ ++ if (img_data + img_len > end) { ++ XMMS_DBG ("Malformed picture comment"); ++ return; ++ } ++ ++ if (xmms_bindata_plugin_add ((const guchar *)img_data, img_len, hash)) { ++ const gchar *metakey; ++ ++ metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_PICTURE_FRONT; ++ xmms_xform_metadata_set_str (xform, metakey, hash); ++ ++ metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_PICTURE_FRONT_MIME; ++ mime_data[mime_len] = '\0'; ++ xmms_xform_metadata_set_str (xform, metakey, mime_data); ++ } ++} ++ + /* note that "key" is NOT NUL-terminated here, + * but "value" is. + */ +@@ -253,6 +321,14 @@ handle_comment (xmms_xform_t *xform, + { + gint i; + ++ if (!g_ascii_strncasecmp (key, "METADATA_BLOCK_PICTURE", key_len)) { ++ gsize dlen; ++ gchar *dvalue = g_base64_decode (value, &dlen); ++ handle_image_comment (xform, dvalue, dlen); ++ g_free (dvalue); ++ return; ++ } ++ + for (i = 0; i < G_N_ELEMENTS (properties); i++) { + if (key_len != strlen (properties[i].vname)) + continue; +-- +cgit v0.8.3.4 + + +From d8273630bd92ecea581240ae93c6795cc538d076 Mon Sep 17 00:00:00 2001 +From: Erik Massop <e.massop@hccnet.nl> +Date: Tue, 09 Mar 2010 15:45:03 +0000 +Subject: OTHER: Add Brad Jorsch to AUTHORS, disable Vorbis albumart for glib < 2.12 + +(Name found using e-mail address at http://sourceforge.net/users/anomie ) +--- +diff --git a/AUTHORS b/AUTHORS +index f2ef9af..7331d4b 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -146,6 +146,10 @@ N: Johannes Jordan + E: ypnos@lanrules.de + D: Visualization + ++N: Brad Jorsch ++E: anomie@users.sourceforge.net ++D: Support for front picture from Vorbis. ++ + N: Daniel KamiĆski + E: maniel.rulez@gmail.com + D: mlib remove command in cli, Ruby fixes. +diff --git a/src/plugins/vorbis_common/common.c b/src/plugins/vorbis_common/common.c +index fc4ff1b..ab1dc75 100644 +--- a/src/plugins/vorbis_common/common.c ++++ b/src/plugins/vorbis_common/common.c +@@ -27,6 +27,7 @@ + #include "xmms/xmms_sample.h" + #include "xmms/xmms_log.h" + #include "xmms/xmms_medialib.h" ++#include "xmms/xmms_bindata.h" + + #include <glib.h> + +@@ -244,12 +245,22 @@ get_replaygain (xmms_xform_t *xform, vorbis_comment *vc) + } + + static void +-handle_image_comment (xmms_xform_t *xform, const gchar *value, gsize len) ++handle_image_comment (xmms_xform_t *xform, const gchar *encoded_value) + { ++ gsize len; ++ guchar *value; ++ + guint32 typ, mime_len, desc_len, img_len; + guchar *pos, *end, *mime_data, *img_data; + gchar hash[33]; + ++#if GLIB_CHECK_VERSION(2,12,0) ++ value = g_base64_decode (encoded_value, &len); ++#else ++ /* TODO: Implement/backport base64 decoding */ ++ return; ++#endif ++ + pos = value; + end = value + len; + +@@ -299,7 +310,7 @@ handle_image_comment (xmms_xform_t *xform, const gchar *value, gsize len) + return; + } + +- if (xmms_bindata_plugin_add ((const guchar *)img_data, img_len, hash)) { ++ if (xmms_bindata_plugin_add (img_data, img_len, hash)) { + const gchar *metakey; + + metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_PICTURE_FRONT; +@@ -307,8 +318,10 @@ handle_image_comment (xmms_xform_t *xform, const gchar *value, gsize len) + + metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_PICTURE_FRONT_MIME; + mime_data[mime_len] = '\0'; +- xmms_xform_metadata_set_str (xform, metakey, mime_data); ++ xmms_xform_metadata_set_str (xform, metakey, (gchar *)mime_data); + } ++ ++ g_free (value); + } + + /* note that "key" is NOT NUL-terminated here, +@@ -322,10 +335,7 @@ handle_comment (xmms_xform_t *xform, + gint i; + + if (!g_ascii_strncasecmp (key, "METADATA_BLOCK_PICTURE", key_len)) { +- gsize dlen; +- gchar *dvalue = g_base64_decode (value, &dlen); +- handle_image_comment (xform, dvalue, dlen); +- g_free (dvalue); ++ handle_image_comment (xform, value); + return; + } + +-- +cgit v0.8.3.4 + + diff --git a/community-testing/xmms2/xmms2-helpers.patch b/community-testing/xmms2/xmms2-helpers.patch new file mode 100644 index 000000000..f6e6aa49e --- /dev/null +++ b/community-testing/xmms2/xmms2-helpers.patch @@ -0,0 +1,13 @@ +diff -wbBur xmms2-0.5DrLecter/src/include/xmmsclient/xmmsclient++/helpers.h xmms2-0.5DrLecter.my/src/include/xmmsclient/xmmsclient++/helpers.h +--- xmms2-0.5DrLecter/src/include/xmmsclient/xmmsclient++/helpers.h 2008-06-15 21:31:38.000000000 +0400 ++++ xmms2-0.5DrLecter.my/src/include/xmmsclient/xmmsclient++/helpers.h 2008-06-18 14:22:24.000000000 +0400 +@@ -33,6 +33,8 @@ + #include <list> + #include <vector> + ++#include <linux/limits.h> ++ + namespace Xmms + { + + diff --git a/community-testing/xmms2/xmms2-ruby-1.9.patch b/community-testing/xmms2/xmms2-ruby-1.9.patch new file mode 100644 index 000000000..6316ace61 --- /dev/null +++ b/community-testing/xmms2/xmms2-ruby-1.9.patch @@ -0,0 +1,59 @@ +diff -wbBur xmms2-0.6DrMattDestruction/src/clients/lib/ruby/rb_collection.c xmms2-0.6DrMattDestruction.my/src/clients/lib/ruby/rb_collection.c +--- xmms2-0.6DrMattDestruction/src/clients/lib/ruby/rb_collection.c 2009-04-21 17:51:11.000000000 +0000 ++++ xmms2-0.6DrMattDestruction.my/src/clients/lib/ruby/rb_collection.c 2009-09-14 09:13:19.000000000 +0000 +@@ -241,10 +241,10 @@ + COLL_METHOD_HANDLER_HEADER + + rb_ary = RARRAY (ids); +- ary = malloc (sizeof (unsigned int *) * (rb_ary->len + 1)); ++ ary = malloc (sizeof (unsigned int *) * (RARRAYLEN(rb_ary) + 1)); + +- for (i = 0; i < rb_ary->len; i++) +- ary[i] = NUM2UINT (rb_ary->ptr[i]); ++ for (i = 0; i < RARRAYLEN(rb_ary); i++) ++ ary[i] = NUM2UINT (RARRAY_PTR(rb_ary)[i]); + + ary[i] = 0; + +diff -wbBur xmms2-0.6DrMattDestruction/src/clients/lib/ruby/rb_xmmsclient.c xmms2-0.6DrMattDestruction.my/src/clients/lib/ruby/rb_xmmsclient.c +--- xmms2-0.6DrMattDestruction/src/clients/lib/ruby/rb_xmmsclient.c 2009-04-21 17:51:11.000000000 +0000 ++++ xmms2-0.6DrMattDestruction.my/src/clients/lib/ruby/rb_xmmsclient.c 2009-09-14 09:14:51.000000000 +0000 +@@ -1421,10 +1421,10 @@ + if (!NIL_P (rb_check_array_type (value))) { + struct RArray *ary = RARRAY (value); + +- ret = malloc (sizeof (char *) * (ary->len + 1)); ++ ret = malloc (sizeof (char *) * (RARRAYLEN(ary) + 1)); + +- for (i = 0; i < ary->len; i++) +- ret[i] = StringValuePtr (ary->ptr[i]); ++ for (i = 0; i < RARRAYLEN(ary); i++) ++ ret[i] = StringValuePtr (RARRAY_PTR(ary)[i]); + + ret[i] = NULL; + } else { +@@ -1451,10 +1451,10 @@ + struct RArray *ary = RARRAY (value); + int i; + +- for (i = 0; i < ary->len; i++) { ++ for (i = 0; i < RARRAYLEN(ary); i++) { + xmmsv_t *elem; + +- elem = xmmsv_new_string (StringValuePtr (ary->ptr[i])); ++ elem = xmmsv_new_string (StringValuePtr (RARRAY_PTR(ary)[i])); + xmmsv_list_append (list, elem); + xmmsv_unref (elem); + } +diff -wbBur xmms2-0.6DrMattDestruction/src/include/xmmsclient/xmmsclient++/helpers.h xmms2-0.6DrMattDestruction.my/src/include/xmmsclient/xmmsclient++/helpers.h +--- xmms2-0.6DrMattDestruction/src/include/xmmsclient/xmmsclient++/helpers.h 2009-04-21 17:51:11.000000000 +0000 ++++ xmms2-0.6DrMattDestruction.my/src/include/xmmsclient/xmmsclient++/helpers.h 2009-09-14 09:00:11.000000000 +0000 +@@ -33,6 +33,8 @@ + #include <list> + #include <vector> + ++#include <linux/limits.h> ++ + namespace Xmms + { + diff --git a/community-testing/xmms2/xmms2.install b/community-testing/xmms2/xmms2.install new file mode 100644 index 000000000..2205a3492 --- /dev/null +++ b/community-testing/xmms2/xmms2.install @@ -0,0 +1,3 @@ +pre_install() { + echo "-- DO NOT FORGET edit /etc/conf.d/xmms2.conf!" +} diff --git a/community-testing/xmms2/xmms2d.conf b/community-testing/xmms2/xmms2d.conf new file mode 100644 index 000000000..c8304fe1d --- /dev/null +++ b/community-testing/xmms2/xmms2d.conf @@ -0,0 +1,31 @@ +# +# xmms2-launcher cmdline parameters +# +XMMS2_PARAMETERS="" + +# +# xmms2 user +# You may want to add user to run xmms or use your username +# +XMMS2_USER="xmms2user" + +# +# If you set XMMS2_USER to a different user than the one who will be controlling +# xmms2d using xmms2 clients, make sure that the clients are aware of the path to +# xmms2d's IPC socket, or they might not be able to connect. On failure to connect +# some clients will try to run xmms2d themselves. These xmms2d instances will of +# course run as the user running the client, and not as the one configured below. +# +# If an IPC path is specified on the command line to xmms2d (using +# XMMS2_PARAMETERS="-i tcp://127.0.0.1:9667" +# for instance) that will be used. If not, xmms2d will use the path from its +# configuration file which is typically in ~/.config/xmms2/xmms2.conf. If this +# fails, a unix socket at /tmp/xmms-ipc-[username] will be used, where username +# is of the user starting xmms2d. +# +# Clients typically try to get the ipc path from the XMMS_PATH environment variable, +# (which might be set by adding say 'export XMMS_PATH="tcp://127.0.0.1:9667"' to +# ~/.profile). If this fails they can check their configuration file (if they have +# one) and finally use unix:///tmp/xmms-ipc-[username], where username is of the user +# starting the client. Upon failing to connect some will try to start xmms2d themselves. +# diff --git a/community-testing/xmms2/xmms2d.rc b/community-testing/xmms2/xmms2d.rc new file mode 100644 index 000000000..9d4d2b7e9 --- /dev/null +++ b/community-testing/xmms2/xmms2d.rc @@ -0,0 +1,39 @@ +#!/bin/bash + +. /etc/conf.d/xmms2d.conf +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof xmms2d xmms2-et` +case "$1" in + start) + stat_busy "Starting xmms2d" + [ -z "$PID" ] && su -c '/usr/bin/xmms2-launcher $XMMS2_PARAMETERS 1>/dev/null 2>/dev/null' - $XMMS2_USER + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon xmms2d + stat_done + fi + ;; + stop) + stat_busy "Stopping xmms2d" + [ ! -z "$PID" ] && su -c '/usr/bin/xmms2 quit &>/dev/null' - $XMMS2_USER + if [ $? -gt 0 ]; then + stat_fail + else + for i in `seq 1 10`; do + [ -d /proc/$PID ] || { stat_done; rm_daemon xmms2d; exit 0; } + sleep 1 + done + stat_fail + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 |