/[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.8 Revision 1.12
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.8 2008/02/02 10:10:36 hollow Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.12 2008/08/29 13:22:21 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 autotools eutils flag-o-matic multilib 13inherit autotools confutils eutils flag-o-matic multilib
14 14
15# ============================================================================== 15# ==============================================================================
16# INTERNAL VARIABLES 16# INTERNAL VARIABLES
17# ============================================================================== 17# ==============================================================================
18 18
25# @DESCRIPTION: 25# @DESCRIPTION:
26# This internal variable contains the working directory where patches and config 26# This internal variable contains the working directory where patches and config
27# files are located 27# files are located
28GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}" 28GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}"
29 29
30# @ECLASS-VARIABLE: GENTOO_DEVELOPER 30# @VARIABLE: GENTOO_DEVELOPER
31# @DESCRIPTION: 31# @DESCRIPTION:
32# This variable needs to be set in the ebuild and contains the name of the 32# This variable needs to be set in the ebuild and contains the name of the
33# gentoo developer who created the patch tarball 33# gentoo developer who created the patch tarball
34 34
35# @ECLASS-VARIABLE: GENTOO_PATCHSTAMP 35# @VARIABLE: GENTOO_PATCHSTAMP
36# @DESCRIPTION: 36# @DESCRIPTION:
37# This variable needs to be set in the ebuild and contains the date the patch 37# This variable needs to be set in the ebuild and contains the date the patch
38# tarball was created at in YYYYMMDD format 38# tarball was created at in YYYYMMDD format
39 39
40SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2 40SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2
41 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2" 41 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2"
42 42
43# @ECLASS-VARIABLE: IUSE_MPMS_FORK 43# @VARIABLE: IUSE_MPMS_FORK
44# @DESCRIPTION: 44# @DESCRIPTION:
45# This variable needs to be set in the ebuild and contains a list of forking 45# This variable needs to be set in the ebuild and contains a list of forking
46# (i.e. non-threaded) MPMS 46# (i.e. non-threaded) MPMs
47 47
48# @ECLASS-VARIABLE: IUSE_MPMS_THREAD 48# @VARIABLE: IUSE_MPMS_THREAD
49# @DESCRIPTION: 49# @DESCRIPTION:
50# This variable needs to be set in the ebuild and contains a list of threaded 50# This variable needs to be set in the ebuild and contains a list of threaded
51# MPMS 51# MPMs
52 52
53# @ECLASS-VARIABLE: IUSE_MODULES 53# @VARIABLE: IUSE_MODULES
54# @DESCRIPTION: 54# @DESCRIPTION:
55# This variable needs to be set in the ebuild and contains a list of available 55# This variable needs to be set in the ebuild and contains a list of available
56# built-in modules 56# built-in modules
57 57
58IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}" 58IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}"
131 eerror "You have selected a non-threaded MPM but USE=threads is enabled" 131 eerror "You have selected a non-threaded MPM but USE=threads is enabled"
132 die "invalid use flag combination" 132 die "invalid use flag combination"
133 fi 133 fi
134} 134}
135 135
136# @ECLASS-VARIABLE: MODULE_CRITICAL 136# @VARIABLE: MODULE_CRITICAL
137# @DESCRIPTION: 137# @DESCRIPTION:
138# This variable needs to be set in the ebuild and contains a space-separated 138# This variable needs to be set in the ebuild and contains a space-separated
139# list of modules critical for the default apache. A user may still 139# list of modules critical for the default apache. A user may still
140# disable these modules for custom minimal installation at their own risk. 140# disable these modules for custom minimal installation at their own risk.
141 141
162 ewarn 162 ewarn
163 ebeep 10 163 ebeep 10
164 fi 164 fi
165} 165}
166 166
167# @ECLASS-VARIABLE: MODULE_DEPENDS 167# @VARIABLE: MODULE_DEPENDS
168# @DESCRIPTION: 168# @DESCRIPTION:
169# This variable needs to be set in the ebuild and contains a space-separated 169# This variable needs to be set in the ebuild and contains a space-separated
170# list of dependency tokens each with a module and the module it depends on 170# list of dependency tokens each with a module and the module it depends on
171# separated by a colon 171# separated by a colon
172 172
217 fi 217 fi
218 218
219 MY_CONF="--enable-so=static" 219 MY_CONF="--enable-so=static"
220 220
221 if use ldap ; then 221 if use ldap ; then
222 if ! built_with_use 'dev-libs/apr-util' ldap ; then 222 confutils_use_depend_built_with_all ldap dev-libs/apr-util ldap
223 eerror "dev-libs/apr-util is missing LDAP support. For apache to have"
224 eerror "ldap support, apr-util must be built with the ldap USE-flag"
225 eerror "enabled."
226 die "ldap USE-flag enabled while not supported in apr-util"
227 fi
228 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}" 223 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}"
229 MY_MODS="${MY_MODS} ldap authnz_ldap" 224 MY_MODS="${MY_MODS} ldap authnz_ldap"
230 else 225 else
231 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap" 226 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap"
232 fi 227 fi
288 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u) 283 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u)
289 check_module_depends 284 check_module_depends
290 check_module_critical 285 check_module_critical
291} 286}
292 287
293# @ECLASS-VARIABLE: MODULE_DEFINES 288# @VARIABLE: MODULE_DEFINES
294# @DESCRIPTION: 289# @DESCRIPTION:
295# This variable needs to be set in the ebuild and contains a space-separated 290# This variable needs to be set in the ebuild and contains a space-separated
296# list of tokens each mapping a module to a runtime define which can be 291# list of tokens each mapping a module to a runtime define which can be
297# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular 292# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular
298# module. 293# module.
362# creates the apache user and group and informs about CONFIG_SYSVIPC being 357# creates the apache user and group and informs about CONFIG_SYSVIPC being
363# needed (we don't depend on kernel sources and therefore cannot check). 358# needed (we don't depend on kernel sources and therefore cannot check).
364apache-2_pkg_setup() { 359apache-2_pkg_setup() {
365 check_upgrade 360 check_upgrade
366 361
367 setup_mpm
368 setup_modules
369
370 if use debug; then
371 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
372 fi
373
374 # setup apache user and group 362 # setup apache user and group
375 enewgroup apache 81 363 enewgroup apache 81
376 enewuser apache 81 -1 /var/www apache 364 enewuser apache 81 -1 /var/www apache
377 365
366 setup_mpm
367 setup_modules
368
369 if use debug; then
370 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
371 fi
372
378 elog "Please note that you need SysV IPC support in your kernel." 373 elog "Please note that you need SysV IPC support in your kernel."
379 elog "Make sure CONFIG_SYSVIPC=y is set." 374 elog "Make sure CONFIG_SYSVIPC=y is set."
380 elog 375 elog
376
377 if use userland_BSD; then
378 elog "On BSD systems you need to add the following line to /boot/loader.conf:"
379 elog " accf_http_load=\"YES\""
380 elog
381 fi
381} 382}
382 383
383# @FUNCTION: apache-2_src_unpack 384# @FUNCTION: apache-2_src_unpack
384# @DESCRIPTION: 385# @DESCRIPTION:
385# This function applies patches, configures a custom file-system layout and 386# This function applies patches, configures a custom file-system layout and
430 --libexecdir=/usr/$(get_libdir)/apache2/modules \ 431 --libexecdir=/usr/$(get_libdir)/apache2/modules \
431 --datadir=/var/www/localhost \ 432 --datadir=/var/www/localhost \
432 --sysconfdir=/etc/apache2 \ 433 --sysconfdir=/etc/apache2 \
433 --localstatedir=/var \ 434 --localstatedir=/var \
434 --with-mpm=${MY_MPM} \ 435 --with-mpm=${MY_MPM} \
435 --with-perl=/usr/bin/perl \
436 --with-apr=/usr \ 436 --with-apr=/usr \
437 --with-apr-util=/usr \ 437 --with-apr-util=/usr \
438 --with-pcre=/usr \ 438 --with-pcre=/usr \
439 --with-z=/usr \ 439 --with-z=/usr \
440 --with-port=80 \ 440 --with-port=80 \
447 emake || die "emake failed" 447 emake || die "emake failed"
448} 448}
449 449
450# @FUNCTION: apache-2_src_install 450# @FUNCTION: apache-2_src_install
451# @DESCRIPTION: 451# @DESCRIPTION:
452# This function runs emake install and generates, installs and adapts the gentoo 452# This function runs `emake install' and generates, installs and adapts the gentoo
453# specific configuration files found in the tarball 453# specific configuration files found in the tarball
454apache-2_src_install() { 454apache-2_src_install() {
455 make DESTDIR="${D}" install || die "make install failed" 455 make DESTDIR="${D}" install || die "make install failed"
456 456
457 # install our configuration files 457 # install our configuration files
498 else 498 else
499 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf" 499 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf"
500 rm -Rf "${D}/usr/share/doc/${PF}/manual" 500 rm -Rf "${D}/usr/share/doc/${PF}/manual"
501 fi 501 fi
502 502
503 # the default webroot gets stored in /usr/share/doc 503 # the default webroot gets stored in /usr/share/${PF}/webroot
504 ebegin "Installing default webroot to /usr/share/doc/${PF}" 504 ebegin "Installing default webroot to /usr/share/${PF}/webroot"
505 dodir /usr/share/${PF}
505 mv -f "${D}/var/www/localhost" "${D}/usr/share/doc/${PF}/webroot" 506 mv -f "${D}/var/www/localhost" "${D}/usr/share/${PF}/webroot"
506 eend $? 507 eend $?
507 keepdir /var/www/localhost/htdocs
508 508
509 # set some sane permissions for suexec 509 # set some sane permissions for suexec
510 if use suexec ; then 510 if use suexec ; then
511 fowners 0:apache /usr/sbin/suexec 511 fowners 0:apache /usr/sbin/suexec
512 fperms 4710 /usr/sbin/suexec 512 fperms 4710 /usr/sbin/suexec
526} 526}
527 527
528# @FUNCTION: apache-2_pkg_postinst 528# @FUNCTION: apache-2_pkg_postinst
529# @DESCRIPTION: 529# @DESCRIPTION:
530# This function creates test certificates if SSL is enabled and installs the 530# This function creates test certificates if SSL is enabled and installs the
531# default webroot if /var/www/localhost does not exist. We do this here because 531# default webroot to /var/www/localhost if it does not exist. We do this here
532# the default webroot is a copy of the files that exist elsewhere and we don't 532# because the default webroot is a copy of the files that exist elsewhere and we
533# want them to be managed/removed by portage when apache is upgraded. 533# don't want them to be managed/removed by portage when apache is upgraded.
534apache-2_pkg_postinst() { 534apache-2_pkg_postinst() {
535 einfo
536
535 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then 537 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then
536 cd "${ROOT}"/etc/apache2/ssl 538 cd "${ROOT}"/etc/apache2/ssl
537 einfo
538 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..." 539 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..."
539 yes "" 2>/dev/null | \ 540 yes "" 2>/dev/null | \
540 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \ 541 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \
541 die "gentestcrt.sh failed" 542 die "gentestcrt.sh failed"
542 einfo 543 einfo
551 elog "emerge --config =${PF}" 552 elog "emerge --config =${PF}"
552 elog 553 elog
553 else 554 else
554 einfo "Installing default webroot to ${ROOT}var/www/localhost" 555 einfo "Installing default webroot to ${ROOT}var/www/localhost"
555 mkdir -p "${ROOT}"/var/www/localhost 556 mkdir -p "${ROOT}"/var/www/localhost
556 cp -R "${ROOT}"/usr/share/doc/${PF}/webroot/* "${ROOT}"/var/www/localhost 557 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/
557 chown -R apache:0 "${ROOT}"/var/www/localhost 558 einfo
558 fi 559 fi
559} 560}
560 561
561# @FUNCTION: apache-2_pkg_config 562# @FUNCTION: apache-2_pkg_config
562# @DESCRIPTION: 563# @DESCRIPTION:
563# This function installs -- and removes a previously existing -- default webroot 564# This function installs -- and overwrites -- the default webroot to
564# to /var/www/localhost 565# /var/www/localhost
565apache-2_pkg_config() { 566apache-2_pkg_config() {
566 einfo "Installing default webroot to ${ROOT}var/www/localhost" 567 einfo "Installing default webroot to ${ROOT}var/www/localhost"
567 mkdir "${ROOT}"var{,/www{,/localhost}} 568 mkdir -p "${ROOT}"/var/www/localhost
568 cp -R "${ROOT}"usr/share/doc/${PF}/webroot/* "${ROOT}"var/www/localhost/ 569 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/
569} 570}
570 571
571EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config 572EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.20