/[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.10 Revision 1.14
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.10 2008/03/23 10:28:45 hollow Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.14 2008/12/10 01:06:12 robbat2 Exp $
4 4
5# @ECLASS: apache-2.eclass 5# @ECLASS: apache-2.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# apache-devs@gentoo.org 7# apache-devs@gentoo.org
8# @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
9# @DESCRIPTION: 9# @DESCRIPTION:
10# 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
11# information about where certain interfaces are located such as LoadModule
12# generation and inter-module dependency checking. 11# and inter-module dependency checking.
13 12
14inherit autotools confutils eutils flag-o-matic multilib 13inherit autotools confutils eutils flag-o-matic multilib
15 14
16# ============================================================================== 15# ==============================================================================
17# INTERNAL VARIABLES 16# INTERNAL VARIABLES
18# ============================================================================== 17# ==============================================================================
19 18
20# @ECLASS-VARIABLE: GENTOO_PATCHNAME 19# @ECLASS-VARIABLE: GENTOO_PATCHNAME
21# @DESCRIPTION: 20# @DESCRIPTION:
22# This internal variable contains the prefix for the patch tarball 21# This internal variable contains the prefix for the patch tarball.
23GENTOO_PATCHNAME="gentoo-${PF}" 22# Defaults to the full version (including revision) of the package.
23[[ -n "$GENTOO_PATCHNAME" ]] || GENTOO_PATCHNAME="gentoo-${PF}"
24 24
25# @ECLASS-VARIABLE: GENTOO_PATCHDIR 25# @ECLASS-VARIABLE: GENTOO_PATCHDIR
26# @DESCRIPTION: 26# @DESCRIPTION:
27# This internal variable contains the working directory where patches and config 27# This internal variable contains the working directory where patches and config
28# files are located 28# files are located.
29# Defaults to the patchset name appended to the working directory.
29GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}" 30[[ -n "$GENTOO_PATCHDIR" ]] || GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}"
30 31
31# @VARIABLE: GENTOO_DEVELOPER 32# @VARIABLE: GENTOO_DEVELOPER
32# @DESCRIPTION: 33# @DESCRIPTION:
33# This variable needs to be set in the ebuild and contains the name of the 34# This variable needs to be set in the ebuild and contains the name of the
34# gentoo developer who created the patch tarball 35# gentoo developer who created the patch tarball
36# @VARIABLE: GENTOO_PATCHSTAMP 37# @VARIABLE: GENTOO_PATCHSTAMP
37# @DESCRIPTION: 38# @DESCRIPTION:
38# This variable needs to be set in the ebuild and contains the date the patch 39# This variable needs to be set in the ebuild and contains the date the patch
39# tarball was created at in YYYYMMDD format 40# tarball was created at in YYYYMMDD format
40 41
42# @VARIABLE: GENTOO_PATCH_A
43# @DESCRIPTION:
44# This variable should contain the entire filename of patch tarball.
45# Defaults to the name of the patchset, with a datestamp.
46[[ -n "$GENTOO_PATCH_A" ]] || GENTOO_PATCH_A="${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2"
47
41SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2 48SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2
42 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2" 49 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCH_A}"
43 50
44# @VARIABLE: IUSE_MPMS_FORK 51# @VARIABLE: IUSE_MPMS_FORK
45# @DESCRIPTION: 52# @DESCRIPTION:
46# This variable needs to be set in the ebuild and contains a list of forking 53# This variable needs to be set in the ebuild and contains a list of forking
47# (i.e. non-threaded) MPMS 54# (i.e. non-threaded) MPMs
48 55
49# @VARIABLE: IUSE_MPMS_THREAD 56# @VARIABLE: IUSE_MPMS_THREAD
50# @DESCRIPTION: 57# @DESCRIPTION:
51# This variable needs to be set in the ebuild and contains a list of threaded 58# This variable needs to be set in the ebuild and contains a list of threaded
52# MPMS 59# MPMs
53 60
54# @VARIABLE: IUSE_MODULES 61# @VARIABLE: IUSE_MODULES
55# @DESCRIPTION: 62# @DESCRIPTION:
56# This variable needs to be set in the ebuild and contains a list of available 63# This variable needs to be set in the ebuild and contains a list of available
57# built-in modules 64# built-in modules
358# creates the apache user and group and informs about CONFIG_SYSVIPC being 365# creates the apache user and group and informs about CONFIG_SYSVIPC being
359# needed (we don't depend on kernel sources and therefore cannot check). 366# needed (we don't depend on kernel sources and therefore cannot check).
360apache-2_pkg_setup() { 367apache-2_pkg_setup() {
361 check_upgrade 368 check_upgrade
362 369
363 setup_mpm
364 setup_modules
365
366 if use debug; then
367 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
368 fi
369
370 # setup apache user and group 370 # setup apache user and group
371 enewgroup apache 81 371 enewgroup apache 81
372 enewuser apache 81 -1 /var/www apache 372 enewuser apache 81 -1 /var/www apache
373 373
374 setup_mpm
375 setup_modules
376
377 if use debug; then
378 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
379 fi
380
374 elog "Please note that you need SysV IPC support in your kernel." 381 elog "Please note that you need SysV IPC support in your kernel."
375 elog "Make sure CONFIG_SYSVIPC=y is set." 382 elog "Make sure CONFIG_SYSVIPC=y is set."
376 elog 383 elog
384
385 if use userland_BSD; then
386 elog "On BSD systems you need to add the following line to /boot/loader.conf:"
387 elog " accf_http_load=\"YES\""
388 elog
389 fi
377} 390}
378 391
379# @FUNCTION: apache-2_src_unpack 392# @FUNCTION: apache-2_src_unpack
380# @DESCRIPTION: 393# @DESCRIPTION:
381# This function applies patches, configures a custom file-system layout and 394# This function applies patches, configures a custom file-system layout and
426 --libexecdir=/usr/$(get_libdir)/apache2/modules \ 439 --libexecdir=/usr/$(get_libdir)/apache2/modules \
427 --datadir=/var/www/localhost \ 440 --datadir=/var/www/localhost \
428 --sysconfdir=/etc/apache2 \ 441 --sysconfdir=/etc/apache2 \
429 --localstatedir=/var \ 442 --localstatedir=/var \
430 --with-mpm=${MY_MPM} \ 443 --with-mpm=${MY_MPM} \
431 --with-perl=/usr/bin/perl \
432 --with-apr=/usr \ 444 --with-apr=/usr \
433 --with-apr-util=/usr \ 445 --with-apr-util=/usr \
434 --with-pcre=/usr \ 446 --with-pcre=/usr \
435 --with-z=/usr \ 447 --with-z=/usr \
436 --with-port=80 \ 448 --with-port=80 \
443 emake || die "emake failed" 455 emake || die "emake failed"
444} 456}
445 457
446# @FUNCTION: apache-2_src_install 458# @FUNCTION: apache-2_src_install
447# @DESCRIPTION: 459# @DESCRIPTION:
448# This function runs emake install and generates, installs and adapts the gentoo 460# This function runs `emake install' and generates, installs and adapts the gentoo
449# specific configuration files found in the tarball 461# specific configuration files found in the tarball
450apache-2_src_install() { 462apache-2_src_install() {
451 make DESTDIR="${D}" install || die "make install failed" 463 make DESTDIR="${D}" install || die "make install failed"
452 464
453 # install our configuration files 465 # install our configuration files
472 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed" 484 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed"
473 485
474 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2 486 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2
475 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2 487 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2
476 488
477 # link apache2ctl to the init script 489 # install apache2ctl wrapper for our init script if available
490 if test -e "${GENTOO_PATCHDIR}"/scripts/apache2ctl; then
491 exeinto /usr/sbin
492 doexe "${GENTOO_PATCHDIR}"/scripts/apache2ctl
493 else
478 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl 494 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl
495 fi
479 496
480 # provide legacy symlink for apxs, bug 177697 497 # provide legacy symlink for apxs, bug 177697
481 dosym /usr/sbin/apxs /usr/sbin/apxs2 498 dosym /usr/sbin/apxs /usr/sbin/apxs2
482 499
483 # install some thirdparty scripts 500 # install some thirdparty scripts
494 else 511 else
495 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf" 512 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf"
496 rm -Rf "${D}/usr/share/doc/${PF}/manual" 513 rm -Rf "${D}/usr/share/doc/${PF}/manual"
497 fi 514 fi
498 515
499 # the default webroot gets stored in /usr/share/doc 516 # the default webroot gets stored in /usr/share/${PF}/webroot
500 ebegin "Installing default webroot to /usr/share/doc/${PF}" 517 ebegin "Installing default webroot to /usr/share/${PF}/webroot"
518 dodir /usr/share/${PF}
501 mv -f "${D}/var/www/localhost" "${D}/usr/share/doc/${PF}/webroot" 519 mv -f "${D}/var/www/localhost" "${D}/usr/share/${PF}/webroot"
502 eend $? 520 eend $?
503 keepdir /var/www/localhost/htdocs
504 521
505 # set some sane permissions for suexec 522 # set some sane permissions for suexec
506 if use suexec ; then 523 if use suexec ; then
507 fowners 0:apache /usr/sbin/suexec 524 fowners 0:apache /usr/sbin/suexec
508 fperms 4710 /usr/sbin/suexec 525 fperms 4710 /usr/sbin/suexec
522} 539}
523 540
524# @FUNCTION: apache-2_pkg_postinst 541# @FUNCTION: apache-2_pkg_postinst
525# @DESCRIPTION: 542# @DESCRIPTION:
526# This function creates test certificates if SSL is enabled and installs the 543# This function creates test certificates if SSL is enabled and installs the
527# default webroot if /var/www/localhost does not exist. We do this here because 544# default webroot to /var/www/localhost if it does not exist. We do this here
528# the default webroot is a copy of the files that exist elsewhere and we don't 545# because the default webroot is a copy of the files that exist elsewhere and we
529# want them to be managed/removed by portage when apache is upgraded. 546# don't want them to be managed/removed by portage when apache is upgraded.
530apache-2_pkg_postinst() { 547apache-2_pkg_postinst() {
548 einfo
549
531 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then 550 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then
532 cd "${ROOT}"/etc/apache2/ssl 551 cd "${ROOT}"/etc/apache2/ssl
533 einfo
534 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..." 552 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..."
535 yes "" 2>/dev/null | \ 553 yes "" 2>/dev/null | \
536 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \ 554 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \
537 die "gentestcrt.sh failed" 555 die "gentestcrt.sh failed"
538 einfo 556 einfo
547 elog "emerge --config =${PF}" 565 elog "emerge --config =${PF}"
548 elog 566 elog
549 else 567 else
550 einfo "Installing default webroot to ${ROOT}var/www/localhost" 568 einfo "Installing default webroot to ${ROOT}var/www/localhost"
551 mkdir -p "${ROOT}"/var/www/localhost 569 mkdir -p "${ROOT}"/var/www/localhost
552 cp -R "${ROOT}"/usr/share/doc/${PF}/webroot/* "${ROOT}"/var/www/localhost 570 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/
553 chown -R apache:0 "${ROOT}"/var/www/localhost 571 einfo
554 fi 572 fi
555} 573}
556 574
557# @FUNCTION: apache-2_pkg_config 575# @FUNCTION: apache-2_pkg_config
558# @DESCRIPTION: 576# @DESCRIPTION:
559# This function installs -- and removes a previously existing -- default webroot 577# This function installs -- and overwrites -- the default webroot to
560# to /var/www/localhost 578# /var/www/localhost
561apache-2_pkg_config() { 579apache-2_pkg_config() {
562 einfo "Installing default webroot to ${ROOT}var/www/localhost" 580 einfo "Installing default webroot to ${ROOT}var/www/localhost"
563 mkdir "${ROOT}"var{,/www{,/localhost}} 581 mkdir -p "${ROOT}"/var/www/localhost
564 cp -R "${ROOT}"usr/share/doc/${PF}/webroot/* "${ROOT}"var/www/localhost/ 582 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/
565} 583}
566 584
567EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config 585EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.20