From 5352fc24d9fc50336119d2c199b489f074f5948f Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Fri, 13 Feb 2009 17:03:19 +0000
Subject: [PATCH] - land NDB Backend implementation.

---
 opendj-sdk/opends/build.xml |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 104 insertions(+), 13 deletions(-)

diff --git a/opendj-sdk/opends/build.xml b/opendj-sdk/opends/build.xml
index 0b72255..078072e 100644
--- a/opendj-sdk/opends/build.xml
+++ b/opendj-sdk/opends/build.xml
@@ -22,7 +22,7 @@
  ! CDDL HEADER END
  !
  !
- !      Copyright 2006-2008 Sun Microsystems, Inc.
+ !      Copyright 2006-2009 Sun Microsystems, Inc.
  ! -->
 
 <project name="Directory Server" basedir="." default="package">
@@ -41,6 +41,7 @@
   <property name="src.dir"          location="src/server"              />
   <property name="build.dir"        location="build"                   />
   <property name="classes.dir"      location="${build.dir}/classes"    />
+  <property name="build.lib.dir"    location="${build.dir}/lib"        />
   <property name="lib.dir"          location="lib"                     />
   <property name="ext.dir"          location="ext"                     />
   <property name="package.dir"      location="${build.dir}/package"    />
@@ -161,6 +162,23 @@
   <property name="snmp.classes.dir"
             location="${classes.dir}/org/opends/server/snmp" />
 
