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

Diff of /eclass/webapp.eclass

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

Revision 1.9 Revision 1.41
1# Copyright 1999-2003 Gentoo Technologies, Inc. 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.9 2004/04/23 22:02:27 stuart Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.41 2006/05/19 19:24:21 flameeyes Exp $
4# 4#
5# eclass/webapp.eclass 5# eclass/webapp.eclass
6# Eclass for installing applications to run under a web server 6# Eclass for installing applications to run under a web server
7# 7#
8# Part of the implementation of GLEP #11 8# Part of the implementation of GLEP #11
9# 9#
10# Author(s) Stuart Herbert <stuart@gentoo.org> 10# Author(s) Stuart Herbert <stuart@gentoo.org>
11# Renat Lumpau <rl03@gentoo.org>
12# Gunnar Wrobel <wrobel@gentoo.org>
11# 13#
12# ------------------------------------------------------------------------ 14# ------------------------------------------------------------------------
13# 15#
14# Please do not make modifications to this file without checking with a 16# The master copy of this eclass is held in our subversion repository.
15# member of the web-apps herd first! 17# http://svn.gnqs.org/projects/vhost-tools/browser/
16# 18#
19# If you make changes to this file and don't tell us, chances are that
20# your changes will be overwritten the next time we release a new version
21# of webapp-config.
22#
17# ------------------------------------------------------------------------ 23# ------------------------------------------------------------------------
18 24
19ECLASS=webapp
20INHERITED="$INHERITED $ECLASS"
21SLOT="${PVR}" 25SLOT="${PVR}"
22IUSE="$IUSE vhosts" 26IUSE="vhosts"
23DEPEND="$DEPEND >=net-www/webapp-config-1.4" 27DEPEND="app-admin/webapp-config"
28RDEPEND="${DEPEND}"
24 29
25EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install 30EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install pkg_prerm
31
32INSTALL_DIR="/${PN}"
33IS_UPGRADE=0
34IS_REPLACE=0
35
36INSTALL_CHECK_FILE="installed_by_webapp_eclass"
37
38ETC_CONFIG="${ROOT}/etc/vhosts/webapp-config"
39WEBAPP_CONFIG="${ROOT}/usr/sbin/webapp-config"
40
41# ------------------------------------------------------------------------
42# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
43#
44# Load the config file /etc/vhosts/webapp-config
45#
46# Supports both the old bash version, and the new python version
47#
48# ------------------------------------------------------------------------
49
50function webapp_read_config ()
51{
52 if has_version '>=app-admin/webapp-config-1.50'; then
53 ENVVAR=$(${WEBAPP_CONFIG} --query ${PN} ${PVR}) || die "Could not read settings from webapp-config!"
54 eval ${ENVVAR}
55 else
56 . ${ETC_CONFIG} || die "Unable to read ${ETC_CONFIG}"
57 fi
58}
26 59
27# ------------------------------------------------------------------------ 60# ------------------------------------------------------------------------
28# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY 61# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
29# 62#
30# Check whether a specified file exists within the image/ directory 63# Check whether a specified file exists within the image/ directory
37 70
38function webapp_checkfileexists () 71function webapp_checkfileexists ()
39{ 72{
40 local my_prefix 73 local my_prefix
41 74
42 [ -n "$2" ] && my_prefix="$2/" || my_prefix= 75 [ -n "${2}" ] && my_prefix="${2}/" || my_prefix=
43 76
44 if [ ! -e ${my_prefix}$1 ]; then 77 if [ ! -e "${my_prefix}${1}" ]; then
45 msg="ebuild fault: file $1 not found" 78 msg="ebuild fault: file '${1}' not found"
46 eerror "$msg" 79 eerror "$msg"
47 eerror "Please report this as a bug at http://bugs.gentoo.org/" 80 eerror "Please report this as a bug at http://bugs.gentoo.org/"
48 die "$msg" 81 die "$msg"
49 fi 82 fi
50} 83}
51 84
52# ------------------------------------------------------------------------ 85# ------------------------------------------------------------------------
53# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY 86# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
54# ------------------------------------------------------------------------ 87# ------------------------------------------------------------------------
55 88
56function webapp_import_config () 89function webapp_check_installedat
57{ 90{
58 if [ -z "${MY_HTDOCSDIR}" ]; then 91 local my_output
59 . /etc/conf.d/webapp-config
60 fi
61 92
62 if [ -z "${MY_HTDOCSDIR}" ]; then 93 ${WEBAPP_CONFIG} --show-installed -h localhost -d "${INSTALL_DIR}" 2> /dev/null
63 libsh_edie "/etc/conf.d/webapp-config not imported"
64 fi
65} 94}
66 95
67# ------------------------------------------------------------------------ 96# ------------------------------------------------------------------------
68# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY 97# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
69# 98#
70# ------------------------------------------------------------------------ 99# ------------------------------------------------------------------------
71 100
72function webapp_strip_appdir () 101function webapp_strip_appdir ()
73{ 102{
103 local my_stripped="${1}"
74 echo "$1" | sed -e "s|${D}${MY_APPDIR}/||g;" 104 echo "${1}" | sed -e "s|${MY_APPDIR}/||g;"
75} 105}
76 106
77function webapp_strip_d () 107function webapp_strip_d ()
78{ 108{
79 echo "$1" | sed -e "s|${D}||g;" 109 echo "${1}" | sed -e "s|${D}||g;"
80} 110}
81 111
82function webapp_strip_cwd () 112function webapp_strip_cwd ()
83{ 113{
114 local my_stripped="${1}"
84 echo "$1" | sed -e 's|/./|/|g;' 115 echo "${1}" | sed -e 's|/./|/|g;'
85} 116}
86 117
87# ------------------------------------------------------------------------ 118# ------------------------------------------------------------------------
88# EXPORTED FUNCTION - FOR USE IN EBUILDS 119# EXPORTED FUNCTION - FOR USE IN EBUILDS
89# 120#
92# @param $1 - config file 123# @param $1 - config file
93# ------------------------------------------------------------------------ 124# ------------------------------------------------------------------------
94 125
95function webapp_configfile () 126function webapp_configfile ()
96{ 127{
128 local m=""
129 for m in "$@" ; do
97 webapp_checkfileexists "$1" "$D" 130 webapp_checkfileexists "${m}" "${D}"
131
98 local MY_FILE="`webapp_strip_appdir $1`" 132 local MY_FILE="$(webapp_strip_appdir "${m}")"
133 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
99 134
100 einfo "(config) $MY_FILE" 135 einfo "(config) ${MY_FILE}"
101 echo "$MY_FILE" >> ${D}${WA_CONFIGLIST} 136 echo "${MY_FILE}" >> ${D}/${WA_CONFIGLIST}
137 done
138}
139
140# ------------------------------------------------------------------------
141# EXPORTED FUNCTION - FOR USE IN EBUILDS
142#
143# Install a script that will run after a virtual copy is created, and
144# before a virtual copy has been removed
145#
146# @param $1 - the script to run
147# ------------------------------------------------------------------------
148
149function webapp_hook_script ()
150{
151 webapp_checkfileexists "${1}"
152
153 einfo "(hook) ${1}"
154 cp "${1}" "${D}/${MY_HOOKSCRIPTSDIR}/$(basename "${1}")" || die "Unable to install ${1} into ${D}/${MY_HOOKSCRIPTSDIR}/"
155 chmod 555 "${D}/${MY_HOOKSCRIPTSDIR}/$(basename "${1}")"
102} 156}
103 157
104# ------------------------------------------------------------------------ 158# ------------------------------------------------------------------------
105# EXPORTED FUNCTION - FOR USE IN EBUILDS 159# EXPORTED FUNCTION - FOR USE IN EBUILDS
106# 160#
108# 162#
109# @param $1 - language code (use 'en' for now) 163# @param $1 - language code (use 'en' for now)
110# @param $2 - the file to install 164# @param $2 - the file to install
111# ------------------------------------------------------------------------ 165# ------------------------------------------------------------------------
112 166
113function webapp_postinst_txt 167function webapp_postinst_txt ()
114{ 168{
115 webapp_checkfileexists "$2" 169 webapp_checkfileexists "${2}"
116 170
117 einfo "(rtfm) $2 (lang: $1)" 171 einfo "(info) ${2} (lang: ${1})"
118 cp "$2" "${D}${MY_APPDIR}/postinst-$1.txt" 172 cp "${2}" "${D}/${MY_APPDIR}/postinst-${1}.txt"
119} 173}
120 174
121# ------------------------------------------------------------------------ 175# ------------------------------------------------------------------------
122# EXPORTED FUNCTION - FOR USE IN EBUILDS 176# EXPORTED FUNCTION - FOR USE IN EBUILDS
123# 177#
124# Identify a script file (usually, but not always PHP or Perl) which is 178# Install a text file containing post-upgrade instructions.
125# 179#
126# Files in this list may be modified to #! the required CGI engine when 180# @param $1 - language code (use 'en' for now)
127# installed by webapp-config tool in the future. 181# @param $2 - the file to install
128#
129# @param $1 - the cgi engine to use
130# @param $2 - the script file that could run under a cgi-bin
131#
132# ------------------------------------------------------------------------ 182# ------------------------------------------------------------------------
133 183
134function webapp_runbycgibin () 184function webapp_postupgrade_txt ()
135{ 185{
136 webapp_checkfileexists "$2" "$D" 186 webapp_checkfileexists "${2}"
137 local MY_FILE="`webapp_strip_appdir $2`"
138 MY_FILE="`webapp_strip_cwd $MY_FILE`"
139 187
140 einfo "(cgi-bin) $1 - $MY_FILE" 188 einfo "(info) ${2} (lang: ${1})"
141 echo "$1 $MY_FILE" >> ${D}${WA_RUNBYCGIBINLIST} 189 cp "${2}" "${D}/${MY_APPDIR}/postupgrade-${1}.txt"
142} 190}
143 191
144# ------------------------------------------------------------------------ 192# ------------------------------------------------------------------------
145# EXPORTED FUNCTION - FOR USE IN EBUILDS 193# EXPORTED FUNCTION - FOR USE IN EBUILDS
146# 194#
147# Identify a file which must be owned by the webserver's user:group 195# Identify a file which must be owned by the webserver's user:group
148# settings. 196# settings.
149# 197#
150# The ownership of the file is NOT set until the application is installed 198# The ownership of the file is NOT set until the application is installed
151# using the webapp-config tool. 199# using the webapp-config tool.
152# 200#
153# @param $1 - file to be owned by the webserver user:group combo 201# @param $1 - file to be owned by the webserver user:group combo
154# 202#
155# ------------------------------------------------------------------------ 203# ------------------------------------------------------------------------
156 204
157function webapp_serverowned () 205function webapp_serverowned ()
158{ 206{
207 local a=""
208 local m=""
209 if [ "${1}" = "-R" ]; then
210 shift
211 for m in "$@" ; do
212 for a in $(find ${D}/${m}); do
213 a=${a/${D}\/\///}
214 webapp_checkfileexists "${a}" "$D"
215 local MY_FILE="$(webapp_strip_appdir "${a}")"
216 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
217
218 einfo "(server owned) ${MY_FILE}"
219 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
220 done
221 done
222 else
223 for m in "$@" ; do
159 webapp_checkfileexists "$1" "$D" 224 webapp_checkfileexists "${m}" "$D"
160 local MY_FILE="`webapp_strip_appdir $1`" 225 local MY_FILE="$(webapp_strip_appdir "${m}")"
161 226 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
227
162 einfo "(server owned) $MY_FILE" 228 einfo "(server owned) ${MY_FILE}"
163 echo "$MY_FILE" >> ${D}${WA_SOLIST} 229 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
230 done
231 fi
164} 232}
165 233
166# ------------------------------------------------------------------------ 234# ------------------------------------------------------------------------
167# EXPORTED FUNCTION - FOR USE IN EBUILDS 235# EXPORTED FUNCTION - FOR USE IN EBUILDS
168# 236#
237# @param $1 - the webserver to install the config file for
238# (one of apache1, apache2, cherokee)
239# @param $2 - the config file to install
240# @param $3 - new name for the config file (default is `basename $2`)
241# this is an optional parameter
242#
243# NOTE:
244# this function will automagically prepend $1 to the front of your
245# config file's name
246# ------------------------------------------------------------------------
247
248function webapp_server_configfile ()
249{
250 webapp_checkfileexists "${2}"
251
252 # sort out what the name will be of the config file
253
254 local my_file
255
256 if [ -z "${3}" ]; then
257 my_file="${1}-$(basename "${2}")"
258 else
259 my_file="${1}-${3}"
260 fi
261
262 # warning:
263 #
264 # do NOT change the naming convention used here without changing all
265 # the other scripts that also rely upon these names
266
267 einfo "(${1}) config file '${my_file}'"
268 cp "${2}" "${D}/${MY_SERVERCONFIGDIR}/${my_file}"
269}
270
271# ------------------------------------------------------------------------
272# EXPORTED FUNCTION - FOR USE IN EBUILDS
169# 273#
170# @param $1 - the db engine that the script is for 274# @param $1 - the db engine that the script is for
171# (one of: mysql|postgres) 275# (one of: mysql|postgres)
172# @param $2 - the sql script to be installed 276# @param $2 - the sql script to be installed
173# @param $3 - the older version of the app that this db script 277# @param $3 - the older version of the app that this db script
176# a new db from scratch) 280# a new db from scratch)
177# ------------------------------------------------------------------------ 281# ------------------------------------------------------------------------
178 282
179function webapp_sqlscript () 283function webapp_sqlscript ()
180{ 284{
181 webapp_checkfileexists "$2" 285 webapp_checkfileexists "${2}"
182 286
183 # create the directory where this script will go 287 # create the directory where this script will go
184 # 288 #
185 # scripts for specific database engines go into their own subdirectory 289 # scripts for specific database engines go into their own subdirectory
186 # just to keep things readable on the filesystem 290 # just to keep things readable on the filesystem
187 291
188 if [ ! -d "${D}${MY_SQLSCRIPTSDIR}/$1" ]; then 292 if [ ! -d "${D}/${MY_SQLSCRIPTSDIR}/${1}" ]; then
189 mkdir -p "${D}${MY_SQLSCRIPTSDIR}/$1" || libsh_die "unable to create directory ${D}${MY_SQLSCRIPTSDIR}/$1" 293 mkdir -p "${D}/${MY_SQLSCRIPTSDIR}/${1}" || die "unable to create directory ${D}/${MY_SQLSCRIPTSDIR}/${1}"
190 fi 294 fi
191 295
192 # warning: 296 # warning:
193 # 297 #
194 # do NOT change the naming convention used here without changing all 298 # do NOT change the naming convention used here without changing all
195 # the other scripts that also rely upon these names 299 # the other scripts that also rely upon these names
196 300
197 # are we dealing with an 'upgrade'-type script? 301 # are we dealing with an 'upgrade'-type script?
198 if [ -n "$3" ]; then 302 if [ -n "${3}" ]; then
199 # yes we are 303 # yes we are
200 einfo "($1) upgrade script from ${PN}-${PVR} to $3" 304 einfo "(${1}) upgrade script from ${PN}-${PVR} to ${3}"
201 cp $2 ${D}${MY_SQLSCRIPTSDIR}/$1/${3}_to_${PVR}.sql 305 cp "${2}" "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql"
306 chmod 600 "${D}${MY_SQLSCRIPTSDIR}/${1}/${3}_to_${PVR}.sql"
202 else 307 else
203 # no, we are not 308 # no, we are not
204 einfo "($1) create script for ${PN}-${PVR}" 309 einfo "(${1}) create script for ${PN}-${PVR}"
205 cp $2 ${D}${MY_SQLSCRIPTSDIR}/$1/${PVR}_create.sql 310 cp "${2}" "${D}/${MY_SQLSCRIPTSDIR}/${1}/${PVR}_create.sql"
311 chmod 600 "${D}/${MY_SQLSCRIPTSDIR}/${1}/${PVR}_create.sql"
206 fi 312 fi
207} 313}
208 314
209# ------------------------------------------------------------------------ 315# ------------------------------------------------------------------------
210# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER 316# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER
211# everything else has run 317# everything else has run
212# 318#
213# For now, we just make sure that root owns everything, and that there 319# For now, we just make sure that root owns everything, and that there
214# are no setuid files. I'm sure this will change significantly before 320# are no setuid files.
215# the final version!
216# ------------------------------------------------------------------------ 321# ------------------------------------------------------------------------
217 322
218function webapp_src_install () 323function webapp_src_install ()
219{ 324{
220 chown -R root:root ${D}/ 325 chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
221 chmod -R u-s ${D}/ 326 chmod -R u-s "${D}/"
222 chmod -R g-s ${D}/ 327 chmod -R g-s "${D}/"
223 328
224 keepdir ${MY_PERSISTDIR} 329 keepdir "${MY_PERSISTDIR}"
225 fowners root:root ${MY_PERSISTDIR} 330 fowners "root:0" "${MY_PERSISTDIR}"
226 fperms 755 ${MY_PERSISTDIR} 331 fperms 755 "${MY_PERSISTDIR}"
332
333 # to test whether or not the ebuild has correctly called this function
334 # we add an empty file to the filesystem
335 #
336 # we used to just set a variable in the shell script, but we can
337 # no longer rely on Portage calling both webapp_src_install() and
338 # webapp_pkg_postinst() within the same shell process
339
340 touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
227} 341}
228 342
229# ------------------------------------------------------------------------ 343# ------------------------------------------------------------------------
230# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER 344# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER
231# everything else has run 345# everything else has run
234# 348#
235# ------------------------------------------------------------------------ 349# ------------------------------------------------------------------------
236 350
237function webapp_pkg_setup () 351function webapp_pkg_setup ()
238{ 352{
353 # add sanity checks here
354
355 if [ "${SLOT}+" != "${PVR}+" ]; then
356 # special case - some ebuilds *do* need to overwride the SLOT
357 if [ "${WEBAPP_MANUAL_SLOT}" != "yes" ]; then
358 die "ebuild sets SLOT, overrides webapp.eclass"
359 else
360 ewarn
361 ewarn "This ebuild overrides the default SLOT behaviour for webapps"
362 ewarn "If this package installs files into the htdocs dir, this is"
363 ewarn "probably a bug in the ebuild."
364 ewarn
365 fi
366 fi
367
239 # pull in the shared configuration file 368 # pull in the shared configuration file
240 369
241 . /etc/vhosts/webapp-config || die "Unable to open /etc/vhosts/webapp-config file" 370 G_HOSTNAME="localhost"
371 webapp_read_config
242 372
243 # are we emerging something that is already installed? 373 # are we installing a webapp-config solution over the top of a
374 # non-webapp-config solution?
244 375
245 if [ -d "${D}${MY_APPROOT}/${MY_APPSUFFIX}" ]; then 376 if ! use vhosts ; then
246 # yes we are 377 local my_dir="${ROOT}${VHOST_ROOT}/${MY_HTDOCSBASE}/${PN}"
247 ewarn "Removing existing copy of ${PN}-${PVR}" 378 local my_output
248 rm -rf "${D}${MY_APPROOT}/${MY_APPSUFFIX}" 379
380 if [ -d "${my_dir}" ] ; then
381 einfo "You already have something installed in ${my_dir}"
382 einfo "Are you trying to install over the top of something I cannot upgrade?"
383
384 my_output="$(webapp_check_installedat)"
385
386 if [ "$?" != "0" ]; then
387
388 # okay, whatever is there, it isn't webapp-config-compatible
389 ewarn
390 ewarn "Whatever is in ${my_dir}, it's not"
391 ewarn "compatible with webapp-config."
392 ewarn
393 ewarn "This ebuild may be overwriting important files."
394 ewarn
395 elif [ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]; then
396 eerror "${my_dir} contains ${my_output}"
397 eerror "I cannot upgrade that"
398 die "Cannot upgrade contents of ${my_dir}"
399 else
400 einfo
401 einfo "I can upgrade the contents of ${my_dir}"
402 einfo
403 fi
404 fi
405 fi
406}
407
408function webapp_getinstalltype ()
409{
410 # or are we upgrading?
411
412 if ! use vhosts ; then
413 # we only run webapp-config if vhosts USE flag is not set
414
415 local my_output
416
417 my_output="$(webapp_check_installedat)"
418
419 if [ "${?}" = "0" ] ; then
420 # something is already installed there
421 #
422 # make sure it isn't the same version
423
424 local my_pn="$(echo ${my_output} | awk '{ print $1 }')"
425 local my_pvr="$(echo ${my_output} | awk '{ print $2 }')"
426
427 REMOVE_PKG="${my_pn}-${my_pvr}"
428
429 if [ "${my_pn}" == "${PN}" ]; then
430 if [ "${my_pvr}" != "${PVR}" ]; then
431 einfo "This is an upgrade"
432 IS_UPGRADE=1
433 else
434 einfo "This is a re-installation"
435 IS_REPLACE=1
436 fi
437 else
438 einfo "${my_output} is installed there"
439 fi
440 else
441 einfo "This is an installation"
442 fi
249 fi 443 fi
250} 444}
251 445
252function webapp_src_preinst () 446function webapp_src_preinst ()
253{ 447{
254 # create the directories that we need 448 # create the directories that we need
255 449
256 dodir ${MY_HTDOCSDIR} 450 dodir "${MY_HTDOCSDIR}"
257 dodir ${MY_HOSTROOTDIR} 451 dodir "${MY_HOSTROOTDIR}"
258 dodir ${MY_CGIBINDIR} 452 dodir "${MY_CGIBINDIR}"
259 dodir ${MY_ICONSDIR} 453 dodir "${MY_ICONSDIR}"
260 dodir ${MY_ERRORSDIR} 454 dodir "${MY_ERRORSDIR}"
261 dodir ${MY_SQLSCRIPTSDIR} 455 dodir "${MY_SQLSCRIPTSDIR}"
456 dodir "${MY_HOOKSCRIPTSDIR}"
457 dodir "${MY_SERVERCONFIGDIR}"
262} 458}
263 459
264function webapp_pkg_postinst () 460function webapp_pkg_postinst ()
265{ 461{
462 webapp_read_config
463
464 # sanity checks, to catch bugs in the ebuild
465
466 if [ ! -f "${ROOT}${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]; then
467 eerror
468 eerror "This ebuild did not call webapp_src_install() at the end"
469 eerror "of the src_install() function"
470 eerror
471 eerror "Please log a bug on http://bugs.gentoo.org"
472 eerror
473 eerror "You should use emerge -C to remove this package, as the"
474 eerror "installation is incomplete"
475 eerror
476 die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org"
477 fi
478
479 # if 'vhosts' is not set in your USE flags, we install a copy of
480 # this application in ${ROOT}/var/www/localhost/htdocs/${PN}/ for you
481
482 if ! use vhosts ; then
483 echo
484 einfo "vhosts USE flag not set - auto-installing using webapp-config"
485
486 webapp_getinstalltype
487
266 G_HOSTNAME="localhost" 488 G_HOSTNAME="localhost"
267 . /etc/vhosts/webapp-config 489 local my_mode=-I
490 webapp_read_config
268 491
269 use vhosts || /usr/sbin/webapp-config -I -u root -h localhost -d "${VHOST_ROOT}/htdocs/${PN}/" ${PN} ${PVR} 492 if [ "${IS_REPLACE}" = "1" ]; then
493 einfo "${PN}-${PVR} is already installed - replacing"
494 my_mode=-I
495 elif [ "${IS_UPGRADE}" = "1" ]; then
496 einfo "${REMOVE_PKG} is already installed - upgrading"
497 my_mode=-U
498 else
499 einfo "${PN}-${PVR} is not installed - using install mode"
500 fi
501
502 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
503 einfo "Running ${my_cmd}"
504 ${my_cmd}
505
506 # remove the old version
507 #
508 # why do we do this? well ...
509 #
510 # normally, emerge -u installs a new version and then removes the
511 # old version. however, if the new version goes into a different
512 # slot to the old version, then the old version gets left behind
513 #
514 # if USE=-vhosts, then we want to remove the old version, because
515 # the user is relying on portage to do the magical thing for it
516
517 if [ "${IS_UPGRADE}" = "1" ] ; then
518 einfo "Removing old version ${REMOVE_PKG}"
519
520 emerge -C "${REMOVE_PKG}"
521 fi
522 else
523 # vhosts flag is on
524 #
525 # let's tell the administrator what to do next
526
527 einfo
528 einfo "The 'vhosts' USE flag is switched ON"
529 einfo "This means that Portage will not automatically run webapp-config to"
530 einfo "complete the installation."
531 einfo
532 einfo "To install ${PN}-${PVR} into a virtual host, run the following command:"
533 einfo
534 einfo " webapp-config -I -h <host> -d ${PN} ${PN} ${PVR}"
535 einfo
536 einfo "For more details, see the webapp-config(8) man page"
537 fi
538
539 return 0
270} 540}
541
542function webapp_pkg_prerm ()
543{
544 # remove any virtual installs that there are
545
546 local my_output
547 local x
548
549 my_output="$(${WEBAPP_CONFIG} --list-installs ${PN} ${PVR})"
550
551 if [ "${?}" != "0" ]; then
552 return
553 fi
554
555 for x in ${my_output} ; do
556 [ -f ${x}/.webapp ] && . ${x}/.webapp || ewarn "Cannot find file ${x}/.webapp"
557
558 if [ -z "${WEB_HOSTNAME}" -o -z "${WEB_INSTALLDIR}" ]; then
559 ewarn "Don't forget to use webapp-config to remove the copy of"
560 ewarn "${PN}-${PVR} installed in"
561 ewarn
562 ewarn " ${x}"
563 ewarn
564 else
565 # we have enough information to remove the virtual copy ourself
566
567 ${WEBAPP_CONFIG} -C -h ${WEB_HOSTNAME} -d ${WEB_INSTALLDIR}
568
569 # if the removal fails - we carry on anyway!
570 fi
571 done
572}

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.20