Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Oct 2020 10:18:00 +0000 (UTC)
From:      Kurt Jaeger <pi@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r551373 - in head/dns: . knot3 knot3/files
Message-ID:  <202010041018.094AI0o8005671@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pi
Date: Sun Oct  4 10:18:00 2020
New Revision: 551373
URL: https://svnweb.freebsd.org/changeset/ports/551373

Log:
  New port: dns/knot3
  
  Knot DNS is a high-performance authoritative-only DNS server which
  supports all key features of the domain name system including zone
  AXFR and IXFR, DDNS and DNSSEC.  Its key features:
  
   * Open source
   * High-performance, multi-threaded, and mostly lock-free
     implementation which scales well on SMPs
   * Object-oriented design
   * Support for all important DNS protocols:
     - Full and incremental zone transfers
     - EDNS0 and DNSSEC extensions, including NSEC3
     - NSID
  
  WWW: https://www.knot-dns.cz/
  
  PR:		249363
  Submitted by:	Leo Vandewoestijne <freebsd@dns.company>
  Relnotes:	https://www.knot-dns.cz/2020-09-09-version-300.html

Added:
  head/dns/knot3/
  head/dns/knot3/Makefile   (contents, props changed)
  head/dns/knot3/distinfo   (contents, props changed)
  head/dns/knot3/files/
  head/dns/knot3/files/knot.in   (contents, props changed)
  head/dns/knot3/files/pkg-message.in   (contents, props changed)
  head/dns/knot3/pkg-descr   (contents, props changed)
  head/dns/knot3/pkg-plist   (contents, props changed)
Modified:
  head/dns/Makefile

Modified: head/dns/Makefile
==============================================================================
--- head/dns/Makefile	Sun Oct  4 09:57:52 2020	(r551372)
+++ head/dns/Makefile	Sun Oct  4 10:18:00 2020	(r551373)
@@ -89,6 +89,7 @@
     SUBDIR += knot-resolver
     SUBDIR += knot2
     SUBDIR += knot2-lib
+    SUBDIR += knot3
     SUBDIR += ldapdns
     SUBDIR += ldns
     SUBDIR += libasr