+  <!-- Condition properties for NDB Backend build. -->
+  <condition property="ismysqldirpresent">
+    <available file="${mysql.lib.dir}" type="dir" />
+  </condition>
+  <condition property="exclude.ndb.xml" value=""
+             else="**/Ndb*">
+             <available file="${mysql.lib.dir}" type="dir" />
+  </condition>
+  <condition property="exclude.ndb.src" value=""
+             else="org/opends/server/backends/ndb/**,
+                   org/opends/server/workflowelement/ndb/**">
+             <available file="${mysql.lib.dir}" type="dir" />
+  </condition>
+
+  <!-- Property for excluding NDB Backend config. -->
+  <property name="exclude.ndb.config" value="ndbconfig.ldif" />
+
   <!-- Create a package bundle containing the DSML library. -->
   <target name="dsml" depends="predsml,package"
        description="Build a Directory Server package bundle with DSML.">
@@ -288,8 +306,25 @@
     <genmsg sourceProps="${msg.prop.dir}/servicetag.properties"
             destJava="${msg.javagen.dir}/org/opends/messages/ServiceTagMessages.java">
     </genmsg>
+
+    <antcall target="generatendbmessages" />
+    
   </target>
 
+  <!-- Generate NDB Backend messages if needed -->
+  <target name="generatendbmessages" if="ismysqldirpresent">
+    <typedef name="genmsg"
+             classname="org.opends.build.tools.GenerateMessageFile" >
+      <classpath>
+        <fileset dir="${build.dir}/build-tools">
+          <include name="*.jar" />
+        </fileset>
+      </classpath>
+    </typedef>
+    <genmsg sourceProps="${msg.prop.dir}/ndb.properties"
+            destJava="${msg.javagen.dir}/org/opends/messages/NdbMessages.java">
+    </genmsg>
+  </target>
 
   <!-- Remove all dynamically-generated build files. -->
   <target name="clean" depends="init,cleanadmin,cleanmessages,cleansnmp"
@@ -575,9 +610,13 @@
        depends="init,checkjavaversion,dynamicconstants,generatemessages,compileadmin"
        description="Compile the Directory Server source files.">
     <mkdir dir="${classes.dir}" />
+    <mkdir dir="${build.lib.dir}" />
 
+    <!-- Copy NDB Backend dependencies if necessary -->
+    <antcall target="copyndbdeps" />
+    
     <javac srcdir="${src.dir}:${admin.src.dir}:${msg.src.dir}:${msg.javagen.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
-         destdir="${classes.dir}" debug="on" debuglevel="${build.debuglevel}"
+         destdir="${classes.dir}" excludes="${exclude.ndb.src}" debug="on" debuglevel="${build.debuglevel}"
          source="1.5" target="1.5" deprecation="true" fork="true"
          memoryInitialSize="${MEM}" memoryMaximumSize="${MEM}">
       <compilerarg value="-Xlint:all" />
@@ -589,6 +628,9 @@
         <fileset dir="${build.dir}/build-tools">
           <include name="build-tools.jar" />
         </fileset>
+        <fileset dir="${build.lib.dir}">
+          <include name="*.jar" />
+        </fileset>
       </classpath>
     </javac>
 
@@ -743,10 +785,13 @@
     <!-- Regenerate configuration files if necessary -->
     <antcall target="compileadmin" />
 
+    <!-- Copy NDB Backend dependencies if necessary -->
+    <antcall target="copyndbdeps" />
+
     <!-- Recreate the classes directory and recompile into it. -->
     <mkdir dir="${classes.dir}" />
     <javac srcdir="${src.dir}:${msg.src.dir}:${msg.javagen.dir}:${admin.src.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
-         destdir="${classes.dir}"
+         destdir="${classes.dir}" excludes="${exclude.ndb.src}"
          debug="on" debuglevel="${build.debuglevel}" source="1.5" target="1.5"
          deprecation="true" fork="true" memoryInitialSize="${MEM}"
          memoryMaximumSize="${MEM}">
@@ -759,6 +804,9 @@
         <fileset dir="${build.dir}/build-tools">
           <include name="build-tools.jar" />
         </fileset>
+        <fileset dir="${build.lib.dir}">
+          <include name="*.jar" />
+        </fileset>
       </classpath>
     </javac>
 
@@ -830,6 +878,11 @@
     <jar jarfile="${pdir}/lib/quicksetup.jar"
          basedir="${quicksetup.classes.dir}" compress="true" index="true" />
 
+    <!-- Copy over external dependencies. -->
+    <copy todir="${pdir}/lib">
+      <fileset file="${build.lib.dir}/*.jar" />
+    </copy>
+    
     <!-- Regenerate example plugin. -->
     <antcall target="example-plugin" />
   </target>
@@ -965,11 +1018,13 @@
     <fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/lib" includes="_client-script.bat,_server-script.bat,_mixed-script.bat,_script-util.bat,setcp.bat" eol="crlf" />
 
     <copy todir="${pdir}/config">
-      <fileset file="${config.dir}/*" />
+      <fileset file="${config.dir}/*" excludes="${exclude.ndb.config}" />
     </copy>
 
     <antcall target="package-snmp" />
 
+    <antcall target="packagendb" />
+
     <copy file="${pdir}/config/config.ldif"
          tofile="${pdir}/config/upgrade/config.ldif.${REVISION_NUMBER}" />
 
@@ -1272,7 +1327,7 @@
         <dirset dir="${quicksetup.classes.dir}" />
       </classpath>
 
-      <packageset dir="${src.dir}" />
+      <packageset dir="${src.dir}" excludes="${exclude.ndb.src}" />
       <packageset dir="${admin.src.dir}" />
       <packageset dir="${ads.src.dir}" />
       <packageset dir="${dsml.src.dir}" />
@@ -1433,8 +1488,11 @@
     <echo message="Performing partial rebuild (OpenDS zip package found)"/>
     <mkdir dir="${classes.dir}" />
 
+    <!-- Copy NDB Backend dependencies if necessary -->
+    <antcall target="copyndbdeps" />
+
     <javac srcdir="${src.dir}:${admin.src.dir}:${msg.src.dir}:${msg.javagen.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
-        destdir="${classes.dir}" debug="on" debuglevel="${build.debuglevel}"
+        destdir="${classes.dir}" excludes="${exclude.ndb.src}" debug="on" debuglevel="${build.debuglevel}"
         source="1.5" target="1.5" deprecation="true" fork="true"
         memoryInitialSize="${MEM}" memoryMaximumSize="${MEM}">
       <compilerarg value="-Xlint:all" />
@@ -1446,6 +1504,9 @@
         <fileset dir="${build.dir}/build-tools">
           <include name="build-tools.jar" />
         </fileset>
+        <fileset dir="${build.lib.dir}">
+          <include name="*.jar" />
+        </fileset>
       </classpath>
     </javac>
 
@@ -2146,6 +2207,7 @@
       <arg value="-buildfile" />
       <arg value="${ant.file}" />
       <arg value="-quiet" />
+      <arg value="-Dexclude.ndb.xml=${exclude.ndb.xml}" />
       <arg value="compileadminsubtask" />
       <env key="ANT_OPTS" value="-Xmx${MEM}" />
     </exec>
@@ -2155,7 +2217,8 @@
 
   <target name="compileadminsubtask">
     <!-- Generate introspection API for core administration components. -->
-    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml" style="${admin.rules.dir}/metaMO.xsl">
+    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
+          excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/metaMO.xsl">
       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.java" />
       <param name="base-dir" expression="${admin.defn.dir}" />
     </xslt>
@@ -2166,7 +2229,8 @@
     </xslt>
 
     <!-- Generate client API for core administration components. -->
-    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml" style="${admin.rules.dir}/clientMO.xsl">
+    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
+          excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/clientMO.xsl">
       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/client/\2CfgClient.java" />
       <param name="base-dir" expression="${admin.defn.dir}" />
     </xslt>
@@ -2177,7 +2241,8 @@
     </xslt>
 
     <!-- Generate server API for core administration components. -->
-    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml" style="${admin.rules.dir}/serverMO.xsl">
+    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
+          excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/serverMO.xsl">
       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/server/\2Cfg.java" />
       <param name="base-dir" expression="${admin.defn.dir}" />
     </xslt>
@@ -2189,19 +2254,22 @@
 
     <!-- Generate LDAP profile for core administration components. -->
     <mkdir dir="${classes.dir}" />
-    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/ldap" includes="**/*Configuration.xml" style="${admin.rules.dir}/ldapMOProfile.xsl">
+    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/ldap" includes="**/*Configuration.xml"
+          excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/ldapMOProfile.xsl">
       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
       <param name="base-dir" expression="${admin.defn.dir}" />
     </xslt>
 
     <!-- Generate CLI profile for core administration components. -->
-    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/cli" includes="**/*Configuration.xml" style="${admin.rules.dir}/cliMOProfile.xsl">
+    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/cli" includes="**/*Configuration.xml"
+          excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/cliMOProfile.xsl">
       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
       <param name="base-dir" expression="${admin.defn.dir}" />
     </xslt>
 
     <!-- Generate I18N messages for core administration components. -->
-    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/messages" includes="**/*Configuration.xml" style="${admin.rules.dir}/messagesMO.xsl">
+    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/messages" includes="**/*Configuration.xml"
+          excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/messagesMO.xsl">
       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
       <param name="base-dir" expression="${admin.defn.dir}" />
     </xslt>
@@ -2209,7 +2277,8 @@
     <!-- Generate manifest file for core administration components. -->
     <tempfile property="admin.temp.dir" destDir="${build.dir}" prefix="tmp" />
     <mkdir dir="${admin.temp.dir}" />
-    <xslt basedir="${admin.defn.dir}" destdir="${admin.temp.dir}" extension=".manifest" includes="**/*Configuration.xml" style="${admin.rules.dir}/manifestMO.xsl"/>
+    <xslt basedir="${admin.defn.dir}" destdir="${admin.temp.dir}" extension=".manifest" includes="**/*Configuration.xml"
+          excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/manifestMO.xsl"/>
     <concat destfile="${classes.dir}/admin/core.manifest">
       <fileset dir="${admin.temp.dir}" includes="**/*.manifest" />
     </concat>
@@ -2437,4 +2506,26 @@
 
   <import file="build-svr4.xml"/>
 
+  <!-- Copy NDB Backend dependencies to build lib directory -->
+  <target name="copyndbdeps" if="ismysqldirpresent"
+    description="Internal target to copy NDB Backend dependencies">
+    <!-- Blanket copy of all jars found at mysql.lib location -->
+    <copy todir="${build.lib.dir}">
+      <fileset file="${mysql.lib.dir}/*.jar" />
+    </copy>
+  </target>
+
+  <!-- Package NDB Backend with Directory Server distribution -->
+  <target name="packagendb" if="ismysqldirpresent"
+    description="Internal target to package NDB Backend dependencies">
+    <echo message="Packaging with NDB Backend dependencies"/>
+    <copy todir="${pdir}/lib">
+      <fileset file="${mysql.lib.dir}/*.jar" />
+    </copy>
+    <!-- Concat NDB Backend config entry to default config -->
+    <concat destfile="${pdir}/config/config.ldif" append="true">
+        <filelist dir="${config.dir}" files="ndbconfig.ldif"/>
+    </concat>
+  </target>
+
 </project>

--
Gitblit v1.10.0