/[gentoo-x86]/eclass/apache-2.eclass
Gentoo

Diff of /eclass/apache-2.eclass

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

Revision 1.2 Revision 1.17
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2007 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/apache-2.eclass,v 1.2 2007/11/29 18:43:31 hollow Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.17 2009/07/05 16:05:25 hollow Exp $
4 4
5# @ECLASS: apache-2 5# @ECLASS: apache-2.eclass
6# @MAINTAINER:
6# @MAINTAINER: apache-devs@gentoo.org 7# apache-devs@gentoo.org
7# @BLURB: Provides a common set of functions for >=apache-2.2* ebuilds 8# @BLURB: Provides a common set of functions for apache-2.x ebuilds
8# @DESCRIPTION: 9# @DESCRIPTION:
9# This eclass handles common apache ebuild functions in a sane way and providing 10# This eclass handles apache-2.x ebuild functions such as LoadModule generation
10# information about where certain interfaces are located such as LoadModule
11# generation and inter-module dependency checking. 11# and inter-module dependency checking.
12 12
13inherit depend.apache eutils flag-o-matic multilib autotools 13inherit autotools confutils eutils flag-o-matic multilib
14 14
15# ============================================================================== 15# ==============================================================================
16# INTERNAL VARIABLES 16# INTERNAL VARIABLES
17# ============================================================================== 17# ==============================================================================
18 18
19# @ECLASS-VARIABLE: GENTOO_PATCHNAME 19# @ECLASS-VARIABLE: GENTOO_PATCHNAME
20# @DESCRIPTION: 20# @DESCRIPTION:
21# This internal variable contains the prefix for the patch tarball 21# This internal variable contains the prefix for the patch tarball.
22GENTOO_PATCHNAME="gentoo-${PF}" 22# Defaults to the full name and version (including revision) of the package.
23# If you want to override this in an ebuild, use:
24# ORIG_PR="(revision of Gentoo stuff you want)"
25# GENTOO_PATCHNAME="gentoo-${PN}-${PV}${ORIG_PR:+-${ORIG_PR}}"
26[[ -n "$GENTOO_PATCHNAME" ]] || GENTOO_PATCHNAME="gentoo-${PF}"
23 27
24# @ECLASS-VARIABLE: GENTOO_PATCHDIR 28# @ECLASS-VARIABLE: GENTOO_PATCHDIR
25# @DESCRIPTION: 29# @DESCRIPTION:
26# This internal variable contains the working directory where patches and config 30# This internal variable contains the working directory where patches and config
27# files are located 31# files are located.
32# Defaults to the patchset name appended to the working directory.
28GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}" 33[[ -n "$GENTOO_PATCHDIR" ]] || GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}"
29 34
30# @ECLASS-VARIABLE: GENTOO_DEVELOPER 35# @VARIABLE: GENTOO_DEVELOPER
31# @DESCRIPTION: 36# @DESCRIPTION:
32# This variable needs to be set in the ebuild and contains the name of the 37# This variable needs to be set in the ebuild and contains the name of the
33# gentoo developer who created the patch tarball 38# gentoo developer who created the patch tarball
34 39
35# @ECLASS-VARIABLE: GENTOO_PATCHSTAMP 40# @VARIABLE: GENTOO_PATCHSTAMP
36# @DESCRIPTION: 41# @DESCRIPTION:
37# This variable needs to be set in the ebuild and contains the date the patch 42# This variable needs to be set in the ebuild and contains the date the patch
38# tarball was created at in YYMMDD format 43# tarball was created at in YYYYMMDD format
44
45# @VARIABLE: GENTOO_PATCH_A
46# @DESCRIPTION:
47# This variable should contain the entire filename of patch tarball.
48# Defaults to the name of the patchset, with a datestamp.
49[[ -n "$GENTOO_PATCH_A" ]] || GENTOO_PATCH_A="${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2"
39 50
40SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2 51SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2
41 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2" 52 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCH_A}"
42 53
43# @ECLASS-VARIABLE: IUSE_MPMS_FORK 54# @VARIABLE: IUSE_MPMS_FORK
44# @DESCRIPTION: 55# @DESCRIPTION:
45# This variable needs to be set in the ebuild and contains a list of forking 56# This variable needs to be set in the ebuild and contains a list of forking
46# (i.e. non-threaded) MPMS 57# (i.e. non-threaded) MPMs
47 58
48# @ECLASS-VARIABLE: IUSE_MPMS_THREAD 59# @VARIABLE: IUSE_MPMS_THREAD
49# @DESCRIPTION: 60# @DESCRIPTION:
50# This variable needs to be set in the ebuild and contains a list of threaded 61# This variable needs to be set in the ebuild and contains a list of threaded
51# MPMS 62# MPMs
52 63
53# @ECLASS-VARIABLE: IUSE_MODULES 64# @VARIABLE: IUSE_MODULES
54# @DESCRIPTION: 65# @DESCRIPTION:
55# This variable needs to be set in the ebuild and contains a list of available 66# This variable needs to be set in the ebuild and contains a list of available
56# built-in modules 67# built-in modules
57 68
58IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}" 69IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}"
59IUSE="debug doc ldap selinux ssl static suexec threads" 70IUSE="${IUSE} debug doc ldap selinux ssl static suexec threads"
60 71
61for module in ${IUSE_MODULES} ; do 72for module in ${IUSE_MODULES} ; do
62 IUSE="${IUSE} apache2_modules_${module}" 73 IUSE="${IUSE} apache2_modules_${module}"
63done 74done
64 75
70 =dev-libs/apr-1* 81 =dev-libs/apr-1*
71 =dev-libs/apr-util-1* 82 =dev-libs/apr-util-1*
72 dev-libs/libpcre 83 dev-libs/libpcre
73 ldap? ( =net-nds/openldap-2* ) 84 ldap? ( =net-nds/openldap-2* )
74 selinux? ( sec-policy/selinux-apache ) 85 selinux? ( sec-policy/selinux-apache )
75 ssl? ( dev-libs/openssl ) 86 ssl? ( >=dev-libs/openssl-0.9.8f )
76 !=www-servers/apache-1*" 87 !=www-servers/apache-1*"
77RDEPEND="${DEPEND}" 88RDEPEND="${DEPEND}"
78PDEPEND="~app-admin/apache-tools-${PV}" 89PDEPEND="~app-admin/apache-tools-${PV}"
79 90
80S="${WORKDIR}/httpd-${PV}" 91S="${WORKDIR}/httpd-${PV}"
82# ============================================================================== 93# ==============================================================================
83# INTERNAL FUNCTIONS 94# INTERNAL FUNCTIONS
84# ============================================================================== 95# ==============================================================================
85 96
86# @ECLASS-VARIABLE: MY_MPM 97# @ECLASS-VARIABLE: MY_MPM
87# DESCRIPTION: 98# @DESCRIPTION:
88# This internal variable contains the selected MPM after a call to setup_mpm() 99# This internal variable contains the selected MPM after a call to setup_mpm()
89 100
90# @FUNCTION: setup_mpm 101# @FUNCTION: setup_mpm
91# @DESCRIPTION: 102# @DESCRIPTION:
92# This internal function makes sure that only one of APACHE2_MPMS was selected 103# This internal function makes sure that only one of APACHE2_MPMS was selected
93# or a default based on USE=threads is selected if APACHE2_MPMS is empty 104# or a default based on USE=threads is selected if APACHE2_MPMS is empty
94setup_mpm() { 105setup_mpm() {
106 MY_MPM=""
95 for x in ${IUSE_MPMS} ; do 107 for x in ${IUSE_MPMS} ; do
96 if use apache2_mpms_${x} ; then 108 if use apache2_mpms_${x} ; then
97 if [[ -z "${MY_MPM}" ]] ; then 109 if [[ -z "${MY_MPM}" ]] ; then
98 MY_MPM=${x} 110 MY_MPM=${x}
99 elog 111 elog
130 eerror "You have selected a non-threaded MPM but USE=threads is enabled" 142 eerror "You have selected a non-threaded MPM but USE=threads is enabled"
131 die "invalid use flag combination" 143 die "invalid use flag combination"
132 fi 144 fi
133} 145}
134 146
147# @VARIABLE: MODULE_CRITICAL
148# @DESCRIPTION:
149# This variable needs to be set in the ebuild and contains a space-separated
150# list of modules critical for the default apache. A user may still
151# disable these modules for custom minimal installation at their own risk.
152
153# @FUNCTION: check_module_critical
154# @DESCRIPTION:
155# This internal function warns the user about modules critical for the default
156# apache configuration.
157check_module_critical() {
158 local unsupported=0
159
160 for m in ${MODULE_CRITICAL} ; do
161 if ! has ${m} ${MY_MODS} ; then
162 ewarn "Module '${m}' is required in the default apache configuration."
163 unsupported=1
164 fi
165 done
166
167 if [[ ${unsupported} -ne 0 ]] ; then
168 ewarn
169 ewarn "You have disabled one or more required modules"
170 ewarn "for the default apache configuration."
171 ewarn "Although this is not an error, please be"
172 ewarn "aware that this setup is UNSUPPORTED."
173 ewarn
174 ebeep 10
175 fi
176}
177
135# @ECLASS-VARIABLE: MODULE_DEPENDS 178# @VARIABLE: MODULE_DEPENDS
136# @DESCRIPTION: 179# @DESCRIPTION:
137# This variable needs to be set in the ebuild and contains a space-separated 180# This variable needs to be set in the ebuild and contains a space-separated
138# list of dependency tokens each with a module and the module it depends on 181# list of dependency tokens each with a module and the module it depends on
139# separated by a colon 182# separated by a colon
140 183
145check_module_depends() { 188check_module_depends() {
146 local err=0 189 local err=0
147 190
148 for m in ${MY_MODS} ; do 191 for m in ${MY_MODS} ; do
149 for dep in ${MODULE_DEPENDS} ; do 192 for dep in ${MODULE_DEPENDS} ; do
150 if [[ "${m}" == "${dep%:*}" ]]; then 193 if [[ "${m}" == "${dep%:*}" ]] ; then
151 if ! use apache2_modules_${dep#*:} ; then 194 if ! use apache2_modules_${dep#*:} ; then
152 eerror "Module '${m}' depends on '${dep#*:}'" 195 eerror "Module '${m}' depends on '${dep#*:}'"
153 err=1 196 err=1
154 fi 197 fi
155 fi 198 fi
160 die "invalid use flag combination" 203 die "invalid use flag combination"
161 fi 204 fi
162} 205}
163 206
164# @ECLASS-VARIABLE: MY_CONF 207# @ECLASS-VARIABLE: MY_CONF
165# DESCRIPTION: 208# @DESCRIPTION:
166# This internal variable contains the econf options for the current module 209# This internal variable contains the econf options for the current module
167# selection after a call to setup_modules() 210# selection after a call to setup_modules()
168 211
169# @ECLASS-VARIABLE: MY_MODS 212# @ECLASS-VARIABLE: MY_MODS
170# DESCRIPTION: 213# @DESCRIPTION:
171# This internal variable contains a sorted, space separated list of currently 214# This internal variable contains a sorted, space separated list of currently
172# selected modules after a call to setup_modules() 215# selected modules after a call to setup_modules()
173 216
174# @FUNCTION: setup_modules 217# @FUNCTION: setup_modules
175# @DESCRIPTION: 218# @DESCRIPTION:
185 fi 228 fi
186 229
187 MY_CONF="--enable-so=static" 230 MY_CONF="--enable-so=static"
188 231
189 if use ldap ; then 232 if use ldap ; then
190 if ! built_with_use 'dev-libs/apr-util' ldap ; then 233 confutils_use_depend_built_with_all ldap dev-libs/apr-util ldap
191 eerror "dev-libs/apr-util is missing LDAP support. For apache to have"
192 eerror "ldap support, apr-util must be built with the ldap USE-flag"
193 eerror "enabled."
194 die "ldap USE-flag enabled while not supported in apr-util"
195 fi
196 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}" 234 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}"
197 MY_MODS="${MY_MODS} ldap authnz_ldap" 235 MY_MODS="${MY_MODS} ldap authnz_ldap"
198 else 236 else
199 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap" 237 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap"
200 fi 238 fi
253 done 291 done
254 292
255 # sort and uniquify MY_MODS 293 # sort and uniquify MY_MODS
256 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u) 294 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u)
257 check_module_depends 295 check_module_depends
296 check_module_critical
258} 297}
259 298
260# @ECLASS-VARIABLE: MODULE_DEFINES 299# @VARIABLE: MODULE_DEFINES
261# @DESCRIPTION: 300# @DESCRIPTION:
262# This variable needs to be set in the ebuild and contains a space-separated 301# This variable needs to be set in the ebuild and contains a space-separated
263# list of tokens each mapping a module to a runtime define which can be 302# list of tokens each mapping a module to a runtime define which can be
264# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular 303# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular
265# module. 304# module.
267# @FUNCTION: generate_load_module 306# @FUNCTION: generate_load_module
268# @DESCRIPTION: 307# @DESCRIPTION:
269# This internal function generates the LoadModule lines for httpd.conf based on 308# This internal function generates the LoadModule lines for httpd.conf based on
270# the current module selection and MODULE_DEFINES 309# the current module selection and MODULE_DEFINES
271generate_load_module() { 310generate_load_module() {
272 local endit=0 mod_lines= mod_dir="${D}${APACHE2_MODULESDIR}" 311 local endit=0 mod_lines= mod_dir="${D}/usr/$(get_libdir)/apache2/modules"
273 312
274 if use static; then 313 if use static; then
275 sed -i -e "/%%LOAD_MODULE%%/d" \ 314 sed -i -e "/%%LOAD_MODULE%%/d" \
276 "${GENTOO_PATCHDIR}"/conf/httpd.conf 315 "${GENTOO_PATCHDIR}"/conf/httpd.conf
277 return 316 return
329# creates the apache user and group and informs about CONFIG_SYSVIPC being 368# creates the apache user and group and informs about CONFIG_SYSVIPC being
330# needed (we don't depend on kernel sources and therefore cannot check). 369# needed (we don't depend on kernel sources and therefore cannot check).
331apache-2_pkg_setup() { 370apache-2_pkg_setup() {
332 check_upgrade 371 check_upgrade
333 372
334 setup_mpm
335 setup_modules
336
337 if use debug; then
338 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
339 fi
340
341 # setup apache user and group 373 # setup apache user and group
342 enewgroup apache 81 374 enewgroup apache 81
343 enewuser apache 81 -1 /var/www apache 375 enewuser apache 81 -1 /var/www apache
344 376
377 setup_mpm
378 setup_modules
379
380 if use debug; then
381 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
382 fi
383
345 elog "Please note that you need SysV IPC support in your kernel." 384 elog "Please note that you need SysV IPC support in your kernel."
346 elog "Make sure CONFIG_SYSVIPC=y is set." 385 elog "Make sure CONFIG_SYSVIPC=y is set."
347 elog 386 elog
387
388 if use userland_BSD; then
389 elog "On BSD systems you need to add the following line to /boot/loader.conf:"
390 elog " accf_http_load=\"YES\""
391 elog
392 fi
348} 393}
349 394
350# @FUNCTION: apache-2_src_unpack 395# @FUNCTION: apache-2_src_unpack
351# @DESCRIPTION: 396# @DESCRIPTION:
352# This function applies patches, configures a custom file-system layout and 397# This function applies patches, configures a custom file-system layout and
353# rebuilds the configure scripts. The patch names are organized as follows: 398# rebuilds the configure scripts.
354#
355# 00-19 Gentoo specific (00_all_some-title.patch)
356# 20-39 Additional MPMs (20_all_${MPM}_some-title.patch)
357# 40-59 USE-flag based (40_all_${USE}_some-title.patch)
358# 60-79 Version specific (60_all_${PV}_some-title.patch)
359# 80-99 Security patches (80_all_${PV}_cve-####-####.patch)
360apache-2_src_unpack() { 399apache-2_src_unpack() {
361 unpack ${A} 400 unpack ${A}
362 cd "${S}" 401 cd "${S}"
402
403 # 03_all_gentoo-apache-tools.patch injects -Wl,-z,now, which is not a good
404 # idea for everyone
405 case ${CHOST} in
406 *-linux-gnu|*-solaris*|*-freebsd*)
407 # do nothing, these use GNU binutils
408 :
409 ;;
410 *-darwin*)
411 sed -i -e 's/-Wl,-z,now/-Wl,-bind_at_load/g' \
412 "${GENTOO_PATCHDIR}"/patches/03_all_gentoo_apache-tools.patch
413 ;;
414 *)
415 # patch it out to be like upstream
416 sed -i -e 's/-Wl,-z,now//g' \
417 "${GENTOO_PATCHDIR}"/patches/03_all_gentoo_apache-tools.patch
418 ;;
419 esac
363 420
364 # Use correct multilib libdir in gentoo patches 421 # Use correct multilib libdir in gentoo patches
365 sed -i -e "s:/usr/lib:/usr/$(get_libdir):g" \ 422 sed -i -e "s:/usr/lib:/usr/$(get_libdir):g" \
366 "${GENTOO_PATCHDIR}"/{conf/httpd.conf,init/*,patches/config.layout} \ 423 "${GENTOO_PATCHDIR}"/{conf/httpd.conf,init/*,patches/config.layout} \
367 || die "libdir sed failed" 424 || die "libdir sed failed"
371 # setup the filesystem layout config 428 # setup the filesystem layout config
372 cat "${GENTOO_PATCHDIR}"/patches/config.layout >> "${S}"/config.layout || \ 429 cat "${GENTOO_PATCHDIR}"/patches/config.layout >> "${S}"/config.layout || \
373 die "Failed preparing config.layout!" 430 die "Failed preparing config.layout!"
374 sed -i -e "s:version:${PF}:g" "${S}"/config.layout 431 sed -i -e "s:version:${PF}:g" "${S}"/config.layout
375 432
433 # apache2.8 instead of httpd.8 (bug #194828)
434 mv docs/man/{httpd,apache2}.8
435 sed -i -e 's/httpd\.8/apache2.8/g' Makefile.in
436
376 # patched-in MPMs need the build environment rebuilt 437 # patched-in MPMs need the build environment rebuilt
377 sed -i -e '/sinclude/d' configure.in 438 sed -i -e '/sinclude/d' configure.in
378 AT_GNUCONF_UPDATE=yes AT_M4DIR=build eautoreconf 439 AT_GNUCONF_UPDATE=yes AT_M4DIR=build eautoreconf
379
380 # apache2.8 instead of httpd.8 (bug #194828)
381 mv docs/man/{httpd,apache2}.8
382 sed -i -e 's/httpd\.8/apache2.8/g' Makefile.in
383} 440}
384 441
385# @FUNCTION: apache-2_src_compile 442# @FUNCTION: apache-2_src_compile
386# @DESCRIPTION: 443# @DESCRIPTION:
387# This function adds compiler flags and runs econf and emake based on MY_MPM and 444# This function adds compiler flags and runs econf and emake based on MY_MPM and
388# MY_CONF 445# MY_CONF
389apache-2_src_compile() { 446apache-2_src_compile() {
390 # Instead of filtering --as-needed (bug #128505), append --no-as-needed 447 # Instead of filtering --as-needed (bug #128505), append --no-as-needed
391 # Thanks to Harald van Dijk 448 # Thanks to Harald van Dijk
449 # ... but only on platforms that use a GNU linker!
450 case ${CHOST} in
451 *-solaris* | *-*bsd* | *-linux-gnu)
392 append-ldflags -Wl,--no-as-needed 452 append-ldflags -Wl,--no-as-needed
453 ;;
454 esac
393 455
394 # peruser MPM debugging with -X is nearly impossible 456 # peruser MPM debugging with -X is nearly impossible
395 if has peruser ${IUSE_MPMS} && use apache2_mpms_peruser ; then 457 if has peruser ${IUSE_MPMS} && use apache2_mpms_peruser ; then
396 use debug && append-flags -DMPM_PERUSER_DEBUG 458 use debug && append-flags -DMPM_PERUSER_DEBUG
397 fi 459 fi
403 --libexecdir=/usr/$(get_libdir)/apache2/modules \ 465 --libexecdir=/usr/$(get_libdir)/apache2/modules \
404 --datadir=/var/www/localhost \ 466 --datadir=/var/www/localhost \
405 --sysconfdir=/etc/apache2 \ 467 --sysconfdir=/etc/apache2 \
406 --localstatedir=/var \ 468 --localstatedir=/var \
407 --with-mpm=${MY_MPM} \ 469 --with-mpm=${MY_MPM} \
408 --with-perl=/usr/bin/perl \
409 --with-apr=/usr \ 470 --with-apr=/usr \
410 --with-apr-util=/usr \ 471 --with-apr-util=/usr \
411 --with-pcre=/usr \ 472 --with-pcre=/usr \
412 --with-z=/usr \ 473 --with-z=/usr \
413 --with-port=80 \ 474 --with-port=80 \
420 emake || die "emake failed" 481 emake || die "emake failed"
421} 482}
422 483
423# @FUNCTION: apache-2_src_install 484# @FUNCTION: apache-2_src_install
424# @DESCRIPTION: 485# @DESCRIPTION:
425# This function runs emake install and generates, install and adapts the gentoo 486# This function runs `emake install' and generates, installs and adapts the gentoo
426# specific configuration files found in the tarball 487# specific configuration files found in the tarball
427apache-2_src_install() { 488apache-2_src_install() {
428 emake DESTDIR="${D}" install || die "emake install failed" 489 make DESTDIR="${D}" install || die "make install failed"
429 490
430 # install our configuration files 491 # install our configuration files
431 keepdir /etc/apache2/vhosts.d 492 keepdir /etc/apache2/vhosts.d
432 keepdir /etc/apache2/modules.d 493 keepdir /etc/apache2/modules.d
433 494
449 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed" 510 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed"
450 511
451 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2 512 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2
452 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2 513 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2
453 514
454 # link apache2ctl to the init script 515 # install apache2ctl wrapper for our init script if available
516 if test -e "${GENTOO_PATCHDIR}"/scripts/apache2ctl; then
517 exeinto /usr/sbin
518 doexe "${GENTOO_PATCHDIR}"/scripts/apache2ctl
519 else
455 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl 520 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl
521 fi
456 522
457 # provide symlinks for all the stuff we no longer rename, bug 177697 523 # provide legacy symlink for apxs, bug 177697
458 for i in suexec apxs; do
459 dosym /usr/sbin/${i} /usr/sbin/${i}2 524 dosym /usr/sbin/apxs /usr/sbin/apxs2
460 done
461 525
462 # install some thirdparty scripts 526 # install some thirdparty scripts
463 exeinto /usr/sbin 527 exeinto /usr/sbin
464 use ssl && doexe "${GENTOO_PATCHDIR}"/scripts/gentestcrt.sh 528 use ssl && doexe "${GENTOO_PATCHDIR}"/scripts/gentestcrt.sh
465 529
473 else 537 else
474 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf" 538 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf"
475 rm -Rf "${D}/usr/share/doc/${PF}/manual" 539 rm -Rf "${D}/usr/share/doc/${PF}/manual"
476 fi 540 fi
477 541
478 # the default webroot gets stored in /usr/share/doc 542 # the default webroot gets stored in /usr/share/${PF}/webroot
479 ebegin "Installing default webroot to /usr/share/doc/${PF}" 543 ebegin "Installing default webroot to /usr/share/${PF}/webroot"
544 dodir /usr/share/${PF}
480 mv -f "${D}/var/www/localhost" "${D}/usr/share/doc/${PF}/webroot" 545 mv -f "${D}/var/www/localhost" "${D}/usr/share/${PF}/webroot"
481 eend $? 546 eend $?
482 keepdir /var/www/localhost/htdocs
483 547
484 # set some sane permissions for suexec 548 # set some sane permissions for suexec
485 if use suexec ; then 549 if use suexec ; then
486 fowners 0:apache /usr/sbin/suexec 550 fowners 0:${SUEXEC_CALLER:-apache} /usr/sbin/suexec
487 fperms 4710 /usr/sbin/suexec 551 fperms 4710 /usr/sbin/suexec
552 # provide legacy symlink for suexec, bug 177697
553 dosym /usr/sbin/suexec /usr/sbin/suexec2
488 fi 554 fi
489 555
490 # empty dirs 556 # empty dirs
491 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do 557 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do
492 keepdir ${i} 558 keepdir ${i}
499} 565}
500 566
501# @FUNCTION: apache-2_pkg_postinst 567# @FUNCTION: apache-2_pkg_postinst
502# @DESCRIPTION: 568# @DESCRIPTION:
503# This function creates test certificates if SSL is enabled and installs the 569# This function creates test certificates if SSL is enabled and installs the
504# default webroot if /var/www/localhost does not exist. We do this here because 570# default webroot to /var/www/localhost if it does not exist. We do this here
505# the default webroot is a copy of the files that exist elsewhere and we don't 571# because the default webroot is a copy of the files that exist elsewhere and we
506# want them to be managed/removed by portage when apache is upgraded. 572# don't want them to be managed/removed by portage when apache is upgraded.
507apache-2_pkg_postinst() { 573apache-2_pkg_postinst() {
574 einfo
575
508 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then 576 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then
509 cd "${ROOT}"/etc/apache2/ssl 577 cd "${ROOT}"/etc/apache2/ssl
510 einfo
511 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..." 578 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..."
512 yes "" 2>/dev/null | \ 579 yes "" 2>/dev/null | \
513 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \ 580 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \
514 die "gentestcrt.sh failed" 581 die "gentestcrt.sh failed"
515 einfo 582 einfo
524 elog "emerge --config =${PF}" 591 elog "emerge --config =${PF}"
525 elog 592 elog
526 else 593 else
527 einfo "Installing default webroot to ${ROOT}var/www/localhost" 594 einfo "Installing default webroot to ${ROOT}var/www/localhost"
528 mkdir -p "${ROOT}"/var/www/localhost 595 mkdir -p "${ROOT}"/var/www/localhost
529 cp -R "${ROOT}"/usr/share/doc/${PF}/webroot/* "${ROOT}"/var/www/localhost 596 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/
530 chown -R apache:0 "${ROOT}"/var/www/localhost 597 einfo
531 fi 598 fi
532} 599}
533 600
534# @FUNCTION: apache-2_pkg_config 601# @FUNCTION: apache-2_pkg_config
535# @DESCRIPTION: 602# @DESCRIPTION:
536# This function installs -- and removes a previously existing -- default webroot 603# This function installs -- and overwrites -- the default webroot to
537# to /var/www/localhost 604# /var/www/localhost
538apache-2_pkg_config() { 605apache-2_pkg_config() {
539 einfo "Installing default webroot to ${ROOT}var/www/localhost" 606 einfo "Installing default webroot to ${ROOT}var/www/localhost"
540 mkdir "${ROOT}"var{,/www{,/localhost}} 607 mkdir -p "${ROOT}"/var/www/localhost
541 cp -R "${ROOT}"usr/share/doc/${PF}/webroot/* "${ROOT}"var/www/localhost/ 608 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/
542} 609}
543 610
544EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config 611EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.20