Update dns/bind911 to version 9.11.0P1_1
[dports.git] / dns / bind911 / Makefile
1 # $FreeBSD$
2 # pkg-help formatted with fmt 59 63
3
4 PORTNAME=       bind
5 PORTVERSION=    ${ISCVERSION:S/-P/P/:S/b/.b/:S/a/.a/:S/rc/.rc/}
6 .if defined(BIND_TOOLS_SLAVE)
7 # dns/bind-tools here
8 PORTREVISION=   1
9 .else
10 # dns/bind9xx here
11 PORTREVISION=   1
12 .endif
13 CATEGORIES=     dns net ipv6
14 MASTER_SITES=   ISC/bind9/${ISCVERSION}
15 .if defined(BIND_TOOLS_SLAVE)
16 PKGNAMESUFFIX=  -tools
17 .else
18 PKGNAMESUFFIX=  911
19 .endif
20 DISTNAME=       ${PORTNAME}-${ISCVERSION}
21
22 MAINTAINER=     mat@FreeBSD.org
23 .if defined(BIND_TOOLS_SLAVE)
24 COMMENT=        Command line tools from BIND: delv, dig, host, nslookup...
25 .else
26 COMMENT=        BIND DNS suite with updated DNSSEC and DNS64
27 .endif
28
29 LICENSE=        MPL
30
31 # ISC releases things like 9.8.0-P1, which our versioning doesn't like
32 ISCVERSION=     9.11.0-P1
33
34 USES=   cpe libedit
35
36 CPE_VENDOR=     isc
37 CPE_VERSION=    ${ISCVERSION:C/-.*//}
38 .if ${ISCVERSION:M*-*}
39 CPE_UPDATE=     ${ISCVERSION:C/.*-//:tl}
40 .endif
41
42 LIB_DEPENDS=    libxml2.so:textproc/libxml2
43
44 GNU_CONFIGURE=  yes
45 CONFIGURE_ARGS+=        --localstatedir=/var --disable-linux-caps \
46                 --disable-symtable \
47                 --with-randomdev=/dev/random \
48                 --with-libxml2=${LOCALBASE} \
49                 --with-readline="-L${LOCALBASE}/lib -ledit" \
50                 --with-dlopen=yes \
51                 --sysconfdir=${ETCDIR}
52 .if defined(BIND_TOOLS_SLAVE)
53 CONFIGURE_ARGS+=        --disable-shared
54 .endif
55 ETCDIR=         ${PREFIX}/etc/namedb
56
57 CONFLICTS+=     bind99 bind910 bind9-devel
58
59 .if !defined(BIND_TOOLS_SLAVE)
60 SUB_FILES=      pkg-message
61 .endif
62
63 OPTIONS_DEFAULT=        SSL THREADS SIGCHASE IDN GSSAPI_NONE JSON
64 OPTIONS_DEFINE=         IDN LARGE_FILE PYTHON JSON \
65                         FIXED_RRSET SIGCHASE IPV6 THREADS FILTER_AAAA
66 OPTIONS_RADIO=  CRYPTO GOSTDEF
67 OPTIONS_RADIO_CRYPTO=   SSL NATIVE_PKCS11
68 OPTIONS_RADIO_GOSTDEF=  GOST GOST_ASN1
69
70 .if !defined(BIND_TOOLS_SLAVE)
71 OPTIONS_DEFAULT+=       DLZ_FILESYSTEM LMDB RPZ_NSDNAME RPZ_NSIP
72 OPTIONS_DEFINE+=        LINKS RPZ_NSIP RPZ_NSDNAME DOCS GEOIP \
73                         MINCACHE PORTREVISION QUERYTRACE LMDB DNSTAP \
74                         START_LATE
75 OPTIONS_GROUP=          DLZ
76 OPTIONS_GROUP_DLZ=      DLZ_POSTGRESQL DLZ_MYSQL DLZ_BDB \
77                         DLZ_LDAP DLZ_FILESYSTEM DLZ_STUB
78 .endif  # BIND_TOOLS_SLAVE
79 OPTIONS_SINGLE=         GSSAPI
80 OPTIONS_SINGLE_GSSAPI=  GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE
81
82 OPTIONS_SUB=    yes
83
84 SSL_DESC=               Build with OpenSSL (Required for DNSSEC)
85 LARGE_FILE_DESC=        64-bit file support
86 FIXED_RRSET_DESC=       Enable fixed rrset ordering
87 SIGCHASE_DESC=          dig/host/nslookup will do DNSSEC validation
88 FILTER_AAAA_DESC=       Enable filtering of AAAA records
89 CRYPTO_DESC=            Choose which crypto engine to use
90 NATIVE_PKCS11_DESC=     Use PKCS\#11 native API (**READ HELP**)
91 GEOIP_DESC=             Allow geographically based ACL.
92 GOSTDEF_DESC=           Enable GOST ciphers, needs SSL (see help on 8 and 9)
93 GOST_DESC=              GOST raw keys (new default)
94 GOST_ASN1_DESC=         GOST using ASN.1
95 PYTHON_DESC=            Build with Python utilities
96 START_LATE_DESC=        Start BIND late in the boot process
97 MINCACHE_DESC=          Use the mincachettl patch
98 PORTREVISION_DESC=      Show PORTREVISION in the version string
99 QUERYTRACE_DESC=        Enable the very verbose query tracelogging
100 LMDB_DESC=              Use LMDB for zone management
101 DNSTAP_DESC=            Provides fast passive logging of DNS messages
102
103 LINKS_DESC=             Create conf file symlinks in ${PREFIX}
104 RPZ_NSIP_DESC=          Enable RPZ NSIP trigger rules
105 RPZ_NSDNAME_DESC=       Enable RPZ NSDNAME policy records
106 DLZ_DESC=               Dynamically Loadable Zones
107 DLZ_POSTGRESQL_DESC=    DLZ Postgres driver
108 DLZ_MYSQL_DESC=         DLZ MySQL driver (no threading)
109 DLZ_BDB_DESC=           DLZ BDB driver
110 DLZ_LDAP_DESC=          DLZ LDAP driver
111 DLZ_FILESYSTEM_DESC=    DLZ filesystem driver
112 DLZ_STUB_DESC=          DLZ stub driver
113 GSSAPI_BASE_DESC=       Using Heimdal in base
114 GSSAPI_HEIMDAL_DESC=    Using security/heimdal
115 GSSAPI_MIT_DESC=        Using security/krb5
116 GSSAPI_NONE_DESC=       Disable
117
118 .if defined(BIND_TOOLS_SLAVE)
119 CONFLICTS+=             bind911
120 .else
121 CONFLICTS+=             bind-tools
122 .endif  # BIND_TOOLS_SLAVE
123
124 SSL_CONFIGURE_ON=       --with-openssl=${OPENSSLBASE}
125 SSL_USES=               ssl
126 SSL_CONFIGURE_OFF=      --disable-openssl-version-check --without-openssl
127
128 LMDB_CONFIGURE_WITH=    lmdb
129 LMDB_LIB_DEPENDS=       liblmdb.so:databases/lmdb
130
131 IDN_USES=               iconv
132 IDN_CONFIGURE_ON=       --with-idn=${LOCALBASE} ${ICONV_CONFIGURE_BASE}
133 IDN_LIB_DEPENDS=        libidnkit.so:dns/idnkit
134 IDN_CONFIGURE_OFF=      --without-idn
135
136 LARGE_FILE_CONFIGURE_ENABLE=    largefile
137
138 SIGCHASE_CONFIGURE_ON=  STD_CDEFINES="-DDIG_SIGCHASE=1"
139
140 IPV6_CONFIGURE_ENABLE=  ipv6
141
142 FILTER_AAAA_CONFIGURE_ENABLE=   filter-aaaa
143
144 NATIVE_PKCS11_CONFIGURE_ENABLE= native-pkcs11
145
146 GEOIP_CONFIGURE_WITH=   geoip
147 GEOIP_LIB_DEPENDS=      libGeoIP.so:net/GeoIP
148
149 JSON_LIB_DEPENDS=       libjson-c.so:devel/json-c
150 JSON_CONFIGURE_WITH=    libjson
151
152 GOST_CONFIGURE_ON=      --with-gost
153 GOST_ASN1_CONFIGURE_ON= --with-gost=asn1
154
155 PYTHON_CONFIGURE_WITH=  python=${PYTHON_CMD}
156 PYTHON_USES=    python
157 PYTHON_BUILD_DEPENDS=   ${PYTHON_PKGNAMEPREFIX}ply>=0:devel/py-ply
158 PYTHON_RUN_DEPENDS=     ${PYTHON_PKGNAMEPREFIX}ply>=0:devel/py-ply
159
160 DLZ_POSTGRESQL_CONFIGURE_ON=    --with-dlz-postgres=yes
161 DLZ_POSTGRESQL_USES=            pgsql
162
163 FIXED_RRSET_CONFIGURE_ENABLE=   fixed-rrset
164
165 RPZ_NSIP_CONFIGURE_ENABLE=      rpz-nsip
166
167 RPZ_NSDNAME_CONFIGURE_ENABLE=   rpz-nsdname
168
169 DLZ_MYSQL_CONFIGURE_ON= --with-dlz-mysql=yes
170 DLZ_MYSQL_USES=         mysql
171
172 DLZ_BDB_CONFIGURE_ON=   --with-dlz-bdb=yes
173 DLZ_BDB_USES=           bdb
174
175 DLZ_LDAP_CONFIGURE_ON=  --with-dlz-ldap=yes
176 DLZ_LDAP_USE=           openldap=yes
177
178 DLZ_FILESYSTEM_CONFIGURE_ON=    --with-dlz-filesystem=yes
179
180 DLZ_STUB_CONFIGURE_ON=  --with-dlz-stub=yes
181
182 START_LATE_SUB_LIST=    NAMED_REQUIRE="SERVERS cleanvar" \
183                         NAMED_BEFORE="LOGIN"
184 START_LATE_SUB_LIST_OFF=NAMED_REQUIRE="NETWORKING ldconfig syslogd" \
185                         NAMED_BEFORE="SERVERS"
186
187 GSSAPI_BASE_USES=       gssapi
188 GSSAPI_BASE_CONFIGURE_ON= \
189         --with-gssapi=${GSSAPIBASEDIR} KRB5CONFIG="${KRB5CONFIG}"
190 GSSAPI_HEIMDAL_USES=    gssapi:heimdal
191 GSSAPI_HEIMDAL_CONFIGURE_ON= \
192         --with-gssapi=${GSSAPIBASEDIR} KRB5CONFIG="${KRB5CONFIG}"
193 GSSAPI_MIT_USES=        gssapi:mit
194 GSSAPI_MIT_CONFIGURE_ON= \
195         --with-gssapi=${GSSAPIBASEDIR} KRB5CONFIG="${KRB5CONFIG}"
196 GSSAPI_NONE_CONFIGURE_ON=       --without-gssapi
197
198 MINCACHE_EXTRA_PATCHES= ${FILESDIR}/extrapatch-bind-min-override-ttl
199
200 QUERYTRACE_CONFIGURE_ENABLE=    querytrace
201
202 DNSTAP_CONFIGURE_ENABLE=        dnstap
203 DNSTAP_LIB_DEPENDS=     libfstrm.so:devel/fstrm \
204                         libprotobuf-c.so:devel/protobuf-c
205
206 .include <bsd.port.options.mk>
207
208 .if !${PORT_OPTIONS:MGOST} && !${PORT_OPTIONS:MGOST_ASN1}
209 CONFIGURE_ARGS+=        --without-gost
210 .endif
211
212 .if !${PORT_OPTIONS:MLINKS}
213 PKGINSTALL=${NONEXISTENT}
214 .endif
215
216 .if ${PORT_OPTIONS:MTHREADS} && !${PORT_OPTIONS:MDLZ_MYSQL}
217 CONFIGURE_ARGS+=        --enable-threads
218 .else
219 CONFIGURE_ARGS+=        --disable-threads
220 .endif
221
222 .if ${OPSYS} == DragonFly || (${OPSYS} == FreeBSD && ${OSVERSION} >= 1000100)
223 PKGINSTALL=     ${NONEXISTENT}
224 PLIST_SUB+=     NOBASE="" BASE="@comment "
225 SUB_LIST+=      NOBASE="" BASE="@comment "
226 .if !defined(BIND_TOOLS_SLAVE)
227 USE_RC_SUBR+=   named
228 SUB_FILES+=     named.conf
229 .endif # !defined(BIND_TOOLS_SLAVE)
230 .else
231 PLIST_SUB+=     NOBASE="@comment " BASE=""
232 SUB_LIST+=      NOBASE="@comment " BASE=""
233 .endif
234
235 PKGDEINSTALL=   ${PKGINSTALL}
236
237 MAKE_JOBS_UNSAFE=       yes
238
239 PORTDOCS=       *
240
241 .include <bsd.port.pre.mk>
242
243 .if ( ${PORT_OPTIONS:MGOST} || ${PORT_OPTIONS:MGOST_ASN1} ) && ${SSL_DEFAULT} == base
244 BROKEN= OpenSSL from the base system does not support GOST, add \
245         DEFAULT_VERSIONS+=ssl=openssl to your /etc/make.conf and rebuild everything \
246         that needs SSL.
247 .endif
248
249 post-patch:
250         @${REINPLACE_CMD} -e 's|readline/readline.h|editline/readline.h|; \
251                 s|readline/history.h|histedit.h|' \
252                 ${WRKSRC}/bin/dig/nslookup.c ${WRKSRC}/bin/nsupdate/nsupdate.c
253 .if defined(BIND_TOOLS_SLAVE)
254         @${REINPLACE_CMD} -e 's#^SUBDIRS.*#SUBDIRS = lib bin#' \
255                 -e 's#isc-config.sh installdirs#installdirs#' \
256                 -e 's#.*INSTALL.*isc-config.*##' \
257                 -e 's#.*INSTALL.*bind.keys.*##' \
258                 ${WRKSRC}/Makefile.in
259         @${REINPLACE_CMD} -e 's#^SUBDIRS.*#SUBDIRS = dig delv dnssec tools nsupdate \\#' \
260                 -e 's#^ .*check confgen ##' \
261                 ${WRKSRC}/bin/Makefile.in
262 .else
263 .  for FILE in check/named-checkconf.8 named/named.8 nsupdate/nsupdate.1 \
264         rndc/rndc.8
265         @${REINPLACE_CMD} -e 's#/etc/named.conf#${ETCDIR}/named.conf#g' \
266                 -e 's#/etc/rndc.conf#${ETCDIR}/rndc.conf#g' \
267                 -e "s#/var\/run\/named\/named.pid#/var/run/named/pid#" \
268                 ${WRKSRC}/bin/${FILE}
269 .  endfor
270 .endif
271
272 .if !defined(BIND_TOOLS_SLAVE)
273 .if ${PORTREVISION:N0}
274 post-patch-PORTREVISION-on:
275         @${REINPLACE_CMD} -e '/EXTENSIONS/s#=$$#=_${PORTREVISION}#' \
276                 ${WRKSRC}/version
277 .endif
278
279 post-install:
280 .if ${PORT_OPTIONS:MDOCS}
281         ${MKDIR} ${STAGEDIR}${DOCSDIR}/arm
282         ${INSTALL_DATA} ${WRKSRC}/doc/arm/*.html ${STAGEDIR}${DOCSDIR}/arm
283         ${INSTALL_DATA} ${WRKSRC}/doc/arm/Bv9ARM.pdf ${STAGEDIR}${DOCSDIR}
284         ${INSTALL_DATA} ${WRKSRC}/CHANGES ${WRKSRC}/COPYRIGHT ${WRKSRC}/FAQ \
285                 ${WRKSRC}/HISTORY ${WRKSRC}/README ${STAGEDIR}${DOCSDIR}
286 .endif
287
288 .if ${OPSYS} == DragonFly || (${OPSYS} == FreeBSD && ${OSVERSION} >= 1000100)
289         ${MKDIR} ${STAGEDIR}${PREFIX}/etc/mtree
290         ${MKDIR} ${STAGEDIR}${ETCDIR}
291 .for i in dynamic master slave working
292         @${MKDIR} ${STAGEDIR}${ETCDIR}/$i
293 .endfor
294         ${INSTALL_DATA} ${WRKDIR}/named.conf ${STAGEDIR}${ETCDIR}/named.conf.sample
295         ${INSTALL_DATA} ${FILESDIR}/named.root ${STAGEDIR}${ETCDIR}
296         ${INSTALL_DATA} ${FILESDIR}/empty.db ${STAGEDIR}${ETCDIR}/master
297         ${INSTALL_DATA} ${FILESDIR}/localhost-forward.db ${STAGEDIR}${ETCDIR}/master
298         ${INSTALL_DATA} ${FILESDIR}/localhost-reverse.db ${STAGEDIR}${ETCDIR}/master
299         ${INSTALL_DATA} ${FILESDIR}/BIND.chroot.dist ${STAGEDIR}${PREFIX}/etc/mtree
300         ${INSTALL_DATA} ${FILESDIR}/BIND.chroot.local.dist ${STAGEDIR}${PREFIX}/etc/mtree
301 .endif
302         ${INSTALL_DATA} ${WRKSRC}/bin/rndc/rndc.conf \
303                 ${STAGEDIR}${ETCDIR}/rndc.conf.sample
304 .endif  # BIND_TOOLS_SLAVE
305
306 # Can't use USE_PYTHON=autoplist
307 post-install-PYTHON-on:
308         @${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR} -type f | ${SED} -e 's|${STAGEDIR}||' >> ${TMPPLIST}
309
310 .include <bsd.port.post.mk>