[package] openldap, update to 2.4.19, package slapd, cleanup makefile
authorFlorian Fainelli <florian@openwrt.org>
Mon, 23 Nov 2009 10:53:22 +0000 (10:53 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Mon, 23 Nov 2009 10:53:22 +0000 (10:53 +0000)
(#6150)

SVN-Revision: 18495

libs/openldap/Makefile
libs/openldap/files/ldap.init [new file with mode: 0644]
libs/openldap/patches/010-fix-asserts.patch [new file with mode: 0644]

index ed701e0..49c2dc9 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openldap
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openldap
-PKG_VERSION:=2.4.16
+PKG_VERSION:=2.4.19
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
@@ -16,7 +16,7 @@ PKG_SOURCE_URL:=ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/ \
        ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/ \
        ftp://ftp.nl.uu.net/pub/unix/db/openldap/openldap-release/ \
        ftp://ftp.plig.org/pub/OpenLDAP/openldap-release/
        ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/ \
        ftp://ftp.nl.uu.net/pub/unix/db/openldap/openldap-release/ \
        ftp://ftp.plig.org/pub/OpenLDAP/openldap-release/
-PKG_MD5SUM:=ed5b86e9d2b372d10edfe3bb59fee165
+PKG_MD5SUM:=4a6dab2711fcf141f19bb680bc335887
 
 PKG_FIXUP = libtool
 
 
 PKG_FIXUP = libtool
 
@@ -36,7 +36,6 @@ define Package/libopenldap
 endef
 
 define Package/libopenldap/description
 endef
 
 define Package/libopenldap/description
-=
        OpenLDAP Software is an open source implementation of the 
        Lightweight Directory Access Protocol (LDAP).   
        This package contains the shared LDAP client libraries, needed by other programs.
        OpenLDAP Software is an open source implementation of the 
        Lightweight Directory Access Protocol (LDAP).   
        This package contains the shared LDAP client libraries, needed by other programs.
@@ -55,12 +54,25 @@ define Package/openldap-utils
 endef
 
 define Package/openldap-utils/description
 endef
 
 define Package/openldap-utils/description
-=
        OpenLDAP Software is an open source implementation of the 
        Lightweight Directory Access Protocol (LDAP).   
        This package contains client programs required to access LDAP servers.
 endef
 
        OpenLDAP Software is an open source implementation of the 
        Lightweight Directory Access Protocol (LDAP).   
        This package contains client programs required to access LDAP servers.
 endef
 
+define Package/openldap-server
+  $(call Package/openldap/Default)
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libopenldap +db47
+  TITLE+= (server)
+endef
+
+define Package/openldap-server/description
+       OpenLDAP Software is an open source implementation of the 
+       Lightweight Directory Access Protocol (LDAP).   
+       This package contains server programs required to provide LDAP services.
+endef
+
 TARGET_CFLAGS += $(FPIC)
 
 CONFIGURE_ARGS += \
 TARGET_CFLAGS += $(FPIC)
 
 CONFIGURE_ARGS += \
@@ -70,7 +82,6 @@ CONFIGURE_ARGS += \
        --enable-dynamic \
        --enable-syslog \
        --disable-local \
        --enable-dynamic \
        --enable-syslog \
        --disable-local \
-       --disable-slapd \
        --disable-slurpd \
        --with-cyrus-sasl \
        --without-fetch \
        --disable-slurpd \
        --with-cyrus-sasl \
        --without-fetch \
@@ -107,6 +118,17 @@ define Package/openldap-utils/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ldap* $(1)/usr/bin/
 endef
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ldap* $(1)/usr/bin/
 endef
+       
+define Package/openldap-server/install
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/ldap.init $(1)/etc/init.d/ldap
+       $(INSTALL_DIR) $(1)/etc/openldap/schema
+       $(CP) $(PKG_INSTALL_DIR)/etc/openldap/schema/* $(1)/etc/openldap/schema/
+       $(INSTALL_DIR) $(1)/usr/sbin
+       # OpenLDAP installs slapd into libexecdir, not sbindir:
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/slapd $(1)/usr/sbin/
+endef
 
 $(eval $(call BuildPackage,libopenldap))
 $(eval $(call BuildPackage,openldap-utils))
 
 $(eval $(call BuildPackage,libopenldap))
 $(eval $(call BuildPackage,openldap-utils))
+$(eval $(call BuildPackage,openldap-server))
diff --git a/libs/openldap/files/ldap.init b/libs/openldap/files/ldap.init
new file mode 100644 (file)
index 0000000..9917525
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009 OpenWrt.org
+
+START=60
+
+start() {
+       mkdir -p /var/run/openldap
+       mkdir -p /var/lib/ldap
+       
+       /usr/sbin/slapd
+}
+
+stop() {
+       killall slapd 2> /dev/null
+}
diff --git a/libs/openldap/patches/010-fix-asserts.patch b/libs/openldap/patches/010-fix-asserts.patch
new file mode 100644 (file)
index 0000000..0141092
--- /dev/null
@@ -0,0 +1,50 @@
+diff -u --recursive openldap-2.4.19-vanilla/servers/slapd/connection.c openldap-2.4.19/servers/slapd/connection.c
+--- openldap-2.4.19-vanilla/servers/slapd/connection.c 2009-11-17 19:04:26.000000000 -0500
++++ openldap-2.4.19/servers/slapd/connection.c 2009-11-17 19:09:02.000000000 -0500
+@@ -783,7 +783,9 @@
+ {
+       assert( connections != NULL );
+       assert( c != NULL );
+-      assert( c->c_struct_state == SLAP_C_USED );
++
++      if ( c->c_struct_state != SLAP_C_USED ) return;
++
+       assert( c->c_conn_state != SLAP_C_INVALID );
+       /* c_mutex must be locked by caller */
+@@ -816,7 +818,9 @@
+ {
+       assert( connections != NULL );
+       assert( c != NULL );
+-      assert( c->c_struct_state == SLAP_C_USED );
++
++      if ( c->c_struct_state != SLAP_C_USED ) return;
++
+       assert( c->c_conn_state == SLAP_C_CLOSING );
+       /* NOTE: c_mutex should be locked by caller */
+diff -u --recursive openldap-2.4.19-vanilla/servers/slapd/daemon.c openldap-2.4.19/servers/slapd/daemon.c
+--- openldap-2.4.19-vanilla/servers/slapd/daemon.c     2009-11-17 19:04:26.000000000 -0500
++++ openldap-2.4.19/servers/slapd/daemon.c     2009-11-17 19:10:54.000000000 -0500
+@@ -989,13 +989,17 @@
+ void
+ slapd_set_read( ber_socket_t s, int wake )
+ {
++      int do_wake = 1;
+       ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex );
+-      assert( SLAP_SOCK_IS_ACTIVE( s ));
+-      if (!SLAP_SOCK_IS_READ( s )) SLAP_SOCK_SET_READ( s );
+-
++      if( SLAP_SOCK_IS_ACTIVE( s ) && !SLAP_SOCK_IS_READ( s )) {
++              SLAP_SOCK_SET_READ( s );
++      } else {
++              do_wake = 0;
++      }
+       ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex );
+-      WAKE_LISTENER(wake);
++      if ( do_wake )
++              WAKE_LISTENER(wake);
+ }
+ time_t