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

Diff of /eclass/webapp.eclass

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

Revision 1.17 Revision 1.41
1# Copyright 1999-2004 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.17 2004/05/11 19:31:29 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.8" 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
26 31
27INSTALL_DIR="/$PN" 32INSTALL_DIR="/${PN}"
28IS_UPGRADE=0 33IS_UPGRADE=0
29IS_REPLACE=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}
30 59
31# ------------------------------------------------------------------------ 60# ------------------------------------------------------------------------
32# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY 61# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
33# 62#
34# Check whether a specified file exists within the image/ directory 63# Check whether a specified file exists within the image/ directory
41 70
42function webapp_checkfileexists () 71function webapp_checkfileexists ()
43{ 72{
44 local my_prefix 73 local my_prefix
45 74
46 [ -n "$2" ] && my_prefix="$2/" || my_prefix= 75 [ -n "${2}" ] && my_prefix="${2}/" || my_prefix=
47 76
48 if [ ! -e ${my_prefix}$1 ]; then 77 if [ ! -e "${my_prefix}${1}" ]; then
49 msg="ebuild fault: file $1 not found" 78 msg="ebuild fault: file '${1}' not found"
50 eerror "$msg" 79 eerror "$msg"
51 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/"
52 die "$msg" 81 die "$msg"
53 fi 82 fi
54} 83}
59 88
60function webapp_check_installedat 89function webapp_check_installedat
61{ 90{
62 local my_output 91 local my_output
63 92
64 /usr/sbin/webapp-config --show-installed -h localhost -d $INSTALL_DIR 2> /dev/null 93 ${WEBAPP_CONFIG} --show-installed -h localhost -d "${INSTALL_DIR}" 2> /dev/null
65} 94}
66 95
67# ------------------------------------------------------------------------ 96# ------------------------------------------------------------------------
68# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY 97# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
69# ------------------------------------------------------------------------
70
71function webapp_import_config ()
72{
73 if [ -z "${MY_HTDOCSDIR}" ]; then
74 . /etc/conf.d/webapp-config
75 fi
76
77 if [ -z "${MY_HTDOCSDIR}" ]; then
78 libsh_edie "/etc/conf.d/webapp-config not imported"
79 fi
80}
81
82# ------------------------------------------------------------------------
83# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
84# 98#
85# ------------------------------------------------------------------------ 99# ------------------------------------------------------------------------
86 100
87function webapp_strip_appdir () 101function webapp_strip_appdir ()
88{ 102{
89 local my_stripped="$1" 103 local my_stripped="${1}"
90 echo "$1" | sed -e "s|${MY_APPDIR}/||g;" 104 echo "${1}" | sed -e "s|${MY_APPDIR}/||g;"
91} 105}
92 106
93function webapp_strip_d () 107function webapp_strip_d ()
94{ 108{
95 echo "$1" | sed -e "s|${D}||g;" 109 echo "${1}" | sed -e "s|${D}||g;"
96} 110}
97 111
98function webapp_strip_cwd () 112function webapp_strip_cwd ()
99{ 113{
100 local my_stripped="$1" 114 local my_stripped="${1}"
101 echo "$1" | sed -e 's|/./|/|g;' 115 echo "${1}" | sed -e 's|/./|/|g;'
102} 116}
103 117
104# ------------------------------------------------------------------------ 118# ------------------------------------------------------------------------
105# EXPORTED FUNCTION - FOR USE IN EBUILDS 119# EXPORTED FUNCTION - FOR USE IN EBUILDS
106# 120#
109# @param $1 - config file 123# @param $1 - config file
110# ------------------------------------------------------------------------ 124# ------------------------------------------------------------------------
111 125
112function webapp_configfile () 126function webapp_configfile ()
113{ 127{
128 local m=""
129 for m in "$@" ; do
114 webapp_checkfileexists "$1" "$D" 130 webapp_checkfileexists "${m}" "${D}"
115 echo $1 131
116 local MY_FILE="`webapp_strip_appdir $1`" 132 local MY_FILE="$(webapp_strip_appdir "${m}")"
117 echo $MY_FILE 133 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
118 134
119 einfo "(config) $MY_FILE" 135 einfo "(config) ${MY_FILE}"
120 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}")"
121} 156}
122 157
123# ------------------------------------------------------------------------ 158# ------------------------------------------------------------------------
124# EXPORTED FUNCTION - FOR USE IN EBUILDS 159# EXPORTED FUNCTION - FOR USE IN EBUILDS
125# 160#
127# 162#
128# @param $1 - language code (use 'en' for now) 163# @param $1 - language code (use 'en' for now)
129# @param $2 - the file to install 164# @param $2 - the file to install
130# ------------------------------------------------------------------------ 165# ------------------------------------------------------------------------
131 166
132function webapp_postinst_txt 167function webapp_postinst_txt ()
133{ 168{
134 webapp_checkfileexists "$2" 169 webapp_checkfileexists "${2}"
135 170
136 einfo "(rtfm) $2 (lang: $1)" 171 einfo "(info) ${2} (lang: ${1})"
137 cp "$2" "${D}${MY_APPDIR}/postinst-$1.txt" 172 cp "${2}" "${D}/${MY_APPDIR}/postinst-${1}.txt"
138} 173}
139 174
140# ------------------------------------------------------------------------ 175# ------------------------------------------------------------------------
141# EXPORTED FUNCTION - FOR USE IN EBUILDS 176# EXPORTED FUNCTION - FOR USE IN EBUILDS
142# 177#
143# Identify a script file (usually, but not always PHP or Perl) which is 178# Install a text file containing post-upgrade instructions.
144# 179#
145# Files in this list may be modified to #! the required CGI engine when 180# @param $1 - language code (use 'en' for now)
146# installed by webapp-config tool in the future. 181# @param $2 - the file to install
147#
148# @param $1 - the cgi engine to use
149# @param $2 - the script file that could run under a cgi-bin
150#
151# ------------------------------------------------------------------------ 182# ------------------------------------------------------------------------
152 183
153function webapp_runbycgibin () 184function webapp_postupgrade_txt ()
154{ 185{
155 webapp_checkfileexists "$2" "$D" 186 webapp_checkfileexists "${2}"
156 local MY_FILE="`webapp_strip_appdir $2`"
157 MY_FILE="`webapp_strip_cwd $MY_FILE`"
158 187
159 einfo "(cgi-bin) $1 - $MY_FILE" 188 einfo "(info) ${2} (lang: ${1})"
160 echo "$1 $MY_FILE" >> ${D}${WA_RUNBYCGIBINLIST} 189 cp "${2}" "${D}/${MY_APPDIR}/postupgrade-${1}.txt"
161} 190}
162 191
163# ------------------------------------------------------------------------ 192# ------------------------------------------------------------------------
164# EXPORTED FUNCTION - FOR USE IN EBUILDS 193# EXPORTED FUNCTION - FOR USE IN EBUILDS
165# 194#
166# 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
167# settings. 196# settings.
168# 197#
169# 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
170# using the webapp-config tool. 199# using the webapp-config tool.
171# 200#
172# @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
173# 202#
174# ------------------------------------------------------------------------ 203# ------------------------------------------------------------------------
175 204
176function webapp_serverowned () 205function webapp_serverowned ()
177{ 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
178 webapp_checkfileexists "$1" "$D" 224 webapp_checkfileexists "${m}" "$D"
179 local MY_FILE="`webapp_strip_appdir $1`" 225 local MY_FILE="$(webapp_strip_appdir "${m}")"
180 226 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
227
181 einfo "(server owned) $MY_FILE" 228 einfo "(server owned) ${MY_FILE}"
182 echo "$MY_FILE" >> ${D}${WA_SOLIST} 229 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
230 done
231 fi
183} 232}
184 233
185# ------------------------------------------------------------------------ 234# ------------------------------------------------------------------------
186# EXPORTED FUNCTION - FOR USE IN EBUILDS 235# EXPORTED FUNCTION - FOR USE IN EBUILDS
187# 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
188# 273#
189# @param $1 - the db engine that the script is for 274# @param $1 - the db engine that the script is for
190# (one of: mysql|postgres) 275# (one of: mysql|postgres)
191# @param $2 - the sql script to be installed 276# @param $2 - the sql script to be installed
192# @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
195# a new db from scratch) 280# a new db from scratch)
196# ------------------------------------------------------------------------ 281# ------------------------------------------------------------------------
197 282
198function webapp_sqlscript () 283function webapp_sqlscript ()
199{ 284{
200 webapp_checkfileexists "$2" 285 webapp_checkfileexists "${2}"
201 286
202 # create the directory where this script will go 287 # create the directory where this script will go
203 # 288 #
204 # scripts for specific database engines go into their own subdirectory 289 # scripts for specific database engines go into their own subdirectory
205 # just to keep things readable on the filesystem 290 # just to keep things readable on the filesystem
206 291
207 if [ ! -d "${D}${MY_SQLSCRIPTSDIR}/$1" ]; then 292 if [ ! -d "${D}/${MY_SQLSCRIPTSDIR}/${1}" ]; then
208 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}"
209 fi 294 fi
210 295
211 # warning: 296 # warning:
212 # 297 #
213 # do NOT change the naming convention used here without changing all 298 # do NOT change the naming convention used here without changing all
214 # the other scripts that also rely upon these names 299 # the other scripts that also rely upon these names
215 300
216 # are we dealing with an 'upgrade'-type script? 301 # are we dealing with an 'upgrade'-type script?
217 if [ -n "$3" ]; then 302 if [ -n "${3}" ]; then
218 # yes we are 303 # yes we are
219 einfo "($1) upgrade script from ${PN}-${PVR} to $3" 304 einfo "(${1}) upgrade script from ${PN}-${PVR} to ${3}"
220 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"
221 else 307 else
222 # no, we are not 308 # no, we are not
223 einfo "($1) create script for ${PN}-${PVR}" 309 einfo "(${1}) create script for ${PN}-${PVR}"
224 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"
225 fi 312 fi
226} 313}
227 314
228# ------------------------------------------------------------------------ 315# ------------------------------------------------------------------------
229# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER 316# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER
230# everything else has run 317# everything else has run
231# 318#
232# 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
233# are no setuid files. I'm sure this will change significantly before 320# are no setuid files.
234# the final version!
235# ------------------------------------------------------------------------ 321# ------------------------------------------------------------------------
236 322
237function webapp_src_install () 323function webapp_src_install ()
238{ 324{
239 chown -R root:root ${D}/ 325 chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
240 chmod -R u-s ${D}/ 326 chmod -R u-s "${D}/"
241 chmod -R g-s ${D}/ 327 chmod -R g-s "${D}/"
242 328
243 keepdir ${MY_PERSISTDIR} 329 keepdir "${MY_PERSISTDIR}"
244 fowners root:root ${MY_PERSISTDIR} 330 fowners "root:0" "${MY_PERSISTDIR}"
245 fperms 755 ${MY_PERSISTDIR} 331 fperms 755 "${MY_PERSISTDIR}"
246 332
247 HAS_webapp_src_install=1 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}"
248} 341}
249 342
250# ------------------------------------------------------------------------ 343# ------------------------------------------------------------------------
251# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER 344# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER
252# everything else has run 345# everything else has run
257 350
258function webapp_pkg_setup () 351function webapp_pkg_setup ()
259{ 352{
260 # add sanity checks here 353 # add sanity checks here
261 354
262 if [ "$SLOT+" != "${PVR}+" ]; then 355 if [ "${SLOT}+" != "${PVR}+" ]; then
356 # special case - some ebuilds *do* need to overwride the SLOT
357 if [ "${WEBAPP_MANUAL_SLOT}" != "yes" ]; then
263 die "ebuild sets SLOT, overrides webapp.eclass" 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
264 fi 366 fi
265 367
266 # pull in the shared configuration file 368 # pull in the shared configuration file
267 369
268 . /etc/vhosts/webapp-config || die "Unable to open /etc/vhosts/webapp-config file" 370 G_HOSTNAME="localhost"
371 webapp_read_config
372
373 # are we installing a webapp-config solution over the top of a
374 # non-webapp-config solution?
375
376 if ! use vhosts ; then
377 local my_dir="${ROOT}${VHOST_ROOT}/${MY_HTDOCSBASE}/${PN}"
378 local my_output
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
269} 406}
270 407
271function webapp_getinstalltype () 408function webapp_getinstalltype ()
272{ 409{
273 # are we emerging something that is already installed?
274
275 if [ -d "${D}${MY_APPROOT}/${MY_APPSUFFIX}" ]; then
276 # yes we are
277 ewarn "Removing existing copy of ${PN}-${PVR}"
278 rm -rf "${D}${MY_APPROOT}/${MY_APPSUFFIX}"
279 fi
280
281 # or are we upgrading? 410 # or are we upgrading?
282 411
283 if ! use vhosts ; then 412 if ! use vhosts ; then
284 # we only run webapp-config if vhosts USE flag is not set 413 # we only run webapp-config if vhosts USE flag is not set
285 414
286 local my_output 415 local my_output
287 416
288 my_output="`webapp_check_installedat`" 417 my_output="$(webapp_check_installedat)"
289 418
290 if [ "$?" = "0" ] ; then 419 if [ "${?}" = "0" ] ; then
291 # something is already installed there 420 # something is already installed there
292 # 421 #
293 # make sure it isn't the same version 422 # make sure it isn't the same version
294 423
295 local my_pn="`echo $my_output | awk '{ print $1 }'`" 424 local my_pn="$(echo ${my_output} | awk '{ print $1 }')"
296 local my_pvr="`echo $my_output | awk '{ print $2 }'`" 425 local my_pvr="$(echo ${my_output} | awk '{ print $2 }')"
297 426
298 REMOVE_PKG="${my_pn}-${my_pvr}" 427 REMOVE_PKG="${my_pn}-${my_pvr}"
299 428
300 if [ "$my_pn" == "$PN" ]; then 429 if [ "${my_pn}" == "${PN}" ]; then
301 if [ "$my_pvr" != "$PVR" ]; then 430 if [ "${my_pvr}" != "${PVR}" ]; then
302 einfo "This is an upgrade" 431 einfo "This is an upgrade"
303 IS_UPGRADE=1 432 IS_UPGRADE=1
304 else 433 else
305 einfo "This is a re-installation" 434 einfo "This is a re-installation"
306 IS_REPLACE=1 435 IS_REPLACE=1
307 fi 436 fi
437 else
438 einfo "${my_output} is installed there"
308 fi 439 fi
440 else
441 einfo "This is an installation"
309 fi 442 fi
310 fi 443 fi
311} 444}
312 445
313function webapp_src_preinst () 446function webapp_src_preinst ()
314{ 447{
315 # create the directories that we need 448 # create the directories that we need
316 449
317 dodir ${MY_HTDOCSDIR} 450 dodir "${MY_HTDOCSDIR}"
318 dodir ${MY_HOSTROOTDIR} 451 dodir "${MY_HOSTROOTDIR}"
319 dodir ${MY_CGIBINDIR} 452 dodir "${MY_CGIBINDIR}"
320 dodir ${MY_ICONSDIR} 453 dodir "${MY_ICONSDIR}"
321 dodir ${MY_ERRORSDIR} 454 dodir "${MY_ERRORSDIR}"
322 dodir ${MY_SQLSCRIPTSDIR} 455 dodir "${MY_SQLSCRIPTSDIR}"
456 dodir "${MY_HOOKSCRIPTSDIR}"
457 dodir "${MY_SERVERCONFIGDIR}"
323} 458}
324 459
325function webapp_pkg_postinst () 460function webapp_pkg_postinst ()
326{ 461{
462 webapp_read_config
463
327 # sanity checks, to catch bugs in the ebuild 464 # sanity checks, to catch bugs in the ebuild
328 465
329 if [ "$HAS_webapp_src_install+" == "+" ]; then 466 if [ ! -f "${ROOT}${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]; then
330 eerror 467 eerror
331 eerror "This ebuild did not call webapp_src_install() at the end" 468 eerror "This ebuild did not call webapp_src_install() at the end"
332 eerror "of the src_install() function" 469 eerror "of the src_install() function"
333 eerror 470 eerror
334 eerror "Please log a bug on http://bugs.gentoo.org" 471 eerror "Please log a bug on http://bugs.gentoo.org"
338 eerror 475 eerror
339 die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org" 476 die "Ebuild did not call webapp_src_install() - report to http://bugs.gentoo.org"
340 fi 477 fi
341 478
342 # if 'vhosts' is not set in your USE flags, we install a copy of 479 # if 'vhosts' is not set in your USE flags, we install a copy of
343 # this application in /var/www/localhost/htdocs/${PN}/ for you 480 # this application in ${ROOT}/var/www/localhost/htdocs/${PN}/ for you
344 481
345 if ! use vhosts ; then 482 if ! use vhosts ; then
346 echo 483 echo
347 einfo "vhosts USE flag not set - auto-installing using webapp-config" 484 einfo "vhosts USE flag not set - auto-installing using webapp-config"
348 485
349 webapp_getinstalltype 486 webapp_getinstalltype
350 487
351 G_HOSTNAME="localhost" 488 G_HOSTNAME="localhost"
352 . /etc/vhosts/webapp-config
353
354 local my_mode=-I 489 local my_mode=-I
490 webapp_read_config
355 491
356 if [ "$IS_REPLACE" = "1" ]; then 492 if [ "${IS_REPLACE}" = "1" ]; then
357 einfo "${PN}-${PVR} is already installed - replacing" 493 einfo "${PN}-${PVR} is already installed - replacing"
358 /usr/sbin/webapp-config -C -d "$INSTALL_DIR" 494 my_mode=-I
359 elif [ "$IS_UPGRADE" = "1" ]; then 495 elif [ "${IS_UPGRADE}" = "1" ]; then
360 einfo "$REMOVE_PKG is already installed - upgrading" 496 einfo "${REMOVE_PKG} is already installed - upgrading"
361 my_mode=-U 497 my_mode=-U
362 else 498 else
363 einfo "${PN}-${PVR} is not installed - using install mode" 499 einfo "${PN}-${PVR} is not installed - using install mode"
364 fi 500 fi
365 501
366 my_cmd="/usr/sbin/webapp-config $my_mode -h localhost -u root -d $INSTALL_DIR ${PN} ${PVR}" 502 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
367 einfo "Running $my_cmd" 503 einfo "Running ${my_cmd}"
368 $my_cmd 504 ${my_cmd}
369 505
370 # remove the old version 506 # remove the old version
371 # 507 #
372 # why do we do this? well ... 508 # why do we do this? well ...
373 # 509 #
376 # slot to the old version, then the old version gets left behind 512 # slot to the old version, then the old version gets left behind
377 # 513 #
378 # if USE=-vhosts, then we want to remove the old version, because 514 # if USE=-vhosts, then we want to remove the old version, because
379 # the user is relying on portage to do the magical thing for it 515 # the user is relying on portage to do the magical thing for it
380 516
381 if [ "$IS_UPGRADE" = "1" ] ; then 517 if [ "${IS_UPGRADE}" = "1" ] ; then
382 einfo "Removing old version $REMOVE_PKG" 518 einfo "Removing old version ${REMOVE_PKG}"
383 519
384 echo emerge -C $CATEGORY/$REMOVE_PKG 520 emerge -C "${REMOVE_PKG}"
385 fi 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"
386 fi 537 fi
387 538
388 return 0 539 return 0
389} 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.17  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.20