/[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.16 Revision 1.41
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2015 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.16 2009/04/04 17:50:51 grobian Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.41 2015/06/07 19:22:36 pacho Exp $
4 4
5# @ECLASS: apache-2.eclass 5# @ECLASS: apache-2.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# apache-devs@gentoo.org 7# polynomial-c@gentoo.org
8# @BLURB: Provides a common set of functions for apache-2.x ebuilds 8# @BLURB: Provides a common set of functions for apache-2.x ebuilds
9# @DESCRIPTION: 9# @DESCRIPTION:
10# This eclass handles apache-2.x ebuild functions such as LoadModule generation 10# This eclass handles apache-2.x ebuild functions such as LoadModule generation
11# and inter-module dependency checking. 11# and inter-module dependency checking.
12 12
13inherit autotools confutils eutils flag-o-matic multilib 13inherit autotools eutils flag-o-matic multilib ssl-cert user toolchain-funcs versionator
14
15[[ ${CATEGORY}/${PN} != www-servers/apache ]] \
16 && die "Do not use this eclass with anything else than www-servers/apache ebuilds!"
17
18case ${EAPI:-0} in
19 0|1|2|3)
20 die "This eclass requires >=EAPI-4"
21 ;;
22esac
23
24# settings which are version specific go in here:
25case $(get_version_component_range 1-2) in
26 2.4)
27 DEFAULT_MPM_THREADED="event" #509922
28 RDEPEND=">=dev-libs/apr-1.5.1
29 !www-apache/mod_macro" #492578 #477702
30 ;;
31 *)
32 DEFAULT_MPM_THREADED="worker"
33 RDEPEND=">=dev-libs/apr-1.4.5" #368651
34 ;;
35esac
14 36
15# ============================================================================== 37# ==============================================================================
16# INTERNAL VARIABLES 38# INTERNAL VARIABLES
17# ============================================================================== 39# ==============================================================================
18 40
77 IUSE="${IUSE} apache2_mpms_${mpm}" 99 IUSE="${IUSE} apache2_mpms_${mpm}"
78done 100done
79 101
80DEPEND="dev-lang/perl 102DEPEND="dev-lang/perl
81 =dev-libs/apr-1* 103 =dev-libs/apr-1*
82 =dev-libs/apr-util-1* 104 =dev-libs/apr-util-1*[ldap?]
83 dev-libs/libpcre 105 dev-libs/libpcre
106 apache2_modules_deflate? ( sys-libs/zlib )
107 apache2_modules_mime? ( app-misc/mime-types )
84 ldap? ( =net-nds/openldap-2* ) 108 ldap? ( =net-nds/openldap-2* )
85 selinux? ( sec-policy/selinux-apache )
86 ssl? ( >=dev-libs/openssl-0.9.8f ) 109 ssl? ( >=dev-libs/openssl-0.9.8m )
87 !=www-servers/apache-1*" 110 !=www-servers/apache-1*"
88RDEPEND="${DEPEND}" 111RDEPEND+=" ${DEPEND}
112 selinux? ( sec-policy/selinux-apache )"
89PDEPEND="~app-admin/apache-tools-${PV}" 113PDEPEND="~app-admin/apache-tools-${PV}"
90 114
91S="${WORKDIR}/httpd-${PV}" 115S="${WORKDIR}/httpd-${PV}"
92 116
93# ============================================================================== 117# ==============================================================================
119 fi 143 fi
120 done 144 done
121 145
122 if [[ -z "${MY_MPM}" ]] ; then 146 if [[ -z "${MY_MPM}" ]] ; then
123 if use threads ; then 147 if use threads ; then
124 MY_MPM=worker 148 MY_MPM=${DEFAULT_MPM_THREADED}
125 elog 149 elog
126 elog "Selected default threaded MPM: ${MY_MPM}" 150 elog "Selected default threaded MPM: ${MY_MPM}"
127 elog 151 elog
128 else 152 else
129 MY_MPM=prefork 153 MY_MPM=prefork
156# apache configuration. 180# apache configuration.
157check_module_critical() { 181check_module_critical() {
158 local unsupported=0 182 local unsupported=0
159 183
160 for m in ${MODULE_CRITICAL} ; do 184 for m in ${MODULE_CRITICAL} ; do
161 if ! has ${m} ${MY_MODS} ; then 185 if ! has ${m} ${MY_MODS[@]} ; then
162 ewarn "Module '${m}' is required in the default apache configuration." 186 ewarn "Module '${m}' is required in the default apache configuration."
163 unsupported=1 187 unsupported=1
164 fi 188 fi
165 done 189 done
166 190
169 ewarn "You have disabled one or more required modules" 193 ewarn "You have disabled one or more required modules"
170 ewarn "for the default apache configuration." 194 ewarn "for the default apache configuration."
171 ewarn "Although this is not an error, please be" 195 ewarn "Although this is not an error, please be"
172 ewarn "aware that this setup is UNSUPPORTED." 196 ewarn "aware that this setup is UNSUPPORTED."
173 ewarn 197 ewarn
174 ebeep 10
175 fi 198 fi
176} 199}
177 200
178# @VARIABLE: MODULE_DEPENDS 201# @VARIABLE: MODULE_DEPENDS
179# @DESCRIPTION: 202# @DESCRIPTION:
186# This internal function makes sure that all inter-module dependencies are 209# This internal function makes sure that all inter-module dependencies are
187# satisfied with the current module selection 210# satisfied with the current module selection
188check_module_depends() { 211check_module_depends() {
189 local err=0 212 local err=0
190 213
191 for m in ${MY_MODS} ; do 214 for m in ${MY_MODS[@]} ; do
192 for dep in ${MODULE_DEPENDS} ; do 215 for dep in ${MODULE_DEPENDS} ; do
193 if [[ "${m}" == "${dep%:*}" ]] ; then 216 if [[ "${m}" == "${dep%:*}" ]] ; then
194 if ! use apache2_modules_${dep#*:} ; then 217 if ! use apache2_modules_${dep#*:} ; then
195 eerror "Module '${m}' depends on '${dep#*:}'" 218 eerror "Module '${m}' depends on '${dep#*:}'"
196 err=1 219 err=1
225 mod_type="static" 248 mod_type="static"
226 else 249 else
227 mod_type="shared" 250 mod_type="shared"
228 fi 251 fi
229 252
230 MY_CONF="--enable-so=static" 253 MY_CONF=( --enable-so=static )
254 MY_MODS=()
231 255
232 if use ldap ; then 256 if use ldap ; then
233 confutils_use_depend_built_with_all ldap dev-libs/apr-util ldap
234 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}" 257 MY_CONF+=( --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type} )
235 MY_MODS="${MY_MODS} ldap authnz_ldap" 258 MY_MODS+=( ldap authnz_ldap )
236 else 259 else
237 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap" 260 MY_CONF+=( --disable-authnz_ldap --disable-ldap )
238 fi 261 fi
239 262
240 if use ssl ; then 263 if use ssl ; then
241 MY_CONF="${MY_CONF} --with-ssl=/usr --enable-ssl=${mod_type}" 264 MY_CONF+=( --with-ssl="${EPREFIX}"/usr --enable-ssl=${mod_type} )
242 MY_MODS="${MY_MODS} ssl" 265 MY_MODS+=( ssl )
243 else 266 else
244 MY_CONF="${MY_CONF} --without-ssl --disable-ssl" 267 MY_CONF+=( --without-ssl --disable-ssl )
245 fi
246
247 if use threads || has ${MY_MPM} ${IUSE_MPMS_THREAD} ; then
248 MY_CONF="${MY_CONF} --enable-cgid=${mod_type}"
249 MY_MODS="${MY_MODS} cgid"
250 else
251 MY_CONF="${MY_CONF} --enable-cgi=${mod_type}"
252 MY_MODS="${MY_MODS} cgi"
253 fi 268 fi
254 269
255 if use suexec ; then 270 if use suexec ; then
256 elog "You can manipulate several configure options of suexec" 271 elog "You can manipulate several configure options of suexec"
257 elog "through the following environment variables:" 272 elog "through the following environment variables:"
258 elog 273 elog
259 elog " SUEXEC_SAFEPATH: Default PATH for suexec (default: /usr/local/bin:/usr/bin:/bin)" 274 elog " SUEXEC_SAFEPATH: Default PATH for suexec (default: '${EPREFIX}/usr/local/bin:${EPREFIX}/usr/bin:${EPREFIX}/bin')"
260 elog " SUEXEC_LOGFILE: Path to the suexec logfile (default: /var/log/apache2/suexec_log)" 275 elog " SUEXEC_LOGFILE: Path to the suexec logfile (default: '${EPREFIX}/var/log/apache2/suexec_log')"
261 elog " SUEXEC_CALLER: Name of the user Apache is running as (default: apache)" 276 elog " SUEXEC_CALLER: Name of the user Apache is running as (default: apache)"
262 elog " SUEXEC_DOCROOT: Directory in which suexec will run scripts (default: /var/www)" 277 elog " SUEXEC_DOCROOT: Directory in which suexec will run scripts (default: '${EPREFIX}/var/www')"
263 elog " SUEXEC_MINUID: Minimum UID, which is allowed to run scripts via suexec (default: 1000)" 278 elog " SUEXEC_MINUID: Minimum UID, which is allowed to run scripts via suexec (default: 1000)"
264 elog " SUEXEC_MINGID: Minimum GID, which is allowed to run scripts via suexec (default: 100)" 279 elog " SUEXEC_MINGID: Minimum GID, which is allowed to run scripts via suexec (default: 100)"
265 elog " SUEXEC_USERDIR: User subdirectories (like /home/user/html) (default: public_html)" 280 elog " SUEXEC_USERDIR: User subdirectories (like /home/user/html) (default: public_html)"
266 elog " SUEXEC_UMASK: Umask for the suexec process (default: 077)" 281 elog " SUEXEC_UMASK: Umask for the suexec process (default: 077)"
267 elog 282 elog
268 283
269 MY_CONF="${MY_CONF} --with-suexec-safepath=${SUEXEC_SAFEPATH:-/usr/local/bin:/usr/bin:/bin}" 284 MY_CONF+=( --with-suexec-safepath="${SUEXEC_SAFEPATH:-${EPREFIX}/usr/local/bin:${EPREFIX}/usr/bin:${EPREFIX}/bin}" )
270 MY_CONF="${MY_CONF} --with-suexec-logfile=${SUEXEC_LOGFILE:-/var/log/apache2/suexec_log}" 285 MY_CONF+=( --with-suexec-logfile="${SUEXEC_LOGFILE:-${EPREFIX}/var/log/apache2/suexec_log}" )
271 MY_CONF="${MY_CONF} --with-suexec-bin=/usr/sbin/suexec" 286 MY_CONF+=( --with-suexec-bin="${EPREFIX}/usr/sbin/suexec" )
272 MY_CONF="${MY_CONF} --with-suexec-userdir=${SUEXEC_USERDIR:-public_html}" 287 MY_CONF+=( --with-suexec-userdir=${SUEXEC_USERDIR:-public_html} )
273 MY_CONF="${MY_CONF} --with-suexec-caller=${SUEXEC_CALLER:-apache}" 288 MY_CONF+=( --with-suexec-caller=${SUEXEC_CALLER:-apache} )
274 MY_CONF="${MY_CONF} --with-suexec-docroot=${SUEXEC_DOCROOT:-/var/www}" 289 MY_CONF+=( --with-suexec-docroot="${SUEXEC_DOCROOT:-${EPREFIX}/var/www}" )
275 MY_CONF="${MY_CONF} --with-suexec-uidmin=${SUEXEC_MINUID:-1000}" 290 MY_CONF+=( --with-suexec-uidmin=${SUEXEC_MINUID:-1000} )
276 MY_CONF="${MY_CONF} --with-suexec-gidmin=${SUEXEC_MINGID:-100}" 291 MY_CONF+=( --with-suexec-gidmin=${SUEXEC_MINGID:-100} )
277 MY_CONF="${MY_CONF} --with-suexec-umask=${SUEXEC_UMASK:-077}" 292 MY_CONF+=( --with-suexec-umask=${SUEXEC_UMASK:-077} )
278 MY_CONF="${MY_CONF} --enable-suexec=${mod_type}" 293 MY_CONF+=( --enable-suexec=${mod_type} )
279 MY_MODS="${MY_MODS} suexec" 294 MY_MODS+=( suexec )
280 else 295 else
281 MY_CONF="${MY_CONF} --disable-suexec" 296 MY_CONF+=( --disable-suexec )
282 fi 297 fi
283 298
284 for x in ${IUSE_MODULES} ; do 299 for x in ${IUSE_MODULES} ; do
285 if use apache2_modules_${x} ; then 300 if use apache2_modules_${x} ; then
286 MY_CONF="${MY_CONF} --enable-${x}=${mod_type}" 301 MY_CONF+=( --enable-${x}=${mod_type} )
287 MY_MODS="${MY_MODS} ${x}" 302 MY_MODS+=( ${x} )
288 else 303 else
289 MY_CONF="${MY_CONF} --disable-${x}" 304 MY_CONF+=( --disable-${x} )
290 fi 305 fi
291 done 306 done
292 307
293 # sort and uniquify MY_MODS 308 # sort and uniquify MY_MODS
294 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u) 309 MY_MODS=( $(echo ${MY_MODS[@]} | tr ' ' '\n' | sort -u) )
295 check_module_depends 310 check_module_depends
296 check_module_critical 311 check_module_critical
297} 312}
298 313
299# @VARIABLE: MODULE_DEFINES 314# @VARIABLE: MODULE_DEFINES
306# @FUNCTION: generate_load_module 321# @FUNCTION: generate_load_module
307# @DESCRIPTION: 322# @DESCRIPTION:
308# This internal function generates the LoadModule lines for httpd.conf based on 323# This internal function generates the LoadModule lines for httpd.conf based on
309# the current module selection and MODULE_DEFINES 324# the current module selection and MODULE_DEFINES
310generate_load_module() { 325generate_load_module() {
311 local endit=0 mod_lines= mod_dir="${D}/usr/$(get_libdir)/apache2/modules" 326 local endit=0 mod_lines= mod_dir="${ED}/usr/$(get_libdir)/apache2/modules"
312 327
313 if use static; then 328 if use static; then
314 sed -i -e "/%%LOAD_MODULE%%/d" \ 329 sed -i -e "/%%LOAD_MODULE%%/d" \
315 "${GENTOO_PATCHDIR}"/conf/httpd.conf 330 "${GENTOO_PATCHDIR}"/conf/httpd.conf
316 return 331 return
317 fi 332 fi
318 333
319 for m in ${MY_MODS} ; do 334 for m in ${MY_MODS[@]} ; do
320 if [[ -e "${mod_dir}/mod_${m}.so" ]] ; then 335 if [[ -e "${mod_dir}/mod_${m}.so" ]] ; then
321 for def in ${MODULE_DEFINES} ; do 336 for def in ${MODULE_DEFINES} ; do
322 if [[ "${m}" == "${def%:*}" ]] ; then 337 if [[ "${m}" == "${def%:*}" ]] ; then
323 mod_lines="${mod_lines}\n<IfDefine ${def#*:}>" 338 mod_lines="${mod_lines}\n<IfDefine ${def#*:}>"
324 endit=1 339 endit=1
343# This internal function checks if the previous configuration file for built-in 358# This internal function checks if the previous configuration file for built-in
344# modules exists in ROOT and prevents upgrade in this case. Users are supposed 359# modules exists in ROOT and prevents upgrade in this case. Users are supposed
345# to convert this file to the new APACHE2_MODULES USE_EXPAND variable and remove 360# to convert this file to the new APACHE2_MODULES USE_EXPAND variable and remove
346# it afterwards. 361# it afterwards.
347check_upgrade() { 362check_upgrade() {
348 if [[ -e "${ROOT}"etc/apache2/apache2-builtin-mods ]]; then 363 if [[ -e "${EROOT}"etc/apache2/apache2-builtin-mods ]]; then
349 eerror "The previous configuration file for built-in modules" 364 eerror "The previous configuration file for built-in modules"
350 eerror "(${ROOT}etc/apache2/apache2-builtin-mods) exists on your" 365 eerror "(${EROOT}etc/apache2/apache2-builtin-mods) exists on your"
351 eerror "system." 366 eerror "system."
352 eerror 367 eerror
353 eerror "Please read http://www.gentoo.org/doc/en/apache-upgrading.xml" 368 eerror "Please read http://www.gentoo.org/doc/en/apache-upgrading.xml"
354 eerror "for detailed information how to convert this file to the new" 369 eerror "for detailed information how to convert this file to the new"
355 eerror "APACHE2_MODULES USE_EXPAND variable." 370 eerror "APACHE2_MODULES USE_EXPAND variable."
376 391
377 setup_mpm 392 setup_mpm
378 setup_modules 393 setup_modules
379 394
380 if use debug; then 395 if use debug; then
381 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook" 396 MY_CONF+=( --enable-maintainer-mode --enable-exception-hook )
382 fi 397 fi
383 398
384 elog "Please note that you need SysV IPC support in your kernel." 399 elog "Please note that you need SysV IPC support in your kernel."
385 elog "Make sure CONFIG_SYSVIPC=y is set." 400 elog "Make sure CONFIG_SYSVIPC=y is set."
386 elog 401 elog
390 elog " accf_http_load=\"YES\"" 405 elog " accf_http_load=\"YES\""
391 elog 406 elog
392 fi 407 fi
393} 408}
394 409
395# @FUNCTION: apache-2_src_unpack 410# @FUNCTION: apache-2_src_prepare
396# @DESCRIPTION: 411# @DESCRIPTION:
397# This function applies patches, configures a custom file-system layout and 412# This function applies patches, configures a custom file-system layout and
398# rebuilds the configure scripts. 413# rebuilds the configure scripts.
399apache-2_src_unpack() { 414apache-2_src_prepare() {
400 unpack ${A} 415 #fix prefix in conf files etc (bug #433736)
401 cd "${S}" 416 use !prefix || sed -e "s@/\(usr\|var\|etc\|run\)/@${EPREFIX}&@g" \
417 -i "${GENTOO_PATCHDIR}"/conf/httpd.conf "${GENTOO_PATCHDIR}"/scripts/* \
418 "${GENTOO_PATCHDIR}"/docs/*.example "${GENTOO_PATCHDIR}"/patches/*.layout \
419 "${GENTOO_PATCHDIR}"/init/* "${GENTOO_PATCHDIR}"/conf/vhosts.d/* \
420 "${GENTOO_PATCHDIR}"/conf/modules.d/* || die
402 421
403 # 03_all_gentoo-apache-tools.patch injects -Wl,-z,now, which is not a good 422 # 03_all_gentoo-apache-tools.patch injects -Wl,-z,now, which is not a good
404 # idea for everyone 423 # idea for everyone
405 case ${CHOST} in 424 case ${CHOST} in
406 *-linux-gnu|*-solaris*|*-freebsd*) 425 *-linux-gnu|*-solaris*|*-freebsd*)
434 mv docs/man/{httpd,apache2}.8 453 mv docs/man/{httpd,apache2}.8
435 sed -i -e 's/httpd\.8/apache2.8/g' Makefile.in 454 sed -i -e 's/httpd\.8/apache2.8/g' Makefile.in
436 455
437 # patched-in MPMs need the build environment rebuilt 456 # patched-in MPMs need the build environment rebuilt
438 sed -i -e '/sinclude/d' configure.in 457 sed -i -e '/sinclude/d' configure.in
439 AT_GNUCONF_UPDATE=yes AT_M4DIR=build eautoreconf 458 AT_M4DIR=build eautoreconf
440}
441 459
460 # ${T} must be not group-writable, else grsec TPE will block it
461 chmod g-w "${T}"
462
463 # This package really should upgrade to using pcre's .pc file.
464 cat <<-\EOF >"${T}"/pcre-config
465 #!/bin/sh
466 [ "${flag}" = "--version" ] && set -- --modversion
467 exec ${PKG_CONFIG} libpcre "$@"
468 EOF
469 chmod a+x "${T}"/pcre-config
470}
471
442# @FUNCTION: apache-2_src_compile 472# @FUNCTION: apache-2_src_configure
443# @DESCRIPTION: 473# @DESCRIPTION:
444# This function adds compiler flags and runs econf and emake based on MY_MPM and 474# This function adds compiler flags and runs econf and emake based on MY_MPM and
445# MY_CONF 475# MY_CONF
446apache-2_src_compile() { 476apache-2_src_configure() {
477 tc-export PKG_CONFIG
478
479 # Sanity check in case people have bad mounts/TPE settings. #500928
480 if ! "${T}"/pcre-config --help >/dev/null ; then
481 eerror "Could not execute ${T}/pcre-config; do you have bad mount"
482 eerror "permissions in ${T} or have TPE turned on in your kernel?"
483 die "check your runtime settings #500928"
484 fi
485
447 # Instead of filtering --as-needed (bug #128505), append --no-as-needed 486 # Instead of filtering --as-needed (bug #128505), append --no-as-needed
448 # Thanks to Harald van Dijk 487 # Thanks to Harald van Dijk
449 # ... but only on platforms that use a GNU linker!
450 case ${CHOST} in
451 *-solaris* | *-*bsd* | *-linux-gnu)
452 append-ldflags -Wl,--no-as-needed 488 append-ldflags $(no-as-needed)
453 ;;
454 esac
455 489
456 # peruser MPM debugging with -X is nearly impossible 490 # peruser MPM debugging with -X is nearly impossible
457 if has peruser ${IUSE_MPMS} && use apache2_mpms_peruser ; then 491 if has peruser ${IUSE_MPMS} && use apache2_mpms_peruser ; then
458 use debug && append-flags -DMPM_PERUSER_DEBUG 492 use debug && append-flags -DMPM_PERUSER_DEBUG
459 fi 493 fi
460 494
461 # econf overwrites the stuff from config.layout, so we have to put them into 495 # econf overwrites the stuff from config.layout, so we have to put them into
462 # our myconf line too 496 # our myconf line too
497 ac_cv_path_PKGCONFIG=${PKG_CONFIG} \
463 econf \ 498 econf \
464 --includedir=/usr/include/apache2 \ 499 --includedir="${EPREFIX}"/usr/include/apache2 \
465 --libexecdir=/usr/$(get_libdir)/apache2/modules \ 500 --libexecdir="${EPREFIX}"/usr/$(get_libdir)/apache2/modules \
466 --datadir=/var/www/localhost \ 501 --datadir="${EPREFIX}"/var/www/localhost \
467 --sysconfdir=/etc/apache2 \ 502 --sysconfdir="${EPREFIX}"/etc/apache2 \
468 --localstatedir=/var \ 503 --localstatedir="${EPREFIX}"/var \
469 --with-mpm=${MY_MPM} \ 504 --with-mpm=${MY_MPM} \
470 --with-apr=/usr \ 505 --with-apr="${SYSROOT}${EPREFIX}"/usr \
471 --with-apr-util=/usr \ 506 --with-apr-util="${SYSROOT}${EPREFIX}"/usr \
472 --with-pcre=/usr \ 507 --with-pcre="${T}"/pcre-config \
473 --with-z=/usr \ 508 --with-z="${EPREFIX}"/usr \
474 --with-port=80 \ 509 --with-port=80 \
475 --with-program-name=apache2 \ 510 --with-program-name=apache2 \
476 --enable-layout=Gentoo \ 511 --enable-layout=Gentoo \
477 ${MY_CONF} || die "econf failed!" 512 "${MY_CONF[@]}"
478 513
479 sed -i -e 's:apache2\.conf:httpd.conf:' include/ap_config_auto.h 514 sed -i -e 's:apache2\.conf:httpd.conf:' include/ap_config_auto.h
480
481 emake || die "emake failed"
482} 515}
483 516
484# @FUNCTION: apache-2_src_install 517# @FUNCTION: apache-2_src_install
485# @DESCRIPTION: 518# @DESCRIPTION:
486# This function runs `emake install' and generates, installs and adapts the gentoo 519# This function runs `emake install' and generates, installs and adapts the gentoo
487# specific configuration files found in the tarball 520# specific configuration files found in the tarball
488apache-2_src_install() { 521apache-2_src_install() {
489 make DESTDIR="${D}" install || die "make install failed" 522 emake DESTDIR="${D}" MKINSTALLDIRS="mkdir -p" install
490 523
491 # install our configuration files 524 # install our configuration files
492 keepdir /etc/apache2/vhosts.d 525 keepdir /etc/apache2/vhosts.d
493 keepdir /etc/apache2/modules.d 526 keepdir /etc/apache2/modules.d
494 527
495 generate_load_module 528 generate_load_module
496 insinto /etc/apache2 529 insinto /etc/apache2
497 doins -r "${GENTOO_PATCHDIR}"/conf/* 530 doins -r "${GENTOO_PATCHDIR}"/conf/*
498 doins docs/conf/magic 531 use apache2_modules_mime_magic && doins docs/conf/magic
499 532
500 insinto /etc/logrotate.d 533 insinto /etc/logrotate.d
501 newins "${GENTOO_PATCHDIR}"/scripts/apache2-logrotate apache2 534 newins "${GENTOO_PATCHDIR}"/scripts/apache2-logrotate apache2
502 535
503 # generate a sane default APACHE2_OPTS 536 # generate a sane default APACHE2_OPTS
504 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE" 537 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO"
505 use doc && APACHE2_OPTS="${APACHE2_OPTS} -D MANUAL" 538 use doc && APACHE2_OPTS="${APACHE2_OPTS} -D MANUAL"
506 use ssl && APACHE2_OPTS="${APACHE2_OPTS} -D SSL -D SSL_DEFAULT_VHOST" 539 use ssl && APACHE2_OPTS="${APACHE2_OPTS} -D SSL -D SSL_DEFAULT_VHOST"
507 use suexec && APACHE2_OPTS="${APACHE2_OPTS} -D SUEXEC" 540 use suexec && APACHE2_OPTS="${APACHE2_OPTS} -D SUEXEC"
541 if has negotiation ${APACHE2_MODULES} && use apache2_modules_negotiation; then
542 APACHE2_OPTS="${APACHE2_OPTS} -D LANGUAGE"
543 fi
508 544
509 sed -i -e "s:APACHE2_OPTS=\".*\":APACHE2_OPTS=\"${APACHE2_OPTS}\":" \ 545 sed -i -e "s:APACHE2_OPTS=\".*\":APACHE2_OPTS=\"${APACHE2_OPTS}\":" \
510 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed" 546 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed"
511 547
512 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2 548 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2
519 else 555 else
520 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl 556 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl
521 fi 557 fi
522 558
523 # provide legacy symlink for apxs, bug 177697 559 # provide legacy symlink for apxs, bug 177697
524 dosym /usr/sbin/apxs /usr/sbin/apxs2 560 dosym apxs /usr/sbin/apxs2
525
526 # install some thirdparty scripts
527 exeinto /usr/sbin
528 use ssl && doexe "${GENTOO_PATCHDIR}"/scripts/gentestcrt.sh
529 561
530 # install some documentation 562 # install some documentation
531 dodoc ABOUT_APACHE CHANGES LAYOUT README README.platforms VERSIONING 563 dodoc ABOUT_APACHE CHANGES LAYOUT README README.platforms VERSIONING
532 dodoc "${GENTOO_PATCHDIR}"/docs/* 564 dodoc "${GENTOO_PATCHDIR}"/docs/*
533 565
534 # drop in a convenient link to the manual 566 # drop in a convenient link to the manual
535 if use doc ; then 567 if use doc ; then
536 sed -i -e "s:VERSION:${PVR}:" "${D}/etc/apache2/modules.d/00_apache_manual.conf" 568 sed -i -e "s:VERSION:${PVR}:" "${ED}/etc/apache2/modules.d/00_apache_manual.conf"
569 docompress -x /usr/share/doc/${PF}/manual # 503640
537 else 570 else
538 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf" 571 rm -f "${ED}/etc/apache2/modules.d/00_apache_manual.conf"
539 rm -Rf "${D}/usr/share/doc/${PF}/manual" 572 rm -Rf "${ED}/usr/share/doc/${PF}/manual"
540 fi 573 fi
541 574
542 # the default webroot gets stored in /usr/share/${PF}/webroot 575 # the default icons and error pages get stored in
543 ebegin "Installing default webroot to /usr/share/${PF}/webroot" 576 # /usr/share/apache2/{error,icons}
544 dodir /usr/share/${PF} 577 dodir /usr/share/apache2
545 mv -f "${D}/var/www/localhost" "${D}/usr/share/${PF}/webroot" 578 mv -f "${ED}/var/www/localhost/error" "${ED}/usr/share/apache2/error"
579 mv -f "${ED}/var/www/localhost/icons" "${ED}/usr/share/apache2/icons"
580 rm -rf "${ED}/var/www/localhost/"
546 eend $? 581 eend $?
547 582
548 # set some sane permissions for suexec 583 # set some sane permissions for suexec
549 if use suexec ; then 584 if use suexec ; then
550 fowners 0:apache /usr/sbin/suexec 585 fowners 0:${SUEXEC_CALLER:-apache} /usr/sbin/suexec
551 fperms 4710 /usr/sbin/suexec 586 fperms 4710 /usr/sbin/suexec
552 # provide legacy symlink for suexec, bug 177697 587 # provide legacy symlink for suexec, bug 177697
553 dosym /usr/sbin/suexec /usr/sbin/suexec2 588 dosym /usr/sbin/suexec /usr/sbin/suexec2
554 fi 589 fi
555 590
556 # empty dirs 591 # empty dirs
557 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do 592 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do
558 keepdir ${i} 593 keepdir ${i}
559 fowners apache:apache ${i} 594 fowners apache:apache ${i}
560 fperms 0755 ${i} 595 fperms 0750 ${i}
561 done 596 done
562
563 # we need /etc/apache2/ssl if USE=ssl
564 use ssl && keepdir /etc/apache2/ssl
565} 597}
566 598
567# @FUNCTION: apache-2_pkg_postinst 599# @FUNCTION: apache-2_pkg_postinst
568# @DESCRIPTION: 600# @DESCRIPTION:
569# This function creates test certificates if SSL is enabled and installs the 601# This function creates test certificates if SSL is enabled and installs the
570# default webroot to /var/www/localhost if it does not exist. We do this here 602# default index.html to /var/www/localhost if it does not exist. We do this here
571# because the default webroot is a copy of the files that exist elsewhere and we 603# because the default webroot is a copy of the files that exist elsewhere and we
572# don't want them to be managed/removed by portage when apache is upgraded. 604# don't want them to be managed/removed by portage when apache is upgraded.
573apache-2_pkg_postinst() { 605apache-2_pkg_postinst() {
574 einfo
575
576 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then 606 if use ssl && [[ ! -e "${EROOT}/etc/ssl/apache2/server.pem" ]]; then
577 cd "${ROOT}"/etc/apache2/ssl 607 SSL_ORGANIZATION="${SSL_ORGANIZATION:-Apache HTTP Server}"
578 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..." 608 install_cert /etc/ssl/apache2/server
579 yes "" 2>/dev/null | \ 609 ewarn
580 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \ 610 ewarn "The location of SSL certificates has changed. If you are"
581 die "gentestcrt.sh failed" 611 ewarn "upgrading from ${CATEGORY}/${PN}-2.2.13 or earlier (or remerged"
582 einfo 612 ewarn "*any* apache version), you might want to move your old"
613 ewarn "certificates from /etc/apache2/ssl/ to /etc/ssl/apache2/ and"
614 ewarn "update your config files."
615 ewarn
583 fi 616 fi
584 617
585 if [[ -e "${ROOT}/var/www/localhost" ]] ; then 618 if [[ ! -e "${EROOT}/var/www/localhost" ]] ; then
586 elog "The default webroot has not been installed into"
587 elog "${ROOT}var/www/localhost because the directory already exists"
588 elog "and we do not want to overwrite any files you have put there."
589 elog
590 elog "If you would like to install the latest webroot, please run"
591 elog "emerge --config =${PF}"
592 elog
593 else
594 einfo "Installing default webroot to ${ROOT}var/www/localhost"
595 mkdir -p "${ROOT}"/var/www/localhost 619 mkdir -p "${EROOT}/var/www/localhost/htdocs"
596 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/ 620 echo "<html><body><h1>It works!</h1></body></html>" > "${EROOT}/var/www/localhost/htdocs/index.html"
597 einfo
598 fi 621 fi
599}
600 622
601# @FUNCTION: apache-2_pkg_config 623 echo
602# @DESCRIPTION: 624 elog "Attention: cgi and cgid modules are now handled via APACHE2_MODULES flags"
603# This function installs -- and overwrites -- the default webroot to 625 elog "in make.conf. Make sure to enable those in order to compile them."
604# /var/www/localhost 626 elog "In general, you should use 'cgid' with threaded MPMs and 'cgi' otherwise."
605apache-2_pkg_config() { 627 echo
606 einfo "Installing default webroot to ${ROOT}var/www/localhost"
607 mkdir -p "${ROOT}"/var/www/localhost
608 cp -R "${ROOT}"/usr/share/${PF}/webroot/* "${ROOT}"/var/www/localhost/
609}
610 628
629}
630
611EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config 631EXPORT_FUNCTIONS pkg_setup src_prepare src_configure src_install pkg_postinst

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.20