diff options
author | Michael Sterrett <mr_bones_@gentoo.org> | 2004-11-10 01:44:17 +0000 |
---|---|---|
committer | Michael Sterrett <mr_bones_@gentoo.org> | 2004-11-10 01:44:17 +0000 |
commit | 75139acfaebeb0598fa62ac7c551cac978d32062 (patch) | |
tree | e2696ddf580c57b24bd36dfe7e9b8ec4f783da1f /eclass/xmms-plugin.eclass | |
parent | xmms-plugin.eclass is now gone. (diff) | |
download | historical-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.eclass | 271 |
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 |