git: e2fc32562362 - main - dns/knot3: Add options

From: Fernando Apesteguía <fernape_at_FreeBSD.org>
Date: Wed, 07 Aug 2024 15:27:02 UTC
The branch main has been updated by fernape:

URL: https://cgit.FreeBSD.org/ports/commit/?id=e2fc32562362f319e2dea0c9310b52a251af6d9e

commit e2fc32562362f319e2dea0c9310b52a251af6d9e
Author:     Leo Vandewoestijne <freebsd@dns.company>
AuthorDate: 2024-08-06 09:50:24 +0000
Commit:     Fernando Apesteguía <fernape@FreeBSD.org>
CommitDate: 2024-08-07 15:26:49 +0000

    dns/knot3: Add options
    
    And prepare to replace knot3-lib which will be deprecated.
    
    PR:             277332
    Reported by:    trashcan@ellael.org
---
 dns/knot3/Makefile  | 148 +++++++++++++++++++++++++++++++++++-----------------
 dns/knot3/pkg-plist |  57 ++++++++++----------
 2 files changed, 129 insertions(+), 76 deletions(-)

diff --git a/dns/knot3/Makefile b/dns/knot3/Makefile
index cf30506e6998..82b54685fe52 100644
--- a/dns/knot3/Makefile
+++ b/dns/knot3/Makefile
@@ -24,76 +24,122 @@ CONFIGURE_ARGS=	--enable-recvmmsg=no \
 		--mandir=${PREFIX}/share/man \
 		--with-pkgconfigdir=${PREFIX}/libdata/pkgconfig
 
-.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}
-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
-
 INSTALL_TARGET=	install-strip
 
 CONFLICTS=	knot-1.* knot1-[0-6].* knot2-[0-9].*
 
+DATADIR=	/var/db/${PORTNAME}
+RUNDIR=		/var/run/${PORTNAME}
 BINARY_ALIAS=	sed=${LOCALBASE}/bin/gsed
+SUB_LIST=	DATADIR=${DATADIR} \
+		ETCDIR=${ETCDIR} \
+		GROUPS=${GROUPS} \
+		RUNDIR=${RUNDIR} \
+		USERS=${USERS}
 
 USERS=		knot
 GROUPS=		knot
-SUB_LIST+=	GROUPS="${GROUPS}" \
-		USERS="${USERS}"
-
-PORTDOCS=	COPYING NEWS
 
-OPTIONS_DEFINE=	DNSTAP DOCS
+PLIST_SUB=	DATADIR=${DATADIR} \
+		ETCDIR=${ETCDIR} \
+		GROUPS=${GROUPS} \
+		RUNDIR=${RUNDIR} \
+		USERS=${USERS}
 
-.if !defined(LIB_ONLY)
-OPTIONS_DEFINE+=	DOH IDN
-OPTIONS_DEFAULT+=	DOH IDN
-.endif
-
-.if !defined(UTILS_ONLY) && !defined(LIB_ONLY)
-OPTIONS_DEFINE+=	FASTPARSER MAXMINDDB
-.endif
+PORTDOCS=	COPYING NEWS
 
+OPTIONS_DEFINE=			DAEMON UTILS DOCS EXAMPLES
+OPTIONS_DEFAULT=		DAEMON UTILS FASTPARSER DOH DOQ IDN MODACL MODAUTH MODCOOKIES
+OPTIONS_DEFAULT+=		MODPROXY MODNOUDP MODPROBE MODRRL MODSIGN MODSTATS MODSYNTH MODWHOAMI
+OPTIONS_GROUP=			DAEMONGR UTILGR
+OPTIONS_GROUP_DAEMONGR=		DNSTAP FASTPARSER MODACL MODAUTH MODCOOKIES MODPROXY MODGEO
+OPTIONS_GROUP_DAEMONGR+=	MODNOUDP MODPROBE MODRRL MODSIGN MODSTATS MODSYNTH MODWHOAMI
+OPTIONS_GROUP_UTILGR=		DOH DOQ IDN
+NO_OPTIONS_SORT=		yes
+OPTIONS_SUB=			yes
+
+DAEMONGR_DESC=			Options for daemon
+DAEMON_DESC=			Install daemon
 DNSTAP_DESC=			dnstap support (see dnstap.info)
