diff options
author | Mike Gardiner <obz@gentoo.org> | 2005-04-19 03:16:52 +0000 |
---|---|---|
committer | Mike Gardiner <obz@gentoo.org> | 2005-04-19 03:16:52 +0000 |
commit | 4574e7ef2a20e3833288f01b97f6206b8fbdb01e (patch) | |
tree | b66405602530b1ae51c5cce356e06c875739fd83 /eclass | |
parent | Adding script and DST patch (diff) | |
download | gentoo-2-4574e7ef2a20e3833288f01b97f6206b8fbdb01e.tar.gz gentoo-2-4574e7ef2a20e3833288f01b97f6206b8fbdb01e.tar.bz2 gentoo-2-4574e7ef2a20e3833288f01b97f6206b8fbdb01e.zip |
New eclass for handling x11-plugins/desklet-*
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/gdesklets.eclass | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/eclass/gdesklets.eclass b/eclass/gdesklets.eclass new file mode 100644 index 000000000000..b3b74c078940 --- /dev/null +++ b/eclass/gdesklets.eclass @@ -0,0 +1,180 @@ +# Copyright 2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License, v2 or later +# $Header: /var/cvsroot/gentoo-x86/eclass/gdesklets.eclass,v 1.1 2005/04/19 03:16:52 obz Exp $ +# +# Authors: Joe Sapp <nixphoeni@gentoo.org> +# Mike Gardiner <obz@gentoo.org> +# +# Usage: +# As a writer for an ebuild for gDesklets, you should set a few things: +# +# DESKLET_NAME: The name of the desklet. +# DOCS: Anything (like a README) that should be dodoc'd. +# S: *Optional* The package's base directory. +# Usually ${WORKDIR}/${DESKLET_NAME} if it was packaged +# correctly (hence, this is the default). +# RDEPEND: *Optional* Set if the desklet requires a minimum version +# of gDesklets greater than 0.34 or other packages. + +inherit eutils +ECLASS="gdesklets" +INHERITED="$INHERITED $ECLASS" + +MY_P="${DESKLET_NAME}-${PV}" +S=${WORKDIR}/${DESKLET_NAME} + +SRC_URI="http://gdesklets.gnomedesktop.org/files/${MY_P}.tar.gz" + +# Ebuild writer shouldn't need to touch these (except maybe $RDEPEND) +SLOT="0" +IUSE="" +RDEPEND="${RDEPEND} >=gnome-extra/gdesklets-core-0.34.3" + +GDESKLETS_INST_DIR="/usr/$(get_libdir)/gdesklets" + +gdesklets_src_install() { + + debug-print-function $FUNCNAME $* + + has_version ">=gnome-extra/gdesklets-core-0.33.1" || \ + GDESKLETS_INST_DIR="/usr/share/gdesklets" + + # This should be done by the gdesklets-core ebuild + # It makes the Displays or Controls directory in the + # global installation directory if it doesn't exist + [[ -d ${GDESKLETS_INST_DIR}/Displays ]] || \ + dodir ${GDESKLETS_INST_DIR}/Displays + + # The displays only need to be readable + insopts -m0744 + + # First, install the Sensor (if there is one) + if [[ -n "${SENSOR_NAME}" ]]; then + for SENS in ${SENSOR_NAME[@]}; do + einfo "Installing Sensor ${SENS}" + /usr/bin/python "Install_${SENS}_Sensor.bin" \ + --nomsg ${D}${GDESKLETS_INST_DIR}/Sensors || \ + die "Couldn't Install Sensor" + + chown -R root:root ${D}${GDESKLETS_INST_DIR}/Sensors/${SENSOR_NAME} + done # for in ${SENSOR_NAME} + fi # if -n "${SENSOR_NAME}" + + # This finds the Displays + DISPLAY_FILES=(`find . -iname "*.display"`) + + GD_INSDIR="" + + # There is more than likely only one display per package + if [[ -n "${DISPLAY_FILES[@]}" ]]; then + # Base installation directory for displays + GD_INSDIR="${GDESKLETS_INST_DIR}/Displays/${DESKLET_NAME}" + + # This creates the subdirectory of ${DESKLET_NAME} + # in the global Displays directory + [[ -d ${GD_INSDIR} ]] || \ + dodir ${GD_INSDIR} + + insinto ${GD_INSDIR} + + # For each of the Display files, there may be + # scripts included inline which don't necessarily + # follow any naming scheme. + # So for each of them, determine what those scripts are + # and install them. + for DSP in ${DISPLAY_FILES[@]}; do + + einfo "Installing Display `basename ${DSP} .display`" + insinto ${GD_INSDIR} + doins ${DSP} + + SCRIPTS=$(grep "script uri" ${DSP} | \ + sed -e 's:.*<script uri=": :g' -e 's:"/>.*: :g') + + # For each one of the scripts, change to its + # base directory and change the install location + # so it gets installed at the proper place + # relative to the display. + for SCR in ${SCRIPTS[@]}; do + + cd `dirname ${DSP}`/`dirname ${SCR}` + + insinto ${GD_INSDIR}/`dirname ${SCR}` + doins `basename ${SCR}` + + cd ${S}/`dirname ${DSP}` + + done # for in ${SCRIPTS} + + # Install the graphics for this display. + # If there are multiple displays in this + # directory, this will be done more than + # once. It's the only solution I can + # come up with for now... + GFX=(`find . \ + -iname "*.png" -o -iname "*.svg" \ + -o -iname "*.jpg" -o -iname "*.gif"`) + + for G in ${GFX[@]}; do + insinto ${GD_INSDIR}/`dirname ${G}` + doins ${G} + done + + cd ${S} + + done # for in ${DISPLAY_FILES} + + fi + + # Make sure that it only finds Controls and not Sensors + # If it uses a Sensor, it shouldn't use a Control (since + # Sensors are deprecated). + if [[ -z "${SENSOR_NAME}" ]]; then + + # Base installation directory for Controls + GD_INSDIR="${GDESKLETS_INST_DIR}/Controls" + + CONTROL_INITS=$(find . -iname "__init__.py" | grep [Cc]ontrols) + + # There are possibly multiple Controls packaged with the display. + # For each __init__.py found, there must be a Control associated with it. + for CTRL in ${CONTROL_INITS[@]}; do + + cd `dirname ${CTRL}` + CTRL_NAME=$( ${GDESKLETS_INST_DIR}/gdesklets-control-getid `pwd` ) + einfo "Installing Control ${CTRL_NAME}" + # This creates the subdirectory of ${CTRL_NAME} + # in the global Controls directory + [[ -d ${GD_INSDIR}/${CTRL_NAME} ]] || \ + dodir ${GD_INSDIR}/${CTRL_NAME} + + insinto ${GD_INSDIR}/${CTRL_NAME} + + doins -r * + + cd ${S} + + done # for in ${CONTROL_INITS} + + fi # if no Sensors + + # Install any remaining graphics and other files + # that are sitting in ${S}. + + GFX=$(find . -maxdepth 1 \ + -iname "*.png" -o -iname "*.svg" \ + -o -iname "*.jpg" -o -iname "*.gif") + + if [[ -n "${GFX}" ]]; then + # Install to the Displays directory of the Desklet + insinto ${GDESKLETS_INST_DIR}/Displays/${DESKLET_NAME} + doins ${GFX} + fi # if -n "${GFX}" + + # Install some docs if so requested + [[ -n "${DOCS}" ]] && dodoc ${DOCS} + +} + + +EXPORT_FUNCTIONS src_install |