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