+DOCS_DESC=			Install documentation
+DOH_DESC=			Support for DNS over HTTPS (DoH)
+DOQ_DESC=			Support for DNS over QUIC (DoQ)
+FASTPARSER_DESC=		Fast zone parser (demands compiling)
+IDN_DESC=			Support for International Domain Names (IDN)
+MODACL_DESC=			Build 'queryacl' module
+MODAUTH_DESC=			Build 'authsignal' module
+MODCOOKIES_DESC=		Build 'cookies' module
+MODGEO_DESC=			Build 'geodb' module
+MODNOUDP_DESC=			Build 'noudp' module
+MODPROBE_DESC=			Build 'probe' module
+MODPROXY_DESC=			Build 'dnsproxy' module
+MODRRL_DESC=			Build 'rrl' module
+MODSIGN_DESC=			Build 'onlinesign' module
+MODSTATS_DESC=			Build 'stats' module
+MODSYNTH_DESC=			Build 'synthrecord' module
+MODWHOAMI_DESC=			Build 'whoami' module
+UTILGR_DESC=			Options for utilities
+UTILS_DESC=			Install utulities
+
+DAEMON_LIB_DEPENDS=		liburcu.so:sysutils/liburcu
+DAEMON_USES=			libedit
+DAEMON_CONFIGURE_ENABLE=	daemon
+DAEMON_CONFIGURE_ENABLE+=	modules
+DAEMON_CONFIGURE_WITH=		rundir=${RUNDIR}
+DAEMON_CONFIGURE_WITH+=		storage=${DATADIR}
+DAEMON_SUB_FILES=		pkg-message
+DAEMON_VARS=			USE_RC_SUBR=${PORTNAME}
+
 DNSTAP_LIB_DEPENDS=		libfstrm.so:devel/fstrm \
 				libprotobuf-c.so:devel/protobuf-c
 DNSTAP_CONFIGURE_ENABLE=	dnstap
 DNSTAP_CONFIGURE_WITH=		module-dnstap=yes
-
+#
 # 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
+DNSTAP_CPPFLAGS=		-I${LOCALBASE}/include
+
+DOCS_CONFIGURE_ENABLE=		documentation
 
-DOCS_CONFIGURE_OFF=	--disable-documentation
+DOH_LIB_DEPENDS=		libnghttp2.so:www/libnghttp2
 
-DOH_DESC=		DoH support in kdig
-DOH_LIB_DEPENDS=	libnghttp2.so:www/libnghttp2
+DOQ_LIB_DEPENDS=		libngtcp2.so:net/libngtcp2
 
-FASTPARSER_DESC=		Fast zone parser (demanding compilation)
 FASTPARSER_CONFIGURE_ENABLE=	fastparser
 
-IDN_LIB_DEPENDS=	libidn2.so:dns/libidn2
-IDN_CONFIGURE_OFF=	--without-libidn
-IDN_CONFIGURE_WITH=	libidn
+IDN_LIB_DEPENDS=		libidn2.so:dns/libidn2
+IDN_CONFIGURE_WITH=		libidn
 
-MAXMINDDB_DESC=			Enable MaxMind for geodb module
-MAXMINDDB_LIB_DEPENDS=		libmaxminddb.so:net/libmaxminddb
-MAXMINDDB_CONFIGURE_ENABLE=	maxminddb
+MODACL_CONFIGURE_WITH=		module-queryacl=yes
+
+MODAUTH_CONFIGURE_WITH=		module-authsignal=yes
+
+MODCOOKIES_CONFIGURE_WITH=	module-cookies=yes
+
+MODGEO_LIB_DEPENDS=		libmaxminddb.so:net/libmaxminddb
+MODGEO_CONFIGURE_ENABLE=	maxminddb
+MODGEO_CONFIGURE_WITH=		module-geoip=yes
+
+MODNOUDP_CONFIGURE_WITH=	module-noudp=yes
+
+MODPROBE_CONFIGURE_WITH=	module-probe=yes
+
+MODPROXY_CONFIGURE_WITH=	module-dnsproxy=yes
+
+MODRRL_CONFIGURE_WITH=		module-rrl=yes
+
+MODSIGN_CONFIGURE_WITH=		module-onlinesign=yes
+
+MODSTATS_CONFIGURE_WITH=	module-stats=yes
+
+MODSYNTH_CONFIGURE_WITH=	module-synthrecord=yes
+
+MODWHOAMI_CONFIGURE_WITH=	module-whoami=yes
+
+UTILS_CONFIGURE_ENABLE=		utilities
 
 .include <bsd.port.options.mk>
 
@@ -102,7 +148,7 @@ USES+=		autoreconf
 .endif
 
 post-patch:
