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

Diff of /eclass/webapp.eclass

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

Revision 1.51 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.51 2008/02/22 13:44:41 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
46 66
47# Check whether a specified file exists in the given directory (`.' by default) 67# Check whether a specified file exists in the given directory (`.' by default)
48webapp_checkfileexists() { 68webapp_checkfileexists() {
49 debug-print-function $FUNCNAME $* 69 debug-print-function $FUNCNAME $*
50 70
51 local my_prefix 71 local my_prefix=${2:+${2}/}
52 72
53 [ -n "${2}" ] && my_prefix="${2}/" || my_prefix=
54
55 if [ ! -e "${my_prefix}${1}" ]; then 73 if [[ ! -e "${my_prefix}${1}" ]]; then
56 msg="ebuild fault: file '${1}' not found" 74 msg="ebuild fault: file '${1}' not found"
57 eerror "$msg" 75 eerror "$msg"
58 eerror "Please report this as a bug at http://bugs.gentoo.org/" 76 eerror "Please report this as a bug at http://bugs.gentoo.org/"
59 die "$msg" 77 die "$msg"
60 fi 78 fi
65 ${WEBAPP_CONFIG} --show-installed -h localhost -d "${INSTALL_DIR}" 2> /dev/null 83 ${WEBAPP_CONFIG} --show-installed -h localhost -d "${INSTALL_DIR}" 2> /dev/null
66} 84}
67 85
68webapp_strip_appdir() { 86webapp_strip_appdir() {
69 debug-print-function $FUNCNAME $* 87 debug-print-function $FUNCNAME $*
70 echo "${1}" | sed -e "s|${MY_APPDIR}/||g;" 88 echo "${1#${MY_APPDIR}/}"
71} 89}
72 90
73webapp_strip_d() { 91webapp_strip_d() {
74 debug-print-function $FUNCNAME $* 92 debug-print-function $FUNCNAME $*
75 echo "${1}" | sed -e "s|${D}||g;" 93 echo "${1#${D}}"
76} 94}
77 95
78webapp_strip_cwd() { 96webapp_strip_cwd() {
79 debug-print-function $FUNCNAME $* 97 debug-print-function $FUNCNAME $*
80 echo "${1}" | sed -e 's|/./|/|g;' 98 echo "${1/#.\///}"
81} 99}
82 100
83webapp_getinstalltype() { 101webapp_getinstalltype() {
84 debug-print-function $FUNCNAME $* 102 debug-print-function $FUNCNAME $*
85 103
86 if ! use vhosts ; then 104 if ! has vhosts ${IUSE} || use vhosts; then
105 return
106 fi
107
87 local my_output 108 local my_output
88
89 my_output="$(webapp_check_installedat)" 109 my_output="$(webapp_check_installedat)"
90 110
91 if [ "${?}" = "0" ] ; then 111 if [[ $? -eq 0 ]]; then
92 # something is already installed there 112 # something is already installed there
93 # make sure it isn't the same version 113 # make sure it isn't the same version
94 114
95 local my_pn="$(echo ${my_output} | awk '{ print $1 }')" 115 local my_pn="$(echo ${my_output} | awk '{ print $1 }')"
96 local my_pvr="$(echo ${my_output} | awk '{ print $2 }')" 116 local my_pvr="$(echo ${my_output} | awk '{ print $2 }')"
97 117
98 REMOVE_PKG="${my_pn}-${my_pvr}" 118 REMOVE_PKG="${my_pn}-${my_pvr}"
99 119
100 if [ "${my_pn}" == "${PN}" ]; then 120 if [[ "${my_pn}" == "${PN}" ]]; then
101 if [ "${my_pvr}" != "${PVR}" ]; then 121 if [[ "${my_pvr}" != "${PVR}" ]]; then
102 elog "This is an upgrade" 122 elog "This is an upgrade"
103 IS_UPGRADE=1 123 IS_UPGRADE=1
104 else
105 elog "This is a re-installation"
106 IS_REPLACE=1
107 fi
108 else 124 else
109 elog "${my_output} is installed there" 125 elog "This is a re-installation"
126 IS_REPLACE=1
110 fi 127 fi
111 else 128 else
112 elog "This is an installation" 129 elog "${my_output} is installed there"
113 fi 130 fi
131 else
132 elog "This is an installation"
114 fi 133 fi
115} 134}
116 135
117# ============================================================================== 136# ==============================================================================
118# PUBLIC FUNCTIONS 137# PUBLIC FUNCTIONS
119# ============================================================================== 138# ==============================================================================
120 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
121# @FUNCTION: webapp_configfile 167# @FUNCTION: webapp_configfile
122# @USAGE: <file> [more files ...] 168# @USAGE: <file> [more files ...]
123# @DESCRIPTION: 169# @DESCRIPTION:
124# Mark a file config-protected for a web-based application. 170# Mark a file config-protected for a web-based application.
125webapp_configfile() { 171webapp_configfile() {
126 debug-print-function $FUNCNAME $* 172 debug-print-function $FUNCNAME $*
127 173
128 local m="" 174 local m
129 for m in "$@" ; do 175 for m in "$@"; do
130 webapp_checkfileexists "${m}" "${D}" 176 webapp_checkfileexists "${m}" "${D}"
131 177
132 local MY_FILE="$(webapp_strip_appdir "${m}")" 178 local my_file="$(webapp_strip_appdir "${m}")"
133 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")" 179 my_file="$(webapp_strip_cwd "${my_file}")"
134 180
135 elog "(config) ${MY_FILE}" 181 elog "(config) ${my_file}"
136 echo "${MY_FILE}" >> ${D}/${WA_CONFIGLIST} 182 echo "${my_file}" >> ${D}/${WA_CONFIGLIST}
137 done 183 done
138} 184}
139 185
140# @FUNCTION: webapp_hook_script 186# @FUNCTION: webapp_hook_script
141# @USAGE: <file> 187# @USAGE: <file>
174 220
175 webapp_checkfileexists "${2}" 221 webapp_checkfileexists "${2}"
176 222
177 elog "(info) ${2} (lang: ${1})" 223 elog "(info) ${2} (lang: ${1})"
178 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}"
179} 237}
180 238
181# @FUNCTION: webapp_serverowned 239# @FUNCTION: webapp_serverowned
182# @USAGE: [-R] <file> [more files ...] 240# @USAGE: [-R] <file> [more files ...]
183# @DESCRIPTION: 241# @DESCRIPTION:
185# 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
186# 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.
187webapp_serverowned() { 245webapp_serverowned() {
188 debug-print-function $FUNCNAME $* 246 debug-print-function $FUNCNAME $*
189 247
190 local a="" 248 local a m
191 local m=""
192 if [ "${1}" = "-R" ]; then 249 if [[ "${1}" == "-R" ]]; then
193 shift 250 shift
194 for m in "$@" ; do 251 for m in "$@"; do
195 for a in $(find ${D}/${m}); do 252 find "${D}${m}" | while read a; do
196 a=${a/${D}\/\///}
197 webapp_checkfileexists "${a}" "$D"
198 local MY_FILE="$(webapp_strip_appdir "${a}")" 253 a=$(webapp_strip_d "${a}")
199 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")" 254 _webapp_serverowned "${a}"
200
201 elog "(server owned) ${MY_FILE}"
202 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
203 done 255 done
204 done 256 done
205 else 257 else
206 for m in "$@" ; do 258 for m in "$@"; do
207 webapp_checkfileexists "${m}" "$D" 259 _webapp_serverowned "${m}"
208 local MY_FILE="$(webapp_strip_appdir "${m}")"
209 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
210
211 elog "(server owned) ${MY_FILE}"
212 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
213 done 260 done
214 fi 261 fi
215} 262}
216 263
217# @FUNCTION: webapp_server_configfile 264# @FUNCTION: webapp_server_configfile
229 # WARNING: 276 # WARNING:
230 # 277 #
231 # do NOT change the naming convention used here without changing all 278 # do NOT change the naming convention used here without changing all
232 # the other scripts that also rely upon these names 279 # the other scripts that also rely upon these names
233 280
234 local my_file
235 if [ -z "${3}" ]; then
236 my_file="${1}-$(basename "${2}")" 281 local my_file="${1}-${3:-$(basename "${2}")}"
237 else
238 my_file="${1}-${3}"
239 fi
240 282
241 elog "(${1}) config file '${my_file}'" 283 elog "(${1}) config file '${my_file}'"
242 cp "${2}" "${D}/${MY_SERVERCONFIGDIR}/${my_file}" 284 cp "${2}" "${D}/${MY_SERVERCONFIGDIR}/${my_file}"
243} 285}
244 286
252webapp_sqlscript() { 294webapp_sqlscript() {
253 debug-print-function $FUNCNAME $* 295 debug-print-function $FUNCNAME $*
254 296
255 webapp_checkfileexists "${2}" 297 webapp_checkfileexists "${2}"
256 298
257 if [ ! -d "${D}/${MY_SQLSCRIPTSDIR}/${1}" ]; then 299 dodir "${MY_SQLSCRIPTSDIR}/${1}"
258 mkdir -p "${D}/${MY_SQLSCRIPTSDIR}/${1}" || die "unable to create directory ${D}/${MY_SQLSCRIPTSDIR}/${1}"
259 fi
260 300
261 # WARNING: 301 # WARNING:
262 # 302 #
263 # do NOT change the naming convention used here without changing all 303 # do NOT change the naming convention used here without changing all
264 # the other scripts that also rely upon these names 304 # the other scripts that also rely upon these names
265 305
266 if [ -n "${3}" ]; then 306 if [[ -n "${3}" ]]; then
267 elog "(${1}) upgrade script from ${PN}-${PVR} to ${3}" 307 elog "(${1}) upgrade script for ${PN}-${3} to ${PVR}"
268 cp "${2}" "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql" 308 cp "${2}" "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql"
269 chmod 600 "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql" 309 chmod 600 "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql"
270 else 310 else
271 elog "(${1}) create script for ${PN}-${PVR}" 311 elog "(${1}) create script for ${PN}-${PVR}"
272 cp "${2}" "${D}/${MY_SQLSCRIPTSDIR}/${1}/${PVR}_create.sql" 312 cp "${2}" "${D}/${MY_SQLSCRIPTSDIR}/${1}/${PVR}_create.sql"
279# 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.
280# For now we just create required webapp-config directories. 320# For now we just create required webapp-config directories.
281webapp_src_preinst() { 321webapp_src_preinst() {
282 debug-print-function $FUNCNAME $* 322 debug-print-function $FUNCNAME $*
283 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.
284 dodir "${MY_HTDOCSDIR}" 340 dodir "${MY_HTDOCSDIR}"
285 dodir "${MY_HOSTROOTDIR}" 341 dodir "${MY_HOSTROOTDIR}"
286 dodir "${MY_CGIBINDIR}" 342 dodir "${MY_CGIBINDIR}"
287 dodir "${MY_ICONSDIR}" 343 dodir "${MY_ICONSDIR}"
288 dodir "${MY_ERRORSDIR}" 344 dodir "${MY_ERRORSDIR}"
293 349
294# ============================================================================== 350# ==============================================================================
295# EXPORTED FUNCTIONS 351# EXPORTED FUNCTIONS
296# ============================================================================== 352# ==============================================================================
297 353
298# @FUNCTION: webapp_src_install
299# @DESCRIPTION:
300# This is the default src_install(). For now, we just make sure that root owns
301# everything, and that there are no setuid files.
302#
303# You need to call this function AFTER everything else has run in your custom
304# src_install().
305webapp_src_install() {
306 debug-print-function $FUNCNAME $*
307
308 chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
309 chmod -R u-s "${D}/"
310 chmod -R g-s "${D}/"
311
312 keepdir "${MY_PERSISTDIR}"
313 fowners "root:0" "${MY_PERSISTDIR}"
314 fperms 755 "${MY_PERSISTDIR}"
315
316 # to test whether or not the ebuild has correctly called this function
317 # we add an empty file to the filesystem
318 #
319 # we used to just set a variable in the shell script, but we can
320 # no longer rely on Portage calling both webapp_src_install() and
321 # webapp_pkg_postinst() within the same shell process
322
323 touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
324}
325
326# @FUNCTION: webapp_pkg_setup 354# @FUNCTION: webapp_pkg_setup
327# @DESCRIPTION: 355# @DESCRIPTION:
328# 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
329# 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
330# `${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.
332# 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
333# pkg_setup(). 361# pkg_setup().
334webapp_pkg_setup() { 362webapp_pkg_setup() {
335 debug-print-function $FUNCNAME $* 363 debug-print-function $FUNCNAME $*
336 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
337 # special case - some ebuilds *do* need to overwride the SLOT 373 # special case - some ebuilds *do* need to overwride the SLOT
338 if [[ "${SLOT}+" != "${PVR}+" && "${WEBAPP_MANUAL_SLOT}" != "yes" ]]; then 374 if [[ "${SLOT}+" != "${PVR}+" && "${WEBAPP_MANUAL_SLOT}" != "yes" ]]; then
339 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"
340 fi 376 fi
341 377
342 # pull in the shared configuration file 378 # pull in the shared configuration file
343 G_HOSTNAME="localhost" 379 G_HOSTNAME="localhost"
344 webapp_read_config 380 webapp_read_config
345 381
346 # are we installing a webapp-config solution over the top of a
347 # non-webapp-config solution?
348 if ! use vhosts ; then
349 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
350 local my_output 389 local my_output
351
352 if [ -d "${my_dir}" ] ; then
353 my_output="$(webapp_check_installedat)" 390 my_output="$(webapp_check_installedat)"
354 391
355 if [ "$?" != "0" ]; then 392 if [[ $? -ne 0 ]]; then
356 # 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
357 ewarn "You already have something installed in ${my_dir}" 396 ewarn "You already have something installed in ${my_dir}"
358 ewarn 397 ewarn
359 ewarn "Whatever is in ${my_dir}, it's not" 398 ewarn "Whatever is in ${my_dir}, it's not"
360 ewarn "compatible with webapp-config." 399 ewarn "compatible with webapp-config."
361 ewarn 400 ewarn
362 ewarn "This ebuild may be overwriting important files." 401 ewarn "This ebuild may be overwriting important files."
363 ewarn 402 ewarn
403 echo
404 ebeep 10
364 elif [ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]; then 405 elif [[ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]]; then
365 eerror "${my_dir} contains ${my_output}" 406 echo
366 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
367 die "Cannot upgrade contents of ${my_dir}" 412 die "Cannot upgrade contents of ${my_dir}"
368 fi
369 fi 413 fi
370 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}"
371} 442}
372 443
373# @FUNCTION: webapp_pkg_postinst 444# @FUNCTION: webapp_pkg_postinst
374# @DESCRIPTION: 445# @DESCRIPTION:
375# 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
382 debug-print-function $FUNCNAME $* 453 debug-print-function $FUNCNAME $*
383 454
384 webapp_read_config 455 webapp_read_config
385 456
386 # sanity checks, to catch bugs in the ebuild 457 # sanity checks, to catch bugs in the ebuild
387 if [ ! -f "${ROOT}${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]; then 458 if [[ ! -f "${ROOT}${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]]; then
388 eerror 459 eerror
389 eerror "This ebuild did not call webapp_src_install() at the end" 460 eerror "This ebuild did not call webapp_src_install() at the end"
390 eerror "of the src_install() function" 461 eerror "of the src_install() function"
391 eerror 462 eerror
392 eerror "Please log a bug on http://bugs.gentoo.org" 463 eerror "Please log a bug on http://bugs.gentoo.org"
395 eerror "installation is incomplete" 466 eerror "installation is incomplete"
396 eerror 467 eerror
397 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"
398 fi 469 fi
399 470
471 if has vhosts ${IUSE}; then
400 if ! use vhosts ; then 472 if ! use vhosts; then
401 echo 473 echo
402 elog "vhosts USE flag not set - auto-installing using webapp-config" 474 elog "vhosts USE flag not set - auto-installing using webapp-config"
403 475
404 webapp_getinstalltype
405
406 G_HOSTNAME="localhost" 476 G_HOSTNAME="localhost"
407 local my_mode=-I
408 webapp_read_config 477 webapp_read_config
409 478
479 local my_mode=-I
480 webapp_getinstalltype
481
410 if [ "${IS_REPLACE}" = "1" ]; then 482 if [[ "${IS_REPLACE}" == "1" ]]; then
411 elog "${PN}-${PVR} is already installed - replacing" 483 elog "${PN}-${PVR} is already installed - replacing"
412 my_mode=-I 484 my_mode=-I
413 elif [ "${IS_UPGRADE}" = "1" ]; then 485 elif [[ "${IS_UPGRADE}" == "1" ]]; then
414 elog "${REMOVE_PKG} is already installed - upgrading" 486 elog "${REMOVE_PKG} is already installed - upgrading"
415 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}
416 else 500 else
417 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"
418 fi 511 fi
419
420 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
421 elog "Running ${my_cmd}"
422 ${my_cmd}
423
424 echo
425 local cleaner="${WEBAPP_CLEANER} -p -C ${PN}"
426 einfo "Running ${cleaner}"
427 ${cleaner}
428 else 512 else
429 elog 513 elog
430 elog "The 'vhosts' USE flag is switched ON" 514 elog "This ebuild does not support the 'vhosts' USE flag."
431 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"
432 elog "complete the installation." 516 elog "complete the installation."
433 elog 517 elog
434 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:"
435 elog 519 elog
436 elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}" 520 elog " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
437 elog 521 elog
438 elog "For more details, see the webapp-config(8) man page" 522 elog "For more details, see the webapp-config(8) man page"
439 fi 523 fi
440
441 return 0
442} 524}
443 525
444# @FUNCTION: webapp_pkg_prerm 526# @FUNCTION: webapp_pkg_prerm
445# @DESCRIPTION: 527# @DESCRIPTION:
446# This is the default pkg_prerm() for this eclass. If USE=vhosts is not set 528# This is the default pkg_prerm() for this eclass. If USE=vhosts is not set
447# remove all installed copies of this web application. Otherwise instruct the 529# remove all installed copies of this web application. Otherwise instruct the
448# user to manually remove those copies. See bug #136959. 530# user to manually remove those copies. See bug #136959.
449webapp_pkg_prerm() { 531webapp_pkg_prerm() {
450 debug-print-function $FUNCNAME $* 532 debug-print-function $FUNCNAME $*
451 533
452 local my_output 534 local my_output=
535 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})"
536 [[ $? -ne 0 ]] && return
537
453 local x 538 local x
454 539 if has vhosts ${IUSE} && ! use vhosts; then
455 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})" 540 echo "${my_output}" | while read x; do
456 541 if [[ -f "${x}"/.webapp ]]; then
457 if [ "${?}" != "0" ]; then 542 . "${x}"/.webapp
458 return
459 fi
460
461 if ! use vhosts ; then
462
463 for x in ${my_output} ; do
464 [ -f ${x}/.webapp ] && . ${x}/.webapp || ewarn "Cannot find file ${x}/.webapp"
465 if [ "${WEB_HOSTNAME}" -a "${WEB_INSTALLDIR}" ]; then 543 if [[ -n "${WEB_HOSTNAME}" && -n "${WEB_INSTALLDIR}" ]]; then
466 ${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"
467 fi 548 fi
468 done 549 done
469 else 550 elif [[ "${my_output}" != "" ]]; then
470 551 echo
552 ewarn
471 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"
472 ewarn "${PN}-${PVR} installed in" 554 ewarn "${PN}-${PVR} installed in"
473 ewarn 555 ewarn
474 556
475 for x in ${my_output} ; do 557 echo "${my_output}" | while read x; do
476 [ -f ${x}/.webapp ] && . ${x}/.webapp || ewarn "Cannot find file ${x}/.webapp" 558 if [[ -f "${x}"/.webapp ]]; then
477 ewarn " ${x}" 559 ewarn " ${x}"
560 else
561 ewarn "Cannot find file ${x}/.webapp"
562 fi
478 done 563 done
564
565 ewarn
566 echo
479 fi 567 fi
480} 568}

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

  ViewVC Help
Powered by ViewVC 1.1.20