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

Contents of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.69 - (hide annotations) (download)
Wed Jul 27 07:50:39 2011 UTC (3 years, 1 month ago) by lxnay
Branch: MAIN
Changes since 1.68: +2 -2 lines
fix webapp-cleaner usage by eclass

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

  ViewVC Help
Powered by ViewVC 1.1.20