summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sterrett <mr_bones_@gentoo.org>2004-11-10 01:44:17 +0000
committerMichael Sterrett <mr_bones_@gentoo.org>2004-11-10 01:44:17 +0000
commit75139acfaebeb0598fa62ac7c551cac978d32062 (patch)
treee2696ddf580c57b24bd36dfe7e9b8ec4f783da1f /eclass/xmms-plugin.eclass
parentxmms-plugin.eclass is now gone. (diff)
downloadhistorical-75139acfaebeb0598fa62ac7c551cac978d32062.tar.gz
historical-75139acfaebeb0598fa62ac7c551cac978d32062.tar.bz2
historical-75139acfaebeb0598fa62ac7c551cac978d32062.zip
Removing eclasses - Harder than you might think.
Diffstat (limited to 'eclass/xmms-plugin.eclass')
-rw-r--r--eclass/xmms-plugin.eclass271
1 files changed, 271 insertions, 0 deletions
diff --git a/eclass/xmms-plugin.eclass b/eclass/xmms-plugin.eclass
new file mode 100644
index 000000000000..6914e42040f0
--- /dev/null
+++ b/eclass/xmms-plugin.eclass
@@ -0,0 +1,271 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/eclass/xmms-plugin.eclass,v 1.10 2004/11/10 01:44:17 mr_bones_ Exp $
+#
+# Jeremy Huddleston <eradicator@gentoo.org>
+#
+# Usage:
+# The main purpose of this eclass is to simplify installing xmms plugins
+# which for the various players that support the xmms API (mainly xmms and
+# bmp, but this can be expanded to noxmms as well).
+#
+# The package is assumed to work by default with xmms. If it will not work
+# with BMP, then set NOBMP=1 in the ebuild.
+#
+# Source Code:
+# You have multiple methods with which to specify how we get the source code
+# for the patckages.
+#
+# (1) - Separate tarballs
+# If your package provides separate tarballs for the xmms and bmp plugins,
+# then specify them in the XMMS_SRC_URI and BMP_SRC_URI variables.
+# XMMS_SRC_URI="xmms-plugin.tar.bz2"
+# BMP_SRC_URI="bmp-plugin.tar.bz2"
+# BASE_SRC_URI="common-stuff.tar.bz2"
+#
+# (2) - xmms->bmp patch
+# If you have a patch to turn an xmms plugin into a bmp plugin, specify it
+# in the variable XMMS2BMP_PATCH:
+# XMMS2BMP_PATCH="${FILESDIR}/${P}-xmms2bmp.patch"
+#
+# (3) - automated
+# The eclass will try to do some sedage to get the plugin to work with bmp.
+#
+# Common patches:
+# If you have patches that need to apply to both xmms and bmp sources,
+# Place them in the PATCHES variable:
+# PATCHES="${FILESDIR}/${P}-gcc34.patch ${FILESDIR}/${P}-config.patch"
+#
+# Source Location:
+# By default, we assume a ${S} of ${XMMS_S} or ${BMP_S} for the two packages.
+# These default to ${XMMS_WORKDIR}/${P} or ${BMP_WORKDIR}/${P}.
+# ${XMMS_WORKDIR} and ${BMP_WORKDIR}/${P} default to ${WORKDIR}/xmms and
+# ${WORKDIR}/bmp. You may override ${*_S}, but not the ${*_WORKDIR}.
+#
+# Documentation:
+# Set the DOCS variable to contain the documentation to be dodocd:
+# DOCS="ChangeLog AUTHORS README"
+#
+# Install:
+# Set the XMMS_PLUGIN_INSTALL variable to control how src_install works
+# 'einstall' - use 'einstall' to install
+# 'destdir' - use 'make DESTDIR="${D}" install || die' to install
+# 'doexe' - use 'doexe' to install
+# destdir is default
+#
+# The 'myins_xmms' and 'myins_bmp' variables are used to add extra arguments
+# to the install line. They are optional for einstall and destdir, but they're
+# required for doexe. For doexe, you need to specify the plugin type in the
+# 'xmms_plugin_type' variable' and the location of the plugin in the 'myins_*'
+# variable.
+#
+
+inherit eutils libtool gnuconfig
+
+ECLASS=xmms-plugin
+INHERITED="${INHERITED} ${ECLASS}"
+
+if [ "${NOXMMS}" != "1" ]; then
+ IUSE="${IUSE} xmms"
+ DEPEND="${DEPEND}
+ xmms? ( media-sound/xmms )"
+
+ RDEPEND="${RDEPEND}
+ xmms? ( media-sound/xmms )"
+
+ if [ -n "${BMP2XMMS_PATCH}" ]; then
+ SRC_URI="${SRC_URI}
+ xmms? ( ${XMMS_SRC_URI}
+ ${BMP_SRC_URI} )"
+ elif [ -n "${XMMS_SRC_URI}" ]; then
+ SRC_URI="${SRC_URI}
+ xmms? ( ${XMMS_SRC_URI} )"
+ fi
+
+ XMMS_WORKDIR="${WORKDIR}/xmms"
+ if [ -z "${XMMS_S}" ]; then
+ XMMS_S="${XMMS_WORKDIR}/${P}"
+ fi
+fi
+
+if [ "${NOBMP}" != "1" ]; then
+ IUSE="${IUSE} bmp"
+ DEPEND="${DEPEND}
+ bmp? ( >=media-sound/beep-media-player-0.9.7_rc2-r2
+ dev-util/pkgconfig )"
+
+ RDEPEND="${RDEPEND}
+ bmp? ( >=media-sound/beep-media-player-0.9.7_rc2-r2 )"
+
+ if [ -n "${XMMS2BMP_PATCH}" ]; then
+ SRC_URI="${SRC_URI}
+ bmp? ( ${XMMS_SRC_URI}
+ ${BMP_SRC_URI} )"
+ elif [ -n "${BMP_SRC_URI}" ]; then
+ SRC_URI="${SRC_URI}
+ bmp? ( ${BMP_SRC_URI} )"
+ fi
+
+ BMP_WORKDIR="${WORKDIR}/bmp"
+ if [ -z "${BMP_S}" ]; then
+ BMP_S="${BMP_WORKDIR}/${P}"
+ fi
+fi
+
+SRC_URI="${BASE_SRC_URI} ${SRC_URI}"
+
+# Set S to something which exists
+S="${WORKDIR}"
+
+xmms-plugin_src_unpack() {
+ if do_xmms; then
+ mkdir ${XMMS_WORKDIR}
+ cd ${XMMS_WORKDIR}
+
+ XMMS_A=""
+ if [ -z "${BASE_SRC_URI}${XMMS_SRC_URI}${BMP_SRC_URI}" ]; then
+ XMMS_A=${A}
+ elif [ -n "${BMP2XMMS_PATCH}" ]; then
+ for f in ${XMMS_SRC_URI} ${BMP_SRC_URI} ${BASE_SRC_URI}; do
+ XMMS_A="${XMMS_A} `basename ${f}`"
+ done
+ else
+ for f in ${XMMS_SRC_URI} ${BASE_SRC_URI}; do
+ XMMS_A="${XMMS_A} `basename ${f}`"
+ done
+ fi
+
+ unpack ${XMMS_A}
+
+ cd ${XMMS_S}
+ if [ -n "${PATCHES}" ]; then
+ epatch ${PATCHES}
+ fi
+ if [ -n "${BMP2XMMS_PATCH}" ]; then
+ epatch ${BMP2XMMS_PATCH}
+ fi
+
+ elibtoolize
+ gnuconfig_update
+ fi
+
+ if do_bmp; then
+ mkdir ${BMP_WORKDIR}
+ cd ${BMP_WORKDIR}
+
+ BMP_A=""
+ if [ -z "${BASE_SRC_URI}${XMMS_SRC_URI}${BMP_SRC_URI}" ]; then
+ BMP_A=${A}
+ elif [ -n "${XMMS2BMP_PATCH}" ]; then
+ for f in ${XMMS_SRC_URI} ${BMP_SRC_URI} ${BASE_SRC_URI}; do
+ BMP_A="${BMP_A} `basename ${f}`"
+ done
+ else
+ for f in ${BMP_SRC_URI} ${BASE_SRC_URI}; do
+ BMP_A="${BMP_A} `basename ${f}`"
+ done
+ fi
+
+ unpack ${BMP_A}
+
+ cd ${BMP_S}
+ if [ -n "${PATCHES}" ]; then
+ epatch ${PATCHES}
+ fi
+ if [ -n "${XMMS2BMP_PATCH}" ]; then
+ epatch ${XMMS2BMP_PATCH}
+ elif [ -z "${BMP_SRC_URI}" ]; then
+ xmms2bmp_automate
+ fi
+
+ elibtoolize
+ gnuconfig_update
+ fi
+}
+
+xmms-plugin_src_compile() {
+ myconf="${myconf} --disable-static"
+
+ if do_xmms; then
+ cd ${XMMS_S}
+ econf ${myconf} ${xmms_myconf} || die
+ emake || die
+ fi
+
+ if do_bmp; then
+ cd ${BMP_S}
+ export FAKE_XMMS_VERSION=1.2.10
+ econf ${myconf} ${bmp_myconf} || die
+ emake || die
+ fi
+}
+
+xmms-plugin_src_install() {
+ if [ -z "${XMMS_PLUGIN_INSTALL}" ]; then
+ XMMS_PLUGIN_INSTALL="destdir"
+ fi
+
+ case ${XMMS_PLUGIN_INSTALL} in
+ einstall)
+ if do_xmms; then
+ cd ${XMMS_S}
+ einstall ${myins_xmms}
+ fi
+
+ if do_bmp; then
+ cd ${BMP_S}
+ einstall ${myins_bmp}
+ fi
+ ;;
+ destdir)
+ if do_xmms; then
+ cd ${XMMS_S}
+ make DESTDIR="${D}" ${myins_xmms} install || die
+ fi
+
+ if do_bmp; then
+ cd ${BMP_S}
+ make DESTDIR="${D}" ${myins_bmp} install || die
+ fi
+ ;;
+ doexe)
+ if do_xmms; then
+ xmms-config --${xmms_plugin_type}-plugin-dir >& /dev/null || die "Invalid xmms_plugin_type specified"
+ cd ${XMMS_S}
+ exeinto `xmms-config --${xmms_plugin_type}-plugin-dir`
+ doexe ${myins_xmms} || die
+ fi
+
+ if do_bmp; then
+ beep-config --${xmms_plugin_type}-plugin-dir >& /dev/null || die "Invalid xmms_plugin_type specified"
+ cd ${BMP_S}
+ exeinto `beep-config --${xmms_plugin_type}-plugin-dir`
+ doexe ${myins_bmp} || die
+ fi
+ ;;
+ *)
+ die "Invalid XMMS_PLUGIN_INSTALL specified: ${XMMS_PLUGIN_INSTALL}"
+ ;;
+ esac
+
+ if [ -n "${DOCS}" ]; then
+ dodoc ${DOCS}
+ fi
+}
+
+xmms2bmp_automate() {
+ find . -name Makefile -o -name Makefile.in -o -name configure |
+ xargs sed -i -e 's:xmms-config:beep-config:g' \
+ -e 's:libdir)/xmms:libdir)/bmp:g' \
+ -e 's:-lxmms:-lbeep:g'
+}
+
+do_xmms() {
+ use xmms && [ "${NOXMMS}" != "1" ]
+}
+
+do_bmp() {
+ use bmp && [ "${NOBMP}" != "1" ]
+}
+
+EXPORT_FUNCTIONS src_unpack src_compile src_install