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

Diff of /eclass/webapp.eclass

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

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

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

  ViewVC Help
Powered by ViewVC 1.1.20