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

Contents of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.62 - (hide annotations) (download)
Tue Mar 4 18:54:41 2008 UTC (6 years, 4 months ago) by hollow
Branch: MAIN
Changes since 1.61: +8 -2 lines
provide WEBAPP_DEPEND for ebuilds with WEBAPP_OPTIONAL

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.62 # $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.61 2008/03/04 18:44:01 hollow Exp $
4 stuart 1.1 #
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     # An ebuild should use WEBAPP_DEPEND if a custom DEPEND needs to be build, most
16     # 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     # Call this function AFTER your ebuild's DEPEND line if any of the available
143     # 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     # Call this function AFTER your ebuild's DEPEND line if any of the available
152     # 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     # Call this function AFTER your ebuild's DEPEND line if any of the available
161     # 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.50 dodir "${MY_HTDOCSDIR}"
325     dodir "${MY_HOSTROOTDIR}"
326     dodir "${MY_CGIBINDIR}"
327     dodir "${MY_ICONSDIR}"
328     dodir "${MY_ERRORSDIR}"
329     dodir "${MY_SQLSCRIPTSDIR}"
330     dodir "${MY_HOOKSCRIPTSDIR}"
331     dodir "${MY_SERVERCONFIGDIR}"
332     }
333    
334 hollow 1.49 # ==============================================================================
335     # EXPORTED FUNCTIONS
336     # ==============================================================================
337    
338     # @FUNCTION: webapp_pkg_setup
339     # @DESCRIPTION:
340 hollow 1.50 # The default pkg_setup() for this eclass. This will gather required variables
341     # from webapp-config and check if there is an application installed to
342     # `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set.
343     #
344     # You need to call this function BEFORE anything else has run in your custom
345     # pkg_setup().
346 hollow 1.49 webapp_pkg_setup() {
347 hollow 1.51 debug-print-function $FUNCNAME $*
348 stuart 1.15
349 hollow 1.57 # to test whether or not the ebuild has correctly called this function
350     # we add an empty file to the filesystem
351     #
352     # we used to just set a variable in the shell script, but we can
353     # no longer rely on Portage calling both webapp_pkg_setup() and
354     # webapp_src_install() within the same shell process
355     touch "${T}/${SETUP_CHECK_FILE}"
356    
357 rl03 1.44 # special case - some ebuilds *do* need to overwride the SLOT
358     if [[ "${SLOT}+" != "${PVR}+" && "${WEBAPP_MANUAL_SLOT}" != "yes" ]]; then
359     die "Set WEBAPP_MANUAL_SLOT=\"yes\" if you need to SLOT manually"
360 stuart 1.15 fi
361    
362 stuart 1.8 # pull in the shared configuration file
363 stuart 1.18 G_HOSTNAME="localhost"
364 stuart 1.37 webapp_read_config
365 stuart 1.18
366 hollow 1.54 local my_dir="${ROOT}${VHOST_ROOT}/${MY_HTDOCSBASE}/${PN}"
367    
368     # if USE=vhosts is enabled OR no application is installed we're done here
369 hollow 1.59 if ! has vhosts ${IUSE} || use vhosts || [[ ! -d "${my_dir}" ]]; then
370     return
371     fi
372 stuart 1.18
373 hollow 1.54 local my_output
374     my_output="$(webapp_check_installedat)"
375 stuart 1.18
376 hollow 1.54 if [[ $? -ne 0 ]]; then
377     # okay, whatever is there, it isn't webapp-config-compatible
378 hollow 1.55 echo
379     ewarn
380 hollow 1.54 ewarn "You already have something installed in ${my_dir}"
381     ewarn
382     ewarn "Whatever is in ${my_dir}, it's not"
383     ewarn "compatible with webapp-config."
384     ewarn
385     ewarn "This ebuild may be overwriting important files."
386     ewarn
387 hollow 1.55 echo
388     ebeep 10
389 hollow 1.54 elif [[ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]]; then
390 hollow 1.55 echo
391     eerror "You already have ${my_output} installed in ${my_dir}"
392     eerror
393     eerror "I cannot upgrade a different application"
394     eerror
395     echo
396 hollow 1.54 die "Cannot upgrade contents of ${my_dir}"
397 stuart 1.18 fi
398 hollow 1.57
399     }
400    
401     # @FUNCTION: webapp_src_install
402     # @DESCRIPTION:
403     # This is the default src_install(). For now, we just make sure that root owns
404     # everything, and that there are no setuid files.
405     #
406     # You need to call this function AFTER everything else has run in your custom
407     # src_install().
408     webapp_src_install() {
409     debug-print-function $FUNCNAME $*
410    
411     # to test whether or not the ebuild has correctly called this function
412     # we add an empty file to the filesystem
413     #
414     # we used to just set a variable in the shell script, but we can
415     # no longer rely on Portage calling both webapp_src_install() and
416     # webapp_pkg_postinst() within the same shell process
417     touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
418    
419     # sanity checks, to catch bugs in the ebuild
420     if [[ ! -f "${T}/${SETUP_CHECK_FILE}" ]]; then
421     eerror
422     eerror "This ebuild did not call webapp_pkg_setup() at the beginning"
423     eerror "of the pkg_setup() function"
424     eerror
425     eerror "Please log a bug on http://bugs.gentoo.org"
426     eerror
427     eerror "You should use emerge -C to remove this package, as the"
428     eerror "installation is incomplete"
429     eerror
430     die "Ebuild did not call webapp_pkg_setup() - report to http://bugs.gentoo.org"
431     fi
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