Files
ports/dns/bind920/Makefile
T
Xin LI 5f9d389f29 databases/lmdb0: Add port for LMDB 0.9.x legacy ABI
LMDB 1.0 introduced an incompatible on-disk format change and subtle
API breakage: applications that compiled cleanly against 1.0 headers
could fail silently at run time. Known affected ports include dns/knot3,
mail/bogofilter, and mail/postfix; the postfix issue has been confirmed
upstream. Linux distributions such as Arch Linux have observed the same
breakage. Samba can also be affected in certain configurations.

Because the regression is not detectable in an -exp build run -- the
postfix failure only manifests at run time, and bogofilter was caught
only because post-build self-tests happen to exercise this path -- we
cannot rely on package builds to validate the 1.0 upgrade.

This commit introduces databases/lmdb0 as a holding port for the 0.9.35
release, pinned to the 0.x branch with PORTSCOUT=limit:^0. and mutually
conflicting with databases/lmdb, which retains 1.0. The two packages
cannot be installed simultaneously, but having lmdb0 available means:

* Ports known to require the 0.9 ABI can declare an explicit dependency
  on databases/lmdb0 until they are validated against 1.0.
* Users with existing databases in the 0.9 format can still access the
  mdb_dump and mdb_load utilities to migrate data before upgrading.
* The package conflict prevents accidental mixing.

All 50 direct dependents of databases/lmdb are redirected to
databases/lmdb0 for now with a PORTREVISION bump, effectively restoring
the tree to the state prior to the LMDB 1.0 update. Once all dependent
ports are validated against LMDB 1.0, they will be moved back to
databases/lmdb and databases/lmdb0 will be removed.

PR:             ports/296530
2026-07-06 08:57:32 -07:00

254 lines
7.7 KiB
Makefile

