瀏覽代碼

Add makefile and component information to build the Apache DS for User Sync
on Windows.

Thomas Lackey 20 年之前
父節點
當前提交
c341fc3237
共有 5 個文件被更改,包括 192 次插入2 次删除
  1. 6 0
      Makefile
  2. 22 0
      component_versions.mk
  3. 137 0
      components.mk
  4. 15 0
      ldap/servers/Makefile
  5. 12 2
      ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java

+ 6 - 0
Makefile

@@ -135,6 +135,12 @@ ifeq ($(INTERNAL_BUILD), 1)
 	$(AXIS_DEP) $(DSMLJAR_DEP) $(DSDOC_DEP)
 endif
 
+## Only fetch the necessary components for ApacheDS when requested
+ifeq ($(BUILD_NTDS),1)
+ifeq ($(ARCH), WINNT)
+COMPONENT_DEPENDENCIES += $(WRAPPER_DEP) $(SWIG_DEP) $(MAVEN_DEP) $(APACHEDS_DEP) 
+endif
+endif
 components: $(COMPONENT_DEPENDENCIES)
 	-@echo "The components are up to date"
 

+ 22 - 0
component_versions.mk

@@ -226,3 +226,25 @@ endif
 ifndef DSDOC_RELDATE
   DSDOC_RELDATE = 20050311
 endif
+
+# WIX
+ifndef WIX_VERSION
+	WIX_VERSION=2.0.2613.0
+endif
+
+### apacheds, etc ###
+ifndef WRAPPER_VERSION
+	WRAPPER_VERSION=3.1.2
+endif
+
+ifndef APACHEDS_VERSION
+	APACHEDS_VERSION=0.9
+endif
+
+ifndef SWIG_VERSION
+	SWIG_VERSION=1.3.24
+endif
+
+ifndef MAVEN_VERSION
+	MAVEN_VERSION=1.0.2
+endif

+ 137 - 0
components.mk

@@ -488,3 +488,140 @@ ifeq ($(INTERNAL_BUILD), 1)
 include $(BUILD_ROOT)/internal_comp_deps.mk
 endif
 