-.if !defined(UTILS_ONLY) && !defined(LIB_ONLY)
+.if ${PORT_OPTIONS:MDAEMON}
 	@${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\@|' \
@@ -111,13 +157,19 @@ post-patch:
 .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
+.if ${PORT_OPTIONS:MDAEMON}
+	@${MKDIR} ${STAGEDIR}${DATADIR} ${STAGEDIR}${RUNDIR}
 .endif
+.if ${PORT_OPTIONS:MDAEMON} && ${PORT_OPTIONS:MEXAMPLES}
+	${MV} ${STAGEDIR}${ETCDIR}/knot.sample.conf ${STAGEDIR}${ETCDIR}/knot.conf.sample
+.else
+	${RM} ${STAGEDIR}${ETCDIR}/knot.sample.conf
+.endif
+
+.if ${PORT_OPTIONS:MDOCS}
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
 	${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR}/
+.endif
 
 .include "knotdns.mk"
 .include <bsd.port.mk>
diff --git a/dns/knot3/pkg-plist b/dns/knot3/pkg-plist
index 7041dc5dce12..cd7c19c79c14 100644
--- a/dns/knot3/pkg-plist
+++ b/dns/knot3/pkg-plist
@@ -1,11 +1,11 @@
-bin/kdig
-bin/khost
-bin/knsec3hash
-bin/knsupdate
-bin/kzonecheck
-bin/kzonesign
-%%ETCDIR%%/example.com.zone
-%%ETCDIR%%/knot.conf.sample
+%%UTILS%%bin/kdig
+%%UTILS%%bin/khost
+%%UTILS%%bin/knsec3hash
+%%UTILS%%bin/knsupdate
+%%UTILS%%bin/kzonecheck
+%%UTILS%%bin/kzonesign
+%%DAEMON%%%%ETCDIR%%/example.com.zone
+%%DAEMON%%%%EXAMPLES%%@sample %%ETCDIR%%/knot.conf.sample
 include/knot/module.h
 include/libdnssec/binary.h
 include/libdnssec/crypto.h
@@ -87,26 +87,27 @@ lib/libzscanner.a
 lib/libzscanner.so
 lib/libzscanner.so.4
 lib/libzscanner.so.4.0.0
-libdata/pkgconfig/knotd.pc
+%%DAEMON%%libdata/pkgconfig/knotd.pc
 libdata/pkgconfig/libdnssec.pc
 libdata/pkgconfig/libknot.pc
 libdata/pkgconfig/libzscanner.pc
-share/man/man1/kdig.1.gz
-share/man/man1/khost.1.gz
-share/man/man1/knsec3hash.1.gz
-share/man/man1/knsupdate.1.gz
-share/man/man1/kzonecheck.1.gz
-share/man/man1/kzonesign.1.gz
-share/man/man5/knot.conf.5.gz
-share/man/man8/kcatalogprint.8.gz
-share/man/man8/keymgr.8.gz
-share/man/man8/kjournalprint.8.gz
-share/man/man8/knotc.8.gz
-share/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
+%%DOCS%%share/man/man1/kdig.1.gz
+%%DOCS%%share/man/man1/khost.1.gz
+%%DOCS%%share/man/man1/knsec3hash.1.gz
+%%DOCS%%share/man/man1/knsupdate.1.gz
+%%DOCS%%share/man/man1/kzonecheck.1.gz
+%%DOCS%%share/man/man1/kzonesign.1.gz
+%%DOCS%%share/man/man5/knot.conf.5.gz
+%%DOCS%%share/man/man8/kcatalogprint.8.gz
+%%DOCS%%share/man/man8/keymgr.8.gz
+%%DOCS%%share/man/man8/kjournalprint.8.gz
+%%DOCS%%share/man/man8/knotc.8.gz
+%%DOCS%%share/man/man8/knotd.8.gz
+%%DAEMON%%sbin/kcatalogprint
+%%DAEMON%%sbin/keymgr
+%%DAEMON%%sbin/kjournalprint
+%%DAEMON%%sbin/knotc
+%%DAEMON%%sbin/knotd
+%%DAEMON%%@dir(%%USERS%%,%%GROUPS%%,0750) %%DATADIR%%
+%%DAEMON%%@dir(%%USERS%%,%%GROUPS%%,0750) %%ETCDIR%%
+%%DAEMON%%@dir(%%USERS%%,%%GROUPS%%,0700) %%RUNDIR%%