218 lines
6.0 KiB
Bash
218 lines
6.0 KiB
Bash
# Copyright 1999-2016 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI="5"
|
|
inherit base autotools eutils readme.gentoo user systemd
|
|
|
|
DESCRIPTION="Lightweight high-performance web server"
|
|
HOMEPAGE="http://www.lighttpd.net/"
|
|
SRC_URI="http://download.lighttpd.net/lighttpd/releases-1.4.x/${P}.tar.xz"
|
|
|
|
LICENSE="BSD GPL-2"
|
|
SLOT="0"
|
|
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd"
|
|
IUSE="bzip2 doc fam gdbm ipv6 kerberos ldap libev libressl lua minimal mmap memcache mysql pcre php rrdtool selinux ssl test webdav xattr zlib"
|
|
|
|
REQUIRED_USE="kerberos? ( ssl !libressl )"
|
|
|
|
CDEPEND="
|
|
bzip2? ( app-arch/bzip2 )
|
|
fam? ( virtual/fam )
|
|
gdbm? ( sys-libs/gdbm )
|
|
ldap? ( >=net-nds/openldap-2.1.26 )
|
|
libev? ( >=dev-libs/libev-4.01 )
|
|
lua? ( >=dev-lang/lua-5.1:= )
|
|
memcache? ( dev-libs/libmemcache )
|
|
mysql? ( >=virtual/mysql-4.0 )
|
|
pcre? ( >=dev-libs/libpcre-3.1 )
|
|
php? ( dev-lang/php:*[cgi] )
|
|
rrdtool? ( net-analyzer/rrdtool )
|
|
ssl? (
|
|
!libressl? ( >=dev-libs/openssl-0.9.7:0=[kerberos?] )
|
|
libressl? ( dev-libs/libressl:= )
|
|
)
|
|
webdav? (
|
|
dev-libs/libxml2
|
|
>=dev-db/sqlite-3
|
|
sys-fs/e2fsprogs
|
|
)
|
|
xattr? ( kernel_linux? ( sys-apps/attr ) )
|
|
zlib? ( >=sys-libs/zlib-1.1 )"
|
|
|
|
DEPEND="${CDEPEND}
|
|
virtual/pkgconfig
|
|
doc? ( dev-python/docutils )
|
|
test? (
|
|
virtual/perl-Test-Harness
|
|
dev-libs/fcgi
|
|
)"
|
|
|
|
RDEPEND="${CDEPEND}
|
|
selinux? ( sec-policy/selinux-apache )
|
|
"
|
|
|
|
# update certain parts of lighttpd.conf based on conditionals
|
|
update_config() {
|
|
local config="${D}/etc/lighttpd/lighttpd.conf"
|
|
|
|
# enable php/mod_fastcgi settings
|
|
use php && { sed -i -e 's|#.*\(include.*fastcgi.*$\)|\1|' ${config} || die; }
|
|
|
|
# enable stat() caching
|
|
use fam && { sed -i -e 's|#\(.*stat-cache.*$\)|\1|' ${config} || die; }
|
|
|
|
# automatically listen on IPv6 if built with USE=ipv6. Bug #234987
|
|
use ipv6 && { sed -i -e 's|# server.use-ipv6|server.use-ipv6|' ${config} || die; }
|
|
}
|
|
|
|
# remove non-essential stuff (for USE=minimal)
|
|
remove_non_essential() {
|
|
local libdir="${D}/usr/$(get_libdir)/${PN}"
|
|
|
|
# text docs
|
|
use doc || rm -fr "${D}"/usr/share/doc/${PF}/txt
|
|
|
|
# non-essential modules
|
|
rm -f \
|
|
${libdir}/mod_{compress,evhost,expire,proxy,scgi,secdownload,simple_vhost,status,setenv,trigger*,usertrack}.*
|
|
|
|
# allow users to keep some based on USE flags
|
|
use pcre || rm -f ${libdir}/mod_{ssi,re{direct,write}}.*
|
|
use webdav || rm -f ${libdir}/mod_webdav.*
|
|
use mysql || rm -f ${libdir}/mod_mysql_vhost.*
|
|
use lua || rm -f ${libdir}/mod_{cml,magnet}.*
|
|
use rrdtool || rm -f ${libdir}/mod_rrdtool.*
|
|
use zlib || rm -f ${libdir}/mod_compress.*
|
|
}
|
|
|
|
pkg_setup() {
|
|
if ! use pcre ; then
|
|
ewarn "It is highly recommended that you build ${PN}"
|
|
ewarn "with perl regular expressions support via USE=pcre."
|
|
ewarn "Otherwise you lose support for some core options such"
|
|
ewarn "as conditionals and modules such as mod_re{write,direct}"
|
|
ewarn "and mod_ssi."
|
|
fi
|
|
if use mmap; then
|
|
ewarn "You have enabled the mmap option. This option may allow"
|
|
ewarn "local users to trigger SIGBUG crashes. Use this option"
|
|
ewarn "with EXTRA care."
|
|
fi
|
|
enewgroup lighttpd
|
|
enewuser lighttpd -1 -1 /var/www/localhost/htdocs lighttpd
|
|
|
|
DOC_CONTENTS="IPv6 migration guide:\n
|
|
http://redmine.lighttpd.net/projects/lighttpd/wiki/IPv6-Config"
|
|
}
|
|
|
|
src_prepare() {
|
|
base_src_prepare
|
|
#dev-python/docutils installs rst2html.py not rst2html
|
|
sed -i -e 's|\(rst2html\)|\1.py|g' doc/outdated/Makefile.am || \
|
|
die "sed doc/Makefile.am failed"
|
|
eautoreconf
|
|
}
|
|
|
|
src_configure() {
|
|
econf --libdir=/usr/$(get_libdir)/${PN} \
|
|
--enable-lfs \
|
|
$(use_enable ipv6) \
|
|
$(use_enable mmap) \
|
|
$(use_with bzip2) \
|
|
$(use_with fam) \
|
|
$(use_with gdbm) \
|
|
$(use_with kerberos kerberos5) \
|
|
$(use_with ldap) \
|
|
$(use_with libev) \
|
|
$(use_with lua) \
|
|
$(use_with memcache) \
|
|
$(use_with mysql) \
|
|
$(use_with pcre) \
|
|
$(use_with ssl openssl) \
|
|
$(use_with webdav webdav-props) \
|
|
$(use_with webdav webdav-locks) \
|
|
$(use_with xattr attr) \
|
|
$(use_with zlib)
|
|
}
|
|
|
|
src_compile() {
|
|
emake
|
|
|
|
if use doc ; then
|
|
einfo "Building HTML documentation"
|
|
cd doc || die
|
|
emake html
|
|
fi
|
|
}
|
|
|
|
src_test() {
|
|
if [[ ${EUID} -eq 0 ]]; then
|
|
default_src_test
|
|
else
|
|
ewarn "test skipped, please re-run as root if you wish to test ${PN}"
|
|
fi
|
|
}
|
|
|
|
src_install() {
|
|
emake DESTDIR="${D}" install
|
|
|
|
# init script stuff
|
|
newinitd "${FILESDIR}"/lighttpd.initd lighttpd
|
|
newconfd "${FILESDIR}"/lighttpd.confd lighttpd
|
|
use fam && has_version app-admin/fam && \
|
|
{ sed -i 's/after famd/need famd/g' "${D}"/etc/init.d/lighttpd || die; }
|
|
|
|
# configs
|
|
insinto /etc/lighttpd
|
|
doins "${FILESDIR}"/conf/lighttpd.conf
|
|
doins "${FILESDIR}"/conf/mime-types.conf
|
|
doins "${FILESDIR}"/conf/mod_cgi.conf
|
|
doins "${FILESDIR}"/conf/mod_fastcgi.conf
|
|
|
|
# update lighttpd.conf directives based on conditionals
|
|
update_config
|
|
|
|
# docs
|
|
dodoc AUTHORS README NEWS doc/scripts/*.sh
|
|
newdoc doc/config//lighttpd.conf lighttpd.conf.distrib
|
|
use ipv6 && readme.gentoo_create_doc
|
|
|
|
use doc && dohtml -r doc/*
|
|
|
|
docinto txt
|
|
dodoc doc/outdated/*.txt
|
|
|
|
# logrotate
|
|
insinto /etc/logrotate.d
|
|
newins "${FILESDIR}"/lighttpd.logrotate-r1 lighttpd
|
|
|
|
keepdir /var/l{ib,og}/lighttpd /var/www/localhost/htdocs
|
|
fowners lighttpd:lighttpd /var/l{ib,og}/lighttpd
|
|
fperms 0750 /var/l{ib,og}/lighttpd
|
|
|
|
#spawn-fcgi may optionally be installed via www-servers/spawn-fcgi
|
|
rm -f "${D}"/usr/bin/spawn-fcgi "${D}"/usr/share/man/man1/spawn-fcgi.*
|
|
|
|
use minimal && remove_non_essential
|
|
|
|
systemd_dounit "${FILESDIR}/${PN}.service"
|
|
systemd_dotmpfilesd "${FILESDIR}/${PN}.tmpfiles.conf"
|
|
}
|
|
|
|
pkg_postinst () {
|
|
use ipv6 && readme.gentoo_print_elog
|
|
|
|
if [[ -f ${ROOT}etc/conf.d/spawn-fcgi.conf ]] ; then
|
|
einfo "spawn-fcgi is now provided by www-servers/spawn-fcgi."
|
|
einfo "spawn-fcgi's init script configuration is now located"
|
|
einfo "at /etc/conf.d/spawn-fcgi."
|
|
fi
|
|
|
|
if [[ -f ${ROOT}etc/lighttpd.conf ]] ; then
|
|
elog "Gentoo has a customized configuration,"
|
|
elog "which is now located in /etc/lighttpd. Please migrate your"
|
|
elog "existing configuration."
|
|
fi
|
|
}
|