public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] RFC: media-sound/xmms2/xmms2-0.7.ebuild
@ 2010-06-28 18:27 Sergei Trofimovich
  2010-06-29  6:24 ` Mike Frysinger
  0 siblings, 1 reply; 7+ messages in thread
From: Sergei Trofimovich @ 2010-06-28 18:27 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 501 bytes --]

There is yet 'New Package' request: https://bugs.gentoo.org/show_bug.cgi?id=93583

I think I've hacked more or less maintainable ebuild (attached)
and plan to maintain media-sound/xmms2 but one thing worries me:

package (and ebuild) has ruby, python and perl bindings.
I need help to check/fix current installation scheme as
I have zero experience in $forementioned-lang
bindings support in gentoo maintenance.

Other comments about ebuild issues are welcomed.

Thanks!
-- 

  Sergei

[-- Attachment #1.2: xmms2-0.7.ebuild --]
[-- Type: application/octet-stream, Size: 6210 bytes --]

# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=2
inherit base eutils python

MY_P="${P}DrNo"

DESCRIPTION="X(cross)platform Music Multiplexing System. The new generation of the XMMS player."
HOMEPAGE="http://xmms2.xmms.org"
SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2"
LICENSE="GPL-2 LGPL-2.1"

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

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

RDEPEND="server? (
		>=dev-db/sqlite-3.3.4

		aac? ( >=media-libs/faad2-2.0 )
		airplay? ( dev-libs/openssl )
		alsa? ( media-libs/alsa-lib )
		ao? ( media-libs/libao )
		avahi? ( net-dns/avahi )
		cdda? ( >=media-libs/libdiscid-0.1.1
			>=media-sound/cdparanoia-3.9.8 )
		curl? ( >=net-misc/curl-7.15.1 )
		ffmpeg? ( media-video/ffmpeg )
		flac? ( media-libs/flac )
		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? ( media-video/ffmpeg
			>=media-libs/libmms-0.3 )
		modplug? ( media-libs/libmodplug )
		mp3? ( media-sound/madplay )
		mp4? ( >=media-libs/faad2-2.0 )
		mpg123? ( >=media-sound/mpg123-1.5.1 )
		musepack? ( media-sound/musepack-tools )
		ofa? ( media-libs/libofa )
		pulseaudio? ( media-sound/pulseaudio )
		samba? ( net-fs/samba[smbclient] )
		sid? ( media-sound/sidplay
			media-libs/resid )
		speex? ( media-libs/speex
			media-libs/libogg )
		vorbis? ( media-libs/libvorbis )
		vocoder? ( sci-libs/fftw media-libs/libsamplerate )
		wavpack? ( media-sound/wavpack )
		xml? ( dev-libs/libxml2 )
	)

	>=dev-libs/glib-2.12.9
	cxx? ( >=dev-libs/boost-1.32 )
	mlib-update? ( app-admin/gamin )
	perl? ( >=dev-lang/perl-5.8.8 )
	python? ( >=dev-python/pyrex-0.9.5.1 )
	ruby? ( >=dev-lang/ruby-1.8.5 ) "

DEPEND="${RDEPEND}
	>=dev-lang/python-2.4.3"

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

PATCHES=("${FILESDIR}/xmms2-0.7DrNo-windres-build-fix.patch")

# use_enable() is taken as proto
# $1 - useflag
# $2 - xmms2 option/plugin name (equals to $1 if not set)

xmms2_flag() {
	if [[ -z "$1" ]]; then
		echo "!!! xmms2_flag() called without a parameter." >&2
		echo "!!! xmms2_flag() <USEFLAG> [<xmms2_flagname>]" >&2
		return 1
	fi

	local UWORD=${2:-$1}

	case "$1" in
		ENABLED)
			echo ",${UWORD}"
			;;
		DISABLED)
			: # nothing is generated
			;;
		*)
			if use "$1"; then
				echo ",${UWORD}"
			else
				: # nothing is generated
			fi
			;;
	esac
	return 0
}

src_configure() {
	# ./configure alike options.
	local waf_params="--without-ldconfig \
			--prefix=/usr \
			--libdir=/usr/$(get_libdir) \
			--destdir="${D}" \
			${CTARGET:+--with-target-platform=${CTARGET}} \
			--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)
					"avahi		avahi"
					"ENABLED	cli"
					"avahi		dns_sd"
					"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
				)

		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"
					"avahi		daap"
					"ENABLED	diskwrite"
					"ENABLED	equalizer"
					"aac		faad"
					"ENABLED	file"
					"		flac"
					"ffmpeg		flv"
					"ffmpeg		tta"
					"DISABLED	gme" # not in tree
					"		gvfs"
					"ENABLED	html"
					"		ices"
					"ENABLED	icymetaint"
					"ENABLED	id3v2"
					"		jack"
					"ENABLED	karaoke"
					"ENABLED	m3u"
					"		mac"
					"		mms"
					"mp3		mad"
					"		mp4"
					"		mpg123"
					"		modplug"
					"		musepack"
					"DISABLED	nms" # not in tree
					"ENABLED	normalize"
					"ENABLED	null"
					"ENABLED	nulstripper"
					"		ofa"
					"		oss"
					"ENABLED	pls"
					"pulseaudio	pulse"
					"ENABLED	replaygain"
					"xml		rss"
					"		samba"
					"DISABLED	sc68" #not in tree
					"		sid"
					"		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"
				)

		for option in "${option_map[@]}"; do
			optionals+="$(xmms2_flag $option)"
		done

		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}"

	"${S}"/waf ${waf_params} configure || die "'waf configure' failed"
}

src_compile() {
	"${S}"/waf build || die "waf build failed"
}

src_install() {
	"${S}"/waf --destdir="${D}" install || die "'waf install' failed"
	dodoc AUTHORS TODO README

	use python && python_need_rebuild
}

pkg_postinst() {
	elog "This version is built on experimental development code"
	elog "If you encounter any errors report them at http://bugs.xmms2.xmms.se"
	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

	use python && python_mod_optimize $(python_get_sitedir)/xmmsclient
}

pkg_postrm() {
	use python && python_mod_cleanup $(python_get_sitedir)/xmmsclient
}

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: xmms2-0.7DrNo-windres-build-fix.patch --]
[-- Type: text/x-patch, Size: 1981 bytes --]

commit 3bc7fbff50bfcb065fb89d020c1b3fb8de049b19
Author: Sergei Trofimovich <st@anti-virus.by>
Date:   Mon Apr 19 13:16:56 2010 +0300

    OTHER: fix build failure on windres aware binutils (linux host, native build)
    
    Trying to use windres under linux (native build) is worthless:
    
    [ 26/269] winrc: pixmaps/xmms2.rc -> _build_/default/pixmaps/xmms2.rc.o
    /usr/bin/windres: can't get BFD_RELOC_RVA relocation type: No error
    Waf: Leaving directory `/var/tmp/paludis/media-sound-xmms2-9999-r3/work/xmms2-devel/_build_'
    Build failed
     -> task failed (err #1):
            {task: winrc xmms2.rc -> xmms2.rc.o}
    
    Signed-off-by: Sergei Trofimovich <st@anti-virus.by>

diff --git a/wscript b/wscript
index 2a29016..1d73813 100644
--- a/wscript
+++ b/wscript
@@ -265,12 +265,6 @@ def configure(conf):
     conf.check_tool('gcc')
     conf.check_tool('g++')
 
-    try:
-        conf.check_tool('winres')
-        conf.env['WINRCFLAGS'] = '-I' + os.path.abspath('pixmaps')
-        conf.env['xmms_icon'] = True
-    except Configure.ConfigurationError:
-        conf.env['xmms_icon'] = False
 
     if Options.options.target_platform:
         Options.platform = Options.options.target_platform
@@ -412,6 +406,17 @@ def configure(conf):
     else:
         conf.env['socket_impl'] = 'posix'
 
+    # platform does not support icons ...
+    conf.env['xmms_icon'] = False
+    # ... unless we target on windows
+    if Options.platform == 'win32':
+        try:
+            conf.check_tool('winres')
+            conf.env['WINRCFLAGS'] = '-I' + os.path.abspath('pixmaps')
+            conf.env['xmms_icon'] = True
+        except Configure.ConfigurationError:
+            pass
+
     # Glib is required by everyone, so check for it here and let them
     # assume its presence.
     conf.check_cfg(package='glib-2.0', atleast_version='2.8.0', uselib_store='glib2', args='--cflags --libs', mandatory=1)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-06-29 20:02 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-28 18:27 [gentoo-dev] RFC: media-sound/xmms2/xmms2-0.7.ebuild Sergei Trofimovich
2010-06-29  6:24 ` Mike Frysinger
2010-06-29  7:18   ` Łukasz Michalik
2010-06-29 16:57   ` [gentoo-dev] RFC: media-sound/xmms2/xmms2-0.7.ebuild (v2) Sergei Trofimovich
2010-06-29 18:55     ` Mike Frysinger
2010-06-29 19:44       ` [gentoo-dev] RFC: media-sound/xmms2/xmms2-0.7.ebuild (v3) Sergei Trofimovich
2010-06-29 20:01         ` Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox