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

Diff of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.53 Revision 1.66
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2006 Gentoo Foundation
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.53 2008/02/22 14:06:05 hollow Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.66 2011/05/19 12:05:13 scarabeus Exp $
4# 4
5# @ECLASS: webapp.eclass 5# @ECLASS: webapp.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# web-apps@gentoo.org 7# web-apps@gentoo.org
8# @BLURB: functions for installing applications to run under a web server 8# @BLURB: functions for installing applications to run under a web server
9# @DESCRIPTION: 9# @DESCRIPTION:
10# The webapp eclass contains functions to handle web applications with 10# The webapp eclass contains functions to handle web applications with
11# webapp-config. Part of the implementation of GLEP #11 11# webapp-config. Part of the implementation of GLEP #11
12 12
13# @ECLASS-VARIABLE: WEBAPP_DEPEND
14# @DESCRIPTION:
15# An ebuild should use WEBAPP_DEPEND if a custom DEPEND needs to be built, most
16# notably in combination with WEBAPP_OPTIONAL.
17WEBAPP_DEPEND=">=app-admin/webapp-config-1.50.15"
18
19# @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# @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
30if [[ "${WEBAPP_OPTIONAL}" != "yes" ]]; then
31 [[ "${WEBAPP_NO_AUTO_INSTALL}" == "yes" ]] || IUSE="vhosts"
13SLOT="${PVR}" 32 SLOT="${PVR}"
14IUSE="vhosts" 33 DEPEND="${WEBAPP_DEPEND}"
15DEPEND=">=app-admin/webapp-config-1.50.15"
16RDEPEND="${DEPEND}" 34 RDEPEND="${DEPEND}"
35fi
17 36
18EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install pkg_prerm 37EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install pkg_prerm
19 38
20INSTALL_DIR="/${PN}" 39INSTALL_DIR="/${PN}"
21IS_UPGRADE=0 40IS_UPGRADE=0
22IS_REPLACE=0 41IS_REPLACE=0
23 42
24INSTALL_CHECK_FILE="installed_by_webapp_eclass" 43INSTALL_CHECK_FILE="installed_by_webapp_eclass"
44SETUP_CHECK_FILE="setup_by_webapp_eclass"
25 45
26ETC_CONFIG="${ROOT}etc/vhosts/webapp-config" 46ETC_CONFIG="${ROOT}etc/vhosts/webapp-config"
27WEBAPP_CONFIG="${ROOT}usr/sbin/webapp-config" 47WEBAPP_CONFIG="${ROOT}usr/sbin/webapp-config"
28WEBAPP_CLEANER="${ROOT}usr/sbin/webapp-cleaner" 48WEBAPP_CLEANER="${ROOT}usr/sbin/webapp-cleaner"
29 49
79} 99}
80 100
81webapp_getinstalltype() { 101webapp_getinstalltype() {
82 debug-print-function $FUNCNAME $* 102 debug-print-function $FUNCNAME $*
83 103
84 if ! use vhosts; then 104 if ! has vhosts ${IUSE} || use vhosts; then
105 return
106 fi
107
85 local my_output 108 local my_output
86
87 my_output="$(webapp_check_installedat)" 109 my_output="$(webapp_check_installedat)"
88 110
89 if [[ $? -eq 0 ]]; then 111 if [[ $? -eq 0 ]]; then
90 # something is already installed there 112 # something is already installed there
91 # make sure it isn't the same version 113 # make sure it isn't the same version
92 114
93 local my_pn="$(echo ${my_output} | awk '{ print $1 }')" 115 local my_pn="$(echo ${my_output} | awk '{ print $1 }')"
94 local my_pvr="$(echo ${my_output} | awk '{ print $2 }')" 116 local my_pvr="$(echo ${my_output} | awk '{ print $2 }')"
95 117
96 REMOVE_PKG="${my_pn}-${my_pvr}" 118 REMOVE_PKG="${my_pn}-${my_pvr}"
97 119
98 if [[ "${my_pn}" == "${PN}" ]]; then 120 if [[ "${my_pn}" == "${PN}" ]]; then
99 if [[ "${my_pvr}" != "${PVR}" ]]; then 121 if [[ "${my_pvr}" != "${PVR}" ]]; then
100 elog "This is an upgrade" 122 elog "This is an upgrade"
101 IS_UPGRADE=1 123 IS_UPGRADE=1
102 else
103 elog "This is a re-installation"
104 IS_REPLACE=1
105 fi
106 else 124 else
107 elog "${my_output} is installed there" 125 elog "This is a re-installation"
126 IS_REPLACE=1
108 fi 127 fi
109 else 128 else
110 elog "This is an installation" 129 elog "${my_output} is installed there"
111 fi 130 fi
131 else
132 elog "This is an installation"
112 fi 133 fi
113} 134}
114 135
115# ============================================================================== 136# ==============================================================================
116# PUBLIC FUNCTIONS 137# PUBLIC FUNCTIONS
117# ============================================================================== 138# ==============================================================================
118 139
140# @FUNCTION: need_httpd
141# @DESCRIPTION:
142# Call this function AFTER your ebuilds DEPEND line if any of the available
143# webservers are able to run this application.
144need_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 ebuilds DEPEND line if any of the available
152# CGI-capable webservers are able to run this application.
153need_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 ebuilds DEPEND line if any of the available
161# FastCGI-capabale webservers are able to run this application.
162need_httpd_fastcgi() {
163 DEPEND="${DEPEND}
164 virtual/httpd-fastcgi"
165}
166
119# @FUNCTION: webapp_configfile 167# @FUNCTION: webapp_configfile
120# @USAGE: <file> [more files ...] 168# @USAGE: <file> [more files ...]
121# @DESCRIPTION: 169# @DESCRIPTION:
122# Mark a file config-protected for a web-based application. 170# Mark a file config-protected for a web-based application.
123webapp_configfile() { 171webapp_configfile() {
124 debug-print-function $FUNCNAME $* 172 debug-print-function $FUNCNAME $*
125 173
126 local m="" 174 local m
127 for m in "$@"; do 175 for m in "$@"; do
128 webapp_checkfileexists "${m}" "${D}" 176 webapp_checkfileexists "${m}" "${D}"
129 177
130 local MY_FILE="$(webapp_strip_appdir "${m}")" 178 local my_file="$(webapp_strip_appdir "${m}")"
131 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")" 179 my_file="$(webapp_strip_cwd "${my_file}")"
132 180
133 elog "(config) ${MY_FILE}" 181 elog "(config) ${my_file}"
134 echo "${MY_FILE}" >> ${D}/${WA_CONFIGLIST} 182 echo "${my_file}" >> ${D}/${WA_CONFIGLIST}
135 done 183 done
136} 184}
137 185
138# @FUNCTION: webapp_hook_script 186# @FUNCTION: webapp_hook_script
139# @USAGE: <file> 187# @USAGE: <file>
172 220
173 webapp_checkfileexists "${2}" 221 webapp_checkfileexists "${2}"
174 222
175 elog "(info) ${2} (lang: ${1})" 223 elog "(info) ${2} (lang: ${1})"
176 cp "${2}" "${D}/${MY_APPDIR}/postupgrade-${1}.txt" 224 cp "${2}" "${D}/${MY_APPDIR}/postupgrade-${1}.txt"
225}
226
227# 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}"
177} 237}
178 238
179# @FUNCTION: webapp_serverowned 239# @FUNCTION: webapp_serverowned
180# @USAGE: [-R] <file> [more files ...] 240# @USAGE: [-R] <file> [more files ...]
181# @DESCRIPTION: 241# @DESCRIPTION:
183# The ownership of the file is NOT set until the application is installed using 243# The ownership of the file is NOT set until the application is installed using
184# the webapp-config tool. If -R is given directories are handled recursively. 244# the webapp-config tool. If -R is given directories are handled recursively.
185webapp_serverowned() { 245webapp_serverowned() {
186 debug-print-function $FUNCNAME $* 246 debug-print-function $FUNCNAME $*
187 247
188 local a="" 248 local a m
189 local m=""
190 if [[ "${1}" == "-R" ]]; then 249 if [[ "${1}" == "-R" ]]; then
191 shift 250 shift
192 for m in "$@"; do 251 for m in "$@"; do
193 for a in $(find ${D}/${m}); do 252 find "${D}${m}" | while read a; do
194 a=${a/${D}\/\///}
195 webapp_checkfileexists "${a}" "$D"
196 local MY_FILE="$(webapp_strip_appdir "${a}")" 253 a=$(webapp_strip_d "${a}")
197 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")" 254 _webapp_serverowned "${a}"
198
199 elog "(server owned) ${MY_FILE}"
200 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
201 done 255 done
202 done 256 done
203 else 257 else
204 for m in "$@"; do 258 for m in "$@"; do
205 webapp_checkfileexists "${m}" "$D" 259 _webapp_serverowned "${m}"
206 local MY_FILE="$(webapp_strip_appdir "${m}")"
207 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
208
209 elog "(server owned) ${MY_FILE}"
210 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
211 done 260 done
212 fi 261 fi
213} 262}
214 263
215# @FUNCTION: webapp_server_configfile 264# @FUNCTION: webapp_server_configfile
245webapp_sqlscript() { 294webapp_sqlscript() {
246 debug-print-function $FUNCNAME $* 295 debug-print-function $FUNCNAME $*
247 296
248 webapp_checkfileexists "${2}" 297 webapp_checkfileexists "${2}"
249 298
250 if [[ ! -d "${D}/${MY_SQLSCRIPTSDIR}/${1}" ]]; then 299 dodir "${MY_SQLSCRIPTSDIR}/${1}"
251 mkdir -p "${D}/${MY_SQLSCRIPTSDIR}/${1}" || die "unable to create directory ${D}/${MY_SQLSCRIPTSDIR}/${1}"
252 fi
253 300
254 # WARNING: 301 # WARNING:
255 # 302 #
256 # do NOT change the naming convention used here without changing all 303 # do NOT change the naming convention used here without changing all
257 # the other scripts that also rely upon these names 304 # the other scripts that also rely upon these names
272# You need to call this function in src_install() BEFORE anything else has run. 319# You need to call this function in src_install() BEFORE anything else has run.
273# For now we just create required webapp-config directories. 320# For now we just create required webapp-config directories.
274webapp_src_preinst() { 321webapp_src_preinst() {
275 debug-print-function $FUNCNAME $* 322 debug-print-function $FUNCNAME $*
276 323
324 # 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 # Hint, see the webapp_read_config() function to find where these are
339 # defined.
277 dodir "${MY_HTDOCSDIR}" 340 dodir "${MY_HTDOCSDIR}"
278 dodir "${MY_HOSTROOTDIR}" 341 dodir "${MY_HOSTROOTDIR}"
279 dodir "${MY_CGIBINDIR}" 342 dodir "${MY_CGIBINDIR}"
280 dodir "${MY_ICONSDIR}" 343 dodir "${MY_ICONSDIR}"
281 dodir "${MY_ERRORSDIR}" 344 dodir "${MY_ERRORSDIR}"
286 349
287# ============================================================================== 350# ==============================================================================
288# EXPORTED FUNCTIONS 351# EXPORTED FUNCTIONS
289# ============================================================================== 352# ==============================================================================
290 353
291# @FUNCTION: webapp_src_install
292# @DESCRIPTION:
293# This is the default src_install(). For now, we just make sure that root owns
294# everything, and that there are no setuid files.
295#
296# You need to call this function AFTER everything else has run in your custom
297# src_install().
298webapp_src_install() {
299 debug-print-function $FUNCNAME $*
300
301 chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
302 chmod -R u-s "${D}/"
303 chmod -R g-s "${D}/"
304
305 keepdir "${MY_PERSISTDIR}"
306 fowners "root:0" "${MY_PERSISTDIR}"
307 fperms 755 "${MY_PERSISTDIR}"
308
309 # to test whether or not the ebuild has correctly called this function
310 # we add an empty file to the filesystem
311 #
312 # we used to just set a variable in the shell script, but we can
313 # no longer rely on Portage calling both webapp_src_install() and
314 # webapp_pkg_postinst() within the same shell process
315
316 touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
317}
318
319# @FUNCTION: webapp_pkg_setup 354# @FUNCTION: webapp_pkg_setup
320# @DESCRIPTION: 355# @DESCRIPTION:
321# The default pkg_setup() for this eclass. This will gather required variables 356# The default pkg_setup() for this eclass. This will gather required variables
322# from webapp-config and check if there is an application installed to 357# from webapp-config and check if there is an application installed to
323# `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set. 358# `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set.
325# You need to call this function BEFORE anything else has run in your custom 360# You need to call this function BEFORE anything else has run in your custom
326# pkg_setup(). 361# pkg_setup().
327webapp_pkg_setup() { 362webapp_pkg_setup() {
328 debug-print-function $FUNCNAME $* 363 debug-print-function $FUNCNAME $*
329 364
365 # 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
330 # special case - some ebuilds *do* need to overwride the SLOT 373 # special case - some ebuilds *do* need to overwride the SLOT
331 if [[ "${SLOT}+" != "${PVR}+" && "${WEBAPP_MANUAL_SLOT}" != "yes" ]]; then 374 if [[ "${SLOT}+" != "${PVR}+" && "${WEBAPP_MANUAL_SLOT}" != "yes" ]]; then
332 die "Set WEBAPP_MANUAL_SLOT=\"yes\" if you need to SLOT manually" 375 die "Set WEBAPP_MANUAL_SLOT=\"yes\" if you need to SLOT manually"
333 fi 376 fi
334 377
335 # pull in the shared configuration file 378 # pull in the shared configuration file
336 G_HOSTNAME="localhost" 379 G_HOSTNAME="localhost"
337 webapp_read_config 380 webapp_read_config
338 381
339 # are we installing a webapp-config solution over the top of a
340 # non-webapp-config solution?
341 if ! use vhosts; then
342 local my_dir="${ROOT}${VHOST_ROOT}/${MY_HTDOCSBASE}/${PN}" 382 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 if ! has vhosts ${IUSE} || use vhosts || [[ ! -d "${my_dir}" ]]; then
386 return
387 fi
388
343 local my_output 389 local my_output
344
345 if [[ -d "${my_dir}" ]]; then
346 my_output="$(webapp_check_installedat)" 390 my_output="$(webapp_check_installedat)"
347 391
348 if [[ $? -ne 0 ]]; then 392 if [[ $? -ne 0 ]]; then
349 # okay, whatever is there, it isn't webapp-config-compatible 393 # okay, whatever is there, it isn't webapp-config-compatible
394 echo
395 ewarn
350 ewarn "You already have something installed in ${my_dir}" 396 ewarn "You already have something installed in ${my_dir}"
351 ewarn 397 ewarn
352 ewarn "Whatever is in ${my_dir}, it's not" 398 ewarn "Whatever is in ${my_dir}, it's not"
353 ewarn "compatible with webapp-config." 399 ewarn "compatible with webapp-config."
354 ewarn 400 ewarn
355 ewarn "This ebuild may be overwriting important files." 401 ewarn "This ebuild may be overwriting important files."
356 ewarn 402 ewarn
403 echo
404 ebeep 10
357 elif [[ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]]; then 405 elif [[ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]]; then
358 eerror "${my_dir} contains ${my_output}" 406 echo
359 eerror "I cannot upgrade that" 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
360 die "Cannot upgrade contents of ${my_dir}" 412 die "Cannot upgrade contents of ${my_dir}"
361 fi
362 fi 413 fi
363 fi 414
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().
424webapp_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}"
364} 442}
365 443
366# @FUNCTION: webapp_pkg_postinst 444# @FUNCTION: webapp_pkg_postinst
367# @DESCRIPTION: 445# @DESCRIPTION:
368# The default pkg_postinst() for this eclass. This installs the web application to 446# The default pkg_postinst() for this eclass. This installs the web application to
388 eerror "installation is incomplete" 466 eerror "installation is incomplete"
389 eerror 467 eerror
390 die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org" 468 die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org"
391 fi 469 fi
392 470
471 if has vhosts ${IUSE}; then
393 if ! use vhosts; then 472 if ! use vhosts; then
394 echo 473 echo
395 elog "vhosts USE flag not set - auto-installing using webapp-config" 474 elog "vhosts USE flag not set - auto-installing using webapp-config"
396 475
397 webapp_getinstalltype
398
399 G_HOSTNAME="localhost" 476 G_HOSTNAME="localhost"
400 local my_mode=-I
401 webapp_read_config 477 webapp_read_config
402 478
479 local my_mode=-I
480 webapp_getinstalltype
481
403 if [[ "${IS_REPLACE}" == "1" ]]; then 482 if [[ "${IS_REPLACE}" == "1" ]]; then
404 elog "${PN}-${PVR} is already installed - replacing" 483 elog "${PN}-${PVR} is already installed - replacing"
405 my_mode=-I 484 my_mode=-I
406 elif [[ "${IS_UPGRADE}" == "1" ]]; then 485 elif [[ "${IS_UPGRADE}" == "1" ]]; then
407 elog "${REMOVE_PKG} is already installed - upgrading" 486 elog "${REMOVE_PKG} is already installed - upgrading"
408 my_mode=-U 487 my_mode=-U
488 else
489 elog "${PN}-${PVR} is not installed - using install mode"
490 fi
491
492 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}
409 else 500 else
410 elog "${PN}-${PVR} is not installed - using install mode" 501 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"
411 fi 511 fi
412
413 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
414 elog "Running ${my_cmd}"
415 ${my_cmd}
416
417 echo
418 local cleaner="${WEBAPP_CLEANER} -p -C ${PN}"
419 einfo "Running ${cleaner}"
420 ${cleaner}
421 else 512 else
422 elog 513 elog
423 elog "The 'vhosts' USE flag is switched ON" 514 elog "This ebuild does not support the 'vhosts' USE flag."
424 elog "This means that Portage will not automatically run webapp-config to" 515 elog "This means that Portage will not automatically run webapp-config to"
425 elog "complete the installation." 516 elog "complete the installation."
426 elog 517 elog
427 elog "To install ${PN}-${PVR} into a virtual host, run the following command:" 518 elog "To install ${PN}-${PVR} into a virtual host, run the following command:"
428 elog 519 elog
443 local my_output= 534 local my_output=
444 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})" 535 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})"
445 [[ $? -ne 0 ]] && return 536 [[ $? -ne 0 ]] && return
446 537
447 local x 538 local x
448 if ! use vhosts; then 539 if has vhosts ${IUSE} && ! use vhosts; then
449 540 echo "${my_output}" | while read x; do
450 for x in ${my_output}; do 541 if [[ -f "${x}"/.webapp ]]; then
451 [[ -f ${x}/.webapp ]] && . ${x}/.webapp || ewarn "Cannot find file ${x}/.webapp" 542 . "${x}"/.webapp
452 if [[ -n "${WEB_HOSTNAME}" && -n "${WEB_INSTALLDIR}" ]]; then 543 if [[ -n "${WEB_HOSTNAME}" && -n "${WEB_INSTALLDIR}" ]]; then
453 ${WEBAPP_CONFIG} -C -h ${WEB_HOSTNAME} -d ${WEB_INSTALLDIR} 544 ${WEBAPP_CONFIG} -C -h ${WEB_HOSTNAME} -d ${WEB_INSTALLDIR}
545 fi
546 else
547 ewarn "Cannot find file ${x}/.webapp"
454 fi 548 fi
455 done 549 done
456 else 550 elif [[ "${my_output}" != "" ]]; then
457 551 echo
552 ewarn
458 ewarn "Don't forget to use webapp-config to remove any copies of" 553 ewarn "Don't forget to use webapp-config to remove any copies of"
459 ewarn "${PN}-${PVR} installed in" 554 ewarn "${PN}-${PVR} installed in"
460 ewarn 555 ewarn
461 556
462 for x in ${my_output}; do 557 echo "${my_output}" | while read x; do
463 [[ -f ${x}/.webapp ]] && . ${x}/.webapp || ewarn "Cannot find file ${x}/.webapp" 558 if [[ -f "${x}"/.webapp ]]; then
464 ewarn " ${x}" 559 ewarn " ${x}"
560 else
561 ewarn "Cannot find file ${x}/.webapp"
562 fi
465 done 563 done
564
565 ewarn
566 echo
466 fi 567 fi
467} 568}

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.66

  ViewVC Help
Powered by ViewVC 1.1.20