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

Contents of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.67 - (hide annotations) (download)
Tue Jul 12 07:48:01 2011 UTC (2 years, 9 months ago) by lxnay
Branch: MAIN
Changes since 1.66: +9 -2 lines
Close bug #374697

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

  ViewVC Help
Powered by ViewVC 1.1.20