Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-kde
Path: blob/main/dns/bind9-devel/Makefile
16461 views
# pkg-help formatted with fmt 59 63

PORTNAME=	bind
DISTVERSION=	9.21.11
.if defined(BIND_TOOLS_SLAVE)
# dns/bind-tools here
PORTREVISION=	0
.else
# XXX: correct version
# dns/bind9xx here
PORTREVISION=	0
.endif
CATEGORIES=	dns net
MASTER_SITES=	ISC/bind9/${DISTVERSION}
.if defined(BIND_TOOLS_SLAVE)
PKGNAMESUFFIX=	-tools
.else
# XXX: correct SUFFIX.
PKGNAMESUFFIX=	9-devel
.endif

MAINTAINER=	[email protected]
.if defined(BIND_TOOLS_SLAVE)
COMMENT=	Command line tools from BIND: delv, dig, host, nslookup...
.else
COMMENT=	BIND DNS suite with updated DNSSEC and DNS64
.endif
WWW=		https://www.isc.org/bind/

# Uncomment when bind9xx comes of age. +3 years if ESV, +1year otherwise, see
# https://kb.isc.org/docs/aa-00896
# DEPRECATED=	End of life, please migrate to a newer version of BIND9
# EXPIRATION_DATE=	XXX-12-31

LICENSE=	MPL20
LICENSE_FILE=	${WRKSRC}/COPYRIGHT

LIB_DEPENDS=	libnghttp2.so:www/libnghttp2 \
		liburcu.so:sysutils/liburcu \
		libuv.so:devel/libuv

.if !defined(BIND_TOOLS_SLAVE)
RUN_DEPENDS=	bind-tools>0:dns/bind-tools
.endif

USES=		compiler:c11 cpe gnome libedit libtool meson perl5 pkgconfig \
		ssl tar:xz

