소스 검색

add new package bind per case 0000507

David Anders 19 년 전
부모
커밋
e507951611
7개의 변경된 파일365개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      package/Config.in
  2. 22 0
      package/bind/Config.in
  3. 43 0
      package/bind/bind-cross-fix.patch
  4. 89 0
      package/bind/bind-dlopen.patch
  5. 101 0
      package/bind/bind.mk
  6. 52 0
      package/bind/bind.sysvinit
  7. 57 0
      package/bind/bind9

+ 1 - 0
package/Config.in

@@ -30,6 +30,7 @@ source "package/at/Config.in"
 source "package/autoconf/Config.in"
 source "package/automake/Config.in"
 source "package/berkeleydb/Config.in"
+source "package/bind/Config.in"
 source "package/bison/Config.in"
 source "package/boa/Config.in"
 source "package/bridge/Config.in"

+ 22 - 0
package/bind/Config.in

@@ -0,0 +1,22 @@
+config BR2_PACKAGE_BIND
+	bool "bind"
+	default n
+	help
+	  BIND (Berkeley Internet Name Domain) is an implementation of
+	  the Domain Name System (DNS) protocols and provides an openly
+	  redistributable reference implementation of the major
+	  components of the Domain Name System, including:
+
+	    * a Domain Name System server (named)
+	    * a Domain Name System resolver library
+	    * tools for verifying the proper operation of the DNS server 
+
+	  The BIND DNS Server is used on the vast majority of name
+	  serving machines on the Internet, providing a robust and
+	  stable architecture on top of which an organization's naming
+	  architecture can be built. The resolver library included in
+	  the BIND distribution provides the standard APIs for
+	  translation between domain names and Internet addresses and is
+	  intended to be linked with applications requiring name service. 
+
+	  http://www.isc.org/sw/bind/

+ 43 - 0
package/bind/bind-cross-fix.patch