+#################################################
+# User Sync Components
+#################################################
+# java service wrapper for Password Sync #####################
+WRAPPER = wrapper_win32_$(WRAPPER_VERSION).zip
+WRAPPER_DEST = $(NSCP_DISTDIR_FULL_RTL)/wrapper
+WRAPPER_FILE = $(WRAPPER_DEST)/$(WRAPPER)
+WRAPPER_FILES = $(WRAPPER)
+WRAPPER_RELEASE = $(COMPONENTS_DIR_DEV)/wrapper
+WRAPPER_DIR = $(WRAPPER_RELEASE)/$(WRAPPER_VERSION)
+WRAPPER_DEP = $(WRAPPER_FILE)
+WRAPPER_REL_DIR=$(subst -bin,,$(subst .zip,,$(WRAPPER)))
+
+ifndef WRAPPER_PULL_METHOD
+WRAPPER_PULL_METHOD = $(COMPONENT_PULL_METHOD)
+endif
+
+$(WRAPPER_DEP): $(NSCP_DISTDIR_FULL_RTL) 
+ifeq ($(ARCH), WINNT)
+ifdef COMPONENT_DEPS
+	echo "Inside ftppull"
+	$(FTP_PULL) -method $(COMPONENT_PULL_METHOD) \
+		-objdir $(WRAPPER_DEST) -componentdir $(WRAPPER_DIR) \
+		-files $(WRAPPER_FILES) -unzip $(WRAPPER_DEST)
+endif
+	-@if [ ! -f $@ ] ; \
+	then echo "Error: could not get component WRAPPER files $@" ; \
+	fi
+else
+	-@echo "WRAPPER is not required except on Windows."
+endif #WINNT
+
+
+# swig for Password Sync #####################
+SWIG = swigwin-$(SWIG_VERSION).zip
+SWIG_DEST = $(NSCP_DISTDIR_FULL_RTL)/swig
+SWIG_FILE = $(SWIG_DEST)/$(SWIG)
+SWIG_FILES = $(SWIG)
+SWIG_RELEASE = $(COMPONENTS_DIR_DEV)/swig
+SWIG_DIR = $(SWIG_RELEASE)/$(SWIG_VERSION)
+SWIG_DEP = $(SWIG_FILE)
+SWIG_REL_DIR=$(subst -bin,,$(subst .zip,,$(SWIG)))
+SWIG_EXE = $(SWIG_DEST)/SWIG-$(SWIG_VERSION)/swig.exe
+
+ifndef SWIG_PULL_METHOD
+SWIG_PULL_METHOD = $(COMPONENT_PULL_METHOD)
+endif
+
+$(SWIG_DEP): $(NSCP_DISTDIR_FULL_RTL) 
+ifeq ($(ARCH), WINNT)
+ifdef COMPONENT_DEPS
+	echo "Inside ftppull"
+	$(FTP_PULL) -method $(COMPONENT_PULL_METHOD) \
+		-objdir $(SWIG_DEST) -componentdir $(SWIG_DIR) \
+		-files $(SWIG_FILES) -unzip $(SWIG_DEST)
+
+endif
+	-@if [ ! -f $@ ] ; \
+	then echo "Error: could not get component SWIG files $@" ; \
+	fi
+else
+	-@echo "SWIG is not required except on Windows."
+endif #WINNT
+
+# apache ds for Password Sync #####################
+APACHEDS = apacheds-main-$(APACHEDS_VERSION).jar
+APACHEDSSRC = apacheds-$(APACHEDS_VERSION)-src.zip
+APACHEDS_DEST = $(NSCP_DISTDIR_FULL_RTL)/apacheds
+APACHEDS_FILE = $(APACHEDS_DEST)/$(APACHEDS)
+APACHEDS_FILES = $(APACHEDS)
+APACHEDSSRC_FILES = $(APACHEDSSRC)
+APACHEDS_RELEASE = $(COMPONENTS_DIR_DEV)/apacheds
+APACHEDS_DIR = $(APACHEDS_RELEASE)/$(APACHEDS_VERSION)
+APACHEDS_DEP = $(APACHEDS_FILE)
+APACHEDS_REL_DIR=$(subst -bin,,$(subst .jar,,$(APACHEDS)))
+APACHEDSSOURCE = $(NSCP_DISTDIR_FULL_RTL)/apacheds/apacheds-$(APACHEDS_VERSION)
+
+
+ifndef APACHEDS_PULL_METHOD
+APACHEDS_PULL_METHOD = $(COMPONENT_PULL_METHOD)
+endif
+
+$(APACHEDS_DEP) : $(NSCP_DISTDIR_FULL_RTL) 
+ifeq ($(ARCH), WINNT)
+ifdef COMPONENT_DEPS
+	echo "Inside ftppull"
+	$(FTP_PULL) -method $(COMPONENT_PULL_METHOD) \
+		-objdir $(APACHEDS_DEST) -componentdir $(APACHEDS_DIR) \
+		-files $(APACHEDS_FILES)
+	$(FTP_PULL) -method $(COMPONENT_PULL_METHOD) \
+		-objdir $(APACHEDS_DEST) -componentdir $(APACHEDS_DIR) \
+		-files $(APACHEDSSRC_FILES) -unzip $(APACHEDS_DEST)
+endif
+	-@if [ ! -f $@ ] ; \
+	then echo "Error: could not get component APACHEDS files $@" ; \
+	fi
+
+
+else
+	-@echo "APACHEDS is not required except on Windows."
+endif #WINNT
+
+
+# MAVEN for Password Sync #####################
+MAVEN = maven-$(MAVEN_VERSION).zip
+MAVEN_DEST = $(NSCP_DISTDIR_FULL_RTL)/maven
+MAVEN_FILE = $(MAVEN_DEST)/$(MAVEN)
+MAVEN_FILES = $(MAVEN)
+MAVEN_RELEASE = $(COMPONENTS_DIR_DEV)/maven
+MAVEN_DIR = $(MAVEN_RELEASE)/$(MAVEN_VERSION)
+MAVEN_DEP = $(MAVEN_FILE)
+MAVEN_REL_DIR=$(subst -bin,,$(subst .zip,,$(MAVEN)))
+
+#MAVEN_EXE=$(NSCP_DISTDIR_FULL_RTL)/maven/$(MAVEN_REL_DIR)/bin/maven
+MAVEN_EXE=..\\..\\..\\..\\..\\dist\\WINNT5.0_DBG.OBJ\\maven\\maven-1.0.2\\bin\\maven.bat
+#MAVEN_HOME=..\\..\\..\\..\\..\\dist\\WINNT5.0_DBG.OBJ\\maven\\maven-1.0.2
+MAVEN_HOME=$(NSCP_DISTDIR_FULL_RTL)/maven/$(MAVEN_REL_DIR)
+
+ifndef MAVEN_PULL_METHOD
+MAVEN_PULL_METHOD = $(COMPONENT_PULL_METHOD)
+endif
+
+$(MAVEN_DEP): $(NSCP_DISTDIR_FULL_RTL) 
+ifeq ($(ARCH), WINNT)
+ifdef COMPONENT_DEPS
+	echo "Inside ftppull"
+	$(FTP_PULL) -method $(COMPONENT_PULL_METHOD) \
+		-objdir $(MAVEN_DEST) -componentdir $(MAVEN_DIR) \
+		-files $(MAVEN_FILES) -unzip $(MAVEN_DEST)
+endif
+	-@if [ ! -f $@ ] ; \
+	then echo "Error: could not get component MAVEN files $@" ; \
+	fi
+else
+	-@echo "MAVEN is not required except on Windows."
+endif #WINNT
+

