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

Contents of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.64 - (hide annotations) (download)
Sun May 9 22:32:16 2010 UTC (4 years, 7 months ago) by darkside
Branch: MAIN
Changes since 1.63: +3 -1 lines
Add helpful comment about where the MY_* vars are defined.

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 darkside 1.64 # $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.63 2008/03/23 00:11:20 hollow Exp $
4 hollow 1.63
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 darkside 1.64 # Hint, see the webapp_read_config() function to find where these are
339     # defined.
340 hollow 1.50 dodir "${MY_HTDOCSDIR}"
341     dodir "${MY_HOSTROOTDIR}"
342     dodir "${MY_CGIBINDIR}"
343     dodir "${MY_ICONSDIR}"
344     dodir "${MY_ERRORSDIR}"
345     dodir "${MY_SQLSCRIPTSDIR}"
346     dodir "${MY_HOOKSCRIPTSDIR}"
347     dodir "${MY_SERVERCONFIGDIR}"
348     }
349    
350 hollow 1.49 # ==============================================================================
351     # EXPORTED FUNCTIONS
352     # ==============================================================================
353    
354     # @FUNCTION: webapp_pkg_setup
355     # @DESCRIPTION:
356 hollow 1.50 # The default pkg_setup() for this eclass. This will gather required variables
357     # from webapp-config and check if there is an application installed to
358     # `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set.
359     #
360     # You need to call this function BEFORE anything else has run in your custom
361     # pkg_setup().
362 hollow 1.49 webapp_pkg_setup() {
363 hollow 1.51 debug-print-function $FUNCNAME $*
364 stuart 1.15
365 hollow 1.57 # to test whether or not the ebuild has correctly called this function
366     # we add an empty file to the filesystem
367     #
368     # we used to just set a variable in the shell script, but we can
369     # no longer rely on Portage calling both webapp_pkg_setup() and
370     # webapp_src_install() within the same shell process
371     touch "${T}/${SETUP_CHECK_FILE}"
372    
373 rl03 1.44 # special case - some ebuilds *do* need to overwride the SLOT
374     if [[ "${SLOT}+" != "${PVR}+" && "${WEBAPP_MANUAL_SLOT}" != "yes" ]]; then
375     die "Set WEBAPP_MANUAL_SLOT=\"yes\" if you need to SLOT manually"
376 stuart 1.15 fi
377    
378 stuart 1.8 # pull in the shared configuration file
379 stuart 1.18 G_HOSTNAME="localhost"
380 stuart 1.37 webapp_read_config
381 stuart 1.18
382 hollow 1.54 local my_dir="${ROOT}${VHOST_ROOT}/${MY_HTDOCSBASE}/${PN}"
383    
384     # if USE=vhosts is enabled OR no application is installed we're done here
385 hollow 1.59 if ! has vhosts ${IUSE} || use vhosts || [[ ! -d "${my_dir}" ]]; then
386     return
387     fi
388 stuart 1.18
389 hollow 1.54 local my_output
390     my_output="$(webapp_check_installedat)"
391 stuart 1.18
392 hollow 1.54 if [[ $? -ne 0 ]]; then
393     # okay, whatever is there, it isn't webapp-config-compatible
394 hollow 1.55 echo
395     ewarn
396 hollow 1.54 ewarn "You already have something installed in ${my_dir}"
397     ewarn
398     ewarn "Whatever is in ${my_dir}, it's not"
399     ewarn "compatible with webapp-config."
400     ewarn
401     ewarn "This ebuild may be overwriting important files."
402     ewarn
403 hollow 1.55 echo
404     ebeep 10
405 hollow 1.54 elif [[ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]]; then
406 hollow 1.55 echo
407     eerror "You already have ${my_output} installed in ${my_dir}"
408     eerror
409     eerror "I cannot upgrade a different application"
410     eerror
411     echo
412 hollow 1.54 die "Cannot upgrade contents of ${my_dir}"
413 stuart 1.18 fi
414 hollow 1.57
415     }
416    
417     # @FUNCTION: webapp_src_install
418     # @DESCRIPTION:
419     # This is the default src_install(). For now, we just make sure that root owns
420     # everything, and that there are no setuid files.
421     #
422     # You need to call this function AFTER everything else has run in your custom
423     # src_install().
424     webapp_src_install() {
425     debug-print-function $FUNCNAME $*
426    
427     # to test whether or not the ebuild has correctly called this function
428     # we add an empty file to the filesystem
429     #
430     # we used to just set a variable in the shell script, but we can
431     # no longer rely on Portage calling both webapp_src_install() and
432     # webapp_pkg_postinst() within the same shell process
433     touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
434    
435     chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
436     chmod -R u-s "${D}/"
437     chmod -R g-s "${D}/"
438    
439     keepdir "${MY_PERSISTDIR}"
440     fowners "root:0" "${MY_PERSISTDIR}"
441     fperms 755 "${MY_PERSISTDIR}"
442 stuart 1.14 }
443 stuart 1.6
444 hollow 1.50 # @FUNCTION: webapp_pkg_postinst
445     # @DESCRIPTION:
446     # The default pkg_postinst() for this eclass. This installs the web application to
447     # `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set. Otherwise
448     # display a short notice how to install this application with webapp-config.
449     #
450     # You need to call this function AFTER everything else has run in your custom
451     # pkg_postinst().
452 hollow 1.49 webapp_pkg_postinst() {
453 hollow 1.51 debug-print-function $FUNCNAME $*
454    
455 stuart 1.37 webapp_read_config
456 stuart 1.21
457 stuart 1.15 # sanity checks, to catch bugs in the ebuild
458 hollow 1.53 if [[ ! -f "${ROOT}${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]]; then
459 stuart 1.15 eerror
460     eerror "This ebuild did not call webapp_src_install() at the end"
461     eerror "of the src_install() function"
462     eerror
463     eerror "Please log a bug on http://bugs.gentoo.org"
464     eerror
465     eerror "You should use emerge -C to remove this package, as the"
466     eerror "installation is incomplete"
467     eerror
468     die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org"
469     fi
470    
471 hollow 1.59 if has vhosts ${IUSE}; then
472     if ! use vhosts; then
473     echo
474     elog "vhosts USE flag not set - auto-installing using webapp-config"
475    
476     G_HOSTNAME="localhost"
477     webapp_read_config
478    
479     local my_mode=-I
480     webapp_getinstalltype
481    
482     if [[ "${IS_REPLACE}" == "1" ]]; then
483     elog "${PN}-${PVR} is already installed - replacing"
484     my_mode=-I
485     elif [[ "${IS_UPGRADE}" == "1" ]]; then
486     elog "${REMOVE_PKG} is already installed - upgrading"
487     my_mode=-U
488     else
489     elog "${PN}-${PVR} is not installed - using install mode"
490     fi
491 stuart 1.10
492 hollow 1.59 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
493     elog "Running ${my_cmd}"
494     ${my_cmd}
495    
496     echo
497     local cleaner="${WEBAPP_CLEANER} -p -C ${PN}"
498     einfo "Running ${cleaner}"
499     ${cleaner}
500 stuart 1.11 else
501 hollow 1.59 elog
502     elog "The 'vhosts' USE flag is switched ON"
503     elog "This means that Portage will not automatically run webapp-config to"
504     elog "complete the installation."
505     elog
506     elog "To install ${PN}-${PVR} into a virtual host, run the following command:"
507     elog
508     elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
509     elog
510     elog "For more details, see the webapp-config(8) man page"
511 stuart 1.10 fi
512 stuart 1.18 else
513 rl03 1.43 elog
514 hollow 1.59 elog "This ebuild does not support the 'vhosts' USE flag."
515 rl03 1.43 elog "This means that Portage will not automatically run webapp-config to"
516     elog "complete the installation."
517     elog
518     elog "To install ${PN}-${PVR} into a virtual host, run the following command:"
519     elog
520     elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
521     elog
522     elog "For more details, see the webapp-config(8) man page"
523 stuart 1.10 fi
524 stuart 1.2 }
525 stuart 1.18
526 hollow 1.50 # @FUNCTION: webapp_pkg_prerm
527     # @DESCRIPTION:
528     # This is the default pkg_prerm() for this eclass. If USE=vhosts is not set
529     # remove all installed copies of this web application. Otherwise instruct the
530 hollow 1.51 # user to manually remove those copies. See bug #136959.
531 hollow 1.49 webapp_pkg_prerm() {
532 hollow 1.51 debug-print-function $FUNCNAME $*
533 stuart 1.18
534 hollow 1.53 local my_output=
535 stuart 1.37 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})"
536 hollow 1.53 [[ $? -ne 0 ]] && return
537 stuart 1.18
538 hollow 1.53 local x
539 hollow 1.59 if has vhosts ${IUSE} && ! use vhosts; then
540 hollow 1.56 echo "${my_output}" | while read x; do
541     if [[ -f "${x}"/.webapp ]]; then
542     . "${x}"/.webapp
543     if [[ -n "${WEB_HOSTNAME}" && -n "${WEB_INSTALLDIR}" ]]; then
544     ${WEBAPP_CONFIG} -C -h ${WEB_HOSTNAME} -d ${WEB_INSTALLDIR}
545     fi
546     else
547     ewarn "Cannot find file ${x}/.webapp"
548 rl03 1.48 fi
549     done
550 hollow 1.56 elif [[ "${my_output}" != "" ]]; then
551     echo
552     ewarn
553 rl03 1.48 ewarn "Don't forget to use webapp-config to remove any copies of"
554     ewarn "${PN}-${PVR} installed in"
555     ewarn
556 stuart 1.18
557 hollow 1.56 echo "${my_output}" | while read x; do
558     if [[ -f "${x}"/.webapp ]]; then
559     ewarn " ${x}"
560     else
561     ewarn "Cannot find file ${x}/.webapp"
562     fi
563 rl03 1.48 done
564 hollow 1.56
565     ewarn
566     echo
567 rl03 1.48 fi
568 stuart 1.18 }

  ViewVC Help
Powered by ViewVC 1.1.20