Message ID | 1410813982-7774-1-git-send-email-eric.le.bihan.dev@free.fr |
---|---|
State | Changes Requested |
Headers | show |
Dear Eric Le Bihan, On Mon, 15 Sep 2014 22:46:21 +0200, Eric Le Bihan wrote: > This package provides NSD, an authoritative only, high performance, > simple and open source name server. > > Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> This looks good. Just a few questions below, not really critical. > +NSD_VERSION = 4.0.3 There is a new version that has been released 4.1.0. Though I don't mind seeing the 4.0.3 being packaged in Buildroot for now, and then later if you have the time, a bump to 4.1.0. > +NSD_SITE = http://www.nlnetlabs.nl/downloads/nsd/ > +NSD_LICENSE = BSD-3c > +NSD_LICENSE_FILES = LICENSE > + > +NSD_DEPENDENCIES = libevent openssl > + > +NSD_CONF_OPT = \ > + --prefix=/ \ > + --datarootdir=/usr/share This is fairly unusual, especially the --prefix=/, so having a comment above would be useful. > +ifeq ($(BR2_PACKAGE_SYSTEMD),y) > +NSD_CONF_OPT += --with-pidfile=/run/nsd/nsd.pid > +endif Ok, so for systemd the pidfile location is defined at compile time, but for sysv/busybox init, it's passed through the init script. > +define NSD_REMOVE_SAMPLE_CONF > + $(RM) $(TARGET_DIR)/etc/nsd/nsd.conf.sample > +endef > + > +NSD_POST_INSTALL_TARGET_HOOKS += NSD_REMOVE_SAMPLE_CONF Is there a non sample file installed? Also, when build testing, I faced an issue: checking for libevent... configure: error: Cannot find the libevent library. You can restart ./configure --with-libevent=no to use a builtin alternative. make: *** [/home/thomas/projets/buildroot/output/build/nsd-4.0.3/.stamp_configured] Erreur 1 Configuration used is: BR2_arm=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2014.08.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16=y BR2_TOOLCHAIN_EXTERNAL_LARGEFILE=y BR2_TOOLCHAIN_EXTERNAL_INET_IPV6=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y BR2_TOOLCHAIN_EXTERNAL_CXX=y BR2_PACKAGE_NSD=y I see libevent being built. The config.log of nsd contains: configure:5427: checking for libevent configure:5453: error: Cannot find the libevent library. You can restart ./configure --with-libevent=no to use a builtin alternative. The same happens with OpenSSL: checking for SSL... configure: error: Cannot find the SSL libraries in /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr You probably need to pass --with-{libevent,ssl}=/some/path, but I haven't figured out which path (I haven't looked too much, only tested $(STAGING_DIR) and $(STAGING_DIR)/usr/lib). Also, your package makes openssl and libevent mandatory dependencies of nsd, which is not the case: you can pass --with-libevent=no and --with-ssl=no and you can build without those dependencies. This is something we should support to allow building a more lightweight version of nsd. Then, at boot time, I get: Starting Name Server Daemon: Could not open /etc/nsd/nsd.conf: No such file or directory [1410900412] nsd[525]: error: could not read config: /etc/nsd/nsd.conf We generally like to have a default configuration file installed, so that the service works in a minimal way "out of the box". Could you have a look at those issues? Thanks a lot! Thomas
Hi! On Tue, Sep 16, 2014 at 10:48:20PM +0200, Thomas Petazzoni wrote: > Dear Eric Le Bihan, > > On Mon, 15 Sep 2014 22:46:21 +0200, Eric Le Bihan wrote: > > This package provides NSD, an authoritative only, high performance, > > simple and open source name server. > > > > Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> > > This looks good. Just a few questions below, not really critical. > > > +NSD_VERSION = 4.0.3 > > There is a new version that has been released 4.1.0. Though I don't > mind seeing the 4.0.3 being packaged in Buildroot for now, and then > later if you have the time, a bump to 4.1.0. I'll go for 4.1.0! > > > +NSD_SITE = http://www.nlnetlabs.nl/downloads/nsd/ > > +NSD_LICENSE = BSD-3c > > +NSD_LICENSE_FILES = LICENSE > > + > > +NSD_DEPENDENCIES = libevent openssl > > + > > +NSD_CONF_OPT = \ > > + --prefix=/ \ > > + --datarootdir=/usr/share > > This is fairly unusual, especially the --prefix=/, so having a comment > above would be useful. If --prefix was set to /usr, the program was looking for stuff in /usr/var/db. But this can be removed if using --with-dbfile and --datarootdir. > > +ifeq ($(BR2_PACKAGE_SYSTEMD),y) > > +NSD_CONF_OPT += --with-pidfile=/run/nsd/nsd.pid > > +endif > > Ok, so for systemd the pidfile location is defined at compile time, but > for sysv/busybox init, it's passed through the init script. For SysV/Busybox, I'll use --with-pidfile=/var/run/nsd.pid and adapt the script. > > +define NSD_REMOVE_SAMPLE_CONF > > + $(RM) $(TARGET_DIR)/etc/nsd/nsd.conf.sample > > +endef > > + > > +NSD_POST_INSTALL_TARGET_HOOKS += NSD_REMOVE_SAMPLE_CONF > > Is there a non sample file installed? No, but I'll provide a minimal default configuration file. > Also, when build testing, I faced an issue: > > checking for libevent... configure: error: Cannot find the libevent library. > You can restart ./configure --with-libevent=no to use a builtin alternative. > make: *** [/home/thomas/projets/buildroot/output/build/nsd-4.0.3/.stamp_configured] Erreur 1 > > Configuration used is: > > BR2_arm=y > BR2_TOOLCHAIN_EXTERNAL=y > BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y > BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y > BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2014.08.tar.bz2" > BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16=y > BR2_TOOLCHAIN_EXTERNAL_LARGEFILE=y > BR2_TOOLCHAIN_EXTERNAL_INET_IPV6=y > BR2_TOOLCHAIN_EXTERNAL_LOCALE=y > # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set > BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y > BR2_TOOLCHAIN_EXTERNAL_CXX=y > BR2_PACKAGE_NSD=y > > I see libevent being built. The config.log of nsd contains: > > configure:5427: checking for libevent > configure:5453: error: Cannot find the libevent library. > You can restart ./configure --with-libevent=no to use a builtin alternative. > > The same happens with OpenSSL: > > checking for SSL... configure: error: Cannot find the SSL libraries in /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr > > You probably need to pass --with-{libevent,ssl}=/some/path, but I > haven't figured out which path (I haven't looked too much, only tested > $(STAGING_DIR) and $(STAGING_DIR)/usr/lib). And the correct answer is... --with-libevent=$(STAGING_DIR)/usr! > Also, your package makes openssl and libevent mandatory dependencies of > nsd, which is not the case: you can pass --with-libevent=no and > --with-ssl=no and you can build without those dependencies. This is > something we should support to allow building a more lightweight > version of nsd. I make libevent and openssl optional dependencies. Thanks for the review! Best regards, ELB
diff --git a/package/Config.in b/package/Config.in index 73ba86a..c655ee0 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1030,6 +1030,7 @@ endif source "package/ngrep/Config.in" source "package/nmap/Config.in" source "package/noip/Config.in" + source "package/nsd/Config.in" source "package/ntp/Config.in" source "package/nuttcp/Config.in" source "package/odhcploc/Config.in" diff --git a/package/nsd/Config.in b/package/nsd/Config.in new file mode 100644 index 0000000..de9d213 --- /dev/null +++ b/package/nsd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_NSD + bool "nsd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_OPENSSL + help + NSD is an authoritative only, high performance, simple and open + source name server. + + http://www.nlnetlabs.nl/projects/nsd/ + +comment "nsd needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/nsd/S80nsd b/package/nsd/S80nsd new file mode 100644 index 0000000..22c320d --- /dev/null +++ b/package/nsd/S80nsd @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Starts nsd Name Server Daemon +# + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +NAME=nsd +DESC="Name Server Daemon" +DAEMON=/usr/sbin/nsd +DAEMONCTL=/usr/sbin/nsdc +DAEMON_ARGS="-c /etc/nsd/nsd.conf" +PIDFILE=/var/run/$NAME.pid + +test -r /etc/default/$NAME && . /etc/default/$NAME + +DAEMON_ARGS="$DAEMON_ARGS $OPTIONS" + +do_start() { + start-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS +} + +do_stop() { + start-stop-daemon -K -q -p $PIDFILE +} + +do_reload() { + $DAEMONCTL reload >/dev/null +} + +case "$1" in + start) + echo -n "Starting $DESC: " + do_start + [ $? == 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + echo -n "Stopping $DESC: " + do_stop + [ $? == 0 ] && echo "OK" || echo "FAIL" + ;; + reload) + do_reload + ;; + restart) + do_stop + sleep 1 + do_start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/package/nsd/nsd.mk b/package/nsd/nsd.mk new file mode 100644 index 0000000..0b008c2 --- /dev/null +++ b/package/nsd/nsd.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# nsd +# +################################################################################ + +NSD_VERSION = 4.0.3 +NSD_SITE = http://www.nlnetlabs.nl/downloads/nsd/ +NSD_LICENSE = BSD-3c +NSD_LICENSE_FILES = LICENSE + +NSD_DEPENDENCIES = libevent openssl + +NSD_CONF_OPT = \ + --prefix=/ \ + --datarootdir=/usr/share + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +NSD_CONF_OPT += --with-pidfile=/run/nsd/nsd.pid +endif + +define NSD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/nsd/S80nsd \ + $(TARGET_DIR)/etc/init.d/S80nsd +endef + +define NSD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/nsd/nsd.service \ + $(TARGET_DIR)/lib/systemd/system/nsd.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -sf ../../../../lib/systemd/system/nsd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/nsd.service + + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/tmpfiles.d + echo "d /run/nsd 0755 nsd nsd -" > $(TARGET_DIR)/usr/lib/tmpfiles.d/nsd.conf +endef + +define NSD_USERS + nsd -1 nsd -1 * /var/db/nsd - - Domain Name Server +endef + +define NSD_REMOVE_SAMPLE_CONF + $(RM) $(TARGET_DIR)/etc/nsd/nsd.conf.sample +endef + +NSD_POST_INSTALL_TARGET_HOOKS += NSD_REMOVE_SAMPLE_CONF + +$(eval $(autotools-package)) diff --git a/package/nsd/nsd.service b/package/nsd/nsd.service new file mode 100644 index 0000000..5089e85 --- /dev/null +++ b/package/nsd/nsd.service @@ -0,0 +1,13 @@ +[Unit] +Description=NSD Name Server Daemon +After=network.target + +[Service] +PIDFile=/run/nsd/nsd.pid +ExecStart=/usr/sbin/nsd -d -c /etc/nsd/nsd.conf +ExecReload=/bin/kill -HUP $MAINPID +ExecStop=/bin/kill -TERM $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target
This package provides NSD, an authoritative only, high performance, simple and open source name server. Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> --- package/Config.in | 1 + package/nsd/Config.in | 15 ++++++++++++++ package/nsd/S80nsd | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ package/nsd/nsd.mk | 50 +++++++++++++++++++++++++++++++++++++++++++++ package/nsd/nsd.service | 13 ++++++++++++ 5 files changed, 133 insertions(+) create mode 100644 package/nsd/Config.in create mode 100644 package/nsd/S80nsd create mode 100644 package/nsd/nsd.mk create mode 100644 package/nsd/nsd.service