diff options
Diffstat (limited to 'community/xmms2')
-rw-r--r-- | community/xmms2/PKGBUILD | 89 | ||||
-rw-r--r-- | community/xmms2/ffmpeg2.0.patch | 37 | ||||
-rw-r--r-- | community/xmms2/vorbis-albumart.patch | 200 | ||||
-rw-r--r-- | community/xmms2/xmms2-helpers.patch | 13 | ||||
-rw-r--r-- | community/xmms2/xmms2-ruby-1.9.patch | 59 | ||||
-rw-r--r-- | community/xmms2/xmms2.install | 3 | ||||
-rw-r--r-- | community/xmms2/xmms2d.conf | 31 | ||||
-rw-r--r-- | community/xmms2/xmms2d.service | 12 |
8 files changed, 444 insertions, 0 deletions
diff --git a/community/xmms2/PKGBUILD b/community/xmms2/PKGBUILD new file mode 100644 index 000000000..e7fa795bb --- /dev/null +++ b/community/xmms2/PKGBUILD @@ -0,0 +1,89 @@ +# $Id: PKGBUILD 94916 2013-08-01 06:55:59Z bpiotrowski $ +# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> + +pkgname=xmms2 +pkgver=0.8DrO_o +pkgrel=19 +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' + 'libdiscid' 'libcdio-paranoia' + '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' + 'libdiscid: cdda support' + 'libcdio-paranoia: cdda 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.service" + "ffmpeg2.0.patch") +md5sums=('84d5c05a70bfd31ed392a4e3f701eaa3' + 'af13c937bf3c86b77ae6820107aab9b8' + '47e68461589578e8a99857746c5b6f29' + 'da84ec58c5711f3c4ecd932c3e6642d6') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + patch -Np1 -i ../ffmpeg2.0.patch + + # python2 fix + # sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' waf + sed -i 's|#include <cdio/cdda.h>|#include <cdio/paranoia/cdda.h>|' src/plugins/cdda/cdda.c + sed -i 's|libsmbclient.h|samba-4.0/libsmbclient.h|' src/plugins/samba/{samba.c,wscript} + + ./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 +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + + ./waf --destdir=${pkgdir} install + + PYTHON=/usr/bin/python2 ./waf configure --prefix=/usr --with-optionals=python --without-xmms2d + ./waf build + ./waf --destdir=${pkgdir} install + + install -Dm0644 $srcdir/xmms2d.conf ${pkgdir}/etc/conf.d/xmms2d.conf + install -Dm0644 $srcdir/xmms2d.service $pkgdir/usr/lib/systemd/system/xmms2d.service +} diff --git a/community/xmms2/ffmpeg2.0.patch b/community/xmms2/ffmpeg2.0.patch new file mode 100644 index 000000000..87cc974c3 --- /dev/null +++ b/community/xmms2/ffmpeg2.0.patch @@ -0,0 +1,37 @@ +diff -rupN a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c +--- a/src/plugins/avcodec/avcodec.c 2011-10-20 21:26:08.000000000 +0200 ++++ b/src/plugins/avcodec/avcodec.c 2013-07-22 17:17:53.098385978 +0200 +@@ -134,7 +134,6 @@ xmms_avcodec_init (xmms_xform_t *xform) + + xmms_xform_private_data_set (xform, data); + +- avcodec_init (); + avcodec_register_all (); + + mimetype = xmms_xform_indata_get_str (xform, +@@ -200,7 +199,7 @@ xmms_avcodec_init (xmms_xform_t *xform) + } + } + +- data->codecctx = avcodec_alloc_context (); ++ data->codecctx = avcodec_alloc_context3 (NULL); + data->codecctx->sample_rate = data->samplerate; + data->codecctx->channels = data->channels; + data->codecctx->bit_rate = data->bitrate; +@@ -211,7 +210,7 @@ xmms_avcodec_init (xmms_xform_t *xform) + data->codecctx->codec_id = codec->id; + data->codecctx->codec_type = codec->type; + +- if (avcodec_open (data->codecctx, codec) < 0) { ++ if (avcodec_open2 (data->codecctx, codec, NULL) < 0) { + XMMS_DBG ("Opening decoder '%s' failed", codec->name); + goto err; + } else { +diff -rupN a/src/plugins/avcodec/avcodec_compat.h b/src/plugins/avcodec/avcodec_compat.h +--- a/src/plugins/avcodec/avcodec_compat.h 2011-10-20 21:26:08.000000000 +0200 ++++ b/src/plugins/avcodec/avcodec_compat.h 2013-07-22 17:16:15.841723560 +0200 +@@ -65,3 +65,4 @@ typedef struct AVPacket { + # define AVMEDIA_TYPE_AUDIO CODEC_TYPE_AUDIO + #endif + ++#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 diff --git a/community/xmms2/vorbis-albumart.patch b/community/xmms2/vorbis-albumart.patch new file mode 100644 index 000000000..de4305f6f --- /dev/null +++ b/community/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/xmms2/xmms2-helpers.patch b/community/xmms2/xmms2-helpers.patch new file mode 100644 index 000000000..f6e6aa49e --- /dev/null +++ b/community/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/xmms2/xmms2-ruby-1.9.patch b/community/xmms2/xmms2-ruby-1.9.patch new file mode 100644 index 000000000..6316ace61 --- /dev/null +++ b/community/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/xmms2/xmms2.install b/community/xmms2/xmms2.install new file mode 100644 index 000000000..2205a3492 --- /dev/null +++ b/community/xmms2/xmms2.install @@ -0,0 +1,3 @@ +pre_install() { + echo "-- DO NOT FORGET edit /etc/conf.d/xmms2.conf!" +} diff --git a/community/xmms2/xmms2d.conf b/community/xmms2/xmms2d.conf new file mode 100644 index 000000000..c8304fe1d --- /dev/null +++ b/community/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/xmms2/xmms2d.service b/community/xmms2/xmms2d.service new file mode 100644 index 000000000..6adcf207f --- /dev/null +++ b/community/xmms2/xmms2d.service @@ -0,0 +1,12 @@ +[Unit] +Description=XMMS2 daemon +After=network.target remote-fs.target nss-lookup.target + +[Service] +Type=forking +EnvironmentFile=/etc/conf.d/xmms2d.conf +ExecStart=/bin/su -c '/usr/bin/xmms2-launcher $XMMS2_PARAMETERS &>/dev/null' - $XMMS2_USER +ExecStop=/bin/su -c '/usr/bin/xmms2 quit &>/dev/null' - $XMMS2_USER + +[Install] +WantedBy=multi-user.target |