Added: head/dns/knot3/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/knot3/Makefile	Sun Oct  4 10:18:00 2020	(r551373)
@@ -0,0 +1,122 @@
+# Created by: Leo Vandewoestijne <freebsd@dns.company>
+# $FreeBSD$
+
+PORTNAME=	knot
+DISTVERSION=	3.0.0
+CATEGORIES=	dns
+MASTER_SITES=	https://secure.nic.cz/files/knot-dns/ \
+		https://dns.company/downloads/knot-dns/
+PKGNAMESUFFIX?=	3
+
+MAINTAINER=	freebsd@dns.company
+COMMENT=	High performance authoritative-only DNS server
+
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+BUILD_DEPENDS=	autoconf>=2.65:devel/autoconf \
+		gsed:textproc/gsed
+LIB_DEPENDS=	libgnutls.so:security/gnutls \
+		liblmdb.so:databases/lmdb \
+		libnghttp2.so:www/libnghttp2
+
+CONFLICTS=	knot-1.* knot1-[0-6].* knot2-[0-9].*
+
+USES=		alias libtool localbase pkgconfig tar:xz
+
+HAS_CONFIGURE=	yes
+BINARY_ALIAS=	sed=${LOCALBASE}/bin/gsed
+CONFIGURE_ARGS=	--enable-recvmmsg=no \
+		--with-pkgconfigdir=${PREFIX}/libdata/pkgconfig \
+		--mandir=${MANPREFIX}/man
+
+.if !defined(UTILS_ONLY) && !defined(LIB_ONLY)
+CONFIGURE_ARGS+=	--with-rundir=/var/run/knot \
+			--with-storage=/var/db/knot
+LIB_DEPENDS+=	liburcu.so:sysutils/liburcu
+USE_RC_SUBR=	${PORTNAME}
+#PLIST_FILES=	etc/rc.d/${PORTNAME}
+SUB_FILES=	pkg-message
+USES+=		libedit
+.endif
+
+.if defined(UTILS_ONLY) || defined(LIB_ONLY)
+CONFIGURE_ARGS+=	--disable-daemon \
+			--disable-modules
+.endif
+
+.if defined(LIB_ONLY)
+CONFIGURE_ARGS+=	--disable-utilities
+.endif
+
+USE_LDCONFIG=	yes
+INSTALL_TARGET=	install-strip
+
+USERS=		knot
+GROUPS=		knot
+SUB_LIST+=	USERS="${USERS}" GROUPS="${GROUPS}"
+
+PORTDOCS=	COPYING NEWS
+
+OPTIONS_DEFINE=			DNSTAP DOCS
+
+.if !defined(LIB_ONLY)
+OPTIONS_DEFINE+=		IDN
+.endif
+
+.if !defined(UTILS_ONLY) && !defined(LIB_ONLY)
+OPTIONS_DEFINE+=		FASTPARSER MAXMINDDB
+.endif
+
+DNSTAP_DESC=			dnstap support (see dnstap.info)
+DNSTAP_CONFIGURE_ENABLE=	dnstap
+DNSTAP_CONFIGURE_WITH=		module-dnstap=yes
+DNSTAP_LIB_DEPENDS=		libprotobuf-c.so:devel/protobuf-c \
+				libfstrm.so:devel/fstrm
+
+# XXX: because `kdig_CPPFLAGS += $(DNSTAP_CFLAGS)' line is missing from
+# `src/Makefile.am' file (and thus pre-generated `src/Makefile.in') which
+# should contain "$libfstrm_CFLAGS $libprotobuf_c_CFLAGS" set by configure
+# script, provide it here explicitly as patching those files would result
+# in higher line count.  Ideally this bug should be fixed upstream.
+DNSTAP_CPPFLAGS=		-I${LOCALBASE}/include
+
+DOCS_CONFIGURE_OFF=		--disable-documentation
+
+FASTPARSER_DESC=		Fast zone parser (demanding compilation)
+FASTPARSER_CONFIGURE_ENABLE=	fastparser
+
+IDN_CONFIGURE_WITH=		libidn
+IDN_CONFIGURE_OFF=		--without-libidn
+#IDN_LIB_DEPENDS=		libidn2.so:dns/libidn2
+
+MAXMINDDB_DESC=			Enable MaxMind for geodb module
+MAXMINDDB_LIB_DEPENDS=		libmaxminddb.so:net/libmaxminddb
+MAXMINDDB_CONFIGURE_ENABLE=	maxminddb
+
+.include <bsd.port.options.mk>
+
+.if ${ARCH} == i386
+USES+=				autoreconf
+EXTRA_PATCHES+=			${PATCHDIR}/extrapatch-configure.ac
+.endif
+
+post-patch:
+.if !defined(UTILS_ONLY) && !defined(LIB_ONLY)
+	@${REINPLACE_CMD} 's|$$(INSTALL) -d $$(DESTDIR)/\@run_dir\@|#$$(INSTALL) -d $$(DESTDIR)/\@run_dir\@|' \
+		${WRKSRC}/src/Makefile.in
+	@${REINPLACE_CMD} 's|$$(INSTALL) -d $$(DESTDIR)/\@storage_dir\@|#$$(INSTALL) -d $$(DESTDIR)/\@storage_dir\@|' \
+		${WRKSRC}/src/Makefile.in
+	@${RM} -r ${WRKSRC}/src/zscanner/scanner.c
+.endif
+
+post-install:
+.if !defined(UTILS_ONLY) && !defined(LIB_ONLY)
+	${MV} ${STAGEDIR}${ETCDIR}/knot.sample.conf \
+		${STAGEDIR}${ETCDIR}/knot.conf.sample
+	@${MKDIR} ${STAGEDIR}/var/run/knot ${STAGEDIR}/var/db/knot
+.endif
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR}/
+
+.include <bsd.port.mk>

Added: head/dns/knot3/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/knot3/distinfo	Sun Oct  4 10:18:00 2020	(r551373)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1600167854
+SHA256 (knot-3.0.0.tar.xz) = f1c96aff6e873a2f9b1b8c2441d5a7801dd48d3abdb738a4d24b26c2a8fbe6c4
+SIZE (knot-3.0.0.tar.xz) = 1329064

