packages/net/knot/Makefile
Josef Schlehofer aef8cb50ff
knot: disable libcap-ng
Recently, there was added libcap-ng to OpenWrt packages feed,
which is optional for Knot DNS. It enables POSIX 1003.1e capabilities.
This can restrict root (by default it runs as root) permissions and
might harm and as there isn't systemd on OpenWrt it can interfere.

There is an added patch, which introduced an option to disable libcap-ng.
This will be part of the next release.

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
(cherry picked from commit 41957d6967)
2020-06-06 22:30:32 +02:00

270 lines
7.8 KiB
Makefile

#
# Copyright (C) 2014-2019 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=knot
PKG_VERSION:=2.9.3
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-dns/
PKG_HASH:=f2adf137d70955a4a20df90c5409e10be8e1127204a98b27d626ac090531a07e
PKG_MAINTAINER:=Daniel Salzman <daniel.salzman@nic.cz>
PKG_LICENSE:=GPL-3.0 LGPL-2.0 0BSD BSD-3-Clause OLDAP-2.8
PKG_CPE_ID:=cpe:/a:knot-dns:knot_dns
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/knot-lib/Default
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Knot DNS
DEPENDS=+libpthread
URL:=https://www.knot-dns.cz
endef
define Package/knot/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=IP Addresses and Names
TITLE:=Knot DNS
DEPENDS=+libatomic
URL:=https://www.knot-dns.cz
endef
define Package/knot-libs
$(call Package/knot-lib/Default)
TITLE+= common DNS and DNSSEC libraries
DEPENDS+=+libgnutls +lmdb @!arc
endef
define Package/knot-libzscanner
$(call Package/knot-lib/Default)
TITLE+= zone parser library
DEPENDS+=@!arc
endef
define Package/knot
$(call Package/knot/Default)
TITLE+= server with control utility
DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
USERID:=knot=5353:knot=5353
endef
define Package/knot-dig
$(call Package/knot/Default)
TITLE+= advanced DNS lookup utility
DEPENDS+=+libedit +knot-libs
EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE))
endef
define Package/knot-host
$(call Package/knot/Default)
TITLE+= simple DNS lookup utility
DEPENDS+=+libedit +knot-libs
EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE))
endef
define Package/knot-nsupdate
$(call Package/knot/Default)
TITLE+= dynamic DNS update utility
DEPENDS+=+libedit +knot-libs +knot-libzscanner
EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
endef
define Package/knot-zonecheck
$(call Package/knot/Default)
TITLE+= zonefile check utility
DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
endef
define Package/knot-keymgr
$(call Package/knot/Default)
TITLE+= DNSSEC key management utility
DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
endef
define Package/knot-tests
$(call Package/knot/Default)
TITLE+= tests
DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
endef
define Package/knot-libs/description
Knot DNS common DNS and DNSSEC libraries.
endef
define Package/knot-libzscanner/description
Knot DNS zone parser library.
endef
define Package/knot/description
High-performance authoritative-only DNS server.
endef
define Package/knot-dig/description
Knot DNS advanced DNS lookup utility.
endef
define Package/knot-host/description
Knot DNS simple DNS lookup utility.
endef
define Package/knot-nsupdate/description
Knot DNS dynamic DNS update utility.
endef
define Package/knot-zonecheck/description
Knot DNS zonefile check utility.
endef
define Package/knot-keymgr/description
Knot DNS DNSSEC key management utility.
endef
define Package/knot-tests/description
Unit tests for the Knot DNS server and libraries.
Usage: /usr/share/knot/runtests.sh
endef
export KNOT_VERSION_FORMAT=release
CONFIGURE_ARGS += \
--enable-recvmmsg=no \
--enable-cap-ng=no \
--disable-fastparser \
--without-libidn \
--with-rundir=/var/run/knot \
--with-storage=/var/lib/knot \
--with-configdir=/etc/knot \
--with-conf-mapsize=20
TARGET_CFLAGS += -DPSELECT_COMPAT -DNDEBUG
define Package/knot/conffiles
/etc/knot/knot.conf
endef
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR)
$(MAKE) -C $(PKG_BUILD_DIR)/tests check-compile
endef
ifneq ($(CONFIG_arc),y)
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/include/libknot
$(CP) $(PKG_INSTALL_DIR)/usr/include/libknot/* $(1)/usr/include/libknot/
$(INSTALL_DIR) $(1)/usr/include/libdnssec
$(CP) $(PKG_INSTALL_DIR)/usr/include/libdnssec/* $(1)/usr/include/libdnssec/
$(INSTALL_DIR) $(1)/usr/include/libzscanner
$(CP) $(PKG_INSTALL_DIR)/usr/include/libzscanner/* $(1)/usr/include/libzscanner/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig/
endef
endif
define Package/knot-libs/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libdnssec.so.* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libknot.so.* $(1)/usr/lib/
endef
define Package/knot-libzscanner/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libzscanner.so.* $(1)/usr/lib/
endef
define Package/knot/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/knotc $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/knotd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/knot
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/knot/knot.sample.conf $(1)/etc/knot/knot.conf
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/knotd.init $(1)/etc/init.d/knotd
endef
define Package/knot-dig/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kdig $(1)/usr/bin/
endef
define Package/knot-host/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/khost $(1)/usr/bin/
endef
define Package/knot-nsupdate/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsupdate $(1)/usr/bin/
endef
define Package/knot-zonecheck/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kzonecheck $(1)/usr/bin/
endef
define Package/knot-keymgr/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/keymgr $(1)/usr/bin/
endef
define Package/knot-tests/install
$(INSTALL_DIR) $(1)/usr/share/knot
$(INSTALL_BIN) ./files/runtests.sh $(1)/usr/share/knot/
$(INSTALL_DIR) $(1)/usr/share/knot/tap
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tests/tap/.libs/runtests $(1)/usr/share/knot/tap/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tests/tap/libtap.sh $(1)/usr/share/knot/tap/
$(INSTALL_DIR) $(1)/usr/share/knot/tests
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tests/libzscanner/.libs/zscanner-tool $(1)/usr/share/knot/tests/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tests/libzscanner/test_zscanner $(1)/usr/share/knot/tests/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/tests/libzscanner/TESTS $(1)/usr/share/knot/tests/
cp -a $(PKG_BUILD_DIR)/tests/libzscanner/data $(1)/usr/share/knot/tests/
for module in contrib knot libdnssec libknot modules utils; do \
find $(PKG_BUILD_DIR)/tests/$$$${module}/.libs -maxdepth 1 -executable -type f | \
xargs -I{} basename {} | \
xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/$$$${module}/.libs/{} \
$(1)/usr/share/knot/tests/$$$${module}_{}; \
done
endef
$(eval $(call BuildPackage,knot-libs))
$(eval $(call BuildPackage,knot-libzscanner))
$(eval $(call BuildPackage,knot))
$(eval $(call BuildPackage,knot-dig))
$(eval $(call BuildPackage,knot-host))
$(eval $(call BuildPackage,knot-nsupdate))
$(eval $(call BuildPackage,knot-zonecheck))
$(eval $(call BuildPackage,knot-keymgr))
$(eval $(call BuildPackage,knot-tests))