# pkg-help formatted with fmt 59 63
PORTNAME= bind
DISTVERSION= 9.20.24
.if defined(BIND_TOOLS_SLAVE)
# dns/bind-tools here
PORTREVISION= 1
.else
# dns/bind920 here
PORTREVISION= 1
.endif
CATEGORIES= dns net
MASTER_SITES= ISC/bind9/${DISTVERSION}
.if defined(BIND_TOOLS_SLAVE)
PKGNAMESUFFIX= -tools
.else
PKGNAMESUFFIX= 920
.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 bind922 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= 2028-06-30
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= autoreconf compiler:c11 cpe gnome libedit libtool pkgconfig ssl \
tar:xz
CPE_VENDOR= isc
CPE_VERSION= ${DISTVERSION:C/-.*//}
.if ${DISTVERSION:M*-*}
CPE_UPDATE= ${DISTVERSION:C/.*-//:tl}
.endif
.if !defined(BIND_TOOLS_SLAVE)
USE_RC_SUBR= named
.endif # !BIND_TOOLS_SLAVE
GNU_CONFIGURE= yes
GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share
CONFIGURE_ARGS= --enable-dnsrps \
--localstatedir=/var \
--sysconfdir=${ETCDIR} \
--with-openssl=${OPENSSLBASE} \
--with-readline=libedit
MAKE_JOBS_UNSAFE= yes
.if !defined(BIND_TOOLS_SLAVE)
CONFLICTS= bind9-devel bind918
.endif # !BIND_TOOLS_SLAVE
ETCDIR= ${PREFIX}/etc/namedb
# FIXME: figure out why build fails if enabled
CONFIGURE_ARGS+= --disable-tracing
.if defined(BIND_TOOLS_SLAVE)
EXTRA_PATCHES= ${PATCHDIR}/extrapatch-bind-tools
CONFIGURE_ARGS+= --libdir=${PREFIX}/lib/bind-tools
.else
SUB_FILES= named.conf pkg-message
EXTRA_PATCHES= ${PATCHDIR}/extrapatch-no-bind-tools
PORTDOCS= *
.endif # BIND_TOOLS_SLAVE
OPTIONS_DEFINE= DNSTAP DOCS FIXED_RRSET GEOIP IDN LARGE_FILE LMDB \
OVERRIDECACHE QUERYTRACE START_LATE TCP_FASTOPEN
OPTIONS_DEFAULT= DNSTAP ${${OSREL:R} < 15:?GSSAPI_NONE:GSSAPI_BASE} IDN \
LMDB STATS_JSON STATS_XML TCP_FASTOPEN
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 TCP_FASTOPEN
.endif # BIND_TOOLS_SLAVE
OPTIONS_SUB= yes
DNSTAP_DESC= Provides fast passive logging of DNS messages
FIXED_RRSET_DESC= Enable fixed rrset ordering
GSSAPI_BASE_DESC= Using ${${OSREL:R} < 15:?Heimdal in base (nsupdate is broken):MIT in base}
GSSAPI_HEIMDAL_DESC= Using security/heimdal (nsupdate is broken)
GSSAPI_MIT_DESC= Using security/krb5
GSSAPI_NONE_DESC= Disable
LARGE_FILE_DESC= 64-bit file support
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
TCP_FASTOPEN_DESC= RFC 7413 support
DNSTAP_LIB_DEPENDS= libfstrm.so:devel/fstrm \
libprotobuf-c.so:devel/protobuf-c
DNSTAP_CONFIGURE_ENABLE= dnstap
DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR} \
sphinx-build:textproc/py-sphinx
DOCS_USES= gmake python:env
DOCS_ALL_TARGET= all html
FIXED_RRSET_CONFIGURE_ENABLE= fixed-rrset
GEOIP_LIB_DEPENDS= libmaxminddb.so:net/libmaxminddb
GEOIP_CONFIGURE_ENABLE= geoip
GEOIP_CONFIGURE_WITH= maxminddb
GSSAPI_BASE_USES= gssapi
GSSAPI_BASE_CONFIGURE_ON= ${GSSAPI_CONFIGURE_ARGS} \
--with-gssapi="${KRB5CONFIG}"
GSSAPI_HEIMDAL_USES= gssapi:heimdal
GSSAPI_HEIMDAL_CONFIGURE_ON= ${GSSAPI_CONFIGURE_ARGS} \
--with-gssapi="${KRB5CONFIG}"
GSSAPI_MIT_USES= gssapi:mit
GSSAPI_MIT_CONFIGURE_ON= ${GSSAPI_CONFIGURE_ARGS} \
--with-gssapi="${KRB5CONFIG}"
GSSAPI_NONE_CONFIGURE_ON= --without-gssapi
IDN_LIB_DEPENDS= libidn2.so:dns/libidn2
IDN_USES= iconv
IDN_CONFIGURE_ON= ${ICONV_CONFIGURE_BASE} \
--with-libidn2=${LOCALBASE}
IDN_CONFIGURE_OFF= --without-libidn2
LARGE_FILE_CONFIGURE_ENABLE= largefile
LMDB_LIB_DEPENDS= liblmdb.so:databases/lmdb0
LMDB_CONFIGURE_WITH= lmdb=${LOCALBASE}
OVERRIDECACHE_EXTRA_PATCHES= ${FILESDIR}/extrapatch-bind-min-override-ttl
QUERYTRACE_CONFIGURE_ENABLE= querytrace
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_CONFIGURE_WITH= json-c
STATS_JSON_LDFLAGS= -L${LOCALBASE}/lib -ljson-c
STATS_XML_USE= GNOME=libxml2
STATS_XML_CONFIGURE_WITH= libxml2
TCP_FASTOPEN_CONFIGURE_ENABLE= tcp-fastopen
.include <bsd.port.options.mk>
.if defined(WITH_DEBUG)
CONFIGURE_ARGS+= --enable-developer
USES+= perl5
USE_PERL5= build
BUILD_DEPENDS+= cmocka>0:sysutils/cmocka
.endif
.if !${PORT_OPTIONS:MDOCS}
CONFIGURE_ENV+= ac_cv_path_SPHINX_BUILD=
.endif
.include <bsd.port.pre.mk>
.if ${SSL_DEFAULT} == base
SUB_LIST+= ENGINES=/usr/lib/engines
.else
SUB_LIST+= ENGINES=${LOCALBASE}/lib/engines
.endif
post-patch:
.for FILE in check/named-checkconf.rst named/named.rst nsupdate/nsupdate.rst \
rndc/rndc.rst
@${REINPLACE_CMD} -e 's#/etc/named.conf#${ETCDIR}/named.conf#g' \
-e 's#/etc/rndc.conf#${ETCDIR}/rndc.conf#g' \
-e "s#/var\/run\/named\/named.pid#/var/run/named/pid#" \
${WRKSRC}/bin/${FILE}
.endfor
.if !defined(BIND_TOOLS_SLAVE)
regen-patches:
cd ${.CURDIR} ; \
make clean ; \
mv files/extrapatch-no-bind-tools files/patch-no-bind-tools ; \
mv files/extrapatch-bind-min-override-ttl files/patch-bind-min-override-ttl ; \
make extract do-patch makepatch BATCH= NO_IGNORE= PATCH_DEBUG=yes EXTRA_PATCHES= || : ; \
mv files/patch-no-bind-tools files/extrapatch-no-bind-tools ; \
mv files/patch-bind-min-override-ttl files/extrapatch-bind-min-override-ttl
cd ${.CURDIR} ; \
mv files/extrapatch-bind-tools files/patch-bind-tools ; \
(cd ../bind-tools ; \
make clean extract do-patch makepatch BATCH= NO_IGNORE= PATCH_DEBUG=yes EXTRA_PATCHES= MASTERDIR=$$PWD/../bind920 || :) ; \
mv files/patch-bind-tools files/extrapatch-bind-tools
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
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so ${STAGEDIR}${PREFIX}/lib/bind/*.so
post-install-DOCS-on:
${MKDIR} ${STAGEDIR}${DOCSDIR}/arm
${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
cd ${WRKSRC}/doc/arm/_build/html && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}/arm
.else
do-install:
for dir in bin lib doc/man; do \
(cd ${INSTALL_WRKSRC}/$$dir && ${SETENV} ${MAKE_ENV} ${FAKEROOT} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET}) ; \
done
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/bind-tools/*.so
@${RM} -r ${STAGEDIR}${PREFIX}/include
.endif # BIND_TOOLS_SLAVE
.include <bsd.port.post.mk>