Added: head/dns/knot3/files/knot.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/knot3/files/knot.in	Sun Oct  4 10:18:00 2020	(r551373)
@@ -0,0 +1,118 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# PROVIDE: knot
+# REQUIRE: SERVERS cleanvar
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf to enable knot:
+#
+# knot_enable="YES":	Set to NO by default.
+#			Set it to YES to enable knot.
+# knot_config="":	Set to %%PREFIX%%/etc/knot/knot.conf
+#			by default.
+#
+# -----------------------------------------------------------------------------
+#
+# This script supports running multiple instances of knot.
+# To run additional instances link this script to something like
+# % ln -s knot knot_foo
+# and define additional knot_foo_* variables in one of
+# /etc/rc.conf, /etc/rc.conf.local or /etc/rc.conf.d/knot_foo
+#
+# Below NAME should be substituted with the name of this script. By default
+# it is knot, so read as knot_enable. If you linked the script to
+# knot_foo, then read as knot_foo_enable etc.
+#
+# The following variables are supported (defaults are shown).
+# You can place them in any of
+# /etc/rc.conf, /etc/rc.conf.local or /etc/rc.conf.d/NAME
+#
+# NAME_enable="NO"	# set to YES to enable knot
+#
+# # optional:
+# NAME_config="%%PREFIX%%/etc/knot/NAME.conf"  # (-c)onfig file
+# NAME_config="db:/var/db/knot/confdb"         # (-C)onfig database
+# NAME_diruser="%%USERS%%"    # /var/db/NAME and /var/run/NAME are created if they
+# NAME_dirgroup="%%GROUPS%%"  # don't exist. These don't control the user/group knot
+#                       # runs as, the config file has a setting for that.
+#
+# You also need to set the rundir directive in the server section of the
+# config file to /var/run/NAME (if using a NAME other than the default)
+# and you will want the storage directive(s) declared in the zone section
+# to point to /var/db/NAME overriding the default of /var/db/knot.
+#
+# For further documentation, please see knot.conf(5).
+
+. /etc/rc.subr
+
+case "$0" in
+/etc/rc*)
+	# during boot (shutdown) $0 is /etc/rc (/etc/rc.shutdown),
+	# so get the name of the script from $_file
+	name="$_file"
+	;;
+*)
+	name="$0"
+	;;
+esac
+
+name="${name##*/}"
+rcvar=${name}_enable
+
+load_rc_config ${name}
+
+eval ": \${${name}_enable:=\"NO\"}"
+eval ": \${${name}_diruser:=\"%%USERS%%\"}"
+eval ": \${${name}_dirgroup:=\"%%GROUPS%%\"}"
+eval ": \${${name}_config:=\"%%PREFIX%%/etc/knot/${name}.conf\"}"
+
+configfile="$(eval echo \${${name}_config})"
+diruser="$(eval echo \${${name}_diruser})"
+dirgroup="$(eval echo \${${name}_dirgroup})"
+
+command=%%PREFIX%%/sbin/knotd
+case "$configfile" in
+db:*)
+	config_args="-C ${configfile#db:}"
+	;;
+*)
+	config_args="-c ${configfile}"
+	;;
+esac
+command_args="${config_args} -d"
+control="%%PREFIX%%/sbin/knotc"
+pidfile="/var/run/${name}/knot.pid"
+
+case "$configfile" in
+db:*)
+	required_files=${configfile#db:}/data.mdb
+	;;
+*)
+	required_files=${configfile}
+	;;
+esac
+
+extra_commands=reload
+reload_cmd="knot_reload"
+start_precmd="knot_prestart"
+
+knot_prestart()
+{
+	if [ ! -d /var/run/${name} ]; then
+		install -d -o ${diruser} -g ${dirgroup} /var/run/${name}
+	fi
+	if [ ! -d /var/db/${name} ]; then
+		install -d -o ${diruser} -g ${dirgroup} /var/db/${name}
+	fi
+	${control} ${config_args} conf-check
+}
+
+knot_reload()
+{
+	echo "Reloading ${name}."
+	${control} ${config_args} reload
+}
+
+run_rc_command "$1"

Added: head/dns/knot3/files/pkg-message.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/knot3/files/pkg-message.in	Sun Oct  4 10:18:00 2020	(r551373)
@@ -0,0 +1,21 @@
+[
+{ type: install
+  message: <<EOM
+  To start using Knot DNS, you should complete the following tasks:
+
+    cp %%ETCDIR%%/knot.conf.sample %%ETCDIR%%/knot.conf
+    $EDITOR %%ETCDIR%%/knot.conf
+
+    sysrc knot_enable=YES
+    sysrc knot_config=%%ETCDIR%%/knot.conf
+    service knot start
+
+  Please consult the documentation:
+   - man knotd
+   - https://www.knot-dns.cz/documentation/
+
+  When upgrading from 2.4.x read:
+   - https://www.knot-dns.cz/docs/3.0/html/migration.html#upgrade-2-9-x-to-3-0-x
+EOM
+}
+]

