This patch adds new packages:
- knot (Knot DNS server 1.4.3)
- knot-utils (kdig, khost, knsupdate and knsec3hash)
- knot-tests (unittests for Knot server)

Signed-off-by: Daniel Salzman <daniel.salz...@nic.cz>
---
diff --git a/net/knot/Makefile b/net/knot/Makefile
index e69de29..6583db1 100644
--- a/net/knot/Makefile
+++ b/net/knot/Makefile
@@ -0,0 +1,118 @@
+#
+# Copyright (C) 2014 CZ.NIC, z.s.p.o. <knot-...@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:=1.4.3
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-dns/
+PKG_MD5SUM:=8a950ac0f2148944e25421c635727003
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/knot/Default
+       SECTION:=net
+       CATEGORY:=Network
+       TITLE:=Authoritative DNS server
+       URL:=https://www.knot-dns.cz
+       MAINTAINER:=daniel.salz...@nic.cz
+       SUBMENU:=IP Addresses and Names
+       DEPENDS:=+libopenssl +liburcu
+endef
+
+define Package/knot
+       $(call Package/knot/Default)
+       TITLE+= (server)
+endef
+
+define Package/knot-utils
+       $(call Package/knot/Default)
+       TITLE+= (utils)
+endef
+
+define Package/knot-tests
+       $(call Package/knot/Default)
+       TITLE+= (tests)
+endef
+
+define Package/knot/description
+       High-performance authoritative-only DNS server.
+endef
+
+define Package/knot-utils/description
+       DNS utilities: kdig, khost, knsupdate and knsec3hash.
+endef
+
+define Package/knot-tests/description
+       Unit tests for Knot DNS server.
+       Usage: cd /usr/share/knot/tests
+              ./runtests -l TESTS -b /tmp
+endef
+
+CONFIGURE_ARGS += --enable-recvmmsg=no \
+                  --disable-fastparser \
+                  --with-rundir=/var/run \
+                  --with-storage=/etc/knot
+
+TARGET_CFLAGS += -std=gnu99 -DPSELECT_COMPAT
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR)
+       $(MAKE) -C $(PKG_BUILD_DIR) check-compile-only
+       $(MAKE) -C $(PKG_BUILD_DIR)/src/zscanner check-compile-only
+endef
+
+define Package/knot/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/knotc $(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_CONF) $(PKG_INSTALL_DIR)/etc/knot/example.com.zone 
$(1)/etc/knot/
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/knotd.init $(1)/etc/init.d/knotd
+endef
+
+define Package/knot-utils/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kdig $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/khost $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsupdate $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsec3hash $(1)/usr/bin/
+endef
+
+define Package/knot-tests/install
+       $(INSTALL_DIR) $(1)/usr/share/knot/tests
+       cat $(PKG_BUILD_DIR)/tests/TESTS | while read test_name; do \
+               $(INSTALL_BIN) $(PKG_BUILD_DIR)/tests/$$$$test_name 
$(1)/usr/share/knot/tests/ ; \
+       done
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/tests/runtests 
$(1)/usr/share/knot/tests/
+       $(INSTALL_DIR) $(1)/usr/share/knot/tests/data
+       $(INSTALL_CONF) $(PKG_BUILD_DIR)/tests/TESTS $(1)/usr/share/knot/tests/
+       $(INSTALL_CONF) $(PKG_BUILD_DIR)/tests/data/sample_conf 
$(1)/usr/share/knot/tests/data/
+
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/zscanner-tool 
$(1)/usr/share/knot/tests/
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/zscanner.sh 
$(1)/usr/share/knot/tests/
+       $(INSTALL_DIR) $(1)/usr/share/knot/tests/tap
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/tap/libtap.sh 
$(1)/usr/share/knot/tests/tap/
+       $(INSTALL_CONF) $(PKG_BUILD_DIR)/src/zscanner/tests/zscanner-TESTS 
$(1)/usr/share/knot/tests/
+       cat $(PKG_BUILD_DIR)/src/zscanner/tests/TESTS >> 
$(1)/usr/share/knot/tests/TESTS
+       cp -a $(PKG_BUILD_DIR)/src/zscanner/tests/data 
$(1)/usr/share/knot/tests/
+endef
+
+$(eval $(call BuildPackage,knot))
+$(eval $(call BuildPackage,knot-utils))
+$(eval $(call BuildPackage,knot-tests))
diff --git a/net/knot/files/knotd.init b/net/knot/files/knotd.init
index e69de29..23d3bd5 100644
--- a/net/knot/files/knotd.init
+++ b/net/knot/files/knotd.init
@@ -0,0 +1,45 @@
+#!/bin/sh /etc/rc.common
+START=70
+
+knot_bin="/usr/sbin/knotd"
+knot_ctl="/usr/sbin/knotc"
+config_file="/etc/knot/knot.conf"
+pid_file="/var/run/knot.pid"
+
+start() {
+  echo "Starting Knot DNS"
+
+  if [ -e $pid_file ]; then
+     echo "  Already running with PID `cat $pid_file`"
+     return 1
+  fi
+
+  $knot_bin -c $config_file -d
+
+  if [ $? -ne 0 ]; then
+    echo "  Failed to start"
+  fi
+}
+
+stop() {
+  echo "Stopping Knot DNS"
+
+  if [ -e $pid_file ]; then
+    kill `cat $pid_file`
+    rm -f $pid_file
+  else
+    echo "  No PID file $pid_file"
+    return 1
+  fi
+}
+
+restart() {
+  stop
+  start
+}
+
+reload() {
+  echo "Reloading Knot DNS"
+
+  $knot_ctl -c $config_file reload
+}
diff --git a/net/knot/patches/01_strptime_susv3.patch 
b/net/knot/patches/01_strptime_susv3.patch
index e69de29..fc14b91 100644
--- a/net/knot/patches/01_strptime_susv3.patch
+++ b/net/knot/patches/01_strptime_susv3.patch
@@ -0,0 +1,21 @@
+diff --git a/src/libknot/dnssec/key.c b/src/libknot/dnssec/key.c
+index 7dc0540..3e351bb 100644
+--- a/src/libknot/dnssec/key.c
++++ b/src/libknot/dnssec/key.c
+@@ -260,7 +260,15 @@ static int key_param_time(const void *save_to, char 
*value)
+
+       struct tm parsed = { 0 };
+
+-      if (!strptime(value, "%Y%m%d%H%M%S", &parsed)) {
++      if (strlen(value) != 14) {
++              return KNOT_EINVAL;
++      }
++
++      char *v = value;
++      char buf[32] = "";
++      int ret = sprintf(buf, "%.4s %.2s %.2s %.2s %.2s %.2s",
++                        v, v + 4, v + 6, v + 8, v + 10, v + 12);
++      if (ret != 19 || !strptime(buf, "%Y %m %d %H %M %S", &parsed)) {
+               return KNOT_EINVAL;
+       }
+
diff --git a/net/knot/patches/02_knot.conf.patch 
b/net/knot/patches/02_knot.conf.patch
index e69de29..f82af0c 100644
--- a/net/knot/patches/02_knot.conf.patch
+++ b/net/knot/patches/02_knot.conf.patch
@@ -0,0 +1,28 @@
+diff --git a/samples/knot.sample.conf.in b/samples/knot.sample.conf.in
+index 956e8a9..a068e67 100644
+--- a/samples/knot.sample.conf.in
++++ b/samples/knot.sample.conf.in
+@@ -14,7 +14,7 @@ system {
+
+   # User for running server
+   # May also specify user.group (e.g. knot.knot)
+-  user knot.knot;
++  user root.root;
+
+   # Directory for storing run-time data
+   # e.g. PID file and control sockets
+@@ -63,11 +63,11 @@ zones {
+ #  storage "@storage_dir@";
+ #
+ #  Example master zone
+-#  example.com {
+-#    file "@config_dir@/example.com.zone";
++  example.com {
++    file "example.com.zone";
+ #    xfr-out slave0;
+ #    notify-out slave0;
+-#  }
++  }
+ #
+ #  Example slave zone
+ #  example.net {
diff --git a/net/knot/patches/03_zscanner_tests.patch 
b/net/knot/patches/03_zscanner_tests.patch
index e69de29..59f3c0c 100644
--- a/net/knot/patches/03_zscanner_tests.patch
+++ b/net/knot/patches/03_zscanner_tests.patch
@@ -0,0 +1,37 @@
+diff --git a/src/zscanner/tests/zscanner-TESTS 
b/src/zscanner/tests/zscanner-TESTS
+index c88aef1..4e2148f 100644
+--- a/src/zscanner/tests/zscanner-TESTS
++++ b/src/zscanner/tests/zscanner-TESTS
+@@ -18,10 +18,8 @@
+ 05-2_TTL
+ 05-3_TTL
+ 05-4_TTL
+-06-0_INCLUDE
+ 06-1_INCLUDE
+ 06-2_INCLUDE
+-06-3_INCLUDE
+ 06-4_INCLUDE
+ 06-5_INCLUDE
+ 06-6_INCLUDE
+diff --git a/src/zscanner/tests/zscanner.sh b/src/zscanner/tests/zscanner.sh
+index ac3ce92..c133f0c 100755
+--- a/src/zscanner/tests/zscanner.sh
++++ b/src/zscanner/tests/zscanner.sh
+@@ -1,5 +1,8 @@
+ #!/bin/sh
+
++SOURCE="."
++BUILD="."
++
+ . "$SOURCE"/tap/libtap.sh
+ cd "$BUILD"
+
+@@ -7,7 +10,7 @@ TMPDIR=$(test_tmpdir)
+ TESTS_DIR="$SOURCE"/data
+ ZSCANNER_TOOL="$BUILD"/zscanner-tool
+
+-plan 68
++plan 66
+
+ mkdir -p "$TMPDIR"/includes/
+ for a in 1 2 3 4 5 6; do
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to