summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gardiner <obz@gentoo.org>2005-04-19 03:16:52 +0000
committerMike Gardiner <obz@gentoo.org>2005-04-19 03:16:52 +0000
commit4574e7ef2a20e3833288f01b97f6206b8fbdb01e (patch)
treeb66405602530b1ae51c5cce356e06c875739fd83
parentAdding script and DST patch (diff)
downloadgentoo-2-4574e7ef2a20e3833288f01b97f6206b8fbdb01e.tar.gz
gentoo-2-4574e7ef2a20e3833288f01b97f6206b8fbdb01e.tar.bz2
gentoo-2-4574e7ef2a20e3833288f01b97f6206b8fbdb01e.zip
New eclass for handling x11-plugins/desklet-*
-rw-r--r--eclass/gdesklets.eclass180
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