Added: head/dns/knot3/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/knot3/pkg-descr	Sun Oct  4 10:18:00 2020	(r551373)
@@ -0,0 +1,14 @@
+Knot DNS is a high-performance authoritative-only DNS server which
+supports all key features of the domain name system including zone
+AXFR and IXFR, DDNS and DNSSEC.  Its key features:
+
+ * Open source
+ * High-performance, multi-threaded, and mostly lock-free
+   implementation which scales well on SMPs
+ * Object-oriented design
+ * Support for all important DNS protocols:
+   - Full and incremental zone transfers
+   - EDNS0 and DNSSEC extensions, including NSEC3
+   - NSID
+
+WWW: https://www.knot-dns.cz/

Added: head/dns/knot3/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/knot3/pkg-plist	Sun Oct  4 10:18:00 2020	(r551373)
@@ -0,0 +1,104 @@
+bin/kdig
+bin/khost
+bin/knsec3hash
+bin/knsupdate
+bin/kzonecheck
+bin/kzonesign
+%%ETCDIR%%/example.com.zone
+%%ETCDIR%%/knot.conf.sample
+include/knot/module.h
+include/libdnssec/binary.h
+include/libdnssec/crypto.h
+include/libdnssec/dnssec.h
+include/libdnssec/error.h
+include/libdnssec/key.h
+include/libdnssec/keyid.h
+include/libdnssec/keystore.h
+include/libdnssec/keytag.h
+include/libdnssec/nsec.h
+include/libdnssec/pem.h
+include/libdnssec/random.h
+include/libdnssec/sign.h
+include/libdnssec/tsig.h
+include/libdnssec/version.h
+include/libknot/attribute.h
+include/libknot/codes.h
+include/libknot/consts.h
+include/libknot/control/control.h
+include/libknot/cookies.h
+include/libknot/db/db.h
+include/libknot/db/db_lmdb.h
+include/libknot/db/db_trie.h
+include/libknot/descriptor.h
+include/libknot/dname.h
+include/libknot/endian.h
+include/libknot/errcode.h
+include/libknot/error.h
+include/libknot/libknot.h
+include/libknot/lookup.h
+include/libknot/mm_ctx.h
+include/libknot/packet/compr.h
+include/libknot/packet/pkt.h
+include/libknot/packet/rrset-wire.h
+include/libknot/packet/wire.h
+include/libknot/rdata.h
+include/libknot/rdataset.h
+include/libknot/rrset-dump.h
+include/libknot/rrset.h
+include/libknot/rrtype/dnskey.h
+include/libknot/rrtype/ds.h
+include/libknot/rrtype/naptr.h
+include/libknot/rrtype/nsec.h
+include/libknot/rrtype/nsec3.h
+include/libknot/rrtype/nsec3param.h
+include/libknot/rrtype/opt.h
+include/libknot/rrtype/rdname.h
+include/libknot/rrtype/rrsig.h
+include/libknot/rrtype/soa.h
+include/libknot/rrtype/tsig.h
+include/libknot/tsig-op.h
+include/libknot/tsig.h
+include/libknot/version.h
+include/libknot/wire.h
+include/libknot/yparser/yparser.h
+include/libknot/yparser/ypformat.h
+include/libknot/yparser/ypschema.h
+include/libknot/yparser/yptrafo.h
+include/libzscanner/error.h
+include/libzscanner/scanner.h
+include/libzscanner/version.h
+lib/libdnssec.a
+lib/libdnssec.so
+lib/libdnssec.so.8
+lib/libdnssec.so.8.0.0
+lib/libknot.a
+lib/libknot.so
+lib/libknot.so.11
+lib/libknot.so.11.0.0
+lib/libzscanner.a
+lib/libzscanner.so
+lib/libzscanner.so.3
+lib/libzscanner.so.3.0.0
+libdata/pkgconfig/knotd.pc
+libdata/pkgconfig/libdnssec.pc
+libdata/pkgconfig/libknot.pc
+libdata/pkgconfig/libzscanner.pc
+man/man1/kdig.1.gz
+man/man1/khost.1.gz
+man/man1/knsec3hash.1.gz
+man/man1/knsupdate.1.gz
+man/man1/kzonecheck.1.gz
+man/man1/kzonesign.1.gz
+man/man5/knot.conf.5.gz
+man/man8/kcatalogprint.8.gz
+man/man8/keymgr.8.gz
+man/man8/kjournalprint.8.gz
+man/man8/knotc.8.gz
+man/man8/knotd.8.gz
+sbin/kcatalogprint
+sbin/keymgr
+sbin/kjournalprint
+sbin/knotc
+sbin/knotd
+@dir(knot,knot,750) /var/db/knot
+@dir(knot,knot,750) /var/run/knot



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202010041018.094AI0o8005671>