1 | # Copyright 1999-2003 Gentoo Technologies, Inc. |
1 | # Copyright 1999-2004 Gentoo Technologies, Inc. |
2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
|
|
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.20 2004/05/22 18:56:58 stuart Exp $ |
3 | # |
4 | # |
4 | # eclass/webapp.eclass |
5 | # eclass/webapp.eclass |
5 | # Eclass for installing applications to run under a web server |
6 | # Eclass for installing applications to run under a web server |
6 | # |
7 | # |
7 | # Part of the implementation of GLEP #11 |
8 | # Part of the implementation of GLEP #11 |
8 | # |
9 | # |
9 | # Author(s) Stuart Herbert <stuart@gentoo.org> |
10 | # Author(s) Stuart Herbert <stuart@gentoo.org> |
10 | # |
11 | # |
11 | # ------------------------------------------------------------------------ |
12 | # ------------------------------------------------------------------------ |
12 | # |
13 | # |
13 | # Please do not make modifications to this file without checking with a |
14 | # The master copy of this eclass is held in Stu's subversion repository. |
14 | # member of the web-apps herd first! |
15 | # |
|
|
16 | # If you make changes to this file and don't tell Stu, chances are that |
|
|
17 | # your changes will be overwritten the next time Stu releases a new version |
|
|
18 | # of webapp-config. |
15 | # |
19 | # |
16 | # ------------------------------------------------------------------------ |
20 | # ------------------------------------------------------------------------ |
17 | |
21 | |
18 | ECLASS=webapp |
22 | ECLASS=webapp |
19 | INHERITED="$INHERITED $ECLASS" |
23 | INHERITED="$INHERITED $ECLASS" |
20 | SLOT="${PVR}" |
24 | SLOT="${PVR}" |
21 | IUSE="$IUSE vhosts" |
25 | IUSE="$IUSE vhosts" |
|
|
26 | DEPEND="$DEPEND >=net-www/webapp-config-1.7 app-portage/gentoolkit" |
22 | |
27 | |
23 | |
|
|
24 | EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install |
28 | EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install pkg_prerm |
|
|
29 | |
|
|
30 | INSTALL_DIR="/$PN" |
|
|
31 | IS_UPGRADE=0 |
|
|
32 | IS_REPLACE=0 |
|
|
33 | |
|
|
34 | INSTALL_CHECK_FILE="installed_by_webapp_eclass" |
25 | |
35 | |
26 | # ------------------------------------------------------------------------ |
36 | # ------------------------------------------------------------------------ |
27 | # INTERNAL FUNCTION - USED BY THIS ECLASS ONLY |
37 | # INTERNAL FUNCTION - USED BY THIS ECLASS ONLY |
28 | # |
38 | # |
29 | # Check whether a specified file exists within the image/ directory |
39 | # Check whether a specified file exists within the image/ directory |
… | |
… | |
34 | # @return 0 on success, never returns on an error |
44 | # @return 0 on success, never returns on an error |
35 | # ------------------------------------------------------------------------ |
45 | # ------------------------------------------------------------------------ |
36 | |
46 | |
37 | function webapp_checkfileexists () |
47 | function webapp_checkfileexists () |
38 | { |
48 | { |
|
|
49 | local my_prefix |
|
|
50 | |
|
|
51 | [ -n "$2" ] && my_prefix="$2/" || my_prefix= |
|
|
52 | |
39 | if [ ! -e $1 ]; then |
53 | if [ ! -e ${my_prefix}$1 ]; then |
40 | msg="ebuild fault: file $1 not found" |
54 | msg="ebuild fault: file $1 not found" |
41 | eerror "$msg" |
55 | eerror "$msg" |
42 | eerror "Please report this as a bug at http://bugs.gentoo.org/" |
56 | eerror "Please report this as a bug at http://bugs.gentoo.org/" |
43 | die "$msg" |
57 | die "$msg" |
44 | fi |
58 | fi |
… | |
… | |
46 | |
60 | |
47 | # ------------------------------------------------------------------------ |
61 | # ------------------------------------------------------------------------ |
48 | # INTERNAL FUNCTION - USED BY THIS ECLASS ONLY |
62 | # INTERNAL FUNCTION - USED BY THIS ECLASS ONLY |
49 | # ------------------------------------------------------------------------ |
63 | # ------------------------------------------------------------------------ |
50 | |
64 | |
|
|
65 | function webapp_check_installedat |
|
|
66 | { |
|
|
67 | local my_output |
|
|
68 | |
|
|
69 | /usr/sbin/webapp-config --show-installed -h localhost -d $INSTALL_DIR 2> /dev/null |
|
|
70 | } |
|
|
71 | |
|
|
72 | # ------------------------------------------------------------------------ |
|
|
73 | # INTERNAL FUNCTION - USED BY THIS ECLASS ONLY |
|
|
74 | # ------------------------------------------------------------------------ |
|
|
75 | |
51 | function webapp_import_config () |
76 | function webapp_import_config () |
52 | { |
77 | { |
53 | if [ -z "${MY_HTDOCSDIR}" ]; then |
78 | if [ -z "${MY_HTDOCSDIR}" ]; then |
54 | . /etc/conf.d/webapp-config |
79 | . /etc/conf.d/webapp-config |
55 | fi |
80 | fi |
… | |
… | |
64 | # |
89 | # |
65 | # ------------------------------------------------------------------------ |
90 | # ------------------------------------------------------------------------ |
66 | |
91 | |
67 | function webapp_strip_appdir () |
92 | function webapp_strip_appdir () |
68 | { |
93 | { |
|
|
94 | local my_stripped="$1" |
69 | echo "$1" | sed -e "s|${MY_APPDIR}/||g;" |
95 | echo "$1" | sed -e "s|${MY_APPDIR}/||g;" |
70 | } |
96 | } |
71 | |
97 | |
72 | function webapp_strip_d () |
98 | function webapp_strip_d () |
73 | { |
99 | { |
74 | echo "$1" | sed -e "s|${D}||g;" |
100 | echo "$1" | sed -e "s|${D}||g;" |
75 | } |
101 | } |
76 | |
102 | |
77 | function webapp_strip_cwd () |
103 | function webapp_strip_cwd () |
78 | { |
104 | { |
|
|
105 | local my_stripped="$1" |
79 | echo "$1" | sed -e 's|/./|/|g;' |
106 | echo "$1" | sed -e 's|/./|/|g;' |
80 | } |
107 | } |
81 | |
108 | |
82 | # ------------------------------------------------------------------------ |
109 | # ------------------------------------------------------------------------ |
83 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
110 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
… | |
… | |
88 | # ------------------------------------------------------------------------ |
115 | # ------------------------------------------------------------------------ |
89 | |
116 | |
90 | function webapp_configfile () |
117 | function webapp_configfile () |
91 | { |
118 | { |
92 | webapp_checkfileexists "$1" "$D" |
119 | webapp_checkfileexists "$1" "$D" |
|
|
120 | echo $1 |
93 | local MY_FILE="`webapp_strip_appdir $1`" |
121 | local MY_FILE="`webapp_strip_appdir $1`" |
|
|
122 | echo $MY_FILE |
94 | |
123 | |
95 | einfo "(config) $MY_FILE" |
124 | einfo "(config) $MY_FILE" |
96 | echo "$MY_FILE" >> $WA_CONFIGLIST |
125 | echo "$MY_FILE" >> ${D}${WA_CONFIGLIST} |
|
|
126 | } |
|
|
127 | |
|
|
128 | # ------------------------------------------------------------------------ |
|
|
129 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
|
|
130 | # |
|
|
131 | # Install a script that will run after a virtual copy is created, and |
|
|
132 | # before a virtual copy has been removed |
|
|
133 | # |
|
|
134 | # @param $1 - the script to run |
|
|
135 | # ------------------------------------------------------------------------ |
|
|
136 | |
|
|
137 | function webapp_hook_script () |
|
|
138 | { |
|
|
139 | webapp_checkfileexists "$2" |
|
|
140 | |
|
|
141 | einfo "(hook) $1" |
|
|
142 | cp "$1" "${D}${MY_HOOKSCRIPTSDIR}/`basename $1`" || die "Unable to install $1 into ${D}${MY_HOOKSCRIPTSDIR}/" |
|
|
143 | chmod 555 "${D}${MY_HOOKSCRIPTSDIR}/`basename $1`" |
97 | } |
144 | } |
98 | |
145 | |
99 | # ------------------------------------------------------------------------ |
146 | # ------------------------------------------------------------------------ |
100 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
147 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
101 | # |
148 | # |
… | |
… | |
108 | function webapp_postinst_txt |
155 | function webapp_postinst_txt |
109 | { |
156 | { |
110 | webapp_checkfileexists "$2" |
157 | webapp_checkfileexists "$2" |
111 | |
158 | |
112 | einfo "(rtfm) $2 (lang: $1)" |
159 | einfo "(rtfm) $2 (lang: $1)" |
113 | cp "$2" "${MY_APPDIR}/postinst-$1.txt" |
160 | cp "$2" "${D}${MY_APPDIR}/postinst-$1.txt" |
114 | } |
161 | } |
115 | |
162 | |
116 | # ------------------------------------------------------------------------ |
163 | # ------------------------------------------------------------------------ |
117 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
164 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
118 | # |
165 | # |
… | |
… | |
131 | webapp_checkfileexists "$2" "$D" |
178 | webapp_checkfileexists "$2" "$D" |
132 | local MY_FILE="`webapp_strip_appdir $2`" |
179 | local MY_FILE="`webapp_strip_appdir $2`" |
133 | MY_FILE="`webapp_strip_cwd $MY_FILE`" |
180 | MY_FILE="`webapp_strip_cwd $MY_FILE`" |
134 | |
181 | |
135 | einfo "(cgi-bin) $1 - $MY_FILE" |
182 | einfo "(cgi-bin) $1 - $MY_FILE" |
136 | echo "$1 $MY_FILE" >> $WA_RUNBYCGIBINLIST |
183 | echo "$1 $MY_FILE" >> ${D}${WA_RUNBYCGIBINLIST} |
137 | } |
184 | } |
138 | |
185 | |
139 | # ------------------------------------------------------------------------ |
186 | # ------------------------------------------------------------------------ |
140 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
187 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
141 | # |
188 | # |
… | |
… | |
153 | { |
200 | { |
154 | webapp_checkfileexists "$1" "$D" |
201 | webapp_checkfileexists "$1" "$D" |
155 | local MY_FILE="`webapp_strip_appdir $1`" |
202 | local MY_FILE="`webapp_strip_appdir $1`" |
156 | |
203 | |
157 | einfo "(server owned) $MY_FILE" |
204 | einfo "(server owned) $MY_FILE" |
158 | echo "$MY_FILE" >> $WA_SOLIST |
205 | echo "$MY_FILE" >> ${D}${WA_SOLIST} |
159 | } |
206 | } |
160 | |
207 | |
161 | # ------------------------------------------------------------------------ |
208 | # ------------------------------------------------------------------------ |
162 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
209 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
163 | # |
210 | # |
|
|
211 | # @param $1 - the webserver to install the config file for |
|
|
212 | # (one of apache1, apache2, cherokee) |
|
|
213 | # @param $2 - the config file to install |
|
|
214 | # @param $3 - new name for the config file (default is `basename $2`) |
|
|
215 | # this is an optional parameter |
|
|
216 | # |
|
|
217 | # NOTE: |
|
|
218 | # this function will automagically prepend $1 to the front of your |
|
|
219 | # config file's name |
|
|
220 | # ------------------------------------------------------------------------ |
|
|
221 | |
|
|
222 | function webapp_server_config () |
|
|
223 | { |
|
|
224 | webapp_checkfileexists "$2" |
|
|
225 | |
|
|
226 | # sort out what the name will be of the config file |
|
|
227 | |
|
|
228 | local my_file |
|
|
229 | |
|
|
230 | if [ -z "$3" ]; then |
|
|
231 | $my_file="$1-`basename $2`" |
|
|
232 | else |
|
|
233 | $my_file="$1-$3" |
|
|
234 | fi |
|
|
235 | |
|
|
236 | # warning: |
|
|
237 | # |
|
|
238 | # do NOT change the naming convention used here without changing all |
|
|
239 | # the other scripts that also rely upon these names |
|
|
240 | |
|
|
241 | einfo "($1) config file '$my_file'" |
|
|
242 | cp "$2" "${D}${MY_SERVERCONFIGDIR}/${my_file}" |
|
|
243 | } |
|
|
244 | |
|
|
245 | # ------------------------------------------------------------------------ |
|
|
246 | # EXPORTED FUNCTION - FOR USE IN EBUILDS |
164 | # |
247 | # |
165 | # @param $1 - the db engine that the script is for |
248 | # @param $1 - the db engine that the script is for |
166 | # (one of: mysql|postgres) |
249 | # (one of: mysql|postgres) |
167 | # @param $2 - the sql script to be installed |
250 | # @param $2 - the sql script to be installed |
168 | # @param $3 - the older version of the app that this db script |
251 | # @param $3 - the older version of the app that this db script |
… | |
… | |
178 | # create the directory where this script will go |
261 | # create the directory where this script will go |
179 | # |
262 | # |
180 | # scripts for specific database engines go into their own subdirectory |
263 | # scripts for specific database engines go into their own subdirectory |
181 | # just to keep things readable on the filesystem |
264 | # just to keep things readable on the filesystem |
182 | |
265 | |
183 | if [ ! -d "${MY_SQLSCRIPTSDIR}/$1" ]; then |
266 | if [ ! -d "${D}${MY_SQLSCRIPTSDIR}/$1" ]; then |
184 | mkdir -p "${MY_SQLSCRIPTSDIR}/$1" || libsh_die "unable to create directory ${MY_SQLSCRIPTSDIR}/$1" |
267 | mkdir -p "${D}${MY_SQLSCRIPTSDIR}/$1" || libsh_die "unable to create directory ${D}${MY_SQLSCRIPTSDIR}/$1" |
185 | fi |
268 | fi |
186 | |
269 | |
187 | # warning: |
270 | # warning: |
188 | # |
271 | # |
189 | # do NOT change the naming convention used here without changing all |
272 | # do NOT change the naming convention used here without changing all |
… | |
… | |
191 | |
274 | |
192 | # are we dealing with an 'upgrade'-type script? |
275 | # are we dealing with an 'upgrade'-type script? |
193 | if [ -n "$3" ]; then |
276 | if [ -n "$3" ]; then |
194 | # yes we are |
277 | # yes we are |
195 | einfo "($1) upgrade script from ${PN}-${PVR} to $3" |
278 | einfo "($1) upgrade script from ${PN}-${PVR} to $3" |
196 | cp $2 ${MY_SQLSCRIPTSDIR}/$1/${3}_to_${PVR}.sql |
279 | cp $2 ${D}${MY_SQLSCRIPTSDIR}/$1/${3}_to_${PVR}.sql |
197 | else |
280 | else |
198 | # no, we are not |
281 | # no, we are not |
199 | einfo "($1) create script for ${PN}-${PVR}" |
282 | einfo "($1) create script for ${PN}-${PVR}" |
200 | cp $2 ${MY_SQLSCRIPTSDIR}/$1/${PVR}_create.sql |
283 | cp $2 ${D}${MY_SQLSCRIPTSDIR}/$1/${PVR}_create.sql |
201 | fi |
284 | fi |
202 | } |
285 | } |
203 | |
286 | |
204 | # ------------------------------------------------------------------------ |
287 | # ------------------------------------------------------------------------ |
205 | # EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER |
288 | # EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER |
… | |
… | |
210 | # the final version! |
293 | # the final version! |
211 | # ------------------------------------------------------------------------ |
294 | # ------------------------------------------------------------------------ |
212 | |
295 | |
213 | function webapp_src_install () |
296 | function webapp_src_install () |
214 | { |
297 | { |
215 | chown -R root:root ${D}/ |
298 | chown -R ${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID} ${D}/ |
216 | chmod -R u-s ${D}/ |
299 | chmod -R u-s ${D}/ |
217 | chmod -R g-s ${D}/ |
300 | chmod -R g-s ${D}/ |
218 | |
301 | |
219 | keepdir ${MY_PERSISTDIR} |
302 | keepdir ${MY_PERSISTDIR} |
220 | fowners root:root ${MY_PERSISTDIR} |
303 | fowners root:root ${MY_PERSISTDIR} |
221 | fperms 755 ${MY_PERSISTDIR} |
304 | fperms 755 ${MY_PERSISTDIR} |
|
|
305 | |
|
|
306 | # to test whether or not the ebuild has correctly called this function |
|
|
307 | # we add an empty file to the filesystem |
|
|
308 | # |
|
|
309 | # we used to just set a variable in the shell script, but we can |
|
|
310 | # no longer rely on Portage calling both webapp_src_install() and |
|
|
311 | # webapp_pkg_postinst() within the same shell process |
|
|
312 | |
|
|
313 | touch ${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE} |
222 | } |
314 | } |
223 | |
315 | |
224 | # ------------------------------------------------------------------------ |
316 | # ------------------------------------------------------------------------ |
225 | # EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER |
317 | # EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER |
226 | # everything else has run |
318 | # everything else has run |
… | |
… | |
229 | # |
321 | # |
230 | # ------------------------------------------------------------------------ |
322 | # ------------------------------------------------------------------------ |
231 | |
323 | |
232 | function webapp_pkg_setup () |
324 | function webapp_pkg_setup () |
233 | { |
325 | { |
234 | if [ -f /etc/vhosts/webapp-config ] ; then |
326 | # add sanity checks here |
235 | . /etc/vhosts/webapp-config |
327 | |
|
|
328 | if [ "$SLOT+" != "${PVR}+" ]; then |
|
|
329 | die "ebuild sets SLOT, overrides webapp.eclass" |
|
|
330 | fi |
|
|
331 | |
|
|
332 | # pull in the shared configuration file |
|
|
333 | |
|
|
334 | G_HOSTNAME="localhost" |
|
|
335 | . /etc/vhosts/webapp-config || die "Unable to open /etc/vhosts/webapp-config file" |
|
|
336 | |
|
|
337 | # are we installing a webapp-config solution over the top of a |
|
|
338 | # non-webapp-config solution? |
|
|
339 | |
|
|
340 | if ! use vhosts ; then |
|
|
341 | local my_dir="$VHOST_ROOT/$MY_HTDOCSBASE/$PN" |
|
|
342 | local my_output |
|
|
343 | |
|
|
344 | if [ -d "$my_dir" ] ; then |
|
|
345 | einfo "You already have something installed in $my_dir" |
|
|
346 | einfo "Are you trying to install over the top of something I cannot upgrade?" |
|
|
347 | |
|
|
348 | my_output="`webapp_check_installedat`" |
|
|
349 | |
|
|
350 | if [ "$?" != "0" ]; then |
|
|
351 | |
|
|
352 | # okay, whatever is there, it isn't webapp-config-compatible |
|
|
353 | ewarn |
|
|
354 | ewarn "Whatever is in $my_dir, it's not" |
|
|
355 | ewarn "compatible with webapp-config." |
|
|
356 | ewarn |
|
|
357 | ewarn "This ebuild may be overwriting important files." |
|
|
358 | ewarn |
|
|
359 | elif [ "`echo $my_output | awk '{ print $1 }'`" != "$PN" ]; then |
|
|
360 | eerror "$my_dir contains $my_output" |
|
|
361 | eerror "I cannot upgrade that" |
|
|
362 | die "Cannot upgrade contents of $my_dir" |
236 | else |
363 | else |
237 | die "Unable to find /etc/vhosts/webapp-config" |
364 | einfo |
|
|
365 | einfo "I can upgrade the contents of $my_dir" |
|
|
366 | einfo |
|
|
367 | fi |
238 | fi |
368 | fi |
|
|
369 | fi |
|
|
370 | } |
239 | |
371 | |
|
|
372 | function webapp_someunusedfunction () |
|
|
373 | { |
240 | # are we emerging something that is already installed? |
374 | # are we emerging something that is already installed? |
241 | |
375 | |
242 | if [ -d "${MY_APPROOT}/${MY_APPSUFFIX}" ]; then |
376 | if [ -d "${D}${MY_APPROOT}/${MY_APPSUFFIX}" ]; then |
243 | # yes we are |
377 | # yes we are |
244 | ewarn "Removing existing copy of ${PN}-${PVR}" |
378 | ewarn "Removing existing copy of ${PN}-${PVR}" |
245 | rm -rf "${MY_APPROOT}/${MY_APPSUFFIX}" |
379 | rm -rf "${D}${MY_APPROOT}/${MY_APPSUFFIX}" |
|
|
380 | fi |
|
|
381 | } |
|
|
382 | |
|
|
383 | function webapp_getinstalltype () |
|
|
384 | { |
|
|
385 | # or are we upgrading? |
|
|
386 | |
|
|
387 | if ! use vhosts ; then |
|
|
388 | # we only run webapp-config if vhosts USE flag is not set |
|
|
389 | |
|
|
390 | local my_output |
|
|
391 | |
|
|
392 | my_output="`webapp_check_installedat`" |
|
|
393 | |
|
|
394 | if [ "$?" = "0" ] ; then |
|
|
395 | # something is already installed there |
|
|
396 | # |
|
|
397 | # make sure it isn't the same version |
|
|
398 | |
|
|
399 | local my_pn="`echo $my_output | awk '{ print $1 }'`" |
|
|
400 | local my_pvr="`echo $my_output | awk '{ print $2 }'`" |
|
|
401 | |
|
|
402 | REMOVE_PKG="${my_pn}-${my_pvr}" |
|
|
403 | |
|
|
404 | if [ "$my_pn" == "$PN" ]; then |
|
|
405 | if [ "$my_pvr" != "$PVR" ]; then |
|
|
406 | einfo "This is an upgrade" |
|
|
407 | IS_UPGRADE=1 |
|
|
408 | else |
|
|
409 | einfo "This is a re-installation" |
|
|
410 | IS_REPLACE=1 |
|
|
411 | fi |
|
|
412 | else |
|
|
413 | einfo "$my_ouptut is installed there" |
|
|
414 | fi |
|
|
415 | else |
|
|
416 | einfo "This is an installation" |
246 | fi |
417 | fi |
|
|
418 | fi |
|
|
419 | } |
247 | |
420 | |
|
|
421 | function webapp_src_preinst () |
|
|
422 | { |
248 | # create the directories that we need |
423 | # create the directories that we need |
249 | |
424 | |
250 | mkdir -p ${MY_HTDOCSDIR} |
425 | dodir ${MY_HTDOCSDIR} |
251 | mkdir -p ${MY_HOSTROOTDIR} |
426 | dodir ${MY_HOSTROOTDIR} |
252 | mkdir -p ${MY_CGIBINDIR} |
427 | dodir ${MY_CGIBINDIR} |
253 | mkdir -p ${MY_ICONSDIR} |
428 | dodir ${MY_ICONSDIR} |
254 | mkdir -p ${MY_ERRORSDIR} |
429 | dodir ${MY_ERRORSDIR} |
255 | mkdir -p ${MY_SQLSCRIPTSDIR} |
430 | dodir ${MY_SQLSCRIPTSDIR} |
256 | } |
431 | } |
257 | |
432 | |
258 | function webapp_pkg_postinst () |
433 | function webapp_pkg_postinst () |
259 | { |
434 | { |
260 | G_HOSTNAME="${VHOST_HOSTNAME}" |
435 | # sanity checks, to catch bugs in the ebuild |
261 | use vhosts || /usr/sbin/webapp-config -I -u root -d "${VHOST_ROOT}/htdocs/${PN}/" ${PN} ${PVR} |
436 | |
|
|
437 | if [ ! -f ${MY_APPDIR}/${INSTALL_CHECK_FILE} ]; then |
|
|
438 | eerror |
|
|
439 | eerror "This ebuild did not call webapp_src_install() at the end" |
|
|
440 | eerror "of the src_install() function" |
|
|
441 | eerror |
|
|
442 | eerror "Please log a bug on http://bugs.gentoo.org" |
|
|
443 | eerror |
|
|
444 | eerror "You should use emerge -C to remove this package, as the" |
|
|
445 | eerror "installation is incomplete" |
|
|
446 | eerror |
|
|
447 | die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org" |
|
|
448 | fi |
|
|
449 | |
|
|
450 | # if 'vhosts' is not set in your USE flags, we install a copy of |
|
|
451 | # this application in /var/www/localhost/htdocs/${PN}/ for you |
|
|
452 | |
|
|
453 | if ! use vhosts ; then |
|
|
454 | echo |
|
|
455 | einfo "vhosts USE flag not set - auto-installing using webapp-config" |
|
|
456 | |
|
|
457 | webapp_getinstalltype |
|
|
458 | |
|
|
459 | G_HOSTNAME="localhost" |
|
|
460 | . /etc/vhosts/webapp-config |
|
|
461 | |
|
|
462 | local my_mode=-I |
|
|
463 | |
|
|
464 | if [ "$IS_REPLACE" = "1" ]; then |
|
|
465 | einfo "${PN}-${PVR} is already installed - replacing" |
|
|
466 | /usr/sbin/webapp-config -C -d "$INSTALL_DIR" |
|
|
467 | elif [ "$IS_UPGRADE" = "1" ]; then |
|
|
468 | einfo "$REMOVE_PKG is already installed - upgrading" |
|
|
469 | my_mode=-U |
|
|
470 | else |
|
|
471 | einfo "${PN}-${PVR} is not installed - using install mode" |
|
|
472 | fi |
|
|
473 | |
|
|
474 | my_cmd="/usr/sbin/webapp-config $my_mode -h localhost -u root -d $INSTALL_DIR ${PN} ${PVR}" |
|
|
475 | einfo "Running $my_cmd" |
|
|
476 | $my_cmd |
|
|
477 | |
|
|
478 | # remove the old version |
|
|
479 | # |
|
|
480 | # why do we do this? well ... |
|
|
481 | # |
|
|
482 | # normally, emerge -u installs a new version and then removes the |
|
|
483 | # old version. however, if the new version goes into a different |
|
|
484 | # slot to the old version, then the old version gets left behind |
|
|
485 | # |
|
|
486 | # if USE=-vhosts, then we want to remove the old version, because |
|
|
487 | # the user is relying on portage to do the magical thing for it |
|
|
488 | |
|
|
489 | if [ "$IS_UPGRADE" = "1" ] ; then |
|
|
490 | einfo "Removing old version $REMOVE_PKG" |
|
|
491 | |
|
|
492 | emerge -C $CATEGORY/$REMOVE_PKG |
|
|
493 | fi |
|
|
494 | else |
|
|
495 | # vhosts flag is on |
|
|
496 | # |
|
|
497 | # let's tell the administrator what to do next |
|
|
498 | |
|
|
499 | einfo |
|
|
500 | einfo "The 'vhosts' USE flag is switched ON" |
|
|
501 | einfo "This means that Portage will not automatically run webapp-config to" |
|
|
502 | einfo "complete the installation." |
|
|
503 | einfo |
|
|
504 | einfo "To install $PN-$PVR into a virtual host, run the following command:" |
|
|
505 | einfo |
|
|
506 | einfo " webapp-config -I -h <host> -d $PN $PN $PVR" |
|
|
507 | einfo |
|
|
508 | einfo "For more details, see the webapp-config(8) man page" |
|
|
509 | fi |
|
|
510 | |
|
|
511 | return 0 |
262 | } |
512 | } |
|
|
513 | |
|
|
514 | function webapp_pkg_prerm () |
|
|
515 | { |
|
|
516 | # remove any virtual installs that there are |
|
|
517 | |
|
|
518 | local my_output |
|
|
519 | local x |
|
|
520 | |
|
|
521 | my_output="`webapp-config --list-installs $PN $PVR`" |
|
|
522 | |
|
|
523 | if [ "$?" != "0" ]; then |
|
|
524 | return |
|
|
525 | fi |
|
|
526 | |
|
|
527 | # the changes to IFS here are necessary to ensure that we can cope |
|
|
528 | # with directories that contain spaces in the file names |
|
|
529 | |
|
|
530 | # OLD_IFS="$IFS" |
|
|
531 | # IFS="
" |
|
|
532 | |
|
|
533 | for x in $my_output ; do |
|
|
534 | # IFS="$OLD_IFS" |
|
|
535 | |
|
|
536 | [ -f $x/.webapp ] && . $x/.webapp || ewarn "Cannot find file $x/.webapp" |
|
|
537 | |
|
|
538 | if [ -z "WEB_HOSTNAME" -o -z "WEB_INSTALLDIR" ]; then |
|
|
539 | ewarn "Don't forget to use webapp-config to remove the copy of" |
|
|
540 | ewarn "${PN}-${PVR} installed in" |
|
|
541 | ewarn |
|
|
542 | ewarn " $x" |
|
|
543 | ewarn |
|
|
544 | else |
|
|
545 | # we have enough information to remove the virtual copy ourself |
|
|
546 | |
|
|
547 | webapp-config -C -h ${WEB_HOSTNAME} -d ${WEB_INSTALLDIR} |
|
|
548 | |
|
|
549 | # if the removal fails - we carry on anyway! |
|
|
550 | fi |
|
|
551 | # IFS="
" |
|
|
552 | done |
|
|
553 | |
|
|
554 | # IFS="$OLD_IFS" |
|
|
555 | } |