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

Contents of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.63 - (hide annotations) (download)
Sun Mar 23 00:11:20 2008 UTC (6 years, 9 months ago) by hollow
Branch: MAIN
Changes since 1.62: +20 -20 lines
fix documentation; move sanity check

1 rl03 1.39 # Copyright 1999-2006 Gentoo Foundation
2 stuart 1.1 # Distributed under the terms of the GNU General Public License v2
3 hollow 1.63 # $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.62 2008/03/04 18:54:41 hollow Exp $
4    
5 hollow 1.49 # @ECLASS: webapp.eclass
6     # @MAINTAINER:
7     # web-apps@gentoo.org
8     # @BLURB: functions for installing applications to run under a web server
9     # @DESCRIPTION:
10     # The webapp eclass contains functions to handle web applications with
11     # webapp-config. Part of the implementation of GLEP #11
12 stuart 1.1
13 hollow 1.62 # @ECLASS-VARIABLE: WEBAPP_DEPEND
14     # @DESCRIPTION:
15 hollow 1.63 # An ebuild should use WEBAPP_DEPEND if a custom DEPEND needs to be built, most
16 hollow 1.62 # notably in combination with WEBAPP_OPTIONAL.
17     WEBAPP_DEPEND=">=app-admin/webapp-config-1.50.15"
18    
19 hollow 1.59 # @ECLASS-VARIABLE: WEBAPP_NO_AUTO_INSTALL
20     # @DESCRIPTION:
21     # An ebuild sets this to `yes' if an automatic installation and/or upgrade is
22     # not possible. The ebuild should overwrite pkg_postinst() and explain the
23     # reason for this BEFORE calling webapp_pkg_postinst().
24    
25 hollow 1.60 # @ECLASS-VARIABLE: WEBAPP_OPTIONAL
26     # @DESCRIPTION:
27     # An ebuild sets this to `yes' to make webapp support optional, in which case
28     # you also need to take care of USE-flags and dependencies.
29 hollow 1.61
30 hollow 1.60 if [[ "${WEBAPP_OPTIONAL}" != "yes" ]]; then
31 hollow 1.61 [[ "${WEBAPP_NO_AUTO_INSTALL}" == "yes" ]] || IUSE="vhosts"
32 hollow 1.60 SLOT="${PVR}"
33 hollow 1.62 DEPEND="${WEBAPP_DEPEND}"
34 hollow 1.60 RDEPEND="${DEPEND}"
35     fi
36 stuart 1.1
37 stuart 1.18 EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install pkg_prerm
38 stuart 1.1
39 stuart 1.37 INSTALL_DIR="/${PN}"
40 stuart 1.14 IS_UPGRADE=0
41     IS_REPLACE=0
42    
43 stuart 1.19 INSTALL_CHECK_FILE="installed_by_webapp_eclass"
44 hollow 1.57 SETUP_CHECK_FILE="setup_by_webapp_eclass"
45 stuart 1.19
46 hollow 1.51 ETC_CONFIG="${ROOT}etc/vhosts/webapp-config"
47     WEBAPP_CONFIG="${ROOT}usr/sbin/webapp-config"
48     WEBAPP_CLEANER="${ROOT}usr/sbin/webapp-cleaner"
49 stuart 1.37
50 hollow 1.49 # ==============================================================================
51     # INTERNAL FUNCTIONS
52     # ==============================================================================
53    
54 stuart 1.37 # Load the config file /etc/vhosts/webapp-config
55     # Supports both the old bash version, and the new python version
56 hollow 1.49 webapp_read_config() {
57 hollow 1.51 debug-print-function $FUNCNAME $*
58    
59 stuart 1.37 if has_version '>=app-admin/webapp-config-1.50'; then
60     ENVVAR=$(${WEBAPP_CONFIG} --query ${PN} ${PVR}) || die "Could not read settings from webapp-config!"
61     eval ${ENVVAR}
62     else
63     . ${ETC_CONFIG} || die "Unable to read ${ETC_CONFIG}"
64     fi
65     }
66 stuart 1.21
67 hollow 1.49 # Check whether a specified file exists in the given directory (`.' by default)
68     webapp_checkfileexists() {
69 hollow 1.51 debug-print-function $FUNCNAME $*
70    
71 hollow 1.52 local my_prefix=${2:+${2}/}
72 stuart 1.9
73 hollow 1.53 if [[ ! -e "${my_prefix}${1}" ]]; then
74 stuart 1.37 msg="ebuild fault: file '${1}' not found"
75 stuart 1.1 eerror "$msg"
76     eerror "Please report this as a bug at http://bugs.gentoo.org/"
77     die "$msg"
78     fi
79     }
80    
81 hollow 1.49 webapp_check_installedat() {
82 hollow 1.51 debug-print-function $FUNCNAME $*
83 stuart 1.37 ${WEBAPP_CONFIG} --show-installed -h localhost -d "${INSTALL_DIR}" 2> /dev/null
84 stuart 1.3 }
85    
86 hollow 1.49 webapp_strip_appdir() {
87 hollow 1.51 debug-print-function $FUNCNAME $*
88 hollow 1.52 echo "${1#${MY_APPDIR}/}"
89 stuart 1.3 }
90    
91 hollow 1.49 webapp_strip_d() {
92 hollow 1.51 debug-print-function $FUNCNAME $*
93 hollow 1.52 echo "${1#${D}}"
94 stuart 1.3 }
95    
96 hollow 1.49 webapp_strip_cwd() {
97 hollow 1.51 debug-print-function $FUNCNAME $*
98 hollow 1.52 echo "${1/#.\///}"
99 stuart 1.1 }
100    
101 hollow 1.50 webapp_getinstalltype() {
102 hollow 1.51 debug-print-function $FUNCNAME $*
103 hollow 1.59
104     if ! has vhosts ${IUSE} || use vhosts; then
105     return
106     fi
107 hollow 1.50
108 hollow 1.54 local my_output
109     my_output="$(webapp_check_installedat)"
110    
111     if [[ $? -eq 0 ]]; then
112     # something is already installed there
113     # make sure it isn't the same version
114    
115     local my_pn="$(echo ${my_output} | awk '{ print $1 }')"
116     local my_pvr="$(echo ${my_output} | awk '{ print $2 }')"
117 hollow 1.50
118 hollow 1.54 REMOVE_PKG="${my_pn}-${my_pvr}"
119 hollow 1.50
120 hollow 1.54 if [[ "${my_pn}" == "${PN}" ]]; then
121     if [[ "${my_pvr}" != "${PVR}" ]]; then
122     elog "This is an upgrade"
123     IS_UPGRADE=1
124 hollow 1.50 else
125 hollow 1.54 elog "This is a re-installation"
126     IS_REPLACE=1
127 hollow 1.50 fi
128     else
129 hollow 1.54 elog "${my_output} is installed there"
130 hollow 1.50 fi
131 hollow 1.54 else
132     elog "This is an installation"
133 hollow 1.50 fi
134     }
135    
136 hollow 1.49 # ==============================================================================
137     # PUBLIC FUNCTIONS
138     # ==============================================================================
139    
140 hollow 1.58 # @FUNCTION: need_httpd
141     # @DESCRIPTION:
142 hollow 1.63 # Call this function AFTER your ebuilds DEPEND line if any of the available
143 hollow 1.58 # webservers are able to run this application.
144     need_httpd() {
145     DEPEND="${DEPEND}
146     || ( virtual/httpd-basic virtual/httpd-cgi virtual/httpd-fastcgi )"
147     }
148    
149     # @FUNCTION: need_httpd_cgi
150     # @DESCRIPTION:
151 hollow 1.63 # Call this function AFTER your ebuilds DEPEND line if any of the available
152 hollow 1.58 # CGI-capable webservers are able to run this application.
153     need_httpd_cgi() {
154     DEPEND="${DEPEND}
155     || ( virtual/httpd-cgi virtual/httpd-fastcgi )"
156     }
157    
158     # @FUNCTION: need_httpd_fastcgi
159     # @DESCRIPTION:
160 hollow 1.63 # Call this function AFTER your ebuilds DEPEND line if any of the available
161 hollow 1.58 # FastCGI-capabale webservers are able to run this application.
162     need_httpd_fastcgi() {
163     DEPEND="${DEPEND}
164     virtual/httpd-fastcgi"
165     }
166    
167 hollow 1.49 # @FUNCTION: webapp_configfile
168     # @USAGE: <file> [more files ...]
169     # @DESCRIPTION:
170     # Mark a file config-protected for a web-based application.
171     webapp_configfile() {
172 hollow 1.51 debug-print-function $FUNCNAME $*
173    
174 hollow 1.54 local m
175 hollow 1.53 for m in "$@"; do
176 rl03 1.39 webapp_checkfileexists "${m}" "${D}"
177 stuart 1.27
178 hollow 1.54 local my_file="$(webapp_strip_appdir "${m}")"
179     my_file="$(webapp_strip_cwd "${my_file}")"
180 stuart 1.3
181 hollow 1.54 elog "(config) ${my_file}"
182     echo "${my_file}" >> ${D}/${WA_CONFIGLIST}
183 rl03 1.39 done
184 stuart 1.1 }
185    
186 hollow 1.49 # @FUNCTION: webapp_hook_script
187     # @USAGE: <file>
188     # @DESCRIPTION:
189 stuart 1.18 # Install a script that will run after a virtual copy is created, and
190 hollow 1.49 # before a virtual copy has been removed.
191     webapp_hook_script() {
192 hollow 1.51 debug-print-function $FUNCNAME $*
193    
194 stuart 1.37 webapp_checkfileexists "${1}"
195 stuart 1.18
196 rl03 1.43 elog "(hook) ${1}"
197 wrobel 1.40 cp "${1}" "${D}/${MY_HOOKSCRIPTSDIR}/$(basename "${1}")" || die "Unable to install ${1} into ${D}/${MY_HOOKSCRIPTSDIR}/"
198     chmod 555 "${D}/${MY_HOOKSCRIPTSDIR}/$(basename "${1}")"
199 stuart 1.18 }
200    
201 hollow 1.49 # @FUNCTION: webapp_postinst_txt
202     # @USAGE: <lang> <file>
203     # @DESCRIPTION:
204 stuart 1.5 # Install a text file containing post-installation instructions.
205 hollow 1.49 webapp_postinst_txt() {
206 hollow 1.51 debug-print-function $FUNCNAME $*
207    
208 stuart 1.37 webapp_checkfileexists "${2}"
209 stuart 1.5
210 rl03 1.43 elog "(info) ${2} (lang: ${1})"
211 stuart 1.37 cp "${2}" "${D}/${MY_APPDIR}/postinst-${1}.txt"
212 stuart 1.5 }
213    
214 hollow 1.49 # @FUNCTION: webapp_postupgrade_txt
215     # @USAGE: <lang> <file>
216     # @DESCRIPTION:
217 stuart 1.31 # Install a text file containing post-upgrade instructions.
218 hollow 1.49 webapp_postupgrade_txt() {
219 hollow 1.51 debug-print-function $FUNCNAME $*
220    
221 stuart 1.37 webapp_checkfileexists "${2}"
222 stuart 1.31
223 rl03 1.43 elog "(info) ${2} (lang: ${1})"
224 stuart 1.37 cp "${2}" "${D}/${MY_APPDIR}/postupgrade-${1}.txt"
225 stuart 1.3 }
226    
227 hollow 1.55 # helper for webapp_serverowned()
228     _webapp_serverowned() {
229     debug-print-function $FUNCNAME $*
230    
231     webapp_checkfileexists "${1}" "${D}"
232     local my_file="$(webapp_strip_appdir "${1}")"
233     my_file="$(webapp_strip_cwd "${my_file}")"
234    
235     elog "(server owned) ${my_file}"
236     echo "${my_file}" >> "${D}/${WA_SOLIST}"
237     }
238    
239 hollow 1.49 # @FUNCTION: webapp_serverowned
240     # @USAGE: [-R] <file> [more files ...]
241     # @DESCRIPTION:
242     # Identify a file which must be owned by the webserver's user:group settings.
243     # The ownership of the file is NOT set until the application is installed using
244     # the webapp-config tool. If -R is given directories are handled recursively.
245     webapp_serverowned() {
246 hollow 1.51 debug-print-function $FUNCNAME $*
247    
248 hollow 1.54 local a m
249 hollow 1.53 if [[ "${1}" == "-R" ]]; then
250 rl03 1.39 shift
251 hollow 1.53 for m in "$@"; do
252 hollow 1.55 find "${D}${m}" | while read a; do
253     a=$(webapp_strip_d "${a}")
254     _webapp_serverowned "${a}"
255 rl03 1.39 done
256     done
257     else
258 hollow 1.53 for m in "$@"; do
259 hollow 1.55 _webapp_serverowned "${m}"
260 rl03 1.39 done
261     fi
262 stuart 1.3 }
263    
264 hollow 1.49 # @FUNCTION: webapp_server_configfile
265     # @USAGE: <server> <file> [new name]
266     # @DESCRIPTION:
267     # Install a configuration file for the webserver. You need to specify a
268     # webapp-config supported <server>. if no new name is given `basename $2' is
269     # used by default. Note: this function will automagically prepend $1 to the
270     # front of your config file's name.
271     webapp_server_configfile() {
272 hollow 1.51 debug-print-function $FUNCNAME $*
273    
274 stuart 1.37 webapp_checkfileexists "${2}"
275 stuart 1.18
276 hollow 1.51 # WARNING:
277     #
278     # do NOT change the naming convention used here without changing all
279     # the other scripts that also rely upon these names
280 stuart 1.18
281 hollow 1.52 local my_file="${1}-${3:-$(basename "${2}")}"
282 stuart 1.18
283 rl03 1.43 elog "(${1}) config file '${my_file}'"
284 stuart 1.37 cp "${2}" "${D}/${MY_SERVERCONFIGDIR}/${my_file}"
285 stuart 1.18 }
286    
287 hollow 1.49 # @FUNCTION: webapp_sqlscript
288     # @USAGE: <db> <file> [version]
289     # @DESCRIPTION:
290     # Install a SQL script that creates/upgrades a database schema for the web
291     # application. Currently supported database engines are mysql and postgres.
292     # If a version is given the script should upgrade the database schema from
293     # the given version to $PVR.
294     webapp_sqlscript() {
295 hollow 1.51 debug-print-function $FUNCNAME $*
296    
297 stuart 1.37 webapp_checkfileexists "${2}"
298 stuart 1.3
299 hollow 1.54 dodir "${MY_SQLSCRIPTSDIR}/${1}"
300 stuart 1.3
301 hollow 1.51 # WARNING:
302 stuart 1.3 #
303     # do NOT change the naming convention used here without changing all
304     # the other scripts that also rely upon these names
305 swegener 1.38
306 hollow 1.53 if [[ -n "${3}" ]]; then
307     elog "(${1}) upgrade script for ${PN}-${3} to ${PVR}"
308 stuart 1.37 cp "${2}" "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql"
309     chmod 600 "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql"
310 stuart 1.3 else
311 rl03 1.43 elog "(${1}) create script for ${PN}-${PVR}"
312 stuart 1.37 cp "${2}" "${D}/${MY_SQLSCRIPTSDIR}/${1}/${PVR}_create.sql"
313     chmod 600 "${D}/${MY_SQLSCRIPTSDIR}/${1}/${PVR}_create.sql"
314 stuart 1.3 fi
315 stuart 1.1 }
316    
317 hollow 1.50 # @FUNCTION: webapp_src_preinst
318     # @DESCRIPTION:
319     # You need to call this function in src_install() BEFORE anything else has run.
320     # For now we just create required webapp-config directories.
321     webapp_src_preinst() {
322 hollow 1.51 debug-print-function $FUNCNAME $*
323    
324 hollow 1.63 # sanity checks, to catch bugs in the ebuild
325     if [[ ! -f "${T}/${SETUP_CHECK_FILE}" ]]; then
326     eerror
327     eerror "This ebuild did not call webapp_pkg_setup() at the beginning"
328     eerror "of the pkg_setup() function"
329     eerror
330     eerror "Please log a bug on http://bugs.gentoo.org"
331     eerror
332     eerror "You should use emerge -C to remove this package, as the"
333     eerror "installation is incomplete"
334     eerror
335     die "Ebuild did not call webapp_pkg_setup() - report to http://bugs.gentoo.org"
336     fi
337    
338 hollow 1.50 dodir "${MY_HTDOCSDIR}"
339     dodir "${MY_HOSTROOTDIR}"
340     dodir "${MY_CGIBINDIR}"
341     dodir "${MY_ICONSDIR}"
342     dodir "${MY_ERRORSDIR}"
343     dodir "${MY_SQLSCRIPTSDIR}"
344     dodir "${MY_HOOKSCRIPTSDIR}"
345     dodir "${MY_SERVERCONFIGDIR}"
346     }
347    
348 hollow 1.49 # ==============================================================================
349     # EXPORTED FUNCTIONS
350     # ==============================================================================
351    
352     # @FUNCTION: webapp_pkg_setup
353     # @DESCRIPTION:
354 hollow 1.50 # The default pkg_setup() for this eclass. This will gather required variables
355     # from webapp-config and check if there is an application installed to
356     # `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set.
357     #
358     # You need to call this function BEFORE anything else has run in your custom
359     # pkg_setup().
360 hollow 1.49 webapp_pkg_setup() {
361 hollow 1.51 debug-print-function $FUNCNAME $*
362 stuart 1.15
363 hollow 1.57 # to test whether or not the ebuild has correctly called this function
364     # we add an empty file to the filesystem
365     #
366     # we used to just set a variable in the shell script, but we can
367     # no longer rely on Portage calling both webapp_pkg_setup() and
368     # webapp_src_install() within the same shell process
369     touch "${T}/${SETUP_CHECK_FILE}"
370    
371 rl03 1.44 # special case - some ebuilds *do* need to overwride the SLOT
372     if [[ "${SLOT}+" != "${PVR}+" && "${WEBAPP_MANUAL_SLOT}" != "yes" ]]; then
373     die "Set WEBAPP_MANUAL_SLOT=\"yes\" if you need to SLOT manually"
374 stuart 1.15 fi
375    
376 stuart 1.8 # pull in the shared configuration file
377 stuart 1.18 G_HOSTNAME="localhost"
378 stuart 1.37 webapp_read_config
379 stuart 1.18
380 hollow 1.54 local my_dir="${ROOT}${VHOST_ROOT}/${MY_HTDOCSBASE}/${PN}"
381    
382     # if USE=vhosts is enabled OR no application is installed we're done here
383 hollow 1.59 if ! has vhosts ${IUSE} || use vhosts || [[ ! -d "${my_dir}" ]]; then
384     return
385     fi
386 stuart 1.18
387 hollow 1.54 local my_output
388     my_output="$(webapp_check_installedat)"
389 stuart 1.18
390 hollow 1.54 if [[ $? -ne 0 ]]; then
391     # okay, whatever is there, it isn't webapp-config-compatible
392 hollow 1.55 echo
393     ewarn
394 hollow 1.54 ewarn "You already have something installed in ${my_dir}"
395     ewarn
396     ewarn "Whatever is in ${my_dir}, it's not"
397     ewarn "compatible with webapp-config."
398     ewarn
399     ewarn "This ebuild may be overwriting important files."
400     ewarn
401 hollow 1.55 echo
402     ebeep 10
403 hollow 1.54 elif [[ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]]; then
404 hollow 1.55 echo
405     eerror "You already have ${my_output} installed in ${my_dir}"
406     eerror
407     eerror "I cannot upgrade a different application"
408     eerror
409     echo
410 hollow 1.54 die "Cannot upgrade contents of ${my_dir}"
411 stuart 1.18 fi
412 hollow 1.57
413     }
414    
415     # @FUNCTION: webapp_src_install
416     # @DESCRIPTION:
417     # This is the default src_install(). For now, we just make sure that root owns
418     # everything, and that there are no setuid files.
419     #
420     # You need to call this function AFTER everything else has run in your custom
421     # src_install().
422     webapp_src_install() {
423     debug-print-function $FUNCNAME $*
424    
425     # to test whether or not the ebuild has correctly called this function
426     # we add an empty file to the filesystem
427     #
428     # we used to just set a variable in the shell script, but we can
429     # no longer rely on Portage calling both webapp_src_install() and
430     # webapp_pkg_postinst() within the same shell process
431     touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
432    
433     chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
434     chmod -R u-s "${D}/"
435     chmod -R g-s "${D}/"
436    
437     keepdir "${MY_PERSISTDIR}"
438     fowners "root:0" "${MY_PERSISTDIR}"
439     fperms 755 "${MY_PERSISTDIR}"
440 stuart 1.14 }
441 stuart 1.6
442 hollow 1.50 # @FUNCTION: webapp_pkg_postinst
443     # @DESCRIPTION:
444     # The default pkg_postinst() for this eclass. This installs the web application to
445     # `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set. Otherwise
446     # display a short notice how to install this application with webapp-config.
447     #
448     # You need to call this function AFTER everything else has run in your custom
449     # pkg_postinst().
450 hollow 1.49 webapp_pkg_postinst() {
451 hollow 1.51 debug-print-function $FUNCNAME $*
452    
453 stuart 1.37 webapp_read_config
454 stuart 1.21
455 stuart 1.15 # sanity checks, to catch bugs in the ebuild
456 hollow 1.53 if [[ ! -f "${ROOT}${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]]; then
457 stuart 1.15 eerror
458     eerror "This ebuild did not call webapp_src_install() at the end"
459     eerror "of the src_install() function"
460     eerror
461     eerror "Please log a bug on http://bugs.gentoo.org"
462     eerror
463     eerror "You should use emerge -C to remove this package, as the"
464     eerror "installation is incomplete"
465     eerror
466     die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org"
467     fi
468    
469 hollow 1.59 if has vhosts ${IUSE}; then
470     if ! use vhosts; then
471     echo
472     elog "vhosts USE flag not set - auto-installing using webapp-config"
473    
474     G_HOSTNAME="localhost"
475     webapp_read_config
476    
477     local my_mode=-I
478     webapp_getinstalltype
479    
480     if [[ "${IS_REPLACE}" == "1" ]]; then
481     elog "${PN}-${PVR} is already installed - replacing"
482     my_mode=-I
483     elif [[ "${IS_UPGRADE}" == "1" ]]; then
484     elog "${REMOVE_PKG} is already installed - upgrading"
485     my_mode=-U
486     else
487     elog "${PN}-${PVR} is not installed - using install mode"
488     fi
489 stuart 1.10
490 hollow 1.59 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
491     elog "Running ${my_cmd}"
492     ${my_cmd}
493    
494     echo
495     local cleaner="${WEBAPP_CLEANER} -p -C ${PN}"
496     einfo "Running ${cleaner}"
497     ${cleaner}
498 stuart 1.11 else
499 hollow 1.59 elog
500     elog "The 'vhosts' USE flag is switched ON"
501     elog "This means that Portage will not automatically run webapp-config to"
502     elog "complete the installation."
503     elog
504     elog "To install ${PN}-${PVR} into a virtual host, run the following command:"
505     elog
506     elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
507     elog
508     elog "For more details, see the webapp-config(8) man page"
509 stuart 1.10 fi
510 stuart 1.18 else
511 rl03 1.43 elog
512 hollow 1.59 elog "This ebuild does not support the 'vhosts' USE flag."
513 rl03 1.43 elog "This means that Portage will not automatically run webapp-config to"
514     elog "complete the installation."
515     elog
516     elog "To install ${PN}-${PVR} into a virtual host, run the following command:"
517     elog
518     elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
519     elog
520     elog "For more details, see the webapp-config(8) man page"
521 stuart 1.10 fi
522 stuart 1.2 }
523 stuart 1.18
524 hollow 1.50 # @FUNCTION: webapp_pkg_prerm
525     # @DESCRIPTION:
526     # This is the default pkg_prerm() for this eclass. If USE=vhosts is not set
527     # remove all installed copies of this web application. Otherwise instruct the
528 hollow 1.51 # user to manually remove those copies. See bug #136959.
529 hollow 1.49 webapp_pkg_prerm() {
530 hollow 1.51 debug-print-function $FUNCNAME $*
531 stuart 1.18
532 hollow 1.53 local my_output=
533 stuart 1.37 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})"
534 hollow 1.53 [[ $? -ne 0 ]] && return
535 stuart 1.18
536 hollow 1.53 local x
537 hollow 1.59 if has vhosts ${IUSE} && ! use vhosts; then
538 hollow 1.56 echo "${my_output}" | while read x; do
539     if [[ -f "${x}"/.webapp ]]; then
540     . "${x}"/.webapp
541     if [[ -n "${WEB_HOSTNAME}" && -n "${WEB_INSTALLDIR}" ]]; then
542     ${WEBAPP_CONFIG} -C -h ${WEB_HOSTNAME} -d ${WEB_INSTALLDIR}
543     fi
544     else
545     ewarn "Cannot find file ${x}/.webapp"
546 rl03 1.48 fi
547     done
548 hollow 1.56 elif [[ "${my_output}" != "" ]]; then
549     echo
550     ewarn
551 rl03 1.48 ewarn "Don't forget to use webapp-config to remove any copies of"
552     ewarn "${PN}-${PVR} installed in"
553     ewarn
554 stuart 1.18
555 hollow 1.56 echo "${my_output}" | while read x; do
556     if [[ -f "${x}"/.webapp ]]; then
557     ewarn " ${x}"
558     else
559     ewarn "Cannot find file ${x}/.webapp"
560     fi
561 rl03 1.48 done
562 hollow 1.56
563     ewarn
564     echo
565 rl03 1.48 fi
566 stuart 1.18 }

  ViewVC Help
Powered by ViewVC 1.1.20