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

Contents of /eclass/webapp.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.65 - (hide annotations) (download)
Thu May 19 12:03:41 2011 UTC (3 years, 2 months ago) by scarabeus
Branch: MAIN
Changes since 1.64: +104 -73 lines
Add EGIT_PROJECT variable that allows us to specify folder where to check out the git repository.

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

  ViewVC Help
Powered by ViewVC 1.1.20