@@ -0,0 +1,43 @@
+diff -Naur bind-9.3.1/configure bind/configure
+--- bind-9.3.1/configure	2004-12-08 20:09:03.000000000 -0800
++++ bind/configure	2005-09-09 16:06:50.000000000 -0700
+@@ -23678,11 +23678,9 @@
+ echo "$as_me:$LINENO: checking for inet_ntop with IPv6 support" >&5
+ echo $ECHO_N "checking for inet_ntop with IPv6 support... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&2;}
+-   { (exit 1); exit 1; }; }
++  echo "$as_me:$LINENO: result: assuming target platform has working inet_ntop" >&5
++echo "${ECHO_T}assuming target platform has working inet_ntop" >&6
++	ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+diff -Naur bind-9.3.1/configure.in bind/configure.in
+--- bind-9.3.1/configure.in	2004-12-08 20:07:10.000000000 -0800
++++ bind/configure.in	2005-09-09 16:06:39.000000000 -0700
+@@ -1414,7 +1414,9 @@
+         [AC_MSG_RESULT(no)
+         ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
+         ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
+-        ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"])
++        ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
++        [AC_MSG_RESULT(assuming target platform has working inet_ntop)
++        ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"])
+ 
+ 
+ # On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
+--- bind-9.3.1/lib/dns/Makefile.in	2005-09-09 16:21:34.000000000 -0700
++++ bind/lib/dns/Makefile.in	2005-09-09 16:28:16.000000000 -0700
+@@ -156,7 +156,7 @@
+ 	./gen -s ${srcdir} > code.h
+ 
+ gen: gen.c
+-	${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
++	cc ${ALL_CFLAGS} -o $@ ${srcdir}/gen.c
+ 
+ rbtdb64.@O@: rbtdb.c
+ 

+ 89 - 0
package/bind/bind-dlopen.patch

@@ -0,0 +1,89 @@
+--- bind-9.3.1/bin/named/Makefile.in	2004-09-06 14:47:25.000000000 -0700
++++ bind/bin/named/Makefile.in	2005-09-19 15:55:17.000000000 -0700
+@@ -29,7 +29,7 @@
+ DBDRIVER_OBJS =
+ DBDRIVER_SRCS =
+ DBDRIVER_INCLUDES =
+-DBDRIVER_LIBS =
++DBDRIVER_LIBS = -ldl
+ 
+ CINCLUDES =	-I${srcdir}/include -I${srcdir}/unix/include \
+ 		${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
+diff -aur bind-9.3.1/bin/named/main.c bind/bin/named/main.c
+--- bind-9.3.1/bin/named/main.c	2004-10-24 17:42:54.000000000 -0700
++++ bind/bin/named/main.c	2005-09-14 10:49:28.000000000 -0700
+@@ -22,6 +22,7 @@
+ #include <ctype.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <dlfcn.h>
+ 
+ #include <isc/app.h>
+ #include <isc/commandline.h>
+@@ -540,6 +541,7 @@
+ static void
+ setup(void) {
+ 	isc_result_t result;
++	void        *handle;
+ 
+ 	/*
+ 	 * Get the user and group information before changing the root
+@@ -655,13 +657,33 @@
+ 	/*
+ 	 * Add calls to register sdb drivers here.
+ 	 */
+-	/* xxdb_init(); */
+-
++	handle = dlopen ("cadb.so", RTLD_NOW);
++	if (!handle) {
++	    fprintf (stderr, "failed to load cadb driver: %s\n", dlerror());
++	} else {
++	    isc_result_t (*cadbinit)(void);
++	    const char *error;
++	    
++	    dlerror();    /* Clear any existing error */
++	    *(void **) (&cadbinit) = dlsym(handle, "cadb_init");
++	    if ((error = dlerror()) != NULL)  {
++		fprintf (stderr, "failing loading cadbinit symbol: %s\n", error);
++		exit(1);
++	    }
++	   
++	    if((*cadbinit)() != ISC_R_SUCCESS) {
++		fprintf (stderr, "cadbinit failed");
++		exit(1);
++	    }
++	}
++	
+ 	ns_server_create(ns_g_mctx, &ns_g_server);
+ }
+ 
+ static void
+ cleanup(void) {
++	void *handle;
++
+ 	destroy_managers();
+ 
+ 	ns_server_destroy(&ns_g_server);
+@@ -671,7 +693,21 @@
+ 	/*
+ 	 * Add calls to unregister sdb drivers here.
+ 	 */
+-	/* xxdb_clear(); */
++	handle = dlopen ("cadb.so", RTLD_NOW);
++	if (!handle) {
++	    fprintf (stderr, "failed to load cadb driver: %s\n", dlerror());
++	} else {
++	    isc_result_t (*cadbclear)(void);
++	    const char *error;
++	    
++	    dlerror();    /* Clear any existing error */
++	    *(void **) (&cadbclear) = dlsym(handle, "cadb_clear");
++	    if ((error = dlerror()) != NULL)  {
++		fprintf (stderr, "failing loading cadbclear symbol: %s\n", error);
++	    } else {
++	        (*cadbclear)();
++	    }
++	}
+ 
+ 	isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
+ 		      ISC_LOG_NOTICE, "exiting");

+ 101 - 0
package/bind/bind.mk

@@ -0,0 +1,101 @@
+#############################################################
+#
+# bind
+#
+#############################################################
+BIND_VER:=9.3.1
+BIND_SOURCE:=bind-$(BIND_VER).tar.gz
+BIND_SITE:=ftp://ftp.isc.org/isc/bind9/$(BIND_VER)
+BIND_DIR1:=$(TOOL_BUILD_DIR)/bind-$(BIND_VER)
+BIND_DIR2:=$(BUILD_DIR)/bind-$(BIND_VER)
+BIND_CAT:=zcat
+BIND_BINARY:=bin/named/named
+BIND_TARGET_BINARY:=usr/sbin/named
+
+$(DL_DIR)/$(BIND_SOURCE):
+	 $(WGET) -P $(DL_DIR) $(BIND_SITE)/$(BIND_SOURCE)
+
+bind-source: $(DL_DIR)/$(BIND_SOURCE)
+
+#############################################################
+#
+# build bind for use on the target system
+#
+#############################################################
+$(BIND_DIR2)/.unpacked: $(DL_DIR)/$(BIND_SOURCE)
+	$(BIND_CAT) $(DL_DIR)/$(BIND_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+	toolchain/patch-kernel.sh $(BIND_DIR2) package/bind/ bind\*.patch
+	touch  $(BIND_DIR2)/.unpacked
+
+$(BIND_DIR2)/Makefile: $(BIND_DIR2)/.unpacked
+	(cd $(BIND_DIR2); rm -rf config.cache; \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
+		./configure \
+		--target=$(GNU_TARGET_NAME) \
+		--host=$(GNU_TARGET_NAME) \
+		--build=$(GNU_HOST_NAME) \
+		--prefix=/usr \
+		--libexecdir=/usr/lib \
+		--libdir=/lib \
+		--includedir=/include \
+		--sysconfdir=/etc \
+		--localstatedir=/var \
+		--without-openssl \
+		--with-randomdev=/dev/random \
+		--enable-ipv6 \
+		--disable-static \
+		--with-libtool \
+	);
+
+$(BIND_DIR2)/$(BIND_BINARY): $(BIND_DIR2)/Makefile
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 -C $(BIND_DIR2)
+	touch -c $(BIND_DIR2)/$(BIND_BINARY)
+
+#############################################################
+#
+# install bind binaries
+#
+#############################################################
+$(TARGET_DIR)/$(BIND_TARGET_BINARY): $(BIND_DIR2)/$(BIND_BINARY)
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 MAKEDEFS="INSTALL_DATA=true" \
+		DESTDIR=$(TARGET_DIR) -C $(BIND_DIR2)/bin install
+	cd $(TARGET_DIR)/usr/man; rmdir --ignore-fail-on-non-empty man8 man5 `pwd`
+	$(INSTALL) -m 0755 -D package/bind/bind.sysvinit $(TARGET_DIR)/etc/init.d/S81named
+
+bind-bin: $(TARGET_DIR)/$(BIND_TARGET_BINARY) bind-lib
+
+#############################################################
+#
+# install bind libraries
+#
+#############################################################
+$(STAGING_DIR)/lib/libdns.so: $(BIND_DIR2)/$(BIND_BINARY)
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 DESTDIR=$(STAGING_DIR) -C $(BIND_DIR2)/lib install
+
+$(TARGET_DIR)/usr/lib/libdns.so: $(STAGING_DIR)/lib/libdns.so
+	mkdir -p $(TARGET_DIR)/usr/lib
+	cd $(STAGING_DIR)/lib; \
+	    cp -a libdns.* libisc.* libisccc.* libbind9.* liblwres.* libisccfg.* \
+		$(TARGET_DIR)/usr/lib
+					
+bind-lib: $(STAGING_DIR)/lib/libdns.so $(TARGET_DIR)/usr/lib/libdns.so
+				      
+bind: uclibc bind-bin bind-lib
+
+bind-clean:
+	$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(BIND_DIR2) uninstall
+	-$(MAKE) -C $(BIND_DIR2) clean
+
+bind-dirclean:
+	rm -rf $(BIND_DIR2)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_BIND)),y)
+TARGETS+=bind
+endif
+

+ 52 - 0
package/bind/bind.sysvinit

@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# System-V init to control the bind DNS Daemon
+#
+
+NAME=named
+DAEMON=/usr/sbin/$NAME
+
+# this file contains a few tunable parameters
+test -r /etc/default/named && . /etc/default/named
+
+test -f $DAEMON || exit 0
+
+set -e
+
+case "$1" in
+	start)
+		test -z "$CHROOT" || ARGS="$ARGS -t $CHROOT"
+		test -z "$SETUID" || ARGS="$ARGS -u $SETUID"
+		if [ ! -f $CHROOT/etc/rndc.key ]; then
+		    echo -n "Initializing $NAME control key: rndc-confgen"
+		    set +e 
+		    touch $CHROOT/etc/rndc.key # handle symlinks
+		    rndc-confgen -a -r /dev/urandom $ARGS || echo "."
+		    set -e
+		fi
+		test -z "$CONF" || ARGS="$ARGS -c $CONF"
+		echo -n "Starting domain name daemon: $NAME"
+		trap 'echo failed' 0
+		start-stop-daemon -S -x $DAEMON -- $ARGS
+		trap - 0
+		echo "."
+		;;
+	stop)
+		echo -n "Stopping domain name daemon: $NAME"
+		rndc stop || start-stop-daemon -K -x $DAEMON
+		echo "."
+		;;
+	restart)
+		$0 stop
+		sleep 2
+		$0 start && exit $?
+		;;
+	reload|force-reload)
+		rndc reload && exit $?
+		;;
+	*)
+		echo "Usage: $0 {start|stop|restart|reload|force-reload}"
+		exit 1 
+esac
+
+exit 0

