/[gentoo-x86]/eclass/gdesklets.eclass
Gentoo

Contents of /eclass/gdesklets.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download)
Mon Jun 6 02:00:12 2005 UTC (8 years, 10 months ago) by nixphoeni
Branch: MAIN
Changes since 1.3: +4 -2 lines
Added .xcf to the graphics files to be searched for

1 # Copyright 2004 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License, v2 or later
3 # $Header: $
4 #
5 # Authors: Joe Sapp <nixphoeni@gentoo.org>
6 # Mike Gardiner <obz@gentoo.org>
7 #
8 # Usage:
9 # As a writer for an ebuild for gDesklets, you should set a few things:
10 #
11 # DESKLET_NAME: The name of the desklet.
12 # DOCS: Anything (like a README) that should be dodoc'd.
13 # S: *Optional* The package's base directory.
14 # Usually ${WORKDIR}/${DESKLET_NAME} if it was packaged
15 # correctly (hence, this is the default).
16 # RDEPEND: *Optional* Set if the desklet requires a minimum version
17 # of gDesklets greater than 0.34 or other packages.
18
19 inherit eutils
20 ECLASS="gdesklets"
21 INHERITED="$INHERITED $ECLASS"
22
23 MY_P="${DESKLET_NAME}-${PV}"
24 S=${WORKDIR}/${DESKLET_NAME}
25
26 SRC_URI="http://gdesklets.gnomedesktop.org/files/${MY_P}.tar.gz"
27
28 # Ebuild writer shouldn't need to touch these (except maybe $RDEPEND)
29 SLOT="0"
30 IUSE=""
31 RDEPEND="${RDEPEND} >=gnome-extra/gdesklets-core-0.34.3"
32
33 GDESKLETS_INST_DIR="/usr/$(get_libdir)/gdesklets"
34
35 gdesklets_src_install() {
36
37 debug-print-function $FUNCNAME $*
38
39 has_version ">=gnome-extra/gdesklets-core-0.33.1" || \
40 GDESKLETS_INST_DIR="/usr/share/gdesklets"
41
42 # This should be done by the gdesklets-core ebuild
43 # It makes the Displays or Controls directory in the
44 # global installation directory if it doesn't exist
45 [[ -d ${GDESKLETS_INST_DIR}/Displays ]] || \
46 dodir ${GDESKLETS_INST_DIR}/Displays
47
48 # The displays only need to be readable
49 insopts -m0744
50
51 # First, install the Sensor (if there is one)
52 if [[ -n "${SENSOR_NAME}" ]]; then
53 for SENS in ${SENSOR_NAME[@]}; do
54 einfo "Installing Sensor ${SENS}"
55 /usr/bin/python "Install_${SENS}_Sensor.bin" \
56 --nomsg ${D}${GDESKLETS_INST_DIR}/Sensors || \
57 die "Couldn't Install Sensor"
58
59 chown -R root:root ${D}${GDESKLETS_INST_DIR}/Sensors/${SENSOR_NAME}
60 done # for in ${SENSOR_NAME}
61 fi # if -n "${SENSOR_NAME}"
62
63 # This finds the Displays
64 DISPLAY_FILES=(`find . -iname "*.display"`)
65
66 GD_INSDIR=""
67
68 # There is more than likely only one display per package
69 if [[ -n "${DISPLAY_FILES[@]}" ]]; then
70 # Base installation directory for displays
71 GD_INSDIR="${GDESKLETS_INST_DIR}/Displays/${DESKLET_NAME}"
72
73 # This creates the subdirectory of ${DESKLET_NAME}
74 # in the global Displays directory
75 [[ -d ${GD_INSDIR} ]] || \
76 dodir ${GD_INSDIR}
77
78 # For each of the Display files, there may be
79 # scripts included inline which don't necessarily
80 # follow any naming scheme.
81 # So for each of them, determine what those scripts are
82 # and install them.
83 for DSP in ${DISPLAY_FILES[@]}; do
84
85 einfo "Installing Display `basename ${DSP} .display`"
86 insinto ${GD_INSDIR}
87 doins ${DSP}
88
89 SCRIPTS=$(grep "script uri" ${DSP} | \
90 sed -e 's:.*<script uri=": :g' -e 's:"/>.*: :g')
91
92 # For each one of the scripts, change to its
93 # base directory and change the install location
94 # so it gets installed at the proper place
95 # relative to the display.
96 for SCR in ${SCRIPTS[@]}; do
97
98 cd `dirname ${DSP}`/`dirname ${SCR}`
99
100 insinto ${GD_INSDIR}/`dirname ${SCR}`
101 doins `basename ${SCR}`
102
103 cd ${S}/`dirname ${DSP}`
104
105 done # for in ${SCRIPTS}
106
107 # Install the graphics for this display.
108 # If there are multiple displays in this
109 # directory, this will be done more than
110 # once. It's the only solution I can
111 # come up with for now...
112 GFX=(`find . \
113 -iname "*.png" -o -iname "*.svg" \
114 -o -iname "*.jpg" -o -iname "*.gif" \
115 -o -iname "*.xcf"`)
116
117 for G in ${GFX[@]}; do
118
119 insinto ${GD_INSDIR}/`dirname ${G}`
120 doins ${G}
121
122 done # for in ${GFX}
123
124 cd ${S}
125
126 done # for in ${DISPLAY_FILES}
127
128 fi
129
130 # Make sure that it only finds Controls and not Sensors
131 # If it uses a Sensor, it shouldn't use a Control (since
132 # Sensors are deprecated).
133 if [[ -z "${SENSOR_NAME}" ]]; then
134
135 # Base installation directory for Controls
136 GD_INSDIR="${GDESKLETS_INST_DIR}/Controls"
137
138 CONTROL_INITS=$(find . -iname "__init__.py" | grep [Cc]ontrols)
139
140 # There are possibly multiple Controls packaged with the display.
141 # For each __init__.py found, there must be a Control associated with it.
142 for CTRL in ${CONTROL_INITS[@]}; do
143
144 cd `dirname ${CTRL}`
145 CTRL_NAME=$( PYTHON_DONTCOMPILE=1 ${GDESKLETS_INST_DIR}/gdesklets-control-getid `pwd` )
146 einfo "Installing Control ${CTRL_NAME}"
147 # This creates the subdirectory of ${CTRL_NAME}
148 # in the global Controls directory
149 [[ -d ${GD_INSDIR}/${CTRL_NAME} ]] || \
150 dodir ${GD_INSDIR}/${CTRL_NAME}
151
152 insinto ${GD_INSDIR}/${CTRL_NAME}
153
154 doins -r *
155
156 cd ${S}
157
158 done # for in ${CONTROL_INITS}
159
160 fi # if no Sensors
161
162 # Install any remaining graphics and other files
163 # that are sitting in ${S}.
164
165 GFX=$(find . -maxdepth 1 \
166 -iname "*.png" -o -iname "*.svg" \
167 -o -iname "*.jpg" -o -iname "*.gif" \
168 -o -iname "*.xcf")
169
170 if [[ -n "${GFX}" ]]; then
171 # Install to the Displays directory of the Desklet
172 insinto ${GDESKLETS_INST_DIR}/Displays/${DESKLET_NAME}
173 doins ${GFX}
174 fi # if -n "${GFX}"
175
176 # Install some docs if so requested
177 [[ -n "${DOCS}" ]] && dodoc ${DOCS}
178
179 }
180
181
182 EXPORT_FUNCTIONS src_install

  ViewVC Help
Powered by ViewVC 1.1.20