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

Diff of /eclass/webapp.eclass

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

Revision 1.13 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.13 2004/04/30 08:25:38 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.6" 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|${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}"
98 echo $1 131
99 local MY_FILE="`webapp_strip_appdir $1`" 132 local MY_FILE="$(webapp_strip_appdir "${m}")"
100 echo $MY_FILE 133 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
101 134
102 einfo "(config) $MY_FILE" 135 einfo "(config) ${MY_FILE}"
103 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}")"
104} 156}
105 157
106# ------------------------------------------------------------------------ 158# ------------------------------------------------------------------------
107# EXPORTED FUNCTION - FOR USE IN EBUILDS 159# EXPORTED FUNCTION - FOR USE IN EBUILDS
108# 160#
110# 162#
111# @param $1 - language code (use 'en' for now) 163# @param $1 - language code (use 'en' for now)
112# @param $2 - the file to install 164# @param $2 - the file to install
113# ------------------------------------------------------------------------ 165# ------------------------------------------------------------------------
114 166
115function webapp_postinst_txt 167function webapp_postinst_txt ()
116{ 168{
117 webapp_checkfileexists "$2" 169 webapp_checkfileexists "${2}"
118 170
119 einfo "(rtfm) $2 (lang: $1)" 171 einfo "(info) ${2} (lang: ${1})"
120 cp "$2" "${D}${MY_APPDIR}/postinst-$1.txt" 172 cp "${2}" "${D}/${MY_APPDIR}/postinst-${1}.txt"
121} 173}
122 174
123# ------------------------------------------------------------------------ 175# ------------------------------------------------------------------------
124# EXPORTED FUNCTION - FOR USE IN EBUILDS 176# EXPORTED FUNCTION - FOR USE IN EBUILDS
125# 177#
126# Identify a script file (usually, but not always PHP or Perl) which is 178# Install a text file containing post-upgrade instructions.
127# 179#
128# Files in this list may be modified to #! the required CGI engine when 180# @param $1 - language code (use 'en' for now)
129# installed by webapp-config tool in the future. 181# @param $2 - the file to install
130#
131# @param $1 - the cgi engine to use
132# @param $2 - the script file that could run under a cgi-bin
133#
134# ------------------------------------------------------------------------ 182# ------------------------------------------------------------------------
135 183
136function webapp_runbycgibin () 184function webapp_postupgrade_txt ()
137{ 185{
138 webapp_checkfileexists "$2" "$D" 186 webapp_checkfileexists "${2}"
139 local MY_FILE="`webapp_strip_appdir $2`"
140 MY_FILE="`webapp_strip_cwd $MY_FILE`"
141 187
142 einfo "(cgi-bin) $1 - $MY_FILE" 188 einfo "(info) ${2} (lang: ${1})"
143 echo "$1 $MY_FILE" >> ${D}${WA_RUNBYCGIBINLIST} 189 cp "${2}" "${D}/${MY_APPDIR}/postupgrade-${1}.txt"
144} 190}
145 191
146# ------------------------------------------------------------------------ 192# ------------------------------------------------------------------------
147# EXPORTED FUNCTION - FOR USE IN EBUILDS 193# EXPORTED FUNCTION - FOR USE IN EBUILDS
148# 194#
149# 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
150# settings. 196# settings.
151# 197#
152# 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
153# using the webapp-config tool. 199# using the webapp-config tool.
154# 200#
155# @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
156# 202#
157# ------------------------------------------------------------------------ 203# ------------------------------------------------------------------------
158 204
159function webapp_serverowned () 205function webapp_serverowned ()
160{ 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
161 webapp_checkfileexists "$1" "$D" 224 webapp_checkfileexists "${m}" "$D"
162 local MY_FILE="`webapp_strip_appdir $1`" 225 local MY_FILE="$(webapp_strip_appdir "${m}")"
163 226 MY_FILE="$(webapp_strip_cwd "${MY_FILE}")"
227
164 einfo "(server owned) $MY_FILE" 228 einfo "(server owned) ${MY_FILE}"
165 echo "$MY_FILE" >> ${D}${WA_SOLIST} 229 echo "${MY_FILE}" >> "${D}/${WA_SOLIST}"
230 done
231 fi
166} 232}
167 233
168# ------------------------------------------------------------------------ 234# ------------------------------------------------------------------------
169# EXPORTED FUNCTION - FOR USE IN EBUILDS 235# EXPORTED FUNCTION - FOR USE IN EBUILDS
170# 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
171# 273#
172# @param $1 - the db engine that the script is for 274# @param $1 - the db engine that the script is for
173# (one of: mysql|postgres) 275# (one of: mysql|postgres)
174# @param $2 - the sql script to be installed 276# @param $2 - the sql script to be installed
175# @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
178# a new db from scratch) 280# a new db from scratch)
179# ------------------------------------------------------------------------ 281# ------------------------------------------------------------------------
180 282
181function webapp_sqlscript () 283function webapp_sqlscript ()
182{ 284{
183 webapp_checkfileexists "$2" 285 webapp_checkfileexists "${2}"
184 286
185 # create the directory where this script will go 287 # create the directory where this script will go
186 # 288 #
187 # scripts for specific database engines go into their own subdirectory 289 # scripts for specific database engines go into their own subdirectory
188 # just to keep things readable on the filesystem 290 # just to keep things readable on the filesystem
189 291
190 if [ ! -d "${D}${MY_SQLSCRIPTSDIR}/$1" ]; then 292 if [ ! -d "${D}/${MY_SQLSCRIPTSDIR}/${1}" ]; then
191 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}"
192 fi 294 fi
193 295
194 # warning: 296 # warning:
195 # 297 #
196 # do NOT change the naming convention used here without changing all 298 # do NOT change the naming convention used here without changing all
197 # the other scripts that also rely upon these names 299 # the other scripts that also rely upon these names
198 300
199 # are we dealing with an 'upgrade'-type script? 301 # are we dealing with an 'upgrade'-type script?
200 if [ -n "$3" ]; then 302 if [ -n "${3}" ]; then
201 # yes we are 303 # yes we are
202 einfo "($1) upgrade script from ${PN}-${PVR} to $3" 304 einfo "(${1}) upgrade script from ${PN}-${PVR} to ${3}"
203 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"
204 else 307 else
205 # no, we are not 308 # no, we are not
206 einfo "($1) create script for ${PN}-${PVR}" 309 einfo "(${1}) create script for ${PN}-${PVR}"
207 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"
208 fi 312 fi
209} 313}
210 314
211# ------------------------------------------------------------------------ 315# ------------------------------------------------------------------------
212# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER 316# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER
213# everything else has run 317# everything else has run
214# 318#
215# 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
216# are no setuid files. I'm sure this will change significantly before 320# are no setuid files.
217# the final version!
218# ------------------------------------------------------------------------ 321# ------------------------------------------------------------------------
219 322
220function webapp_src_install () 323function webapp_src_install ()
221{ 324{
222 chown -R root:root ${D}/ 325 chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
223 chmod -R u-s ${D}/ 326 chmod -R u-s "${D}/"
224 chmod -R g-s ${D}/ 327 chmod -R g-s "${D}/"
225 328
226 keepdir ${MY_PERSISTDIR} 329 keepdir "${MY_PERSISTDIR}"
227 fowners root:root ${MY_PERSISTDIR} 330 fowners "root:0" "${MY_PERSISTDIR}"
228 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}"
229} 341}
230 342
231# ------------------------------------------------------------------------ 343# ------------------------------------------------------------------------
232# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER 344# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER
233# everything else has run 345# everything else has run
236# 348#
237# ------------------------------------------------------------------------ 349# ------------------------------------------------------------------------
238 350
239function webapp_pkg_setup () 351function webapp_pkg_setup ()
240{ 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
241 # pull in the shared configuration file 368 # pull in the shared configuration file
242 369
243 . /etc/vhosts/webapp-config || die "Unable to open /etc/vhosts/webapp-config file" 370 G_HOSTNAME="localhost"
371 webapp_read_config
244 372
245 # 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?
246 375
247 if [ -d "${D}${MY_APPROOT}/${MY_APPSUFFIX}" ]; then
248 # yes we are
249 ewarn "Removing existing copy of ${PN}-${PVR}"
250 rm -rf "${D}${MY_APPROOT}/${MY_APPSUFFIX}"
251 fi
252}
253
254function webapp_src_preinst ()
255{
256 # create the directories that we need
257
258 dodir ${MY_HTDOCSDIR}
259 dodir ${MY_HOSTROOTDIR}
260 dodir ${MY_CGIBINDIR}
261 dodir ${MY_ICONSDIR}
262 dodir ${MY_ERRORSDIR}
263 dodir ${MY_SQLSCRIPTSDIR}
264}
265
266function webapp_pkg_postinst ()
267{
268 einfo "webapp_pkg_postinst() called"
269
270 # if 'vhosts' is not set in your USE flags, we install a copy of
271 # this application in /var/www/localhost/htdocs/${PN}/ for you
272
273
274 if ! use vhosts ; then 376 if ! use vhosts ; then
275 einfo "vhosts USE flag not set - auto-installing using webapp-config" 377 local my_dir="${ROOT}${VHOST_ROOT}/${MY_HTDOCSBASE}/${PN}"
378 local my_output
276 379
277 G_HOSTNAME="localhost" 380 if [ -d "${my_dir}" ] ; then
278 . /etc/vhosts/webapp-config 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?"
279 383
280 local my_mode=-I 384 my_output="$(webapp_check_installedat)"
281 local my_dir="/${PN}"
282 385
283 # are we installing afresh - or are we upgrading?
284 # find out by looking to see what (if anything) is installed
285 # in there already
286
287 my_cmd="/usr/sbin/webapp-config --show-installed -d $my_dir 2> /dev/null"
288 einfo "$my_cmd"
289
290 my_output="`/usr/sbin/webapp-config --show-installed -d $my_dir 2> /dev/null`"
291
292 # we can't use the exit status from webapp-config
293
294 if [ "$?" = "0" ]; then 386 if [ "$?" != "0" ]; then
295 387
296 # something is in there - but the question has to be ... what? 388 # okay, whatever is there, it isn't webapp-config-compatible
297 389 ewarn
298 ewarn "$my_output already installed" 390 ewarn "Whatever is in ${my_dir}, it's not"
299 391 ewarn "compatible with webapp-config."
392 ewarn
393 ewarn "This ebuild may be overwriting important files."
394 ewarn
300 if [ "`echo $my_output | awk '{ print $1 }'`" = "${PN}" ]; then 395 elif [ "$(echo ${my_output} | awk '{ print $1 }')" != "${PN}" ]; then
301 einfo "$my_output is a copy of ${PN}" 396 eerror "${my_dir} contains ${my_output}"
302 if [ "`echo $my_output | awk '{ print $2 }'`" = "${PVR}" ]; then 397 eerror "I cannot upgrade that"
303 # this version is already installed 398 die "Cannot upgrade contents of ${my_dir}"
304 # we need to remove it first 399 else
400 einfo
401 einfo "I can upgrade the contents of ${my_dir}"
402 einfo
403 fi
404 fi
405 fi
406}
305 407
306 /usr/sbin/webapp-config -C -d $my_dir 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
307 else 433 else
308 # we have an older version of whatever it is our ebuild is 434 einfo "This is a re-installation"
309 # trying to install ;-) 435 IS_REPLACE=1
310 #
311 # this is the situation we can deal with
312
313 einfo "selecting upgrade mode"
314 my_mode=-U
315 fi 436 fi
316 else 437 else
317 # this should never happen - but just in case ... 438 einfo "${my_output} is installed there"
318 #
319 # whatever is in that directory, it isn't the application
320 # that we are currently trying to install
321 #
322 # rather than overwrite the contents, we bail with an error
323 # instead
324
325 die "$my_output is already installed in $my_dir"
326 fi 439 fi
440 else
441 einfo "This is an installation"
442 fi
443 fi
444}
445
446function webapp_src_preinst ()
447{
448 # create the directories that we need
449
450 dodir "${MY_HTDOCSDIR}"
451 dodir "${MY_HOSTROOTDIR}"
452 dodir "${MY_CGIBINDIR}"
453 dodir "${MY_ICONSDIR}"
454 dodir "${MY_ERRORSDIR}"
455 dodir "${MY_SQLSCRIPTSDIR}"
456 dodir "${MY_HOOKSCRIPTSDIR}"
457 dodir "${MY_SERVERCONFIGDIR}"
458}
459
460function webapp_pkg_postinst ()
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
488 G_HOSTNAME="localhost"
489 local my_mode=-I
490 webapp_read_config
491
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
327 else 498 else
328 einfo "${PN}-${PVR} is not installed - using install mode" 499 einfo "${PN}-${PVR} is not installed - using install mode"
329 fi 500 fi
330 501
331 my_cmd="/usr/sbin/webapp-config $my_mode -h localhost -u root -d $my_dir ${PN} ${PVR}" 502 my_cmd="${WEBAPP_CONFIG} ${my_mode} -h localhost -u root -d ${INSTALL_DIR} ${PN} ${PVR}"
332 einfo "Running $my_cmd" 503 einfo "Running ${my_cmd}"
333 $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"
334 fi 537 fi
335 538
336 return 0 539 return 0
337} 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.13  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.20