+ 57 - 0
package/bind/bind9

@@ -0,0 +1,57 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# for a chrooted server: "-u bind -t /var/lib/named"
+OPTIONS=""
+
+test -x /usr/sbin/rndc || exit 0
+
+case "$1" in
+    start)
+	echo -n "Starting domain name service: named"
+
+	# dirs under /var/run can go away on reboots.
+	mkdir -p /var/run/bind/run
+	chmod 775 /var/run/bind/run
+	chown root:bind /var/run/bind/run >/dev/null 2>&1 || true
+
+	if [ ! -x /usr/sbin/named ]; then
+	    echo "named binary missing - not starting"
+	    exit 1
+	fi
+	if start-stop-daemon --start --quiet --exec /usr/sbin/named \
+		--pidfile /var/run/bind/run/named.pid -- $OPTIONS; then
+	    if [ -x /sbin/resolvconf ] ; then
+		echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo
+	    fi
+	fi
+	echo "."	
+    ;;
+
+    stop)
+	echo -n "Stopping domain name service: named"
+	if [ -x /sbin/resolvconf ]; then
+	    /sbin/resolvconf -d lo
+	fi
+	/usr/sbin/rndc stop
+	echo "."	
+    ;;
+
+    reload)
+	/usr/sbin/rndc reload
+    ;;
+
+    restart|force-reload)
+	$0 stop
+	sleep 2
+	$0 start
+    ;;
+    
+    *)
+	echo "Usage: /etc/init.d/bind {start|stop|reload|restart|force-reload}" >&2
+	exit 1
+    ;;
+esac
+
+exit 0