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

Contents of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.72 - (hide annotations) (download)
Wed Jul 18 14:59:29 2012 UTC (2 years, 4 months ago) by blueness
Branch: MAIN
CVS Tags: HEAD
Changes since 1.71: +2 -2 lines
Don't ebeep at even EAPI=3, bug #386555.

1 fauli 1.70 # Copyright 1999-2011 Gentoo Foundation
2 stuart 1.1 # Distributed under the terms of the GNU General Public License v2
3 blueness 1.72 # $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.71 2012/07/15 22:45:12 cardoe 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 blueness 1.72 if has "${EAPI:-0}" 0 1 2; then
417 cardoe 1.71 ebeep 10
418     fi
419 hollow 1.54 elif [[ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]]; then
420 hollow 1.55 echo
421     eerror "You already have ${my_output} installed in ${my_dir}"
422     eerror
423     eerror "I cannot upgrade a different application"
424     eerror
425     echo
426 hollow 1.54 die "Cannot upgrade contents of ${my_dir}"
427 stuart 1.18 fi
428 scarabeus 1.66
429 hollow 1.57 }
430    
431     # @FUNCTION: webapp_src_install
432     # @DESCRIPTION:
433     # This is the default src_install(). For now, we just make sure that root owns
434     # everything, and that there are no setuid files.
435     #
436     # You need to call this function AFTER everything else has run in your custom
437     # src_install().
438     webapp_src_install() {
439     debug-print-function $FUNCNAME $*
440    
441     # to test whether or not the ebuild has correctly called this function
442     # we add an empty file to the filesystem
443     #
444     # we used to just set a variable in the shell script, but we can
445     # no longer rely on Portage calling both webapp_src_install() and
446     # webapp_pkg_postinst() within the same shell process
447     touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
448    
449     chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
450     chmod -R u-s "${D}/"
451     chmod -R g-s "${D}/"
452    
453     keepdir "${MY_PERSISTDIR}"
454     fowners "root:0" "${MY_PERSISTDIR}"
455     fperms 755 "${MY_PERSISTDIR}"
456 stuart 1.14 }
457 stuart 1.6
458 hollow 1.50 # @FUNCTION: webapp_pkg_postinst
459     # @DESCRIPTION:
460     # The default pkg_postinst() for this eclass. This installs the web application to
461     # `${ROOT}/var/www/localhost/htdocs/${PN}/' if USE=vhosts is not set. Otherwise
462     # display a short notice how to install this application with webapp-config.
463     #
464     # You need to call this function AFTER everything else has run in your custom
465     # pkg_postinst().
466 hollow 1.49 webapp_pkg_postinst() {
467 hollow 1.51 debug-print-function $FUNCNAME $*
468    
469 stuart 1.37 webapp_read_config
470 stuart 1.21
471 stuart 1.15 # sanity checks, to catch bugs in the ebuild
472 hollow 1.53 if [[ ! -f "${ROOT}${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]]; then
473 stuart 1.15 eerror
474     eerror "This ebuild did not call webapp_src_install() at the end"
475     eerror "of the src_install() function"
476     eerror
477     eerror "Please log a bug on http://bugs.gentoo.org"
478     eerror
479     eerror "You should use emerge -C to remove this package, as the"
480     eerror "installation is incomplete"
481     eerror
482     die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org"
483     fi
484    
485 hollow 1.59 if has vhosts ${IUSE}; then
486     if ! use vhosts; then
487     echo
488     elog "vhosts USE flag not set - auto-installing using webapp-config"
489    
490     G_HOSTNAME="localhost"
491     webapp_read_config
492    
493     local my_mode=-I
494     webapp_getinstalltype
495    
496 scarabeus 1.66 if [[ "${IS_REPLACE}" == "1" ]]; then
497     elog "${PN}-${PVR} is already installed - replacing"
498     my_mode=-I
499     elif [[ "${IS_UPGRADE}" == "1" ]]; then
500     elog "${REMOVE_PKG} is already installed - upgrading"
501 hollow 1.59 my_mode=-U
502     else
503 scarabeus 1.66 elog "${PN}-${PVR} is not installed - using install mode"
504 hollow 1.59 fi
505 stuart 1.10
506 hollow 1.59 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
507 scarabeus 1.66 elog "Running ${my_cmd}"
508 hollow 1.59 ${my_cmd}
509    
510     echo
511 lxnay 1.69 local cleaner="${WEBAPP_CLEANER} -p -C /${PN}"
512 scarabeus 1.66 einfo "Running ${cleaner}"
513 hollow 1.59 ${cleaner}
514 stuart 1.11 else
515 hollow 1.59 elog
516     elog "The 'vhosts' USE flag is switched ON"
517     elog "This means that Portage will not automatically run webapp-config to"
518     elog "complete the installation."
519     elog
520     elog "To install ${PN}-${PVR} into a virtual host, run the following command:"
521     elog
522     elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
523     elog
524     elog "For more details, see the webapp-config(8) man page"
525 stuart 1.10 fi
526 stuart 1.18 else
527 rl03 1.43 elog
528 hollow 1.59 elog "This ebuild does not support the 'vhosts' USE flag."
529 rl03 1.43 elog "This means that Portage will not automatically run webapp-config to"
530     elog "complete the installation."
531     elog
532     elog "To install ${PN}-${PVR} into a virtual host, run the following command:"
533     elog
534     elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
535     elog
536     elog "For more details, see the webapp-config(8) man page"
537 stuart 1.10 fi
538 stuart 1.2 }
539 stuart 1.18
540 hollow 1.50 # @FUNCTION: webapp_pkg_prerm
541     # @DESCRIPTION:
542     # This is the default pkg_prerm() for this eclass. If USE=vhosts is not set
543     # remove all installed copies of this web application. Otherwise instruct the
544 hollow 1.51 # user to manually remove those copies. See bug #136959.
545 hollow 1.49 webapp_pkg_prerm() {
546 hollow 1.51 debug-print-function $FUNCNAME $*
547 stuart 1.18
548 hollow 1.53 local my_output=
549 stuart 1.37 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})"
550 hollow 1.53 [[ $? -ne 0 ]] && return
551 stuart 1.18
552 hollow 1.53 local x
553 hollow 1.59 if has vhosts ${IUSE} && ! use vhosts; then
554 hollow 1.56 echo "${my_output}" | while read x; do
555     if [[ -f "${x}"/.webapp ]]; then
556     . "${x}"/.webapp
557     if [[ -n "${WEB_HOSTNAME}" && -n "${WEB_INSTALLDIR}" ]]; then
558 lxnay 1.67 ${WEBAPP_CONFIG} -C -h ${WEB_HOSTNAME} -d ${WEB_INSTALLDIR} ${PN} ${PVR}
559 hollow 1.56 fi
560     else
561 scarabeus 1.66 ewarn "Cannot find file ${x}/.webapp"
562 rl03 1.48 fi
563     done
564 scarabeus 1.66 elif [[ "${my_output}" != "" ]]; then
565 hollow 1.56 echo
566     ewarn
567 rl03 1.48 ewarn "Don't forget to use webapp-config to remove any copies of"
568     ewarn "${PN}-${PVR} installed in"
569     ewarn
570 stuart 1.18
571 hollow 1.56 echo "${my_output}" | while read x; do
572     if [[ -f "${x}"/.webapp ]]; then
573 scarabeus 1.66 ewarn " ${x}"
574 hollow 1.56 else
575 scarabeus 1.66 ewarn "Cannot find file ${x}/.webapp"
576 hollow 1.56 fi
577 rl03 1.48 done
578 hollow 1.56
579     ewarn
580     echo
581 rl03 1.48 fi
582 stuart 1.18 }

  ViewVC Help
Powered by ViewVC 1.1.20