# 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.9 2005/07/30 18:15:36 nixphoeni 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 multilib 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=">=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 # Check to see if DISPLAY is set for the # gdesklets-control-getid script to run without # error [ -z "${DISPLAY}" ] && DISPLAY="" export DISPLAY # 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} # 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" \ -o -iname "*.xcf"`) for G in ${GFX[@]}; do insinto ${GD_INSDIR}/`dirname ${G}` doins ${G} done # for in ${GFX} 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=$( PYTHON_DONTCOMPILE=1 ${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" \ -o -iname "*.xcf") 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