CPE_VENDOR=	isc
CPE_VERSION=	${DISTVERSION:C/-.*//}
.if ${DISTVERSION:M*-*}
CPE_UPDATE=	${DISTVERSION:C/.*-//:tl}
.endif

USE_PERL5=	build

.if !defined(BIND_TOOLS_SLAVE)
USE_RC_SUBR=	named
.endif # !BIND_TOOLS_SLAVE

MESON_ARGS=	--localstatedir=/var \
		--sysconfdir=${ETCDIR} \
		-Dcap=disabled \
		-Ddoh=enabled \
		-Djemalloc=disabled

MAKE_JOBS_UNSAFE=	yes

.if !defined(BIND_TOOLS_SLAVE)
# XXX: Add -devel
CONFLICTS=	bind9[0-9][0-9]
.endif # !BIND_TOOLS_SLAVE

ETCDIR=		${PREFIX}/etc/namedb

# FIXME: figure out why build fails if enabled
MESON_ARGS+=	-Dtracing=disabled

.if defined(BIND_TOOLS_SLAVE)
MESON_ARGS+=	-Dbind-tools=enabled \
		-Dlibdir=${PREFIX}/lib/bind-tools
.else
MESON_ARGS+=	-Dbind-tools=disabled
# XXX: remove the big warning about it being a development version from pkg-message
SUB_FILES=	named.conf pkg-message

PORTDOCS=	*
.endif # BIND_TOOLS_SLAVE

OPTIONS_DEFINE=		DNSTAP DOCS GEOIP IDN LMDB OVERRIDECACHE QUERYTRACE \
			START_LATE
OPTIONS_DEFAULT=	DNSTAP GSSAPI_NONE IDN LMDB STATS_JSON STATS_XML

OPTIONS_GROUP=		STATS
OPTIONS_GROUP_STATS=	STATS_JSON STATS_XML

OPTIONS_SINGLE=		GSSAPI
OPTIONS_SINGLE_GSSAPI=	GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE

.if defined(BIND_TOOLS_SLAVE)
OPTIONS_EXCLUDE=	DOCS GEOIP LMDB OVERRIDECACHE QUERYTRACE START_LATE \
			STATS_JSON STATS_XML
.endif # BIND_TOOLS_SLAVE

OPTIONS_SUB=	yes

DNSTAP_DESC=		Provides fast passive logging of DNS messages
GSSAPI_BASE_DESC=	Using Heimdal in base (nsupdate is broken)
GSSAPI_HEIMDAL_DESC=	Using security/heimdal (nsupdate is broken)
GSSAPI_MIT_DESC=	Using security/krb5
GSSAPI_NONE_DESC=	Disable
LMDB_DESC=		Use LMDB for zone management
OVERRIDECACHE_DESC=	Use the override-cache patch
QUERYTRACE_DESC=	Enable the very verbose query tracelogging
START_LATE_DESC=	Start BIND late in the boot process (see help)
STATS_DESC=		Statistics channels
STATS_JSON_DESC=	Enable JSON statistics channel
STATS_XML_DESC=		Enable XML statistics channel

DNSTAP_LIB_DEPENDS=	libfstrm.so:devel/fstrm \
			libprotobuf-c.so:devel/protobuf-c
DNSTAP_MESON_ENABLED=	dnstap

DOCS_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR} \
			sphinx-build:textproc/py-sphinx
DOCS_USES=		python:env
DOCS_MESON_ENABLED=	doc
DOCS_ALL_TARGET=	all arm

GEOIP_LIB_DEPENDS=	libmaxminddb.so:net/libmaxminddb
GEOIP_MESON_ENABLED=	geoip

GSSAPI_BASE_USES=		gssapi
GSSAPI_BASE_CONFIGURE_ENV=	${GSSAPI_CONFIGURE_ARGS} \
				KRB5_CONFIG="${KRB5CONFIG}"
GSSAPI_BASE_MESON_ON=		-Dgssapi=enabled

GSSAPI_HEIMDAL_USES=		gssapi:heimdal
GSSAPI_HEIMDAL_CONFIGURE_ENV=	${GSSAPI_CONFIGURE_ARGS} \
				KRB5_CONFIG="${KRB5CONFIG}"
GSSAPI_HEIMDAL_MESON_ON=	-Dgssapi=enabled

GSSAPI_MIT_USES=		gssapi:mit
GSSAPI_MIT_CONFIGURE_ENV=	${GSSAPI_CONFIGURE_ARGS} \
				KRB5_CONFIG="${KRB5CONFIG}"
GSSAPI_MIT_MESON_ON=		-Dgssapi=enabled

GSSAPI_NONE_MESON_ON=	-Dgssapi=disabled

IDN_LIB_DEPENDS=	libidn2.so:dns/libidn2
IDN_USES=		iconv
IDN_MESON_ENABLED=	idn

LMDB_LIB_DEPENDS=	liblmdb.so:databases/lmdb
LMDB_MESON_ENABLED=	lmdb

OVERRIDECACHE_EXTRA_PATCHES=	${FILESDIR}/extrapatch-bind-min-override-ttl

QUERYTRACE_MESON_ON=	-Dtrace-logging=query

START_LATE_SUB_LIST=		NAMED_BEFORE="LOGIN" \
				NAMED_REQUIRE="SERVERS cleanvar"
START_LATE_SUB_LIST_OFF=	NAMED_BEFORE="SERVERS" \
				NAMED_REQUIRE="NETWORKING ldconfig syslogd"

STATS_JSON_LIB_DEPENDS=		libjson-c.so:devel/json-c
STATS_JSON_MESON_ENABLED=	stats-json
STATS_JSON_LDFLAGS=		-L${LOCALBASE}/lib -ljson-c

STATS_XML_USE=			GNOME=libxml2
STATS_XML_MESON_ENABLED=	stats-xml

.include <bsd.port.options.mk>

.if defined(WITH_DEBUG)
MESON_ARGS+=	-Ddeveloper=enabled
BUILD_DEPENDS+=	cmocka>0:sysutils/cmocka
.else
MESON_ARGS+=	-Dcmocka=disabled \
		-Ddeveloper=disabled
.endif

.include <bsd.port.pre.mk>

.if ${SSL_DEFAULT} == base
SUB_LIST+=	ENGINES=/usr/lib/engines
.else
SUB_LIST+=	ENGINES=${LOCALBASE}/lib/engines
.endif

.if !defined(BIND_TOOLS_SLAVE)
post-install:
	${MKDIR} ${STAGEDIR}${PREFIX}/etc/mtree
	${MKDIR} ${STAGEDIR}${ETCDIR}
.  for i in dynamic primary secondary working
	@${MKDIR} ${STAGEDIR}${ETCDIR}/$i
.  endfor
	${INSTALL_DATA} ${WRKDIR}/named.conf ${STAGEDIR}${ETCDIR}/named.conf.sample
	${INSTALL_DATA} ${FILESDIR}/named.root ${STAGEDIR}${ETCDIR}
	${INSTALL_DATA} ${FILESDIR}/empty.db ${STAGEDIR}${ETCDIR}/primary
	${INSTALL_DATA} ${FILESDIR}/localhost-forward.db ${STAGEDIR}${ETCDIR}/primary
	${INSTALL_DATA} ${FILESDIR}/localhost-reverse.db ${STAGEDIR}${ETCDIR}/primary
	${INSTALL_DATA} ${FILESDIR}/BIND.chroot.dist ${STAGEDIR}${PREFIX}/etc/mtree/BIND.chroot.dist.sample
	${INSTALL_DATA} ${FILESDIR}/BIND.chroot.local.dist ${STAGEDIR}${PREFIX}/etc/mtree/BIND.chroot.local.dist.sample

	(for dir in ${WRKSRC}/lib/*/include; do \
		cd $$dir && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/include '-name *.h'; \
	done)

post-install-DOCS-on:
	${MKDIR} ${STAGEDIR}${DOCSDIR}/arm
	${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
	cd ${WRKSRC}/_build/arm && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}/arm
.endif # BIND_TOOLS_SLAVE

.include <bsd.port.post.mk>