+ 15 - 0
ldap/servers/Makefile

@@ -54,6 +54,9 @@ include $(LDAP_SRC)/nsldap.mk
 ifeq ($(ARCH), WINNT)
 PRE_SLAPD_EXTRAS=_ntmsgdll
 POST_SLAPD_EXTRAS=_ntwdog _ntperfdll
+ifeq ($(BUILD_NTDS),1)
+PRE_SLAPD_EXTRAS+=_ntds
+endif
 endif
 
 all:	$(PRE_SLAPD_EXTRAS) _slapd $(POST_SLAPD_EXTRAS) _backends _plugins _snmp _slapdtools
@@ -86,6 +89,9 @@ _slapdtools:
 	cd slapd/tools; $(MAKE) $(MFLAGS) all
 
 ifeq ($(ARCH), WINNT)
+_ntds:
+	cd ntds; $(MAKE) $(MFLAGS) all
+
 _ntmsgdll:
 	cd slapd/ntmsgdll; $(MAKE) $(MFLAGS) all
 
@@ -107,3 +113,12 @@ endif
 	cd slapd/back-ldif; $(MAKE) $(MFLAGS) clean
 	cd plugins; $(MAKE) $(MFLAGS) clean
 	cd slapd/tools; $(MAKE) $(MFLAGS) clean
+
+ifeq ($(ARCH), WINNT)
+	cd ntds; $(MAKE) $(MFLAGS) clean
+else
+	echo NTDS not built on non-windows
+endif
+
+
+

+ 12 - 2
ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java

@@ -231,11 +231,14 @@ public class NetAPIPartition implements ContextPartition {
         	
             if(attribute.contains("user")) {
                 user.NewUser(rdn);
-                modNTUserAttributes(user, modItems);
                 result = user.AddUser();
                 if(result != 0) {
                 	throw new NamingException("Failed to add new user: " + normName + " (" + result + ")");
                 }
+                modNTUserAttributes(user, modItems);
+                if(user.StoreUser() != 0) {
+                	throw new NamingException("Failed to commit modified user information: " + normName);
+                }
             }
             else if(attribute.contains("group")) {
             	attribute = entry.get("groupType");
@@ -245,10 +248,13 @@ public class NetAPIPartition implements ContextPartition {
             	
             	if(((new Integer((String)attribute.get())).intValue() & GLOBAL_FLAG) == GLOBAL_FLAG) {
             		group.NewGroup(rdn);
-                    modNTGroupAttributes(group, modItems);
                     if(group.AddGroup() != 0) {
                     	throw new NamingException("Failed to add new group: " + normName);
                     }
+                    modNTGroupAttributes(group, modItems);
+                    if(group.StoreGroup() != 0) {
+                    	throw new NamingException("Failed to commit modified user information: " + normName);
+                    }
             	}
             	else if(((new Integer((String)attribute.get())).intValue() & DOMAINLOCAL_FLAG) == DOMAINLOCAL_FLAG) {
                     localGroup.NewLocalGroup(rdn);
@@ -256,6 +262,10 @@ public class NetAPIPartition implements ContextPartition {
                     if(localGroup.AddLocalGroup() != 0) {
                     	throw new NamingException("Failed add new local group: " + normName);
                     }
+                    modNTLocalGroupAttributes(localGroup, modItems);
+                    if(localGroup.StoreLocalGroup() != 0) {
+                    	throw new NamingException("Failed to commit modified user information: " + normName);
+                    }
             	}
             	else {
             		throw new NamingException("Unknown group type: " + (Integer)attribute.get());