1PORTNAME=	lighttpd
2PORTVERSION=	1.4.82
3PORTREVISION=	1
4CATEGORIES=	www
5MASTER_SITES=	https://download.lighttpd.net/lighttpd/releases-1.4.x/
6
7MAINTAINER=	ports@MidnightBSD.org
8COMMENT=	Secure, fast, compliant, and flexible Web Server
9WWW=		https://www.lighttpd.net/
10
11LICENSE=	bsd3
12LICENSE_FILE=	${WRKSRC}/COPYING
13
14LIB_DEPENDS=	libpcre2-8.so:devel/pcre2
15
16USES=		compiler:c11 cmake cpe localbase:ldflags pkgconfig tar:xz
17
18GNU_CONFIGURE=	yes
19
20CONFIGURE_ARGS=	--libdir=${PREFIX}/lib/lighttpd
21
22NO_TEST=	yes
23
24PORTDOCS=	AUTHORS COPYING INSTALL NEWS README
25
26USE_RC_SUBR=	lighttpd
27REQUIRE=	LOGIN
28
29OPTIONS_DEFINE=	ATTR DBI DOCS KRB5 LUA MAXMINDDB NETTLE LDAP SPAWNFCGI \
30		WEBDAV ZSTD
31OPTIONS_GROUP=	SSL
32OPTIONS_GROUP_SSL=	OPENSSL GNUTLS MBEDTLS NSS WOLFSSL
33
34OPTIONS_DEFAULT=	NETTLE LUA OPENSSL
35OPTIONS_SUB=	yes
36
37ATTR_DESC=	extended attributes support
38DBI_DESC=	DBI authentication (mod_authn_dbi)
39KRB5_DESC=	Kerberos authentication (mod_authn_gssapi)
40LDAP_DESC=	LDAP authentication (mod_authn_ldap)
41LUA_DESC=	lua support (mod_magnet)
42MAXMINDDB_DESC=	IP-based geolocation lookup (mod_maxminddb)
43NETTLE_DESC=	Crypto support from Nettle
44SPAWNFCGI_DESC=	Depend on spawn-fcgi utility
45WEBDAV_DESC=	WebDAV support
46ZSTD_DESC=	mod_deflate support for zstd (Zstandard)
47
48ATTR_CMAKE_BOOL=	WITH_XATTR
49DBI_CMAKE_BOOL=		WITH_DBI
50DBI_LIB_DEPENDS=	libdbi.so:databases/libdbi
51GNUTLS_CMAKE_BOOL=	WITH_GNUTLS
52GNUTLS_LIBS=		-lgnutls
53GNUTLS_LIB_DEPENDS=	libgnutls.so:security/gnutls
54KRB5_CMAKE_BOOL=	WITH_KRB5
55KRB5_CPPFLAGS=		${GSSAPICPPFLAGS}
56KRB5_LDFLAGS=		${GSSAPILDFLAGS}
57KRB5_LIBS=		${GSSAPILIBS}
58KRB5_USES=		gssapi:mit
59LDAP_CMAKE_BOOL=	WITH_LDAP
60LDAP_USES=		ldap
61LDAP_VARS=		REQUIRE+=slapd
62LUA_USES=		lua
63LUA_CMAKE_BOOL=		WITH_LUA
64LUA_CMAKE_ON=		-DWITH_LUA_VERSION:STRING="lua-${LUA_VER}"
65MAXMINDDB_CMAKE_BOOL=	WITH_MAXMINDDB
66MAXMINDDB_LIB_DEPENDS=	libmaxminddb.so:net/libmaxminddb
67MBEDTLS_CMAKE_BOOL=	WITH_MBEDTLS
68MBEDTLS_LIB_DEPENDS=	libmbedtls.so:security/mbedtls2
69NETTLE_CMAKE_BOOL=	WITH_NETTLE
70NETTLE_LIB_DEPENDS=	libnettle.so:security/nettle
71NSS_CMAKE_BOOL=		WITH_NSS
72NSS_CPPFLAGS=		-I${LOCALBASE}/include/nspr
73NSS_LIB_DEPENDS=	libnss3.so:security/nss
74OPENSSL_USES=		ssl
75OPENSSL_CMAKE_BOOL=	WITH_OPENSSL
76SPAWNFCGI_RUN_DEPENDS=	spawn-fcgi:www/spawn-fcgi
77WEBDAV_CMAKE_BOOL=	WITH_WEBDAV_LOCKS \
78			WITH_WEBDAV_PROPS
79WEBDAV_LIB_DEPENDS=	libxml2.so:textproc/libxml2 \
80			libsqlite3.so:databases/sqlite3
81WOLFSSL_CMAKE_BOOL=	WITH_WOLFSSL
82WOLFSSL_LIB_DEPENDS=	libwolfssl.so:security/wolfssl
83ZSTD_CMAKE_BOOL=	WITH_ZSTD
84ZSTD_LIB_DEPENDS=	libzstd.so:archivers/zstd
85
86LIGHTTPD_CONF_FILES=	lighttpd.conf modules.conf lighttpd.annotated.conf
87
88LIGHTTPD_CONF_D_FILES=	access_log.conf \
89			auth.conf \
90			cgi.conf \
91			debug.conf \
92			dirlisting.conf \
93			evhost.conf \
94			expire.conf \
95			fastcgi.conf \
96			magnet.conf \
97			mime.conf \
98			proxy.conf \
99			rrdtool.conf \
100			scgi.conf \
101			simple_vhost.conf \
102			ssi.conf \
103			status.conf \
104			userdir.conf \
105			webdav.conf
106
107USERS=		${WWWOWN}
108GROUPS=		${WWWGRP}
109CACHEDIR=	/var/cache/${PORTNAME}
110LOGDIR=		/var/log/${PORTNAME}
111HOMEDIR=	/var/run/${PORTNAME}
112RUNDIR=		/var/run
113PLIST_SUB=	WWWOWN="${WWWOWN}" WWWGRP="${WWWGRP}" CACHEDIR="${CACHEDIR}" \
114		HOMEDIR="${HOMEDIR}" LOGDIR="${LOGDIR}"
115SUB_LIST=	REQUIRE="${REQUIRE}"
116
117post-patch:
118	@${REINPLACE_CMD} -E \
119		-e "s|/etc/lighttpd|${ETCDIR}|g" \
120		${WRKSRC}/doc/config/lighttpd.conf
121	@${REINPLACE_CMD} -E -e \
122		's|^(server.document-root.*=).*|\1 "${PREFIX}/www" + "/data"|' \
123		-e "s|/etc/lighttpd|${ETCDIR}|g" \
124		-e 's|^(server.event-handler.*=).*|\1 "freebsd-kqueue"|' \
125		-e 's|^(server.network-backend.*=).*|\1 "writev"|' \
126		-e "s|^(server.username.*=).*|\1 \"${WWWOWN}\"|" \
127		-e "s|^(server.groupname.*=).*|\1 \"${WWWGRP}\"|" \
128		-e "s|^(var.log_root.*=).*|\1 \"${LOGDIR}\"|" \
129		-e "s|^(var.server_root.*=).*|\1 \"${WWWDIR}\"|" \
130		-e "s|^(var.home_dir.*=).*|\1 \"${HOMEDIR}\"|" \
131		-e "s|^(var.state_dir.*=).*|\1 \"${RUNDIR}\"|" \
132		-e "s|^(var.cache_dir.*=).*|\1 \"${CACHEDIR}\"|" \
133		${WRKSRC}/doc/config/lighttpd.annotated.conf
134	@${REINPLACE_CMD} -e "s|/usr/bin/python|${LOCALBASE}/bin/python|" \
135		${WRKSRC}/doc/config/conf.d/cgi.conf
136
137post-install:
138	@${MKDIR} ${ETCDIR}/conf.d ${ETCDIR}/vhosts.d
139.for FILE in ${LIGHTTPD_CONF_FILES}
140	${INSTALL_DATA} ${WRKSRC}/doc/config/${FILE} \
141		${ETCDIR}/${FILE}.sample
142.endfor
143.for FILE in ${LIGHTTPD_CONF_D_FILES}
144	${INSTALL_DATA} ${WRKSRC}/doc/config/conf.d/${FILE} \
145		${ETCDIR}/conf.d/${FILE}.sample
146.endfor
147	${INSTALL_DATA} ${WRKSRC}/doc/config/vhosts.d/vhosts.template \
148		${ETCDIR}/vhosts.d/vhosts.template
149	@${MKDIR} ${WWWDIR}
150	@${MKDIR} -m 0700 ${CACHEDIR}
151	@${MKDIR} -m 0700 ${HOMEDIR}/sockets
152	@${MKDIR} -m 0700 ${LOGDIR}
153
154post-install-DOCS-on:
155	@${MKDIR} ${FAKE_DESTDIR}${DOCSDIR}
156	(cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${FAKE_DESTDIR}${DOCSDIR})
157
158.include <bsd.port.mk>
159