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

Diff of /eclass/webapp.eclass

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

Revision 1.20 Revision 1.32
1# Copyright 1999-2004 Gentoo Technologies, Inc. 1# Copyright 1999-2004 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.20 2004/05/22 18:56:58 stuart Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/webapp.eclass,v 1.32 2005/07/06 20:20:04 agriffis 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
17# your changes will be overwritten the next time Stu releases a new version 17# your changes will be overwritten the next time Stu releases a new version
18# of webapp-config. 18# of webapp-config.
19# 19#
20# ------------------------------------------------------------------------ 20# ------------------------------------------------------------------------
21 21
22ECLASS=webapp
23INHERITED="$INHERITED $ECLASS" 22INHERITED="$INHERITED $ECLASS"
24SLOT="${PVR}" 23SLOT="${PVR}"
25IUSE="$IUSE vhosts" 24IUSE="$IUSE vhosts"
26DEPEND="$DEPEND >=net-www/webapp-config-1.7 app-portage/gentoolkit" 25DEPEND="$DEPEND net-www/webapp-config app-portage/gentoolkit"
27 26
28EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install pkg_prerm 27EXPORT_FUNCTIONS pkg_postinst pkg_setup src_install pkg_prerm
29 28
30INSTALL_DIR="/$PN" 29INSTALL_DIR="/$PN"
31IS_UPGRADE=0 30IS_UPGRADE=0
32IS_REPLACE=0 31IS_REPLACE=0
33 32
34INSTALL_CHECK_FILE="installed_by_webapp_eclass" 33INSTALL_CHECK_FILE="installed_by_webapp_eclass"
35 34
35ETC_CONFIG="/etc/vhosts/webapp-config"
36
36# ------------------------------------------------------------------------ 37# ------------------------------------------------------------------------
37# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY 38# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
38# 39#
39# Check whether a specified file exists within the image/ directory 40# Check whether a specified file exists within the image/ directory
40# or not. 41# or not.
48{ 49{
49 local my_prefix 50 local my_prefix
50 51
51 [ -n "$2" ] && my_prefix="$2/" || my_prefix= 52 [ -n "$2" ] && my_prefix="$2/" || my_prefix=
52 53
53 if [ ! -e ${my_prefix}$1 ]; then 54 if [ ! -e "${my_prefix}$1" ]; then
54 msg="ebuild fault: file $1 not found" 55 msg="ebuild fault: file '$1' not found"
55 eerror "$msg" 56 eerror "$msg"
56 eerror "Please report this as a bug at http://bugs.gentoo.org/" 57 eerror "Please report this as a bug at http://bugs.gentoo.org/"
57 die "$msg" 58 die "$msg"
58 fi 59 fi
59} 60}
64 65
65function webapp_check_installedat 66function webapp_check_installedat
66{ 67{
67 local my_output 68 local my_output
68 69
69 /usr/sbin/webapp-config --show-installed -h localhost -d $INSTALL_DIR 2> /dev/null 70 /usr/sbin/webapp-config --show-installed -h localhost -d "$INSTALL_DIR" 2> /dev/null
70} 71}
71 72
72# ------------------------------------------------------------------------ 73# ------------------------------------------------------------------------
73# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY 74# INTERNAL FUNCTION - USED BY THIS ECLASS ONLY
74# ------------------------------------------------------------------------ 75# ------------------------------------------------------------------------
115# ------------------------------------------------------------------------ 116# ------------------------------------------------------------------------
116 117
117function webapp_configfile () 118function webapp_configfile ()
118{ 119{
119 webapp_checkfileexists "$1" "$D" 120 webapp_checkfileexists "$1" "$D"
120 echo $1 121
121 local MY_FILE="`webapp_strip_appdir $1`" 122 local MY_FILE="`webapp_strip_appdir \"$1\"`"
122 echo $MY_FILE 123 MY_FILE="`webapp_strip_cwd \"$MY_FILE\"`"
123 124
124 einfo "(config) $MY_FILE" 125 einfo "(config) $MY_FILE"
125 echo "$MY_FILE" >> ${D}${WA_CONFIGLIST} 126 echo "$MY_FILE" >> ${D}${WA_CONFIGLIST}
126} 127}
127 128
134# @param $1 - the script to run 135# @param $1 - the script to run
135# ------------------------------------------------------------------------ 136# ------------------------------------------------------------------------
136 137
137function webapp_hook_script () 138function webapp_hook_script ()
138{ 139{
139 webapp_checkfileexists "$2" 140 webapp_checkfileexists "$1"
140 141
141 einfo "(hook) $1" 142 einfo "(hook) $1"
142 cp "$1" "${D}${MY_HOOKSCRIPTSDIR}/`basename $1`" || die "Unable to install $1 into ${D}${MY_HOOKSCRIPTSDIR}/" 143 cp "$1" "${D}${MY_HOOKSCRIPTSDIR}/`basename $1`" || die "Unable to install $1 into ${D}${MY_HOOKSCRIPTSDIR}/"
143 chmod 555 "${D}${MY_HOOKSCRIPTSDIR}/`basename $1`" 144 chmod 555 "${D}${MY_HOOKSCRIPTSDIR}/`basename $1`"
144} 145}
150# 151#
151# @param $1 - language code (use 'en' for now) 152# @param $1 - language code (use 'en' for now)
152# @param $2 - the file to install 153# @param $2 - the file to install
153# ------------------------------------------------------------------------ 154# ------------------------------------------------------------------------
154 155
155function webapp_postinst_txt 156function webapp_postinst_txt ()
156{ 157{
157 webapp_checkfileexists "$2" 158 webapp_checkfileexists "$2"
158 159
159 einfo "(rtfm) $2 (lang: $1)" 160 einfo "(rtfm) $2 (lang: $1)"
160 cp "$2" "${D}${MY_APPDIR}/postinst-$1.txt" 161 cp "$2" "${D}${MY_APPDIR}/postinst-$1.txt"
161} 162}
162 163
163# ------------------------------------------------------------------------ 164# ------------------------------------------------------------------------
164# EXPORTED FUNCTION - FOR USE IN EBUILDS 165# EXPORTED FUNCTION - FOR USE IN EBUILDS
165# 166#
166# Identify a script file (usually, but not always PHP or Perl) which is 167# Install a text file containing post-upgrade instructions.
167# 168#
168# Files in this list may be modified to #! the required CGI engine when 169# @param $1 - language code (use 'en' for now)
169# installed by webapp-config tool in the future. 170# @param $2 - the file to install
170#
171# @param $1 - the cgi engine to use
172# @param $2 - the script file that could run under a cgi-bin
173#
174# ------------------------------------------------------------------------ 171# ------------------------------------------------------------------------
172
173function webapp_postupgrade_txt ()
174{
175 webapp_checkfileexists "$2"
176
177 einfo "(rtfm) $2 (lang: $1)"
178 cp "$2" "${D}${MY_APPDIR}/postupgrade-$1.txt"
179}
180
181# ------------------------------------------------------------------------
182# DEPRECATED FUNCTION
183#
184# It never worked anyway
175 185
176function webapp_runbycgibin () 186function webapp_runbycgibin ()
177{ 187{
178 webapp_checkfileexists "$2" "$D" 188 if [ -n "$WARN_RUNBYCGIBIN" ] ; then
179 local MY_FILE="`webapp_strip_appdir $2`" 189 return
180 MY_FILE="`webapp_strip_cwd $MY_FILE`" 190 fi
181 191
182 einfo "(cgi-bin) $1 - $MY_FILE" 192 ewarn "This ebuild uses webapp.eclass's webapp_runbycgibin, which is now"
183 echo "$1 $MY_FILE" >> ${D}${WA_RUNBYCGIBINLIST} 193 ewarn "deprecated. Please file a bug about this in Bugzilla."
194 WARN_RUNBYCGIBIN=1
184} 195}
185 196
186# ------------------------------------------------------------------------ 197# ------------------------------------------------------------------------
187# EXPORTED FUNCTION - FOR USE IN EBUILDS 198# EXPORTED FUNCTION - FOR USE IN EBUILDS
188# 199#
197# ------------------------------------------------------------------------ 208# ------------------------------------------------------------------------
198 209
199function webapp_serverowned () 210function webapp_serverowned ()
200{ 211{
201 webapp_checkfileexists "$1" "$D" 212 webapp_checkfileexists "$1" "$D"
202 local MY_FILE="`webapp_strip_appdir $1`" 213 local MY_FILE="`webapp_strip_appdir \"$1\"`"
214 MY_FILE="`webapp_strip_cwd \"$MY_FILE\"`"
203 215
204 einfo "(server owned) $MY_FILE" 216 einfo "(server owned) $MY_FILE"
205 echo "$MY_FILE" >> ${D}${WA_SOLIST} 217 echo "$MY_FILE" >> "${D}${WA_SOLIST}"
206} 218}
207 219
208# ------------------------------------------------------------------------ 220# ------------------------------------------------------------------------
209# EXPORTED FUNCTION - FOR USE IN EBUILDS 221# EXPORTED FUNCTION - FOR USE IN EBUILDS
210# 222#
217# NOTE: 229# NOTE:
218# this function will automagically prepend $1 to the front of your 230# this function will automagically prepend $1 to the front of your
219# config file's name 231# config file's name
220# ------------------------------------------------------------------------ 232# ------------------------------------------------------------------------
221 233
222function webapp_server_config () 234function webapp_server_configfile ()
223{ 235{
224 webapp_checkfileexists "$2" 236 webapp_checkfileexists "$2"
225 237
226 # sort out what the name will be of the config file 238 # sort out what the name will be of the config file
227 239
228 local my_file 240 local my_file
229 241
230 if [ -z "$3" ]; then 242 if [ -z "$3" ]; then
231 $my_file="$1-`basename $2`" 243 my_file="$1-`basename $2`"
232 else 244 else
233 $my_file="$1-$3" 245 my_file="$1-$3"
234 fi 246 fi
235 247
236 # warning: 248 # warning:
237 # 249 #
238 # do NOT change the naming convention used here without changing all 250 # do NOT change the naming convention used here without changing all
274 286
275 # are we dealing with an 'upgrade'-type script? 287 # are we dealing with an 'upgrade'-type script?
276 if [ -n "$3" ]; then 288 if [ -n "$3" ]; then
277 # yes we are 289 # yes we are
278 einfo "($1) upgrade script from ${PN}-${PVR} to $3" 290 einfo "($1) upgrade script from ${PN}-${PVR} to $3"
279 cp $2 ${D}${MY_SQLSCRIPTSDIR}/$1/${3}_to_${PVR}.sql 291 cp "$2" "${D}${MY_SQLSCRIPTSDIR}/$1/${3}_to_${PVR}.sql"
292 chmod 600 "${D}${MY_SQLSCRIPTSDIR}/$1/${3}_to_${PVR}.sql"
280 else 293 else
281 # no, we are not 294 # no, we are not
282 einfo "($1) create script for ${PN}-${PVR}" 295 einfo "($1) create script for ${PN}-${PVR}"
283 cp $2 ${D}${MY_SQLSCRIPTSDIR}/$1/${PVR}_create.sql 296 cp "$2" "${D}${MY_SQLSCRIPTSDIR}/$1/${PVR}_create.sql"
297 chmod 600 "${D}${MY_SQLSCRIPTSDIR}/$1/${PVR}_create.sql"
284 fi 298 fi
285} 299}
286 300
287# ------------------------------------------------------------------------ 301# ------------------------------------------------------------------------
288# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER 302# EXPORTED FUNCTION - call from inside your ebuild's src_install AFTER
293# the final version! 307# the final version!
294# ------------------------------------------------------------------------ 308# ------------------------------------------------------------------------
295 309
296function webapp_src_install () 310function webapp_src_install ()
297{ 311{
298 chown -R ${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID} ${D}/ 312 chown -R "${VHOST_DEFAULT_UID}:${VHOST_DEFAULT_GID}" "${D}/"
299 chmod -R u-s ${D}/ 313 chmod -R u-s "${D}/"
300 chmod -R g-s ${D}/ 314 chmod -R g-s "${D}/"
301 315
302 keepdir ${MY_PERSISTDIR} 316 keepdir "${MY_PERSISTDIR}"
303 fowners root:root ${MY_PERSISTDIR} 317 fowners "root:root" "${MY_PERSISTDIR}"
304 fperms 755 ${MY_PERSISTDIR} 318 fperms 755 "${MY_PERSISTDIR}"
305 319
306 # to test whether or not the ebuild has correctly called this function 320 # to test whether or not the ebuild has correctly called this function
307 # we add an empty file to the filesystem 321 # we add an empty file to the filesystem
308 # 322 #
309 # we used to just set a variable in the shell script, but we can 323 # we used to just set a variable in the shell script, but we can
310 # no longer rely on Portage calling both webapp_src_install() and 324 # no longer rely on Portage calling both webapp_src_install() and
311 # webapp_pkg_postinst() within the same shell process 325 # webapp_pkg_postinst() within the same shell process
312 326
313 touch ${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE} 327 touch "${D}/${MY_APPDIR}/${INSTALL_CHECK_FILE}"
314} 328}
315 329
316# ------------------------------------------------------------------------ 330# ------------------------------------------------------------------------
317# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER 331# EXPORTED FUNCTION - call from inside your ebuild's pkg_config AFTER
318# everything else has run 332# everything else has run
330 fi 344 fi
331 345
332 # pull in the shared configuration file 346 # pull in the shared configuration file
333 347
334 G_HOSTNAME="localhost" 348 G_HOSTNAME="localhost"
335 . /etc/vhosts/webapp-config || die "Unable to open /etc/vhosts/webapp-config file" 349 . "${ETC_CONFIG}" || die "Unable to open file ${ETC_CONFIG}"
336 350
337 # are we installing a webapp-config solution over the top of a 351 # are we installing a webapp-config solution over the top of a
338 # non-webapp-config solution? 352 # non-webapp-config solution?
339 353
340 if ! use vhosts ; then 354 if ! use vhosts ; then
420 434
421function webapp_src_preinst () 435function webapp_src_preinst ()
422{ 436{
423 # create the directories that we need 437 # create the directories that we need
424 438
425 dodir ${MY_HTDOCSDIR} 439 dodir "${MY_HTDOCSDIR}"
426 dodir ${MY_HOSTROOTDIR} 440 dodir "${MY_HOSTROOTDIR}"
427 dodir ${MY_CGIBINDIR} 441 dodir "${MY_CGIBINDIR}"
428 dodir ${MY_ICONSDIR} 442 dodir "${MY_ICONSDIR}"
429 dodir ${MY_ERRORSDIR} 443 dodir "${MY_ERRORSDIR}"
430 dodir ${MY_SQLSCRIPTSDIR} 444 dodir "${MY_SQLSCRIPTSDIR}"
445 dodir "${MY_HOOKSCRIPTSDIR}"
446 dodir "${MY_SERVERCONFIGDIR}"
431} 447}
432 448
433function webapp_pkg_postinst () 449function webapp_pkg_postinst ()
434{ 450{
451 . "${ETC_CONFIG}"
452
435 # sanity checks, to catch bugs in the ebuild 453 # sanity checks, to catch bugs in the ebuild
436 454
437 if [ ! -f ${MY_APPDIR}/${INSTALL_CHECK_FILE} ]; then 455 if [ ! -f "${MY_APPDIR}/${INSTALL_CHECK_FILE}" ]; then
438 eerror 456 eerror
439 eerror "This ebuild did not call webapp_src_install() at the end" 457 eerror "This ebuild did not call webapp_src_install() at the end"
440 eerror "of the src_install() function" 458 eerror "of the src_install() function"
441 eerror 459 eerror
442 eerror "Please log a bug on http://bugs.gentoo.org" 460 eerror "Please log a bug on http://bugs.gentoo.org"
455 einfo "vhosts USE flag not set - auto-installing using webapp-config" 473 einfo "vhosts USE flag not set - auto-installing using webapp-config"
456 474
457 webapp_getinstalltype 475 webapp_getinstalltype
458 476
459 G_HOSTNAME="localhost" 477 G_HOSTNAME="localhost"
460 . /etc/vhosts/webapp-config 478 . "${ETC_CONFIG}"
461 479
462 local my_mode=-I 480 local my_mode=-I
463 481
464 if [ "$IS_REPLACE" = "1" ]; then 482 if [ "$IS_REPLACE" = "1" ]; then
465 einfo "${PN}-${PVR} is already installed - replacing" 483 einfo "${PN}-${PVR} is already installed - replacing"
466 /usr/sbin/webapp-config -C -d "$INSTALL_DIR" 484 my_mode=-I
467 elif [ "$IS_UPGRADE" = "1" ]; then 485 elif [ "$IS_UPGRADE" = "1" ]; then
468 einfo "$REMOVE_PKG is already installed - upgrading" 486 einfo "$REMOVE_PKG is already installed - upgrading"
469 my_mode=-U 487 my_mode=-U
470 else 488 else
471 einfo "${PN}-${PVR} is not installed - using install mode" 489 einfo "${PN}-${PVR} is not installed - using install mode"
487 # the user is relying on portage to do the magical thing for it 505 # the user is relying on portage to do the magical thing for it
488 506
489 if [ "$IS_UPGRADE" = "1" ] ; then 507 if [ "$IS_UPGRADE" = "1" ] ; then
490 einfo "Removing old version $REMOVE_PKG" 508 einfo "Removing old version $REMOVE_PKG"
491 509
492 emerge -C $CATEGORY/$REMOVE_PKG 510 emerge -C "$REMOVE_PKG"
493 fi 511 fi
494 else 512 else
495 # vhosts flag is on 513 # vhosts flag is on
496 # 514 #
497 # let's tell the administrator what to do next 515 # let's tell the administrator what to do next

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

  ViewVC Help
Powered by ViewVC 1.1.20