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

Contents of /eclass/apache-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.34 - (hide annotations) (download)
Fri Jan 31 08:29:39 2014 UTC (5 months, 3 weeks ago) by vapier
Branch: MAIN
Changes since 1.33: +16 -5 lines
fix pcre-config/pkg-config/apr/apr-util handling when cross-compiling by leveraging SYSROOT #385783 by Bertrand Jacquin

1 patrick 1.33 # Copyright 1999-2014 Gentoo Foundation
2 hollow 1.1 # Distributed under the terms of the GNU General Public License v2
3 vapier 1.34 # $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.33 2014/01/08 08:38:10 patrick Exp $
4 hollow 1.1
5 hollow 1.10 # @ECLASS: apache-2.eclass
6     # @MAINTAINER:
7     # apache-devs@gentoo.org
8 hollow 1.11 # @BLURB: Provides a common set of functions for apache-2.x ebuilds
9 hollow 1.1 # @DESCRIPTION:
10 hollow 1.11 # This eclass handles apache-2.x ebuild functions such as LoadModule generation
11     # and inter-module dependency checking.
12 hollow 1.1
13 vapier 1.34 inherit autotools eutils flag-o-matic multilib ssl-cert user toolchain-funcs
14 hollow 1.1
15     # ==============================================================================
16     # INTERNAL VARIABLES
17     # ==============================================================================
18    
19     # @ECLASS-VARIABLE: GENTOO_PATCHNAME
20     # @DESCRIPTION:
21 robbat2 1.14 # This internal variable contains the prefix for the patch tarball.
22 robbat2 1.15 # 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 robbat2 1.14 [[ -n "$GENTOO_PATCHNAME" ]] || GENTOO_PATCHNAME="gentoo-${PF}"
27 hollow 1.1
28     # @ECLASS-VARIABLE: GENTOO_PATCHDIR
29     # @DESCRIPTION:
30     # This internal variable contains the working directory where patches and config
31 robbat2 1.14 # files are located.
32     # Defaults to the patchset name appended to the working directory.
33     [[ -n "$GENTOO_PATCHDIR" ]] || GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}"
34 hollow 1.1
35 hollow 1.9 # @VARIABLE: GENTOO_DEVELOPER
36 hollow 1.1 # @DESCRIPTION:
37     # This variable needs to be set in the ebuild and contains the name of the
38     # gentoo developer who created the patch tarball
39    
40 hollow 1.9 # @VARIABLE: GENTOO_PATCHSTAMP
41 hollow 1.1 # @DESCRIPTION:
42     # This variable needs to be set in the ebuild and contains the date the patch
43 hollow 1.7 # tarball was created at in YYYYMMDD format
44 hollow 1.1
45 robbat2 1.14 # @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"
50    
51 hollow 1.1 SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2
52 robbat2 1.14 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCH_A}"
53 hollow 1.1
54 hollow 1.9 # @VARIABLE: IUSE_MPMS_FORK
55 hollow 1.1 # @DESCRIPTION:
56     # This variable needs to be set in the ebuild and contains a list of forking
57 hollow 1.11 # (i.e. non-threaded) MPMs
58 hollow 1.1
59 hollow 1.9 # @VARIABLE: IUSE_MPMS_THREAD
60 hollow 1.1 # @DESCRIPTION:
61     # This variable needs to be set in the ebuild and contains a list of threaded
62 hollow 1.11 # MPMs
63 hollow 1.1
64 hollow 1.9 # @VARIABLE: IUSE_MODULES
65 hollow 1.1 # @DESCRIPTION:
66     # This variable needs to be set in the ebuild and contains a list of available
67     # built-in modules
68    
69     IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}"
70 hollow 1.3 IUSE="${IUSE} debug doc ldap selinux ssl static suexec threads"
71 hollow 1.1
72     for module in ${IUSE_MODULES} ; do
73     IUSE="${IUSE} apache2_modules_${module}"
74     done
75    
76     for mpm in ${IUSE_MPMS} ; do
77     IUSE="${IUSE} apache2_mpms_${mpm}"
78     done
79    
80     DEPEND="dev-lang/perl
81     =dev-libs/apr-1*
82 hollow 1.18 =dev-libs/apr-util-1*[ldap?]
83 hollow 1.1 dev-libs/libpcre
84     ldap? ( =net-nds/openldap-2* )
85     selinux? ( sec-policy/selinux-apache )
86 hollow 1.7 ssl? ( >=dev-libs/openssl-0.9.8f )
87 hollow 1.1 !=www-servers/apache-1*"
88     RDEPEND="${DEPEND}"
89     PDEPEND="~app-admin/apache-tools-${PV}"
90    
91     S="${WORKDIR}/httpd-${PV}"
92    
93     # ==============================================================================
94     # INTERNAL FUNCTIONS
95     # ==============================================================================
96    
97     # @ECLASS-VARIABLE: MY_MPM
98 hollow 1.7 # @DESCRIPTION:
99 hollow 1.1 # This internal variable contains the selected MPM after a call to setup_mpm()
100    
101     # @FUNCTION: setup_mpm
102     # @DESCRIPTION:
103     # This internal function makes sure that only one of APACHE2_MPMS was selected
104     # or a default based on USE=threads is selected if APACHE2_MPMS is empty
105     setup_mpm() {
106 zmedico 1.4 MY_MPM=""
107 hollow 1.1 for x in ${IUSE_MPMS} ; do
108     if use apache2_mpms_${x} ; then
109     if [[ -z "${MY_MPM}" ]] ; then
110     MY_MPM=${x}
111     elog
112     elog "Selected MPM: ${MY_MPM}"
113     elog
114     else
115     eerror "You have selected more then one mpm USE-flag."
116     eerror "Only one MPM is supported."
117     die "more then one mpm was specified"
118     fi
119     fi
120     done
121    
122     if [[ -z "${MY_MPM}" ]] ; then
123     if use threads ; then
124     MY_MPM=worker
125     elog
126     elog "Selected default threaded MPM: ${MY_MPM}"
127     elog
128     else
129     MY_MPM=prefork
130     elog
131     elog "Selected default MPM: ${MY_MPM}"
132     elog
133     fi
134     fi
135    
136     if has ${MY_MPM} ${IUSE_MPMS_THREAD} && ! use threads ; then
137     eerror "You have selected a threaded MPM but USE=threads is disabled"
138     die "invalid use flag combination"
139     fi
140    
141     if has ${MY_MPM} ${IUSE_MPMS_FORK} && use threads ; then
142     eerror "You have selected a non-threaded MPM but USE=threads is enabled"
143     die "invalid use flag combination"
144     fi
145     }
146    
147 hollow 1.9 # @VARIABLE: MODULE_CRITICAL
148 hollow 1.3 # @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.
157     check_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     fi
175     }
176    
177 hollow 1.9 # @VARIABLE: MODULE_DEPENDS
178 hollow 1.1 # @DESCRIPTION:
179     # This variable needs to be set in the ebuild and contains a space-separated
180     # list of dependency tokens each with a module and the module it depends on
181     # separated by a colon
182    
183     # @FUNCTION: check_module_depends
184     # @DESCRIPTION:
185     # This internal function makes sure that all inter-module dependencies are
186     # satisfied with the current module selection
187     check_module_depends() {
188     local err=0
189    
190     for m in ${MY_MODS} ; do
191     for dep in ${MODULE_DEPENDS} ; do
192 hollow 1.7 if [[ "${m}" == "${dep%:*}" ]] ; then
193 hollow 1.1 if ! use apache2_modules_${dep#*:} ; then
194     eerror "Module '${m}' depends on '${dep#*:}'"
195     err=1
196     fi
197     fi
198     done
199     done
200    
201     if [[ ${err} -ne 0 ]] ; then
202     die "invalid use flag combination"
203     fi
204     }
205    
206     # @ECLASS-VARIABLE: MY_CONF
207 hollow 1.8 # @DESCRIPTION:
208 hollow 1.1 # This internal variable contains the econf options for the current module
209     # selection after a call to setup_modules()
210    
211     # @ECLASS-VARIABLE: MY_MODS
212 hollow 1.8 # @DESCRIPTION:
213 hollow 1.1 # This internal variable contains a sorted, space separated list of currently
214     # selected modules after a call to setup_modules()
215    
216     # @FUNCTION: setup_modules
217     # @DESCRIPTION:
218     # This internal function selects all built-in modules based on USE flags and
219     # APACHE2_MODULES USE_EXPAND flags
220     setup_modules() {
221     local mod_type=
222    
223     if use static ; then
224     mod_type="static"
225     else
226     mod_type="shared"
227     fi
228    
229     MY_CONF="--enable-so=static"
230    
231     if use ldap ; then
232     MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}"
233     MY_MODS="${MY_MODS} ldap authnz_ldap"
234     else
235     MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap"
236     fi
237    
238     if use ssl ; then
239     MY_CONF="${MY_CONF} --with-ssl=/usr --enable-ssl=${mod_type}"
240     MY_MODS="${MY_MODS} ssl"
241     else
242     MY_CONF="${MY_CONF} --without-ssl --disable-ssl"
243     fi
244    
245     if use suexec ; then
246     elog "You can manipulate several configure options of suexec"
247     elog "through the following environment variables:"
248     elog
249     elog " SUEXEC_SAFEPATH: Default PATH for suexec (default: /usr/local/bin:/usr/bin:/bin)"
250     elog " SUEXEC_LOGFILE: Path to the suexec logfile (default: /var/log/apache2/suexec_log)"
251     elog " SUEXEC_CALLER: Name of the user Apache is running as (default: apache)"
252     elog " SUEXEC_DOCROOT: Directory in which suexec will run scripts (default: /var/www)"
253     elog " SUEXEC_MINUID: Minimum UID, which is allowed to run scripts via suexec (default: 1000)"
254     elog " SUEXEC_MINGID: Minimum GID, which is allowed to run scripts via suexec (default: 100)"
255     elog " SUEXEC_USERDIR: User subdirectories (like /home/user/html) (default: public_html)"
256     elog " SUEXEC_UMASK: Umask for the suexec process (default: 077)"
257     elog
258    
259     MY_CONF="${MY_CONF} --with-suexec-safepath=${SUEXEC_SAFEPATH:-/usr/local/bin:/usr/bin:/bin}"
260     MY_CONF="${MY_CONF} --with-suexec-logfile=${SUEXEC_LOGFILE:-/var/log/apache2/suexec_log}"
261     MY_CONF="${MY_CONF} --with-suexec-bin=/usr/sbin/suexec"
262     MY_CONF="${MY_CONF} --with-suexec-userdir=${SUEXEC_USERDIR:-public_html}"
263     MY_CONF="${MY_CONF} --with-suexec-caller=${SUEXEC_CALLER:-apache}"
264     MY_CONF="${MY_CONF} --with-suexec-docroot=${SUEXEC_DOCROOT:-/var/www}"
265     MY_CONF="${MY_CONF} --with-suexec-uidmin=${SUEXEC_MINUID:-1000}"
266     MY_CONF="${MY_CONF} --with-suexec-gidmin=${SUEXEC_MINGID:-100}"
267     MY_CONF="${MY_CONF} --with-suexec-umask=${SUEXEC_UMASK:-077}"
268     MY_CONF="${MY_CONF} --enable-suexec=${mod_type}"
269     MY_MODS="${MY_MODS} suexec"
270     else
271     MY_CONF="${MY_CONF} --disable-suexec"
272     fi
273    
274     for x in ${IUSE_MODULES} ; do
275     if use apache2_modules_${x} ; then
276     MY_CONF="${MY_CONF} --enable-${x}=${mod_type}"
277     MY_MODS="${MY_MODS} ${x}"
278     else
279     MY_CONF="${MY_CONF} --disable-${x}"
280     fi
281     done
282    
283     # sort and uniquify MY_MODS
284     MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u)
285     check_module_depends
286 hollow 1.3 check_module_critical
287 hollow 1.1 }
288    
289 hollow 1.9 # @VARIABLE: MODULE_DEFINES
290 hollow 1.1 # @DESCRIPTION:
291     # This variable needs to be set in the ebuild and contains a space-separated
292     # list of tokens each mapping a module to a runtime define which can be
293     # specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular
294     # module.
295    
296     # @FUNCTION: generate_load_module
297     # @DESCRIPTION:
298     # This internal function generates the LoadModule lines for httpd.conf based on
299     # the current module selection and MODULE_DEFINES
300     generate_load_module() {
301 hollow 1.8 local endit=0 mod_lines= mod_dir="${D}/usr/$(get_libdir)/apache2/modules"
302 hollow 1.1
303     if use static; then
304     sed -i -e "/%%LOAD_MODULE%%/d" \
305     "${GENTOO_PATCHDIR}"/conf/httpd.conf
306     return
307     fi
308    
309     for m in ${MY_MODS} ; do
310     if [[ -e "${mod_dir}/mod_${m}.so" ]] ; then
311     for def in ${MODULE_DEFINES} ; do
312     if [[ "${m}" == "${def%:*}" ]] ; then
313     mod_lines="${mod_lines}\n<IfDefine ${def#*:}>"
314     endit=1
315     fi
316     done
317    
318     mod_lines="${mod_lines}\nLoadModule ${m}_module modules/mod_${m}.so"
319    
320     if [[ ${endit} -ne 0 ]] ; then
321     mod_lines="${mod_lines}\n</IfDefine>"
322     endit=0
323     fi
324     fi
325     done
326    
327     sed -i -e "s:%%LOAD_MODULE%%:${mod_lines}:" \
328     "${GENTOO_PATCHDIR}"/conf/httpd.conf
329     }
330    
331     # @FUNCTION: check_upgrade
332     # @DESCRIPTION:
333     # This internal function checks if the previous configuration file for built-in
334     # modules exists in ROOT and prevents upgrade in this case. Users are supposed
335     # to convert this file to the new APACHE2_MODULES USE_EXPAND variable and remove
336     # it afterwards.
337     check_upgrade() {
338     if [[ -e "${ROOT}"etc/apache2/apache2-builtin-mods ]]; then
339     eerror "The previous configuration file for built-in modules"
340     eerror "(${ROOT}etc/apache2/apache2-builtin-mods) exists on your"
341     eerror "system."
342     eerror
343 hollow 1.2 eerror "Please read http://www.gentoo.org/doc/en/apache-upgrading.xml"
344 hollow 1.1 eerror "for detailed information how to convert this file to the new"
345     eerror "APACHE2_MODULES USE_EXPAND variable."
346     eerror
347     die "upgrade not possible with existing ${ROOT}etc/apache2/apache2-builtin-mods"
348     fi
349     }
350    
351     # ==============================================================================
352     # EXPORTED FUNCTIONS
353     # ==============================================================================
354    
355     # @FUNCTION: apache-2_pkg_setup
356     # @DESCRIPTION:
357     # This function selects built-in modules, the MPM and other configure options,
358     # 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).
360     apache-2_pkg_setup() {
361     check_upgrade
362    
363 hollow 1.11 # setup apache user and group
364     enewgroup apache 81
365     enewuser apache 81 -1 /var/www apache
366    
367 hollow 1.1 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     elog "Please note that you need SysV IPC support in your kernel."
375     elog "Make sure CONFIG_SYSVIPC=y is set."
376     elog
377 hollow 1.12
378     if use userland_BSD; then
379     elog "On BSD systems you need to add the following line to /boot/loader.conf:"
380     elog " accf_http_load=\"YES\""
381     elog
382     fi
383 hollow 1.1 }
384    
385 hollow 1.18 # @FUNCTION: apache-2_src_prepare
386 hollow 1.1 # @DESCRIPTION:
387     # This function applies patches, configures a custom file-system layout and
388 hollow 1.3 # rebuilds the configure scripts.
389 hollow 1.18 apache-2_src_prepare() {
390 grobian 1.16 # 03_all_gentoo-apache-tools.patch injects -Wl,-z,now, which is not a good
391     # idea for everyone
392     case ${CHOST} in
393     *-linux-gnu|*-solaris*|*-freebsd*)
394     # do nothing, these use GNU binutils
395     :
396     ;;
397     *-darwin*)
398     sed -i -e 's/-Wl,-z,now/-Wl,-bind_at_load/g' \
399     "${GENTOO_PATCHDIR}"/patches/03_all_gentoo_apache-tools.patch
400     ;;
401     *)
402     # patch it out to be like upstream
403     sed -i -e 's/-Wl,-z,now//g' \
404     "${GENTOO_PATCHDIR}"/patches/03_all_gentoo_apache-tools.patch
405     ;;
406     esac
407    
408 hollow 1.1 # Use correct multilib libdir in gentoo patches
409     sed -i -e "s:/usr/lib:/usr/$(get_libdir):g" \
410     "${GENTOO_PATCHDIR}"/{conf/httpd.conf,init/*,patches/config.layout} \
411     || die "libdir sed failed"
412    
413     epatch "${GENTOO_PATCHDIR}"/patches/*.patch
414    
415     # setup the filesystem layout config
416     cat "${GENTOO_PATCHDIR}"/patches/config.layout >> "${S}"/config.layout || \
417     die "Failed preparing config.layout!"
418     sed -i -e "s:version:${PF}:g" "${S}"/config.layout
419    
420 hollow 1.3 # apache2.8 instead of httpd.8 (bug #194828)
421     mv docs/man/{httpd,apache2}.8
422     sed -i -e 's/httpd\.8/apache2.8/g' Makefile.in
423    
424 hollow 1.1 # patched-in MPMs need the build environment rebuilt
425     sed -i -e '/sinclude/d' configure.in
426 vapier 1.22 AT_M4DIR=build eautoreconf
427 vapier 1.34
428     # This package really should upgrade to using pcre's .pc file.
429     cat <<-\EOF >"${T}"/pcre-config
430     #!/bin/sh
431     [ "${flag}" = "--version" ] && set -- --modversion
432     exec ${PKG_CONFIG} libpcre "$@"
433     EOF
434     chmod a+x "${T}"/pcre-config
435 hollow 1.1 }
436    
437 hollow 1.18 # @FUNCTION: apache-2_src_configure
438 hollow 1.1 # @DESCRIPTION:
439     # This function adds compiler flags and runs econf and emake based on MY_MPM and
440     # MY_CONF
441 hollow 1.18 apache-2_src_configure() {
442 vapier 1.34 tc-export PKG_CONFIG
443    
444 hollow 1.1 # Instead of filtering --as-needed (bug #128505), append --no-as-needed
445     # Thanks to Harald van Dijk
446 ssuominen 1.19 append-ldflags $(no-as-needed)
447 hollow 1.1
448     # peruser MPM debugging with -X is nearly impossible
449     if has peruser ${IUSE_MPMS} && use apache2_mpms_peruser ; then
450     use debug && append-flags -DMPM_PERUSER_DEBUG
451     fi
452    
453     # econf overwrites the stuff from config.layout, so we have to put them into
454     # our myconf line too
455 vapier 1.34 ac_cv_path_PKGCONFIG=${PKG_CONFIG} \
456 hollow 1.1 econf \
457     --includedir=/usr/include/apache2 \
458     --libexecdir=/usr/$(get_libdir)/apache2/modules \
459     --datadir=/var/www/localhost \
460     --sysconfdir=/etc/apache2 \
461     --localstatedir=/var \
462     --with-mpm=${MY_MPM} \
463 vapier 1.34 --with-apr="${SYSROOT}"/usr \
464     --with-apr-util="${SYSROOT}"/usr \
465     --with-pcre="${T}"/pcre-config \
466 hollow 1.1 --with-z=/usr \
467     --with-port=80 \
468     --with-program-name=apache2 \
469     --enable-layout=Gentoo \
470     ${MY_CONF} || die "econf failed!"
471    
472     sed -i -e 's:apache2\.conf:httpd.conf:' include/ap_config_auto.h
473     }
474    
475     # @FUNCTION: apache-2_src_install
476     # @DESCRIPTION:
477 hollow 1.11 # This function runs `emake install' and generates, installs and adapts the gentoo
478 hollow 1.1 # specific configuration files found in the tarball
479     apache-2_src_install() {
480 flameeyes 1.29 emake DESTDIR="${D}" MKINSTALLDIRS="mkdir -p" install || die "make install failed"
481 hollow 1.1
482     # install our configuration files
483     keepdir /etc/apache2/vhosts.d
484     keepdir /etc/apache2/modules.d
485    
486     generate_load_module
487     insinto /etc/apache2
488     doins -r "${GENTOO_PATCHDIR}"/conf/*
489 hollow 1.20 use apache2_modules_mime_magic && doins docs/conf/magic
490 hollow 1.1
491     insinto /etc/logrotate.d
492     newins "${GENTOO_PATCHDIR}"/scripts/apache2-logrotate apache2
493    
494     # generate a sane default APACHE2_OPTS
495 hollow 1.18 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO"
496 hollow 1.1 use doc && APACHE2_OPTS="${APACHE2_OPTS} -D MANUAL"
497     use ssl && APACHE2_OPTS="${APACHE2_OPTS} -D SSL -D SSL_DEFAULT_VHOST"
498     use suexec && APACHE2_OPTS="${APACHE2_OPTS} -D SUEXEC"
499 ssuominen 1.25 if has negotiation ${APACHE2_MODULES} && use apache2_modules_negotiation; then
500 hollow 1.18 APACHE2_OPTS="${APACHE2_OPTS} -D LANGUAGE"
501     fi
502 hollow 1.1
503     sed -i -e "s:APACHE2_OPTS=\".*\":APACHE2_OPTS=\"${APACHE2_OPTS}\":" \
504     "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed"
505    
506     newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2
507     newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2
508    
509 hollow 1.13 # install apache2ctl wrapper for our init script if available
510     if test -e "${GENTOO_PATCHDIR}"/scripts/apache2ctl; then
511     exeinto /usr/sbin
512     doexe "${GENTOO_PATCHDIR}"/scripts/apache2ctl
513     else
514     dosym /etc/init.d/apache2 /usr/sbin/apache2ctl
515     fi
516 hollow 1.1
517 hollow 1.6 # provide legacy symlink for apxs, bug 177697
518     dosym /usr/sbin/apxs /usr/sbin/apxs2
519 hollow 1.1
520     # install some documentation
521     dodoc ABOUT_APACHE CHANGES LAYOUT README README.platforms VERSIONING
522     dodoc "${GENTOO_PATCHDIR}"/docs/*
523    
524     # drop in a convenient link to the manual
525     if use doc ; then
526     sed -i -e "s:VERSION:${PVR}:" "${D}/etc/apache2/modules.d/00_apache_manual.conf"
527     else
528     rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf"
529     rm -Rf "${D}/usr/share/doc/${PF}/manual"
530     fi
531    
532 hollow 1.18 # the default icons and error pages get stored in
533     # /usr/share/apache2/{error,icons}
534     dodir /usr/share/apache2
535     mv -f "${D}/var/www/localhost/error" "${D}/usr/share/apache2/error"
536     mv -f "${D}/var/www/localhost/icons" "${D}/usr/share/apache2/icons"
537     rm -rf "${D}/var/www/localhost/"
538 hollow 1.1 eend $?
539    
540     # set some sane permissions for suexec
541     if use suexec ; then
542 hollow 1.17 fowners 0:${SUEXEC_CALLER:-apache} /usr/sbin/suexec
543 hollow 1.1 fperms 4710 /usr/sbin/suexec
544 hollow 1.6 # provide legacy symlink for suexec, bug 177697
545     dosym /usr/sbin/suexec /usr/sbin/suexec2
546 hollow 1.1 fi
547    
548     # empty dirs
549     for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do
550     keepdir ${i}
551     fowners apache:apache ${i}
552 patrick 1.28 fperms 0750 ${i}
553 hollow 1.1 done
554     }
555    
556     # @FUNCTION: apache-2_pkg_postinst
557     # @DESCRIPTION:
558     # This function creates test certificates if SSL is enabled and installs the
559 hollow 1.18 # default index.html to /var/www/localhost if it does not exist. We do this here
560 hollow 1.11 # because the default webroot is a copy of the files that exist elsewhere and we
561     # don't want them to be managed/removed by portage when apache is upgraded.
562 hollow 1.1 apache-2_pkg_postinst() {
563 hollow 1.18 if use ssl && [[ ! -e "${ROOT}/etc/ssl/apache2/server.pem" ]]; then
564     SSL_ORGANIZATION="${SSL_ORGANIZATION:-Apache HTTP Server}"
565     install_cert /etc/ssl/apache2/server
566     ewarn
567     ewarn "The location of SSL certificates has changed. If you are"
568     ewarn "upgrading from ${CATEGORY}/${PN}-2.2.13 or earlier (or remerged"
569     ewarn "*any* apache version), you might want to move your old"
570     ewarn "certificates from /etc/apache2/ssl/ to /etc/ssl/apache2/ and"
571     ewarn "update your config files."
572     ewarn
573 hollow 1.1 fi
574    
575 hollow 1.18 if [[ ! -e "${ROOT}/var/www/localhost" ]] ; then
576     mkdir -p "${ROOT}/var/www/localhost/htdocs"
577     echo "<html><body><h1>It works!</h1></body></html>" > "${ROOT}/var/www/localhost/htdocs/index.html"
578 hollow 1.1 fi
579 lxnay 1.21
580     echo
581     elog "Attention: cgi and cgid modules are now handled via APACHE2_MODULES flags"
582 zmedico 1.31 elog "in make.conf. Make sure to enable those in order to compile them."
583 hollow 1.24 elog "In general, you should use 'cgid' with threaded MPMs and 'cgi' otherwise."
584 lxnay 1.21 echo
585    
586 hollow 1.1 }
587    
588 hollow 1.18 EXPORT_FUNCTIONS pkg_setup src_prepare src_configure src_install pkg_postinst

  ViewVC Help
Powered by ViewVC 1.1.20