summaryrefslogtreecommitdiff
path: root/dns/bind9-devel/Makefile
blob: b6e69c17a82c745f78455d8866534102e2551791 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# pkg-help formatted with fmt 59 63

PORTNAME=	bind
DISTVERSION=	9.21.12
.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=	mat@FreeBSD.org
.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>