1# pkg-help formatted with fmt 59 63
2
3PORTNAME=	bind
4DISTVERSION=	9.21.21
5.if defined(BIND_TOOLS_SLAVE)
6# dns/bind-tools here
7PORTREVISION=	0
8.else
9# XXX: correct version
10# dns/bind9xx here
11PORTREVISION=	0
12.endif
13CATEGORIES=	dns net
14MASTER_SITES=	ISC/bind9/${DISTVERSION}
15.if defined(BIND_TOOLS_SLAVE)
16PKGNAMESUFFIX=	-tools
17.else
18# XXX: correct SUFFIX.
19PKGNAMESUFFIX=	9-devel
20.endif
21
22MAINTAINER=	ports@MidnightBSD.org
23.if defined(BIND_TOOLS_SLAVE)
24COMMENT=	Command line tools from BIND: delv, dig, host, nslookup...
25.else
26COMMENT=	BIND DNS suite with updated DNSSEC and DNS64
27.endif
28WWW=		https://www.isc.org/bind/
29
30# Uncomment when bind9xx comes of age. +3 years if ESV, +1year otherwise, see
31# https://kb.isc.org/docs/aa-00896
32# DEPRECATED=	End of life, please migrate to a newer version of BIND9
33# EXPIRATION_DATE=	XXX-12-31
34
35LICENSE=	MPL20
36LICENSE_FILE=	${WRKSRC}/COPYRIGHT
37
38LIB_DEPENDS=	libnghttp2.so:www/libnghttp2 \
39		liburcu.so:sysutils/liburcu \
40		libuv.so:devel/libuv \
41		liblmdb.so:databases/lmdb
42
43.if !defined(BIND_TOOLS_SLAVE)
44RUN_DEPENDS=	bind-tools>0:dns/bind-tools
45.endif
46
47USES=		compiler:c11 cpe gnome libedit meson perl5 pkgconfig \
48		ssl tar:xz
49
50CPE_VENDOR=	isc
51CPE_VERSION=	${DISTVERSION:C/-.*//}
52.if ${DISTVERSION:M*-*}
53CPE_UPDATE=	${DISTVERSION:C/.*-//:tl}
54.endif
55
56USE_PERL5=	build
57
58.if !defined(BIND_TOOLS_SLAVE)
59USE_RC_SUBR=	named
60.endif # !BIND_TOOLS_SLAVE
61
62MESON_ARGS=	--localstatedir=/var \
63		--sysconfdir=${ETCDIR} \
64		-Ddoh=enabled \
65		-Djemalloc=disabled
66
67MAKE_JOBS_UNSAFE=	yes
68
69.if !defined(BIND_TOOLS_SLAVE)
70# XXX: Add -devel
71CONFLICTS=	bind9[0-9][0-9]
72.endif # !BIND_TOOLS_SLAVE
73
74ETCDIR=		${PREFIX}/etc/namedb
75
76# FIXME: figure out why build fails if enabled
77MESON_ARGS+=	-Dtracing=disabled
78
79.if defined(BIND_TOOLS_SLAVE)
80MESON_ARGS+=	-Dbind-tools=enabled \
81		-Dlibdir=${PREFIX}/lib/bind-tools
82.else
83MESON_ARGS+=	-Dbind-tools=disabled
84# XXX: remove the big warning about it being a development version from pkg-message
85SUB_FILES=	named.conf pkg-message
86
87PORTDOCS=	*
88.endif # BIND_TOOLS_SLAVE
89
90OPTIONS_DEFINE=		DNSTAP DOCS GEOIP IDN OVERRIDECACHE QUERYTRACE \
91			START_LATE
92OPTIONS_DEFAULT=	DNSTAP GSSAPI_NONE IDN STATS_JSON STATS_XML
93
94OPTIONS_GROUP=		STATS
95OPTIONS_GROUP_STATS=	STATS_JSON STATS_XML
96
97OPTIONS_SINGLE=		GSSAPI
98OPTIONS_SINGLE_GSSAPI=	GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE
99
100.if defined(BIND_TOOLS_SLAVE)
101OPTIONS_EXCLUDE=	DOCS GEOIP OVERRIDECACHE QUERYTRACE START_LATE \
102			STATS_JSON STATS_XML
103.endif # BIND_TOOLS_SLAVE
104
105OPTIONS_SUB=	yes
106
107DNSTAP_DESC=		Provides fast passive logging of DNS messages
108GSSAPI_BASE_DESC=	Using Heimdal in base (nsupdate is broken)
109GSSAPI_HEIMDAL_DESC=	Using security/heimdal (nsupdate is broken)
110GSSAPI_MIT_DESC=	Using security/krb5
111GSSAPI_NONE_DESC=	Disable
112OVERRIDECACHE_DESC=	Use the override-cache patch
113QUERYTRACE_DESC=	Enable the very verbose query tracelogging
114START_LATE_DESC=	Start BIND late in the boot process (see help)
115STATS_DESC=		Statistics channels
116STATS_JSON_DESC=	Enable JSON statistics channel
117STATS_XML_DESC=		Enable XML statistics channel
118
119DNSTAP_LIB_DEPENDS=	libfstrm.so:devel/fstrm \
120			libprotobuf-c.so:devel/protobuf-c
121DNSTAP_MESON_ENABLED=	dnstap
122
123DOCS_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR} \
124			sphinx-build:textproc/py-sphinx
125DOCS_USES=		python:env
126DOCS_MESON_ENABLED=	doc
127DOCS_ALL_TARGET=	all arm
128
129GEOIP_LIB_DEPENDS=	libmaxminddb.so:net/libmaxminddb
130GEOIP_MESON_ENABLED=	geoip
131
132GSSAPI_BASE_USES=		gssapi
133GSSAPI_BASE_CONFIGURE_ENV=	${GSSAPI_CONFIGURE_ARGS} \
134				KRB5_CONFIG="${KRB5CONFIG}"
135GSSAPI_BASE_MESON_ON=		-Dgssapi=enabled
136
137GSSAPI_HEIMDAL_USES=		gssapi:heimdal
138GSSAPI_HEIMDAL_CONFIGURE_ENV=	${GSSAPI_CONFIGURE_ARGS} \
139				KRB5_CONFIG="${KRB5CONFIG}"
140GSSAPI_HEIMDAL_MESON_ON=	-Dgssapi=enabled
141
142GSSAPI_MIT_USES=		gssapi:mit
143GSSAPI_MIT_CONFIGURE_ENV=	${GSSAPI_CONFIGURE_ARGS} \
144				KRB5_CONFIG="${KRB5CONFIG}"
145GSSAPI_MIT_MESON_ON=		-Dgssapi=enabled
146
147GSSAPI_NONE_MESON_ON=	-Dgssapi=disabled
148
149IDN_LIB_DEPENDS=	libidn2.so:dns/libidn2
150IDN_USES=		iconv
151IDN_MESON_ENABLED=	idn
152
153OVERRIDECACHE_EXTRA_PATCHES=	${FILESDIR}/extrapatch-bind-min-override-ttl
154
155QUERYTRACE_MESON_ON=	-Dtrace-logging=query
156
157START_LATE_SUB_LIST=		NAMED_BEFORE="LOGIN" \
158				NAMED_REQUIRE="SERVERS cleanvar"
159START_LATE_SUB_LIST_OFF=	NAMED_BEFORE="SERVERS" \
160				NAMED_REQUIRE="NETWORKING ldconfig syslogd"
161
162STATS_JSON_LIB_DEPENDS=		libjson-c.so:devel/json-c
163STATS_JSON_MESON_ENABLED=	stats-json
164STATS_JSON_LDFLAGS=		-L${LOCALBASE}/lib -ljson-c
165
166STATS_XML_USE=			GNOME=libxml2
167STATS_XML_MESON_ENABLED=	stats-xml
168
169.include <bsd.mport.options.mk>
170
171.if defined(WITH_DEBUG)
172MESON_ARGS+=	-Ddeveloper=enabled
173BUILD_DEPENDS+=	cmocka>0:sysutils/cmocka
174.else
175MESON_ARGS+=	-Dcmocka=disabled \
176		-Ddeveloper=disabled
177.endif
178
179.include <bsd.port.pre.mk>
180
181.if ${SSL_DEFAULT} == base
182SUB_LIST+=	ENGINES=/usr/lib/engines
183.else
184SUB_LIST+=	ENGINES=${LOCALBASE}/lib/engines
185.endif
186
187.if !defined(BIND_TOOLS_SLAVE)
188post-install:
189	${MKDIR} ${STAGEDIR}${PREFIX}/etc/mtree
190	${MKDIR} ${STAGEDIR}${ETCDIR}
191.  for i in dynamic primary secondary working
192	@${MKDIR} ${STAGEDIR}${ETCDIR}/$i
193.  endfor
194	${INSTALL_DATA} ${WRKDIR}/named.conf ${STAGEDIR}${ETCDIR}/named.conf.sample
195	${INSTALL_DATA} ${FILESDIR}/named.root ${STAGEDIR}${ETCDIR}
196	${INSTALL_DATA} ${FILESDIR}/empty.db ${STAGEDIR}${ETCDIR}/primary
197	${INSTALL_DATA} ${FILESDIR}/localhost-forward.db ${STAGEDIR}${ETCDIR}/primary
198	${INSTALL_DATA} ${FILESDIR}/localhost-reverse.db ${STAGEDIR}${ETCDIR}/primary
199	${INSTALL_DATA} ${FILESDIR}/BIND.chroot.dist ${STAGEDIR}${PREFIX}/etc/mtree/BIND.chroot.dist.sample
200	${INSTALL_DATA} ${FILESDIR}/BIND.chroot.local.dist ${STAGEDIR}${PREFIX}/etc/mtree/BIND.chroot.local.dist.sample
201
202	(for dir in ${WRKSRC}/lib/*/include; do \
203		cd $$dir && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/include '-name *.h'; \
204	done)
205
206post-install-DOCS-on:
207	${MKDIR} ${STAGEDIR}${DOCSDIR}/arm
208	${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
209	cd ${WRKSRC}/_build/arm && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}/arm
210.endif # BIND_TOOLS_SLAVE
211
212.include <bsd.port.post.mk>
213