Home | History | Annotate | Download | only in opends
      1 <!--
      2  ! CDDL HEADER START
      3  !
      4  ! The contents of this file are subject to the terms of the
      5  ! Common Development and Distribution License, Version 1.0 only
      6  ! (the "License").  You may not use this file except in compliance
      7  ! with the License.
      8  !
      9  ! You can obtain a copy of the license at
     10  ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
     11  ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
     12  ! See the License for the specific language governing permissions
     13  ! and limitations under the License.
     14  !
     15  ! When distributing Covered Code, include this CDDL HEADER in each
     16  ! file and include the License file at
     17  ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
     18  ! add the following below this CDDL HEADER, with the fields enclosed
     19  ! by brackets "[]" replaced with your own identifying information:
     20  !      Portions Copyright [yyyy] [name of copyright owner]
     21  !
     22  ! CDDL HEADER END
     23  !
     24  !
     25  !      Copyright 2006-2010 Sun Microsystems, Inc.
     26  ! -->
     27 
     28 <project name="Directory Server" basedir="." default="package">
     29   <description>
     30     This is the build script for the OpenDS Directory Server.  See the BUILDING
     31     file in this directory for build instructions.
     32   </description>
     33 
     34   <!-- Build JVM properties -->
     35   <property name="MEM" value="512M"/>
     36 
     37   <!-- Build OpenDMK properties -->
     38   <property file="build.properties"/>
     39 
     40   <!-- General server-wide properties                                 -->
     41   <property name="src.dir"          location="src/server"              />
     42   <property name="build.dir"        location="build"                   />
     43   <property name="classes.dir"      location="${build.dir}/classes"    />
     44   <property name="build.lib.dir"    location="${build.dir}/lib"        />
     45   <property name="lib.dir"          location="lib"                     />
     46   <property name="ext.dir"          location="ext"                     />
     47   <property name="package.dir"      location="${build.dir}/package"    />
     48   <property name="javadoc.dir"      location="${build.dir}/javadoc"    />
     49   <property name="docgen.dir"       location="${build.dir}/docgen"    />
     50   <property name="configguide.dir"  location="${docgen.dir}/configuration_guide"    />
     51   <property name="configguideldap.dir"  location="${docgen.dir}/configuration_guide_with_ldap_mapping"    />
     52   <property name="wiki.home"        value="https://www.opends.org/wiki"/>
     53   <property name="resource.dir"     location="resource"                />
     54   <property name="scripts.dir"      location="${resource.dir}/bin"     />
     55   <property name="config.dir"       location="${resource.dir}/config"  />
     56   <property name="build.debuglevel"    value="lines,vars,source"       />
     57 
     58   <!-- Properties for build tools                                   -->
     59   <property name="buildtools.src.dir" location="src/build-tools" />
     60   <property name="buildtools.classes.dir" location="${build.dir}/build-tools/classes" />
     61 
     62   <!-- Properties for use in unit testing.                           -->
     63   <property name="unittest.testng.dir" location="tests/unit-tests-testng"/>
     64   <property name="unittest.testng.src.dir"
     65     location="${unittest.testng.dir}/src/server"/>
     66 
     67   <property name="unittest.classes.dir"
     68        location="${build.dir}/unit-tests/classes" />
     69   <property name="unittest.report.dir"
     70        location="${build.dir}/unit-tests/report"/>
     71   <property name="unittest.resource.dir"
     72        location="${build.dir}/unit-tests/resource"/>
     73 
     74   <!-- Properties for use with the DSML component.                      -->
     75   <property name="dsml.dir"         location="resource/dsml"             />
     76   <property name="dsml.src.dir"     location="src/dsml"                  />
     77   <property name="dsml.lib.dir"     location="${dsml.dir}/lib"           />
     78   <property name="dsml.gen.dir"     location="${build.dir}/dsml/gen"     />
     79   <property name="dsml.classes.dir" location="${build.dir}/dsml/classes" />
     80 
     81   <!-- Properties for use with the Quick Setup.                      -->
     82   <property name="quicksetup.src.dir" location="src/quicksetup"       />
     83   <property name="quicksetup.classes.dir"
     84             location="${build.dir}/quicksetup/classes"                />
     85   <property name="quicksetup.globalcompile.classes.dir"
     86             location="${classes.dir}/org/opends/quicksetup" />
     87   <property name="ads.src.dir" location="src/ads"       />
     88   <property name="ads.classes.dir" location="${classes.dir}/org/opends/admin/ads"/>
     89 
     90   <!-- Properties for use with the GUI Tools that go in OpenDS jar.                      -->
     91   <property name="guitools.src.dir" location="src/guitools"       />
     92 
     93   <!-- Properties for coverage diff reports                        -->
     94   <property name="cvgdiff.dir" location="build/diff"                />
     95   <property name="cvgdiff.report.dir"
     96             location="${cvgdiff.dir}/report"                        />
     97 
     98   <!-- Properties for code coverage testing.                            -->
     99   <property name="coverage.dir"         location="build/coverage"            />
    100   <property name="coverage.report.dir"
    101             location="${coverage.dir}/reports/unit"                          />
    102   <property name="coverage.instr.dir"
    103             location="${coverage.dir}/instrumentedcode"                      />
    104   <property name="coverage.data.dir"
    105             location="${coverage.dir}/gathereddata"                          />
    106 
    107   <!-- Properties for the EMMA code coverage tool.                 -->
    108   <property name="emma.dir" location="${ext.dir}/emma/lib"          />
    109 
    110   <!-- Properties for the AspectJ tools                            -->
    111   <property name="aj.dir" location="${ext.dir}/aspectj"             />
    112   <property name="aj.lib.dir" location="${aj.dir}/lib"              />
    113 
    114   <!-- Properties for the TestNG unit testing  tool.               -->
    115   <property name="testng.dir" location="${ext.dir}/testng"          />
    116   <property name="testng.lib.dir" location="${testng.dir}/lib"      />
    117 
    118   <!-- Properties for the ANT build tool.                          -->
    119   <property name="ant.dir" location="${ext.dir}/ant"                />
    120   <property name="ant.lib.dir" location="${ant.dir}/lib"            />
    121 
    122   <!-- Properties for the checkstyle tool.                           -->
    123   <property name="checkstyle.dir"  location="${ext.dir}/checkstyle"   />
    124   <property name="checkstyle.cache.dir"  location=".checkstyle-cache" />
    125 
    126   <!-- Properties for the SVNKit tool.                         -->
    127   <property name="svnkit.dir"  location="${ext.dir}/svnkit" />
    128 
    129   <!-- Properties for Directory Server version information.              -->
    130   <property name="dynconstants.file"
    131        location="${src.dir}/org/opends/server/util/DynamicConstants.java" />
    132   <property name="dynconstants.stubfile"
    133         location="${resource.dir}/DynamicConstants.java.stubs" />
    134 
    135 
    136   <property file="PRODUCT"                                                />
    137 
    138   <!-- Properties for administration framework code generation. -->
    139   <property name="admin.defn.dir"  location="src/admin/defn" />
    140   <property name="admin.src.dir"   location="src/admin/generated" />
    141   <property name="admin.rules.dir" location="resource/admin" />
    142   <property name="configguide.resource.dir" location="resource/admin/config-guide" />
    143 
    144   <!-- Properties for generating messages. -->
    145   <property name="msg.dir"         location="src/messages" />
    146   <property name="msg.prop.dir"    location="${msg.dir}/messages" />
    147   <property name="msg.javagen.dir" location="${msg.dir}/generated" />
    148   <property name="msg.package.dir" location="${classes.dir}/messages" />
    149   <property name="msg.src.dir"     location="${msg.dir}/src" />
    150 
    151   <!-- Properties for L10n for generating messages. -->
    152   <property name="msgl10n.prop.dir"  location="src/admin/messages/" />
    153 
    154 
    155   <!-- Properties for SNMP extension. -->
    156   <property name="snmp.mib.dir"      location="src/snmp/resource/mib" />
    157   <property name="snmp.security.dir" location="src/snmp/resource/security" />
    158   <property name="snmp.config.dir"   location="src/snmp/resource/config" />
    159   <property name="snmp.resource.dir" location="src/snmp/resource" />
    160   <property name="snmp.gen.dir"      location="src/snmp/generated" />
    161   <property name="snmp.src.dir"      location="src/snmp/src" />
    162 
    163   <property name="snmp.classes.dir"
    164             location="${classes.dir}/org/opends/server/snmp" />
    165 
    166   <!-- Condition properties for NDB Backend build. -->
    167   <condition property="ismysqldirpresent">
    168     <available file="${mysql.lib.dir}" type="dir" />
    169   </condition>
    170   <condition property="exclude.ndb.xml" value=""
    171              else="**/Ndb*">
    172              <available file="${mysql.lib.dir}" type="dir" />
    173   </condition>
    174   <condition property="exclude.ndb.src" value=""
    175              else="org/opends/server/backends/ndb/**,
    176                    org/opends/server/workflowelement/ndb/**">
    177              <available file="${mysql.lib.dir}" type="dir" />
    178   </condition>
    179 
    180   <!-- Property for excluding NDB Backend config. -->
    181   <property name="exclude.ndb.config" value="ndbconfig.ldif" />
    182 
    183   <!-- Create a package bundle containing the DSML library. -->
    184   <target name="dsml" depends="predsml,package"
    185        description="Build a Directory Server package bundle with DSML.">
    186   </target>
    187 
    188 
    189 
    190 
    191   <!-- The build target that should be used before committing code. -->
    192   <target name="precommit" depends="clean,dynamicconstants,checkstyle,checkprecommit,dsml,testwithcoverage"
    193        description="Perform all processing needed before committing code.">
    194   </target>
    195 
    196 
    197 
    198 
    199   <!-- The build target that should be used for nightly builds. -->
    200   <target name="nightly"
    201        depends="nightlybuild,nightlytests"
    202        description="Perform all processing needed for nightly builds.">
    203   </target>
    204 
    205   <!-- The build target that should be used for build part of nightly builds. -->
    206   <target name="nightlybuild"
    207        depends="checkstyle,dsml,srczip,javadoc,docgen"
    208        description="Perform all processing related to build  for nightly builds.">
    209   </target>
    210 
    211   <!-- The build target that should be used for test part of nightly builds. -->
    212   <target name="nightlytests"
    213        depends="coverage,testallwithcoverage"
    214        description="Perform all processing related to unit tests for nightly builds.">
    215   </target>
    216 
    217 
    218   <!-- The build target that should be used for weekly builds. -->
    219   <target name="weekly" depends="nightly"
    220        description="Perform all processing needed for weekly builds.">
    221   </target>
    222 
    223 
    224 
    225 
    226   <!-- The build target that should be used to build everything. -->
    227   <target name="all"
    228        depends="checkstyle,clean,checkprecommit,dsml,srczip,javadoc,docgen,testallwithcoverage"
    229        description="Build using all defined targets.">
    230   </target>
    231 
    232 
    233   <target name="generatemessages" depends="buildtools">
    234     <typedef name="genmsg"
    235              classname="org.opends.build.tools.GenerateMessageFile" >
    236       <classpath>
    237         <fileset dir="${build.dir}/build-tools">
    238           <include name="*.jar" />
    239         </fileset>
    240       </classpath>
    241     </typedef>
    242     <!--
    243     <genmsg sourceProps="${msg.prop.dir}/xxx.properties"
    244             destJava="${msg.javagen.dir}/org/opends/messages/XxxMessages.java">
    245     </genmsg>
    246     -->
    247     <genmsg sourceProps="${msg.prop.dir}/access_control.properties"
    248             destJava="${msg.javagen.dir}/org/opends/messages/AccessControlMessages.java">
    249     </genmsg>
    250     <genmsg sourceProps="${msg.prop.dir}/admin.properties"
    251             destJava="${msg.javagen.dir}/org/opends/messages/AdminMessages.java">
    252     </genmsg>
    253     <genmsg sourceProps="${msg.prop.dir}/admin_tool.properties"
    254             destJava="${msg.javagen.dir}/org/opends/messages/AdminToolMessages.java">
    255     </genmsg>
    256     <genmsg sourceProps="${msg.prop.dir}/backend.properties"
    257             destJava="${msg.javagen.dir}/org/opends/messages/BackendMessages.java">
    258     </genmsg>
    259     <genmsg sourceProps="${msg.prop.dir}/config.properties"
    260             destJava="${msg.javagen.dir}/org/opends/messages/ConfigMessages.java">
    261     </genmsg>
    262     <genmsg sourceProps="${msg.prop.dir}/core.properties"
    263             destJava="${msg.javagen.dir}/org/opends/messages/CoreMessages.java">
    264     </genmsg>
    265     <genmsg sourceProps="${msg.prop.dir}/dsconfig.properties"
    266             destJava="${msg.javagen.dir}/org/opends/messages/DSConfigMessages.java">
    267     </genmsg>
    268     <genmsg sourceProps="${msg.prop.dir}/extension.properties"
    269             destJava="${msg.javagen.dir}/org/opends/messages/ExtensionMessages.java">
    270     </genmsg>
    271     <genmsg sourceProps="${msg.prop.dir}/jeb.properties"
    272             destJava="${msg.javagen.dir}/org/opends/messages/JebMessages.java">
    273     </genmsg>
    274     <genmsg sourceProps="${msg.prop.dir}/log.properties"
    275             destJava="${msg.javagen.dir}/org/opends/messages/LoggerMessages.java">
    276     </genmsg>
    277     <genmsg sourceProps="${msg.prop.dir}/plugin.properties"
    278             destJava="${msg.javagen.dir}/org/opends/messages/PluginMessages.java">
    279     </genmsg>
    280     <genmsg sourceProps="${msg.prop.dir}/protocol.properties"
    281             destJava="${msg.javagen.dir}/org/opends/messages/ProtocolMessages.java">
    282     </genmsg>
    283     <genmsg sourceProps="${msg.prop.dir}/quicksetup.properties"
    284             destJava="${msg.javagen.dir}/org/opends/messages/QuickSetupMessages.java">
    285     </genmsg>
    286     <genmsg sourceProps="${msg.prop.dir}/replication.properties"
    287             destJava="${msg.javagen.dir}/org/opends/messages/ReplicationMessages.java">
    288     </genmsg>
    289     <genmsg sourceProps="${msg.prop.dir}/schema.properties"
    290             destJava="${msg.javagen.dir}/org/opends/messages/SchemaMessages.java">
    291     </genmsg>
    292     <genmsg sourceProps="${msg.prop.dir}/task.properties"
    293             destJava="${msg.javagen.dir}/org/opends/messages/TaskMessages.java">
    294     </genmsg>
    295     <genmsg sourceProps="${msg.prop.dir}/tools.properties"
    296             destJava="${msg.javagen.dir}/org/opends/messages/ToolMessages.java">
    297     </genmsg>
    298     <genmsg sourceProps="${msg.prop.dir}/utility.properties"
    299             destJava="${msg.javagen.dir}/org/opends/messages/UtilityMessages.java">
    300     </genmsg>
    301     <genmsg sourceProps="${msg.prop.dir}/version.properties"
    302             destJava="${msg.javagen.dir}/org/opends/messages/VersionMessages.java">
    303     </genmsg>
    304     <genmsg sourceProps="${msg.prop.dir}/runtime_information.properties"
    305             destJava="${msg.javagen.dir}/org/opends/messages/RuntimeMessages.java">
    306     </genmsg>
    307     <genmsg sourceProps="${msg.prop.dir}/servicetag.properties"
    308             destJava="${msg.javagen.dir}/org/opends/messages/ServiceTagMessages.java">
    309     </genmsg>
    310 
    311     <antcall target="generatendbmessages" />
    312 
    313   </target>
    314 
    315   <!-- Generate NDB Backend messages if needed -->
    316   <target name="generatendbmessages" if="ismysqldirpresent">
    317     <typedef name="genmsg"
    318              classname="org.opends.build.tools.GenerateMessageFile" >
    319       <classpath>
    320         <fileset dir="${build.dir}/build-tools">
    321           <include name="*.jar" />
    322         </fileset>
    323       </classpath>
    324     </typedef>
    325     <genmsg sourceProps="${msg.prop.dir}/ndb.properties"
    326             destJava="${msg.javagen.dir}/org/opends/messages/NdbMessages.java">
    327     </genmsg>
    328   </target>
    329 
    330   <!-- Remove all dynamically-generated build files. -->
    331   <target name="clean" depends="init,cleanadmin,cleanmessages,cleansnmp"
    332        description="Clean up any files generated during the build process">
    333 
    334     <delete dir="${build.dir}" />
    335     <delete file="${dynconstants.file}"  />
    336     <fileset dir="${lib.dir}">
    337       <include name="*.jar" />
    338     </fileset>
    339   </target>
    340 
    341 
    342 
    343   <!-- Perform common initialization common to several targets after cleaning out the previous build environment. -->
    344   <target name="cleaninit" depends="clean,init">
    345   </target>
    346 
    347 
    348 
    349   <!-- Set the property valid.java.version if the java version is valid. -->
    350   <target name="validjavaversion"
    351           depends="buildtools" >
    352 
    353     <property name="min.java.version" value="1.5.0_08" />
    354 
    355     <typedef name="validjavaversion"
    356              classname="org.opends.build.tools.ValidJavaVersion" >
    357       <classpath>
    358         <fileset dir="${build.dir}/build-tools">
    359           <include name="*.jar" />
    360         </fileset>
    361       </classpath>
    362     </typedef>
    363 
    364     <condition property="valid.java.version">
    365       <validjavaversion minVersion="${min.java.version}" />
    366     </condition>
    367 
    368   </target>
    369 
    370   <!-- Warn if the build java version is too old. -->
    371   <target name="checkjavaversion"
    372           depends="validjavaversion"
    373           unless="valid.java.version" >
    374     <echo level="warning"
    375           message="WARNING: Java version ${java.version} is too old."/>
    376     <echo level="warning"
    377           message="Java version ${min.java.version} or later is required to build ${SHORT_NAME}."/>
    378   </target>
    379 
    380   <!-- Perform common initialization common to several targets. -->
    381   <target name="init">
    382 
    383     <path id="run.classpath">
    384       <pathelement location="${classes.dir}" />
    385     </path>
    386 
    387     <path id="quickSetup.classpath">
    388        <pathelement location="${quicksetup.classes.dir}" />
    389     </path>
    390 
    391     <tstamp>
    392       <format property="timestamp" pattern="yyyyMMddHHmmss'Z'"
    393            timezone="UTC" />
    394     </tstamp>
    395 
    396     <condition property="DEBUG_BUILD" value="false">
    397       <not>
    398         <isset property="DEBUG_BUILD" />
    399       </not>
    400     </condition>
    401 
    402 
    403     <!--
    404      ! For some reason, some Apple VMs put quotes around the value of the
    405      ! java.vm.vendor property, which wreaks havoc with DynamicConstants.  This
    406      ! pair of conditions attempts to work around that by detecting the quote
    407      ! and surrounding the value with backslashes.
    408      ! -->
    409     <condition property="JVM_VENDOR" value="Apple Computer">
    410       <contains string="${java.vm.vendor}" substring="Apple Computer"
    411            casesensitive="false" />
    412     </condition>
    413 
    414     <condition property="JVM_VENDOR" value="${java.vm.vendor}">
    415       <not>
    416         <isset property="JVM_VENDOR" />
    417       </not>
    418     </condition>
    419 
    420     <condition property="isopendmkpresent">
    421      <or>
    422      <and>
    423        <available file="${opendmk.lib.dir}/jdmkrt.jar"/>
    424        <available file="${opendmk.lib.dir}/jdmktk.jar"/>
    425      </and>
    426      <and>
    427        <available file="${ext.dir}/jdmkrt.jar"/>
    428        <available file="${ext.dir}/jdmktk.jar"/>
    429      </and>
    430      </or>
    431     </condition>
    432 
    433     <condition property="isadmingendirpresent">
    434       <available file="${admin.src.dir}" type="dir" />
    435     </condition>
    436 
    437     <condition property="ismsggendirpresent">
    438       <available file="${msg.javagen.dir}" type="dir" />
    439     </condition>
    440 
    441   </target>
    442 
    443 
    444 
    445 
    446   <!-- Build the DynamicConstants.java file and any of its dependencies. -->
    447   <target name="dynamicconstants" depends="init,buildtools">
    448     <!-- Get the revision number of the current Subversion workspace -->
    449     <taskdef name="getsvnrevision"
    450              classname="org.opends.build.tools.GetSubversionRevision">
    451       <classpath>
    452         <fileset dir="${build.dir}/build-tools">
    453           <include name="*.jar" />
    454         </fileset>
    455         <fileset dir="${svnkit.dir}">
    456           <include name="*.jar" />
    457         </fileset>
    458       </classpath>
    459     </taskdef>
    460 
    461     <getsvnrevision property="REVISION_NUMBER" />
    462 
    463     <!-- Get the url repo of the current Subversion workspace -->
    464     <taskdef name="getsvnurlrepo"
    465              classname="org.opends.build.tools.GetSubversionUrlRepo">
    466       <classpath>
    467         <fileset dir="${build.dir}/build-tools">
    468           <include name="*.jar" />
    469         </fileset>
    470         <fileset dir="${svnkit.dir}">
    471           <include name="*.jar" />
    472         </fileset>
    473       </classpath>
    474     </taskdef>
    475 
    476     <getsvnurlrepo property="URL_REPOSITORY" />
    477 
    478 
    479     <!-- Construct the version number string -->
    480     <taskdef name="getversionnumber"
    481              classname="org.opends.build.tools.CreateVersionString">
    482       <classpath>
    483         <fileset dir="${build.dir}/build-tools">
    484           <include name="*.jar" />
    485         </fileset>
    486       </classpath>
    487     </taskdef>
    488 
    489     <getversionnumber property="VERSION_NUMBER_STRING" />
    490 
    491 
    492     <!-- Generate the DynamicConstants.java file.
    493       Be warned that the .stubs file references the following properties
    494       PRODUCT_NAME, SHORT_NAME, MAJOR_VERSION, MINOR_VERSION, POINT_VERSION,
    495       VERSION_QUALIFIER, FIX_IDS, timestamp, user.name, java.version,
    496       java.vendor, java.vm.version, JVM_VENDOR, DEBUG_BUILD, REVISION_NUMBER,URL_REPOSITORY,
    497       VERSION_NUMBER_STRING
    498       If you change the name of any of those properties in this build.xml
    499       you'll need to reflect the same change in the .stubs file
    500     -->
    501     <condition property="BUILD_NUMBER" value="-1">
    502       <not>
    503         <isset property="BUILD_NUMBER" />
    504       </not>
    505     </condition>
    506 
    507     <copy file="${dynconstants.stubfile}"
    508           tofile="${dynconstants.file}"
    509           overwrite="true"                 >
    510       <filterchain>
    511         <expandproperties/>
    512       </filterchain>
    513     </copy>
    514   </target>
    515 
    516 
    517 
    518 
    519   <!-- Check modified files to see if any svn:eol-style or copyright updates
    520        are needed. -->
    521   <target name="checkprecommit" depends="buildtools"
    522        description="Ensure updated files eol-style and copyright info">
    523     <taskdef name="checkprecommit"
    524              classname="org.opends.build.tools.CheckPrecommit">
    525       <classpath>
    526         <fileset dir="${build.dir}/build-tools">
    527           <include name="*.jar" />
    528         </fileset>
    529         <fileset dir="${svnkit.dir}">
    530           <include name="*.jar" />
    531         </fileset>
    532       </classpath>
    533     </taskdef>
    534 
    535     <checkprecommit />
    536   </target>
    537 
    538 
    539 
    540   <!-- Ensure that the source code meets basic style requirements. -->
    541   <target name="checkstyle" description="Perform basic source style checks">
    542   <antcall target="displayjavaversion"/>
    543     <mkdir dir="${checkstyle.cache.dir}" />
    544 
    545     <taskdef resource="checkstyletask.properties"
    546          classpath="${checkstyle.dir}/checkstyle-all-4.1.jar" />
    547 
    548     <checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
    549          failOnViolation="true">
    550       <fileset dir="${src.dir}">
    551         <include name="**/*.java"/>
    552         <exclude name="**/PublicAPI.java" />
    553       </fileset>
    554       <formatter type="plain" />
    555     </checkstyle>
    556 
    557     <checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
    558          failOnViolation="true">
    559       <fileset dir="${msg.src.dir}" includes="**/*.java" />
    560       <formatter type="plain" />
    561     </checkstyle>
    562 
    563     <checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
    564          failOnViolation="true">
    565       <fileset dir="${ads.src.dir}" includes="**/*.java" />
    566       <formatter type="plain" />
    567     </checkstyle>
    568 
    569     <checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
    570          failOnViolation="true">
    571       <fileset dir="${snmp.src.dir}" includes="**/*.java" />
    572       <formatter type="plain" />
    573     </checkstyle>
    574 
    575     <checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
    576          failOnViolation="true">
    577       <fileset dir="${quicksetup.src.dir}" includes="**/*.java" />
    578       <formatter type="plain" />
    579     </checkstyle>
    580 
    581     <checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
    582          failOnViolation="true">
    583       <fileset dir="${guitools.src.dir}" includes="**/*.java" />
    584       <formatter type="plain" />
    585     </checkstyle>
    586 
    587     <checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
    588          failOnViolation="true">
    589       <fileset dir="${dsml.src.dir}" includes="**/*.java" />
    590       <formatter type="plain" />
    591     </checkstyle>
    592 
    593     <checkstyle config="${checkstyle.dir}/opends-doctarget-checkstyle.xml"
    594          failOnViolation="true">
    595       <fileset dir="${src.dir}/org/opends/server/api" includes="**/*.java" />
    596       <fileset dir="${src.dir}/org/opends/server/protocols/internal"
    597            includes="**/*.java" />
    598       <fileset dir="${src.dir}/org/opends/server/types"
    599            includes="**/*.java" excludes="**/PublicAPI.java"/>
    600       <formatter type="plain" />
    601     </checkstyle>
    602 
    603     <checkstyle config="${checkstyle.dir}/opends-unittest-checkstyle.xml"
    604          failOnViolation="true">
    605       <fileset dir="${unittest.testng.src.dir}" includes="**/*.java" />
    606       <formatter type="plain" />
    607     </checkstyle>
    608   </target>
    609 
    610 
    611 
    612   <!-- Compile the Directory Server source files. -->
    613   <target name="cleancompile"
    614        depends="cleaninit,compilequicksetup"
    615        description="Recompile the Directory Server source files.">
    616   </target>
    617 
    618   <!-- Compile the Directory Server source files. -->
    619   <target name="compile"
    620        depends="init,checkjavaversion,dynamicconstants,generatemessages,compileadmin"
    621        description="Compile the Directory Server source files.">
    622     <mkdir dir="${classes.dir}" />
    623     <mkdir dir="${build.lib.dir}" />
    624 
    625     <!-- Copy NDB Backend dependencies if necessary -->
    626     <antcall target="copyndbdeps" />
    627 
    628     <javac srcdir="${src.dir}:${admin.src.dir}:${msg.src.dir}:${msg.javagen.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
    629          destdir="${classes.dir}" excludes="${exclude.ndb.src}" debug="on" debuglevel="${build.debuglevel}"
    630          source="1.5" target="1.5" deprecation="true" fork="true"
    631          memoryInitialSize="${MEM}" memoryMaximumSize="${MEM}">
    632       <compilerarg value="-Xlint:all" />
    633 
    634       <classpath>
    635         <fileset dir="${lib.dir}">
    636           <include name="*.jar" />
    637         </fileset>
    638         <fileset dir="${build.dir}/build-tools">
    639           <include name="build-tools.jar" />
    640         </fileset>
    641         <fileset dir="${build.lib.dir}">
    642           <include name="*.jar" />
    643         </fileset>
    644       </classpath>
    645     </javac>
    646 
    647     <copy todir="${classes.dir}">
    648       <fileset dir="${src.dir}" includes="**/*.properties" />
    649       <fileset dir="${quicksetup.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
    650       <fileset dir="${guitools.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
    651     </copy>
    652   </target>
    653 
    654 
    655 
    656   <!-- Compile the Quick Setup source files. -->
    657   <target name="compilequicksetup" depends="buildtools,compile"
    658           description="Compile the Quick Setup source files.">
    659     <mkdir dir="${quicksetup.classes.dir}" />
    660     <javac srcdir="${ads.src.dir}" destdir="${quicksetup.classes.dir}"
    661          optimize="true" debug="on" debuglevel="lines,source" source="1.5"
    662          target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
    663          memoryMaximumSize="${MEM}">
    664       <compilerarg value="-Xlint:all" />
    665       <classpath>
    666         <fileset dir="${build.dir}/build-tools">
    667           <include name="build-tools.jar" />
    668         </fileset>
    669         <pathelement path="${classes.dir}"/>
    670       </classpath>
    671     </javac>
    672     <javac srcdir="${src.dir}:${msg.src.dir}:${msg.javagen.dir}" destdir="${quicksetup.classes.dir}"
    673                debug="on" debuglevel="${build.debuglevel}" source="1.5"
    674                target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
    675                memoryMaximumSize="${MEM}">
    676       <include name="**/org/opends/server/util/SetupUtils.java"/>
    677       <include name="**/org/opends/server/util/CertificateManager.java"/>
    678       <include name="**/org/opends/server/util/DynamicConstants.java"/>
    679       <include name="**/org/opends/server/types/OperatingSystem.java"/>
    680       <include name="**/org/opends/messages/Message.java"/>
    681     	<include name="**/org/opends/messages/MessageBuilder.java"/>
    682       <include name="**/org/opends/messages/MessageDescriptor.java"/>
    683       <include name="**/org/opends/messages/Severity.java"/>
    684       <include name="**/org/opends/messages/Category.java"/>
    685       <include name="**/org/opends/messages/QuickSetupMessages.java"/>
    686       <include name="**/org/opends/server/types/OpenDsException.java"/>
    687     <compilerarg value="-Xlint:all" />
    688     </javac>
    689     <javac srcdir="${quicksetup.src.dir}" destdir="${quicksetup.classes.dir}"
    690          debug="on" debuglevel="${build.debuglevel}" source="1.5"
    691          target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
    692          memoryMaximumSize="${MEM}">
    693       <compilerarg value="-Xlint:all" />
    694 
    695       <classpath>
    696         <fileset dir="${build.dir}/build-tools">
    697           <include name="build-tools.jar" />
    698         </fileset>
    699         <pathelement path="${classes.dir}"/>
    700       </classpath>
    701     </javac>
    702     <copy todir="${quicksetup.classes.dir}">
    703       <fileset dir="${quicksetup.src.dir}"
    704                includes="**/*.properties, **/*.gif, **/*.png" />
    705     </copy>
    706   	<mkdir dir="${quicksetup.classes.dir}/messages" />
    707   	<copy todir="${quicksetup.classes.dir}/messages">
    708   	   <fileset dir="${msg.prop.dir}"
    709   	          includes="**/quicksetup.properties" />
    710   	</copy>
    711 
    712   </target>
    713 
    714 
    715 
    716   <!-- copy the message properties files -->
    717   <target name="copymessages">
    718     <mkdir dir="${msg.package.dir}"/>
    719     <copy todir="${msg.package.dir}">
    720       <fileset dir="${msg.prop.dir}"/>
    721     </copy>
    722   </target>
    723 
    724   <!-- copy the l10n message properties files (for generated messages)-->
    725   <target name="copyl10nmessages">
    726     <copy todir="${build.dir}/classes/admin/messages/org/opends/server/admin/std/meta/">
    727     <fileset dir="${msgl10n.prop.dir}" includes="*_fr.properties,*_de.properties,*_es.properties,*_ja.properties,*_ko.properties,*_zh_CN.properties,*_zh_TW.properties,*_pl.properties,*_ca_ES.properties">
    728     </fileset>
    729     </copy>
    730   </target>
    731 
    732 
    733   <!--
    734    ! Rebuild the Directory Server without destroying any existing configuration
    735    ! or data.  It will only overwrite the libraries, classes, and scripts, and
    736    ! it will not re-package.  It will also not do a complete initialization, so
    737    ! DynamicConstants.java won't be regenerated.
    738    ! -->
    739   <target name="rebuild" depends="generatemessages"
    740        description="Rebuild the server without destroying config or data.">
    741 
    742     <!-- Construct the version number string -->
    743     <taskdef name="getversionnumber"
    744              classname="org.opends.build.tools.CreateVersionString">
    745       <classpath>
    746         <fileset dir="${build.dir}/build-tools">
    747           <include name="*.jar" />
    748         </fileset>
    749       </classpath>
    750     </taskdef>
    751 
    752     <getversionnumber property="VERSION_NUMBER_STRING" />
    753 
    754     <!-- Set properties needed to find the packaged files -->
    755     <property name="pdir"
    756          location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
    757 
    758     <!-- Clean up a minimal set of files/directories for the rebuild. -->
    759     <delete dir="${classes.dir}" />
    760     <delete file="${package.dir}/lib/${SHORT_NAME}.jar" />
    761     <delete file="${pdir}.zip" />
    762     <delete dir="${quicksetup.classes.dir}" />
    763     <delete file="${package.dir}/lib/quicksetup.jar" />
    764 
    765     <!-- Regenerate configuration files if necessary -->
    766     <antcall target="compileadmin" />
    767 
    768     <!-- Copy NDB Backend dependencies if necessary -->
    769     <antcall target="copyndbdeps" />
    770 
    771     <!-- Recreate the classes directory and recompile into it. -->
    772     <mkdir dir="${classes.dir}" />
    773     <javac srcdir="${src.dir}:${msg.src.dir}:${msg.javagen.dir}:${admin.src.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
    774          destdir="${classes.dir}" excludes="${exclude.ndb.src}"
    775          debug="on" debuglevel="${build.debuglevel}" source="1.5" target="1.5"
    776          deprecation="true" fork="true" memoryInitialSize="${MEM}"
    777          memoryMaximumSize="${MEM}">
    778       <compilerarg value="-Xlint:all" />
    779 
    780       <classpath>
    781         <fileset dir="${lib.dir}">
    782           <include name="*.jar" />
    783         </fileset>
    784         <fileset dir="${build.dir}/build-tools">
    785           <include name="build-tools.jar" />
    786         </fileset>
    787         <fileset dir="${build.lib.dir}">
    788           <include name="*.jar" />
    789         </fileset>
    790       </classpath>
    791     </javac>
    792 
    793     <copy todir="${classes.dir}">
    794       <fileset dir="${src.dir}" includes="**/*.properties" />
    795       <fileset dir="${quicksetup.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
    796       <fileset dir="${guitools.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
    797     </copy>
    798 
    799     <!-- copy the message properties files -->
    800     <antcall target="copymessages" />
    801 
    802 
    803     <!-- copy the message descriptor registry file -->
    804     <copy todir="${classes.dir}/org/opends/messages"
    805           file="${msg.javagen.dir}/org/opends/messages/descriptors.reg" />
    806 
    807     <!-- Generate the OpenDS.jar file -->
    808     <jar jarfile="${pdir}/lib/${SHORT_NAME}.jar"
    809          basedir="${classes.dir}"
    810          excludes="${ads.classes.dir}, ${quicksetup.globalcompile.classes.dir}"
    811          compress="true" index="true" />
    812 
    813     <!-- Recreate the quicksetup classes directory and recompile into it. -->
    814     <mkdir dir="${quicksetup.classes.dir}" />
    815     <javac srcdir="${ads.src.dir}" destdir="${quicksetup.classes.dir}"
    816          optimize="true" debug="on" debuglevel="lines,source" source="1.5"
    817          target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
    818          memoryMaximumSize="${MEM}">
    819       <compilerarg value="-Xlint:all" />
    820       <classpath>
    821         <fileset dir="${build.dir}/build-tools">
    822           <include name="build-tools.jar" />
    823         </fileset>
    824         <pathelement path="${classes.dir}"/>
    825       </classpath>
    826     </javac>
    827     <javac srcdir="${src.dir}:${msg.src.dir}:${msg.javagen.dir}" destdir="${quicksetup.classes.dir}"
    828                        debug="on" debuglevel="${build.debuglevel}" source="1.5"
    829                        target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
    830                        memoryMaximumSize="${MEM}">
    831       <include name="**/org/opends/server/util/SetupUtils.java"/>
    832       <include name="**/org/opends/server/util/CertificateManager.java"/>
    833       <include name="**/org/opends/server/util/DynamicConstants.java"/>
    834       <include name="**/org/opends/server/types/OperatingSystem.java"/>
    835       <include name="**/org/opends/messages/Message.java"/>
    836       <include name="**/org/opends/messages/MessageBuilder.java"/>
    837       <include name="**/org/opends/messages/MessageDescriptor.java"/>
    838       <include name="**/org/opends/messages/Severity.java"/>
    839       <include name="**/org/opends/messages/Category.java"/>
    840       <include name="**/org/opends/messages/QuickSetupMessages.java"/>
    841       <include name="**/org/opends/server/types/OpenDsException.java"/>
    842       <compilerarg value="-Xlint:all" />
    843     </javac>
    844     <javac srcdir="${quicksetup.src.dir}" destdir="${quicksetup.classes.dir}"
    845         debug="on" debuglevel="${build.debuglevel}" source="1.5" target="1.5"
    846         deprecation="true" fork="true" memoryInitialSize="${MEM}"
    847         memoryMaximumSize="${MEM}">
    848       <compilerarg value="-Xlint:all" />
    849       <classpath>
    850         <fileset dir="${build.dir}/build-tools">
    851           <include name="build-tools.jar" />
    852         </fileset>
    853         <pathelement path="${classes.dir}"/>
    854       </classpath>
    855     </javac>
    856 
    857     <copy todir="${quicksetup.classes.dir}">
    858       <fileset dir="${quicksetup.src.dir}"
    859             includes="**/*.properties, **/*.gif, **/*.png"/>
    860     </copy>
    861 
    862     <!-- Generate the quicksetup.jar file -->
    863     <jar jarfile="${pdir}/lib/quicksetup.jar"
    864          basedir="${quicksetup.classes.dir}" compress="true" index="true" />
    865 
    866     <!-- Copy over external dependencies. -->
    867     <copy todir="${pdir}/lib">
    868       <fileset file="${build.lib.dir}/*.jar" />
    869     </copy>
    870 
    871     <!-- Regenerate example plugin. -->
    872     <antcall target="example-plugin" />
    873   </target>
    874 
    875 
    876   <!-- Generate the Configuration guides. -->
    877   <target name="docgen" depends="configguide,configguideldap"
    878        description="Generate the Configuration guides (1 standard + 1 with ldap mapping) (html).">
    879   </target>
    880 
    881   <!-- Generate the Standard Configuration guide. -->
    882   <target name="configguide" depends="compile,copymessages"
    883        description="Generate the Configuration guide (standard) (html).">
    884     <mkdir dir="${configguide.dir}" />
    885     <!-- copy the resource files -->
    886     <copy todir="${configguide.dir}">
    887           <fileset file="${configguide.resource.dir}/*" />
    888     </copy>
    889     <java fork="true" classname="org.opends.server.admin.doc.ConfigGuideGeneration" failonerror="true">
    890       <classpath>
    891         <fileset dir="${lib.dir}">
    892           <include name="*.jar" />
    893         </fileset>
    894         <dirset dir="${classes.dir}" />
    895       </classpath>
    896       <jvmarg value="-DGenerationDir=${configguide.dir}"/>
    897       <jvmarg value="-DOpendsWiki=${wiki.home}"/>
    898     </java>
    899   </target>
    900 
    901   <!-- Generate the Configuration guide with LDAP mapping. -->
    902   <target name="configguideldap" depends="compile,copymessages"
    903        description="Generate the Configuration guide (with LDAP mapping) (html).">
    904     <mkdir dir="${configguideldap.dir}" />
    905     <!-- copy the resource files -->
    906     <copy todir="${configguideldap.dir}">
    907           <fileset file="${configguide.resource.dir}/*" />
    908     </copy>
    909     <java fork="true" classname="org.opends.server.admin.doc.ConfigGuideGeneration" failonerror="true">
    910       <classpath>
    911         <fileset dir="${lib.dir}">
    912           <include name="*.jar" />
    913         </fileset>
    914         <dirset dir="${classes.dir}" />
    915       </classpath>
    916       <jvmarg value="-DGenerationDir=${configguideldap.dir}"/>
    917       <jvmarg value="-DOpendsWiki=${wiki.home}"/>
    918       <jvmarg value="-DLdapMapping"/>
    919     </java>
    920   </target>
    921 
    922   <!-- Populate the Directory Server package, but don't zip it up. -->
    923   <target name="prepackage" depends="cleancompile"
    924        description="Prepare the Directory Server package structure.">
    925     <property name="pdir"
    926          location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
    927 
    928     <mkdir dir="${pdir}"                                             />
    929     <mkdir dir="${pdir}/bak"                                         />
    930     <mkdir dir="${pdir}/bat"                                         />
    931     <mkdir dir="${pdir}/bin"                                         />
    932     <mkdir dir="${pdir}/classes"                                     />
    933     <mkdir dir="${pdir}/config"                                      />
    934     <mkdir dir="${pdir}/config/upgrade"                              />
    935     <mkdir dir="${pdir}/config/schema"                               />
    936     <mkdir dir="${pdir}/config/messages"                             />
    937     <mkdir dir="${pdir}/config/MakeLDIF"                             />
    938     <mkdir dir="${pdir}/config/snmp/security"                        />
    939     <mkdir dir="${pdir}/config/servicetag"                           />
    940     <mkdir dir="${pdir}/db"                                          />
    941     <mkdir dir="${pdir}/import-tmp"                                  />
    942     <mkdir dir="${pdir}/changelogDb"                                 />
    943     <mkdir dir="${pdir}/ldif"                                        />
    944     <mkdir dir="${pdir}/legal-notices"                               />
    945     <mkdir dir="${pdir}/lib"                                         />
    946     <mkdir dir="${pdir}/lib/extensions"                              />
    947     <mkdir dir="${pdir}/locks"                                       />
    948     <mkdir dir="${pdir}/logs"                                        />
    949     <mkdir dir="${pdir}/bin/ControlPanel.app"                         />
    950     <mkdir dir="${pdir}/bin/ControlPanel.app/Contents"                />
    951     <mkdir dir="${pdir}/bin/ControlPanel.app/Contents/MacOS"          />
    952     <mkdir dir="${pdir}/bin/ControlPanel.app/Contents/Resources"      />
    953     <mkdir dir="${pdir}/bin/ControlPanel.app/Contents/Resources/Java" />
    954     <mkdir dir="${pdir}/QuickSetup.app"                              />
    955     <mkdir dir="${pdir}/QuickSetup.app/Contents"                     />
    956     <mkdir dir="${pdir}/QuickSetup.app/Contents/MacOS"               />
    957     <mkdir dir="${pdir}/QuickSetup.app/Contents/Resources"           />
    958     <mkdir dir="${pdir}/QuickSetup.app/Contents/Resources/Java"      />
    959     <mkdir dir="${pdir}/Uninstall.app"                               />
    960     <mkdir dir="${pdir}/Uninstall.app/Contents"                      />
    961     <mkdir dir="${pdir}/Uninstall.app/Contents/MacOS"                />
    962     <mkdir dir="${pdir}/Uninstall.app/Contents/Resources"            />
    963     <mkdir dir="${pdir}/Uninstall.app/Contents/Resources/Java"       />
    964 
    965 
    966     <!-- copy the message properties files -->
    967     <antcall target="copymessages" />
    968 
    969     <!-- copy the l10n message properties files -->
    970     <antcall target="copyl10nmessages" />
    971 
    972 
    973     <!-- copy the message descriptor registry file -->
    974     <copy todir="${classes.dir}/org/opends/messages"
    975           file="${msg.javagen.dir}/org/opends/messages/descriptors.reg" />
    976 
    977     <jar jarfile="${pdir}/lib/${SHORT_NAME}.jar"
    978          basedir="${classes.dir}"
    979 	 excludes="${ads.classes.dir}, ${quicksetup.globalcompile.classes.dir}, org/opends/server/snmp/**,**/*_fr.properties,**/*_ja.properties,**/*_de.properties,**/*_es.properties,**/*_zh_TW.properties,**/*_zh_CN.properties,**/*_ko.properties,**/*_pl.properties,**/*_ca_ES.properties"
    980         compress="true" index="true" />
    981 
    982    <jar jarfile="${pdir}/lib/${SHORT_NAME}_fr.jar"
    983          basedir="${classes.dir}"
    984          includes="**/*_fr.properties"
    985          compress="true" index="true" />
    986 
    987     <jar jarfile="${pdir}/lib/${SHORT_NAME}_ja.jar"
    988          basedir="${classes.dir}"
    989          includes="**/*_ja.properties"
    990          compress="true" index="true" />
    991 
    992     <jar jarfile="${pdir}/lib/${SHORT_NAME}_de.jar"
    993          basedir="${classes.dir}"
    994          includes="**/*_de.properties"
    995          compress="true" index="true" />
    996 
    997     <jar jarfile="${pdir}/lib/${SHORT_NAME}_es.jar"
    998          basedir="${classes.dir}"
    999          includes="**/*_es.properties"
   1000          compress="true" index="true" />
   1001 
   1002     <jar jarfile="${pdir}/lib/${SHORT_NAME}_ko.jar"
   1003          basedir="${classes.dir}"
   1004          includes="**/*_ko.properties"
   1005          compress="true" index="true" />
   1006 
   1007     <jar jarfile="${pdir}/lib/${SHORT_NAME}_zh_CN.jar"
   1008          basedir="${classes.dir}"
   1009          includes="**/*_zh_CN.properties"
   1010          compress="true" index="true" />
   1011 
   1012     <jar jarfile="${pdir}/lib/${SHORT_NAME}_zh_TW.jar"
   1013          basedir="${classes.dir}"
   1014          includes="**/*_zh_TW.properties"
   1015          compress="true" index="true" />
   1016 
   1017      <jar jarfile="${pdir}/lib/${SHORT_NAME}_pl.jar"
   1018 	 basedir="${classes.dir}"
   1019 	 includes="**/*_pl.properties"
   1020 	 compress="true" index="true" />
   1021 
   1022      <jar jarfile="${pdir}/lib/${SHORT_NAME}_ca_ES.jar"
   1023          basedir="${classes.dir}"
   1024 	 includes="**/*_ca_ES.properties"
   1025 	 compress="true" index="true" />
   1026 
   1027     <jar jarfile="${pdir}/lib/quicksetup.jar"
   1028          basedir="${quicksetup.classes.dir}" compress="true" index="true" />
   1029 
   1030     <copy todir="${pdir}/lib">
   1031       <fileset file="${lib.dir}/*.jar" />
   1032     </copy>
   1033 
   1034     <copy todir="${pdir}/lib">
   1035       <fileset file="${lib.dir}/*.exe" />
   1036     </copy>
   1037 
   1038     <copy todir="${pdir}">
   1039       <fileset file="${resource.dir}/instance.loc" />
   1040     </copy>
   1041 
   1042     <antcall target="example-plugin" />
   1043 
   1044     <fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/bin" excludes="*.bat,_client-script.sh,_server-script.sh,_mixed-script.sh,_script-util.sh" eol="lf" />
   1045     <fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/lib" includes="_client-script.sh,_server-script.sh,_mixed-script.sh,_script-util.sh" eol="lf" />
   1046     <fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/bin" includes="README_WINDOWS.txt" eol="crlf" />
   1047     <fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/bat" excludes="_client-script.bat,_server-script.bat,_mixed-script.bat,_script-util.bat,setcp.bat" includes="*.bat" eol="crlf" />
   1048     <fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/lib" includes="_client-script.bat,_server-script.bat,_mixed-script.bat,_script-util.bat,setcp.bat" eol="crlf" />
   1049 
   1050     <copy todir="${pdir}/config">
   1051       <fileset file="${config.dir}/*" excludes="${exclude.ndb.config}" />
   1052     </copy>
   1053 
   1054     <antcall target="package-snmp" />
   1055 
   1056     <antcall target="packagendb" />
   1057 
   1058     <copy file="${pdir}/config/config.ldif"
   1059          tofile="${pdir}/config/upgrade/config.ldif.${REVISION_NUMBER}" />
   1060 
   1061     <!-- Create buildinfo files -->
   1062       <echo message="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}.${REVISION_NUMBER}"
   1063         file="${pdir}/config/buildinfo" />
   1064 
   1065     <taskdef name="concatschema"
   1066              classname="org.opends.build.tools.ConcatSchema">
   1067       <classpath>
   1068         <fileset dir="${build.dir}/build-tools">
   1069           <include name="*.jar" />
   1070         </fileset>
   1071       </classpath>
   1072     </taskdef>
   1073 
   1074     <concatschema schemaDirectory="${resource.dir}/schema"
   1075          toFile="${pdir}/config/upgrade/schema.ldif.${REVISION_NUMBER}" />
   1076 
   1077     <copy todir="${pdir}/config/schema">
   1078       <fileset dir="${resource.dir}/schema" />
   1079     </copy>
   1080 
   1081     <copy todir="${pdir}/config/servicetag">
   1082       <fileset dir="${resource.dir}/servicetag" />
   1083     </copy>
   1084 
   1085     <copy todir="${pdir}/config/messages">
   1086       <fileset dir="${resource.dir}/messages" />
   1087     </copy>
   1088 
   1089     <copy todir="${pdir}/config/MakeLDIF">
   1090       <fileset dir="${resource.dir}/MakeLDIF" />
   1091     </copy>
   1092 
   1093     <copy todir="${pdir}/legal-notices">
   1094       <fileset dir="${resource.dir}/legal-notices" />
   1095     </copy>
   1096 
   1097     <copy todir="${pdir}">
   1098       <fileset file="${resource.dir}/README" />
   1099     </copy>
   1100 
   1101     <copy todir="${pdir}">
   1102       <fileset file="${resource.dir}/install.html" />
   1103     </copy>
   1104 
   1105     <copy todir="${pdir}">
   1106       <fileset file="${resource.dir}/install.txt" />
   1107     </copy>
   1108 
   1109     <copy todir="${pdir}">
   1110       <fileset file="${resource.dir}/images/opends_logo.png" />
   1111     </copy>
   1112 
   1113     <fixcrlf srcDir="${resource.dir}" destDir="${pdir}" includes="setup,uninstall,upgrade"
   1114          eol="lf" />
   1115     <fixcrlf srcDir="${resource.dir}" destDir="${pdir}" includes="setup.bat,uninstall.bat,upgrade.bat"
   1116          eol="crlf" />
   1117 
   1118     <chmod file="${pdir}/setup" perm="755" />
   1119     <chmod file="${pdir}/uninstall" perm="755" />
   1120     <chmod file="${pdir}/upgrade" perm="755" />
   1121 
   1122     <copy todir="${pdir}/QuickSetup.app">
   1123       <fileset dir="${resource.dir}/mac/QuickSetup.app" />
   1124     </copy>
   1125     <chmod perm="755">
   1126       <fileset dir="${pdir}">
   1127         <include name="QuickSetup.app/Contents/MacOS/JavaApplicationStub" />
   1128       </fileset>
   1129     </chmod>
   1130     <copy todir="${pdir}/Uninstall.app">
   1131       <fileset dir="${resource.dir}/mac/Uninstall.app" />
   1132     </copy>
   1133     <chmod perm="755">
   1134       <fileset dir="${pdir}">
   1135         <include name="Uninstall.app/Contents/MacOS/JavaApplicationStub" />
   1136       </fileset>
   1137     </chmod>
   1138     <copy todir="${pdir}/bin/ControlPanel.app">
   1139       <fileset dir="${resource.dir}/mac/ControlPanel.app" />
   1140     </copy>
   1141     <chmod perm="755">
   1142       <fileset dir="${pdir}/bin">
   1143         <include name="ControlPanel.app/Contents/MacOS/JavaApplicationStub" />
   1144       </fileset>
   1145     </chmod>
   1146 
   1147     <chmod perm="755">
   1148       <fileset dir="${pdir}/bin">
   1149       </fileset>
   1150     </chmod>
   1151     <chmod file="${pdir}/lib/_client-script.sh" perm="755" />
   1152     <chmod file="${pdir}/lib/_server-script.sh" perm="755" />
   1153     <chmod file="${pdir}/lib/_mixed-script.sh" perm="755" />
   1154     <chmod file="${pdir}/lib/_script-util.sh" perm="755" />
   1155   </target>
   1156 
   1157 
   1158 
   1159 
   1160   <!-- Package the Directory Server for distribution. -->
   1161   <target name="package" depends="prepackage"
   1162        description="Package the Directory Server for distribution.">
   1163     <zip destfile="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}.zip">
   1164       <zipfileset dir="${package.dir}" includes="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
   1165            filemode="644" dirmode="700" />
   1166       <zipfileset dir="${package.dir}" includes="${SHORT_NAME}-${VERSION_NUMBER_STRING}/**/*"
   1167            excludes="${SHORT_NAME}-${VERSION_NUMBER_STRING}/bin/*,${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_client-script.sh,${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_script-util.sh,${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_server-script.sh,${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_mixed-script.sh,${SHORT_NAME}-${VERSION_NUMBER_STRING}/setup,${SHORT_NAME}-${VERSION_NUMBER_STRING}/uninstall,${SHORT_NAME}-${VERSION_NUMBER_STRING}/upgrade,${SHORT_NAME}-${VERSION_NUMBER_STRING}/QuickSetup.app/Contents/MacOS/JavaApplicationStub,${SHORT_NAME}-${VERSION_NUMBER_STRING}/Uninstall.app/Contents/MacOS/JavaApplicationStub,${SHORT_NAME}-${VERSION_NUMBER_STRING}/bin/ControlPanel.app/Contents/MacOS/JavaApplicationStub"
   1168            filemode="644" dirmode="755" />
   1169       <zipfileset dir="${package.dir}"
   1170            includes="${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_client-script.sh,${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_script-util.sh,${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_server-script.sh,${SHORT_NAME}-${VERSION_NUMBER_STRING}/lib/_mixed-script.sh"
   1171            filemode="755" dirmode="755" />
   1172       <zipfileset dir="${package.dir}" includes="${SHORT_NAME}-${VERSION_NUMBER_STRING}/bin/*"
   1173            excludes="${SHORT_NAME}-${VERSION_NUMBER_STRING}/bin/README_WINDOWS.txt"
   1174            filemode="755" dirmode="755" />
   1175       <zipfileset dir="${package.dir}" includes="${SHORT_NAME}-${VERSION_NUMBER_STRING}/bin/README_WINDOWS.txt"
   1176            filemode="644" dirmode="755" />
   1177       <zipfileset dir="${package.dir}" includes="${SHORT_NAME}-${VERSION_NUMBER_STRING}/setup,${SHORT_NAME}-${VERSION_NUMBER_STRING}/uninstall,${SHORT_NAME}-${VERSION_NUMBER_STRING}/upgrade,${SHORT_NAME}-${VERSION_NUMBER_STRING}/QuickSetup.app/Contents/MacOS/JavaApplicationStub,${SHORT_NAME}-${VERSION_NUMBER_STRING}/Uninstall.app/Contents/MacOS/JavaApplicationStub,${SHORT_NAME}-${VERSION_NUMBER_STRING}/bin/ControlPanel.app/Contents/MacOS/JavaApplicationStub"
   1178            filemode="755" dirmode="755" />
   1179     </zip>
   1180     <property name="package.built" value="true"/>
   1181 
   1182     <!-- print a time stamp in Unix 'date' format -->
   1183     <tstamp>
   1184       <format property="package.built.ts" pattern="EEE MMM dd HH:mm:ss zzz yyyy" />
   1185     </tstamp>
   1186     <echo message="Package Built: ${package.built.ts}"/>
   1187   </target>
   1188 
   1189   <!-- Package the Directory Server for the RPM distribution. -->
   1190   <target name="package-RPM"
   1191 	  	description="Package the Directory Server for RPM distribution.">
   1192     <taskdef name="getversionnumber"
   1193 		             classname="org.opends.build.tools.CreateVersionString">
   1194       <classpath>
   1195         <fileset dir="${build.dir}/build-tools">
   1196           <include name="*.jar" />
   1197         </fileset>
   1198       </classpath>
   1199     </taskdef>
   1200 
   1201     <getversionnumber property="VERSION_NUMBER_STRING" />
   1202 
   1203     <property name="prefix"    value="/opt/opends"/>
   1204     <property name="release"   value="0"/>
   1205     <taskdef name="genrpm"
   1206 		             classname="org.opends.build.tools.GenerateRpm">
   1207       <classpath>
   1208         <fileset dir="${build.dir}/build-tools">
   1209           <include name="*.jar" />
   1210         </fileset>
   1211       </classpath>
   1212     </taskdef>
   1213 
   1214     <mkdir dir="${build.dir}/rpm/noarch" />
   1215     <mkdir dir="${build.dir}/rpm/i486" />
   1216     <mkdir dir="${build.dir}/rpm/i586" />
   1217     <mkdir dir="${build.dir}/rpm/i686" />
   1218     <mkdir dir="${build.dir}/rpm/BUILD" />
   1219     <mkdir dir="${build.dir}/rpm/RPMS" />
   1220     <mkdir dir="${build.dir}/rpm/SOURCES/${prefix}" />
   1221     <mkdir dir="${build.dir}/rpm/i386" />
   1222     <mkdir dir="${build.dir}/rpm/SPECS" />
   1223     <mkdir dir="${build.dir}/rpm/SRPMS" />
   1224 
   1225     <genrpm
   1226     	topDir="${build.dir}/rpm"
   1227     	prefix="${prefix}"
   1228     	sourceDirName="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"
   1229     	specFileName="${build.dir}/rpm/SPECS/specFile"
   1230     	version="${VERSION_NUMBER_STRING}"
   1231     	release="${release}"
   1232 		  overwrite="true">
   1233     </genrpm>
   1234 
   1235     <rpm
   1236 			specfile="specFile"
   1237 			topdir="${build.dir}/rpm"
   1238       quiet="true"
   1239     />
   1240 
   1241     <copy todir="${package.dir}">
   1242       <fileset dir="${build.dir}/rpm/RPMS/noarch">
   1243         <include name="*.rpm" />
   1244       </fileset>
   1245     </copy>
   1246 
   1247     <delete dir="${build.dir}/rpm"/>
   1248   </target>
   1249 
   1250 
   1251 
   1252   <!-- Prepare the Directory Server DSML library. -->
   1253   <target name="predsml" depends="prepackage"
   1254        description="Prepare the Directory Server DSML library.">
   1255     <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
   1256       <classpath>
   1257         <fileset dir="${dsml.lib.dir}">
   1258           <include name="**/*.jar" />
   1259         </fileset>
   1260       </classpath>
   1261     </taskdef>
   1262 
   1263     <mkdir dir="${dsml.gen.dir}/org/opends/dsml/protocol" />
   1264     <xjc target="${dsml.gen.dir}" schema="${dsml.dir}/schema/DSMLv2.xsd"
   1265          removeOldOutput="yes" package="org.opends.dsml.protocol">
   1266       <produces dir="${dsml.gen.dir}/org/opends/dsml/protocol"
   1267            includes="* impl/*" />
   1268     </xjc>
   1269 
   1270     <mkdir dir="${dsml.classes.dir}" />
   1271 
   1272     <javac srcdir="${dsml.gen.dir}" destdir="${dsml.classes.dir}"
   1273          debug="on" debuglevel="${build.debuglevel}" source="1.5"
   1274          target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
   1275          memoryMaximumSize="${MEM}">
   1276       <compilerarg value="-Xlint:all" />
   1277       <compilerarg value="-Xlint:-path" />
   1278 
   1279       <classpath>
   1280         <fileset dir="${dsml.lib.dir}">
   1281           <include name="*.jar" />
   1282         </fileset>
   1283       </classpath>
   1284     </javac>
   1285 
   1286     <javac srcdir="${dsml.src.dir}" destdir="${dsml.classes.dir}"
   1287          debug="on" debuglevel="${build.debuglevel}" source="1.5"
   1288          target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
   1289          memoryMaximumSize="${MEM}">
   1290       <compilerarg value="-Xlint:all" />
   1291       <compilerarg value="-Xlint:-path" />
   1292 
   1293       <classpath>
   1294         <fileset dir="${dsml.lib.dir}">
   1295           <include name="*.jar" />
   1296         </fileset>
   1297 
   1298         <dirset dir="${classes.dir}" />
   1299       </classpath>
   1300     </javac>
   1301 
   1302      <mkdir dir="${dsml.classes.dir}/resources" />
   1303      <copy file="${dsml.dir}/schema/DSMLv2.xsd"
   1304            tofile="${dsml.classes.dir}/resources/DSMLv2.xsd"
   1305            overwrite="true"/>
   1306 
   1307     <war destfile="${classes.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}-DSML.war"
   1308          webxml="${dsml.dir}/webapp/web.xml">
   1309       <fileset file="${dsml.dir}/webapp/server.properties" />
   1310 
   1311       <webinf dir="${dsml.dir}/webapp" includes="**/*"
   1312            excludes="web.xml, **/*.jar, **/*.properties" />
   1313 
   1314       <classes dir="${dsml.classes.dir}" />
   1315 
   1316       <lib dir="${dsml.lib.dir}">
   1317         <include name="activation.jar" />
   1318         <include name="jaxb-api.jar" />
   1319         <include name="jaxb-impl.jar" />
   1320         <include name="jsr173_1.0_api.jar" />
   1321         <include name="saaj-1.3.jar" />
   1322         <include name="saaj-impl-1.3.jar" />
   1323       </lib>
   1324 
   1325       <lib dir="${pdir}/lib">
   1326         <include name="${SHORT_NAME}.jar" />
   1327         <include name="${SHORT_NAME}_fr.jar" />
   1328         <include name="${SHORT_NAME}_ja.jar" />
   1329         <include name="${SHORT_NAME}_ko.jar" />
   1330         <include name="${SHORT_NAME}_de.jar" />
   1331         <include name="${SHORT_NAME}_es.jar" />
   1332         <include name="${SHORT_NAME}_zh_TW.jar" />
   1333         <include name="${SHORT_NAME}_zh_CN.jar" />
   1334 	<include name="${SHORT_NAME}_pl.jar" />
   1335 	<include name="${SHORT_NAME}_ca_ES.jar" />
   1336       </lib>
   1337     </war>
   1338 
   1339     <copy todir="${package.dir}">
   1340       <fileset file="${classes.dir}/*.war" />
   1341     </copy>
   1342   </target>
   1343 
   1344 
   1345 
   1346 
   1347   <!-- Generate JavaDoc documentation from the source files -->
   1348   <target name="javadoc" depends="dsml,compileadmin"
   1349        description="Generate JavaDoc documentation.">
   1350     <mkdir dir="${javadoc.dir}" />
   1351 
   1352     <javadoc destdir="${javadoc.dir}" source="1.5" additionalparam="-quiet"
   1353          linksource="yes" windowtitle="${PRODUCT_NAME} API Documentation"
   1354          maxmemory="${MEM}">
   1355       <classpath>
   1356         <fileset dir="${lib.dir}">
   1357           <include name="*.jar" />
   1358         </fileset>
   1359 
   1360         <fileset dir="${dsml.lib.dir}">
   1361           <include name="*.jar" />
   1362         </fileset>
   1363 
   1364         <fileset dir="${build.dir}/build-tools">
   1365           <include name="*.jar" />
   1366         </fileset>
   1367 
   1368         <dirset dir="${classes.dir}" />
   1369         <dirset dir="${dsml.classes.dir}" />
   1370         <dirset dir="${quicksetup.classes.dir}" />
   1371       </classpath>
   1372 
   1373       <packageset dir="${src.dir}" excludes="${exclude.ndb.src}" />
   1374       <packageset dir="${admin.src.dir}" />
   1375       <packageset dir="${ads.src.dir}" />
   1376       <packageset dir="${dsml.src.dir}" />
   1377       <packageset dir="${msg.src.dir}" />
   1378     </javadoc>
   1379   </target>
   1380 
   1381 
   1382   <!-- Internal target to run the Directory Server directly. -->
   1383   <target name="run-server" depends="dynamicconstants">
   1384     <!-- Set properties needed to find the packaged files -->
   1385     <property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
   1386     <java fork="true" classname="org.opends.server.core.DirectoryServer" failonerror="true">
   1387       <classpath>
   1388         <fileset dir="${lib.dir}">
   1389           <include name="*.jar"/>
   1390         </fileset>
   1391         <dirset dir="${classes.dir}"/>
   1392       </classpath>
   1393       <jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
   1394       <jvmarg value="-Dorg.opends.server.scriptName=start-ds"/>
   1395       <jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
   1396       <arg value="--configClass=org.opends.server.extensions.ConfigFileHandler"/>
   1397       <arg value="--configFile=${pdir}/config/config.ldif"/>
   1398       <arg value="--nodetach"/>
   1399     </java>
   1400   </target>
   1401 
   1402   <!-- Netbeans target to debug the Directory Server. -->
   1403   <target name="nb-debug-server" depends="dynamicconstants">
   1404     <!-- Set properties needed to find the packaged files -->
   1405     <property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
   1406     <path id="cp">
   1407       <fileset dir="${lib.dir}">
   1408         <include name="*.jar"/>
   1409       </fileset>
   1410       <dirset dir="${classes.dir}"/>
   1411    </path>
   1412     <nbjpdastart addressproperty="jpda.address" name="Directory Server" transport="dt_socket">
   1413       <classpath refid="cp"/>
   1414     </nbjpdastart>
   1415     <java classname="org.opends.server.core.DirectoryServer" fork="true">
   1416       <classpath refid="cp"/>
   1417       <jvmarg value="-Xdebug"/>
   1418       <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
   1419       <jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
   1420       <jvmarg value="-Dorg.opends.server.scriptName=start-ds"/>
   1421       <jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
   1422       <jvmarg value="-Dorg.opends.server.debug.enabled=true"/>
   1423       <arg value="--configClass=org.opends.server.extensions.ConfigFileHandler"/>
   1424       <arg value="--configFile=${pdir}/config/config.ldif"/>
   1425       <arg value="--nodetach"/>
   1426     </java>
   1427   </target>
   1428 
   1429   <!-- Netbeans target to profile the Directory Server. -->
   1430   <target name="nb-profile-server" depends="dynamicconstants">
   1431     <!-- Set properties needed to find the packaged files -->
   1432     <property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
   1433     <path id="cp">
   1434       <fileset dir="${lib.dir}">
   1435         <include name="*.jar"/>
   1436       </fileset>
   1437       <dirset dir="${classes.dir}"/>
   1438     </path>
   1439     <nbprofiledirect>
   1440       <classpath refid="cp"/>
   1441     </nbprofiledirect>
   1442     <java fork="true" classname="org.opends.server.core.DirectoryServer">
   1443       <classpath>
   1444         <fileset dir="${lib.dir}">
   1445           <include name="*.jar"/>
   1446         </fileset>
   1447         <dirset dir="${classes.dir}"/>
   1448       </classpath>
   1449       <jvmarg value="${profiler.info.jvmargs.agent}"/>
   1450       <jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
   1451       <jvmarg value="-Dorg.opends.server.scriptName=start-ds"/>
   1452       <jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
   1453       <arg value="--configClass=org.opends.server.extensions.ConfigFileHandler"/>
   1454       <arg value="--configFile=${pdir}/config/config.ldif"/>
   1455       <arg value="--nodetach"/>
   1456     </java>
   1457   </target>
   1458 
   1459    <!-- Internal target to run directly dsconfig. -->
   1460   <target name="run-dsconfig" depends="dynamicconstants">
   1461           <!-- Set properties needed to find the packaged files -->
   1462       <property name="pdir"
   1463                 location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
   1464     <java fork="true" classname="org.opends.server.tools.dsconfig.DSConfig" failonerror="true">
   1465       <classpath>
   1466         <fileset dir="${lib.dir}">
   1467           <include name="*.jar" />
   1468         </fileset>
   1469         <dirset dir="${classes.dir}" />
   1470       </classpath>
   1471       <jvmarg  value="-Dorg.opends.server.scriptName=dsconfig" />
   1472       <jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
   1473       <jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
   1474     </java>
   1475   </target>
   1476 
   1477  <!-- Netbeans target to debug dsconfig. -->
   1478   <target name="nb-debug-dsconfig" depends="dynamicconstants">
   1479     <!-- Set properties needed to find the packaged files -->
   1480     <property name="pdir"
   1481               location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
   1482     <path id="cp">
   1483       <fileset dir="${lib.dir}">
   1484         <include name="*.jar" />
   1485       </fileset>
   1486       <dirset dir="${classes.dir}" />
   1487     </path>
   1488     <nbjpdastart addressproperty="jpda.address" name="Directory Server" transport="dt_socket">
   1489       <classpath refid="cp"/>
   1490     </nbjpdastart>
   1491     <java classname="org.opends.server.tools.dsconfig.DSConfig" fork="true">
   1492       <classpath refid="cp"/>
   1493       <jvmarg value="-Xdebug"/>
   1494       <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
   1495       <jvmarg  value="-Dorg.opends.server.scriptName=dsconfig" />
   1496       <jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
   1497       <jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
   1498       <jvmarg value="-Dorg.opends.server.debug.enabled=true"/>
   1499      </java>
   1500   </target>
   1501 
   1502 
   1503   <!-- Internal target to prepare to generate a code coverage report. -->
   1504   <target name="coverage">
   1505     <property name="coverage.enabled" value="true" />
   1506 
   1507     <mkdir dir="${coverage.dir}"        />
   1508     <mkdir dir="${coverage.data.dir}"   />
   1509     <mkdir dir="${coverage.instr.dir}"  />
   1510     <mkdir dir="${coverage.report.dir}" />
   1511 
   1512     <path id="run.classpath">
   1513       <pathelement location="${classes.dir}" />
   1514     </path>
   1515 
   1516     <path id="quickSetup.classpath">
   1517        <pathelement location="${quicksetup.classes.dir}" />
   1518     </path>
   1519   </target>
   1520 
   1521 
   1522 
   1523   <!-- Prepare to execute the Directory Server TestNG unit tests. -->
   1524   <target name="test.OpenDS.package.required" depends="dynamicconstants">
   1525     <condition property="test.OpenDS.package.required">
   1526       <available file="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}.zip"/>
   1527     </condition>
   1528   </target>
   1529 
   1530   <target name="testinit-package" depends="test.OpenDS.package.required" unless="test.OpenDS.package.required">
   1531     <echo message="Performing full rebuild (no OpenDS zip package found)"/>
   1532     <antcall target="package"/>
   1533   </target>
   1534 
   1535   <target name="testinit-recompile" depends="test.OpenDS.package.required" if="test.OpenDS.package.required">
   1536     <echo message="Performing partial rebuild (OpenDS zip package found)"/>
   1537     <mkdir dir="${classes.dir}" />
   1538 
   1539     <!-- Copy NDB Backend dependencies if necessary -->
   1540     <antcall target="copyndbdeps" />
   1541 
   1542     <javac srcdir="${src.dir}:${admin.src.dir}:${msg.src.dir}:${msg.javagen.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
   1543         destdir="${classes.dir}" excludes="${exclude.ndb.src}" debug="on" debuglevel="${build.debuglevel}"
   1544         source="1.5" target="1.5" deprecation="true" fork="true"
   1545         memoryInitialSize="${MEM}" memoryMaximumSize="${MEM}">
   1546       <compilerarg value="-Xlint:all" />
   1547 
   1548       <classpath>
   1549         <fileset dir="${lib.dir}">
   1550           <include name="*.jar" />
   1551         </fileset>
   1552         <fileset dir="${build.dir}/build-tools">
   1553           <include name="build-tools.jar" />
   1554         </fileset>
   1555         <fileset dir="${build.lib.dir}">
   1556           <include name="*.jar" />
   1557         </fileset>
   1558       </classpath>
   1559     </javac>
   1560 
   1561     <copy todir="${classes.dir}">
   1562       <fileset dir="${src.dir}" includes="**/*.properties" />
   1563       <fileset dir="${quicksetup.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
   1564       <fileset dir="${guitools.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
   1565     </copy>
   1566   </target>
   1567 
   1568   <target name="testinit" depends="testinit-package,testinit-recompile"
   1569          description="Prepare to execute the Directory Server TestNG unit tests.">
   1570     <!-- If we are to perform coverage tests, then set that up. -->
   1571     <path id="emma.lib">
   1572       <pathelement location="${emma.dir}/emma.jar"     />
   1573       <pathelement location="${emma.dir}/emma_ant.jar" />
   1574     </path>
   1575 
   1576     <taskdef resource="emma_ant.properties" classpathref="emma.lib" />
   1577 
   1578     <emma enabled="${coverage.enabled}">
   1579       <instr instrpathref="run.classpath" destdir="${coverage.instr.dir}"
   1580              metadatafile="${coverage.data.dir}/metadata.emma" merge="true" />
   1581     </emma>
   1582 
   1583     <!-- Compile the test cases -->
   1584     <mkdir dir="${unittest.classes.dir}" />
   1585     <javac srcdir="${unittest.testng.src.dir}" destdir="${unittest.classes.dir}"
   1586            debug="on" debuglevel="${build.debuglevel}" source="1.5"
   1587            target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
   1588            memoryMaximumSize="${MEM}" excludes="org/opends/server/snmp/**">
   1589       <compilerarg value="-Xlint:all" />
   1590 
   1591       <classpath>
   1592         <fileset dir="${lib.dir}">
   1593           <include name="*.jar" />
   1594         </fileset>
   1595 
   1596         <fileset dir="${testng.lib.dir}">
   1597           <include name="*.jar" />
   1598         </fileset>
   1599 
   1600         <path refid="run.classpath" />
   1601         <path refid="quickSetup.classpath" />
   1602       </classpath>
   1603     </javac>
   1604 
   1605     <copy todir="${unittest.classes.dir}">
   1606       <fileset dir="${unittest.testng.src.dir}"
   1607                includes="**/*.properties" />
   1608     </copy>
   1609 
   1610     <!-- Compile SNMP Tests if needed -->
   1611     <antcall target="testsnmpinit"/>
   1612 
   1613     <!-- Prep the TestNG XML file -->
   1614 
   1615     <condition property="test.groups" value="exclude=slow">
   1616       <not>
   1617         <or>
   1618           <isset property="test.groups" />
   1619           <isset property="test.packages" />
   1620           <isset property="test.classes" />
   1621           <isset property="test.methods" />
   1622         </or>
   1623       </not>
   1624     </condition>
   1625 
   1626     <!-- do not run tests dependent upon creation of the .zip file -->
   1627     <condition property="test.packages" value="org.opends.server.*,org.opends.messages.*">
   1628       <and>
   1629         <not>
   1630           <or>
   1631             <isset property="test.packages" />
   1632             <isset property="test.classes" />
   1633             <isset property="test.methods" />
   1634           </or>
   1635         </not>
   1636         <not>
   1637           <equals arg1="${package.built}" arg2="true" />
   1638         </not>
   1639       </and>
   1640     </condition>
   1641 
   1642     <!-- run tests dependent upon creation of the .zip file -->
   1643     <condition property="test.packages" value="org.opends.server.*,org.opends.messages.*,org.opends.quicksetup.*">
   1644       <and>
   1645         <not>
   1646           <or>
   1647             <isset property="test.packages" />
   1648             <isset property="test.classes" />
   1649             <isset property="test.methods" />
   1650           </or>
   1651         </not>
   1652         <equals arg1="${package.built}" arg2="true" />
   1653       </and>
   1654     </condition>
   1655 
   1656 
   1657     <condition property="test.classes" value="">
   1658       <not>
   1659         <or>
   1660           <isset property="test.classes" />
   1661           <isset property="test.methods" />
   1662         </or>
   1663       </not>
   1664     </condition>
   1665 
   1666     <condition property="test.methods" value="">
   1667       <not>
   1668         <or>
   1669           <isset property="test.methods" />
   1670         </or>
   1671       </not>
   1672     </condition>
   1673 
   1674     <mkdir dir="${unittest.resource.dir}" />
   1675     <typedef name="preptestng" classname="org.opends.build.tools.PrepTestNG"
   1676         classpath="${build.dir}/build-tools/build-tools.jar" />
   1677 
   1678 
   1679     <preptestng file="${testng.dir}/testng.xml"
   1680                 tofile="${unittest.resource.dir}/testng.xml"
   1681                 grouplist="${test.groups}"
   1682                 packagelist="${test.packages}"
   1683                 classList="${test.classes}"
   1684                 methodList="${test.methods}" />
   1685 
   1686     <antcall target="testinit.checkFailedTestsOnly"/>
   1687   </target>
   1688 
   1689 
   1690 
   1691   <!-- If we were asked to run only the tests that failed,
   1692       then we overwrite the testng.xml that we just generated
   1693       with testng-failed.xml, which TestNG generated. -->
   1694   <target name="testinit.checkFailedTestsOnly" if="test.failures">
   1695     <!-- Ensure that some of the tests failed last time. -->
   1696     <available property="testng-failed.xml.exists"
   1697                file="${unittest.report.dir}/testng-failed.xml"/>
   1698     <fail message="No unit tests failed in the previous run."
   1699           unless="testng-failed.xml.exists"/>
   1700 
   1701     <!-- We replace the 'Failed suite [OpenDS]' with 'OpenDS' so we
   1702          don't end up with 'Failed suite [Failed suite [OpenDS]]]' etc. -->
   1703     <replace file="${unittest.report.dir}/testng-failed.xml"
   1704              token="Failed suite [OpenDS]"
   1705              value="OpenDS"/>
   1706     <replace file="${unittest.report.dir}/testng-failed.xml"
   1707              token="default(failed)"
   1708              value="default"/>
   1709 
   1710     <copy file="${unittest.report.dir}/testng-failed.xml"
   1711           tofile="${unittest.resource.dir}/testng.xml"
   1712           overwrite="true"/>
   1713 
   1714     <echo message="Will run the failed unit tests only"/>
   1715   </target>
   1716 
   1717 
   1718 
   1719   <!-- Generate coverage diff report -->
   1720   <target name="coveragediff">
   1721     <condition property="test.diff.srcpath" value="">
   1722       <not>
   1723         <isset property="test.diff.srcpath" />
   1724       </not>
   1725     </condition>
   1726 
   1727     <condition property="test.diff.enabled" value="true">
   1728       <not>
   1729         <isset property="test.diff.disable" />
   1730       </not>
   1731     </condition>
   1732 
   1733     <condition property="test.diff.verbose" value="false">
   1734       <not>
   1735         <isset property="test.diff.verbose" />
   1736       </not>
   1737     </condition>
   1738 
   1739     <condition property="test.diff.enabled" value="false">
   1740       <isset property="test.diff.disable" />
   1741     </condition>
   1742 
   1743     <!-- The SVN revision to perform the diff against when calculating
   1744          the coverage diff.  It can be a revision number, a timestamp,
   1745          or a revision keyword (BASE, COMMITTED, and PREV make the
   1746          most sense).  The primary use case for this setting is to do
   1747          a coverage diff against the previous revision when there are
   1748          no changes in the working copy.  It defaults to BASE.  -->
   1749     <condition property="test.diff.from.revision" value="BASE">
   1750       <not>
   1751         <isset property="test.diff.from.revision" />
   1752       </not>
   1753     </condition>
   1754 
   1755     <mkdir dir="${cvgdiff.report.dir}" />
   1756     <taskdef name="coveragediff" classname="org.opends.build.tools.CoverageDiff">
   1757       <classpath>
   1758         <fileset dir="${build.dir}/build-tools">
   1759           <include name="*.jar" />
   1760         </fileset>
   1761         <fileset dir="${emma.dir}">
   1762           <include name="*.jar" />
   1763         </fileset>
   1764         <fileset dir="${svnkit.dir}">
   1765           <include name="*.jar" />
   1766         </fileset>
   1767       </classpath>
   1768     </taskdef>
   1769 
   1770     <coveragediff emmadatapath="${coverage.data.dir}"
   1771                   outputpath="${cvgdiff.report.dir}"
   1772                   diffpath="${test.diff.srcpath}"
   1773                   enabled="${test.diff.enabled}"
   1774                   verbose="${test.diff.verbose}"
   1775                   fromrevision="${test.diff.from.revision}" />
   1776 
   1777   </target>
   1778 
   1779 
   1780 
   1781   <!-- Execute the Directory Server TestNG unit tests in text mode. -->
   1782   <target name="enableTestNGAssertions">
   1783     <property name="TESTASSERT" value="true"/>
   1784   </target>
   1785 
   1786 
   1787 
   1788   <!-- Execute Directory Server TestNG unit tests specified from CLI -->
   1789   <target name="testcustom">
   1790     <echo message="This target is deprecated. Please use the test target as it now supports the test.* properties." />
   1791   </target>
   1792 
   1793 
   1794 
   1795   <!-- Execute all of the Directory Server TestNG unit tests in text mode. -->
   1796   <target name="testall"
   1797           depends="enableTestNGAssertions,prepdefaultalltest,testinit,runtests"
   1798           description="Run all of the TestNG tests (including 'slow' ones) with assertions enabled.  See 'testwithcoverage' for properties you can set.">
   1799   </target>
   1800 
   1801 
   1802 
   1803   <!-- Execute the Directory Server TestNG unit tests in text mode. -->
   1804   <target name="test"
   1805           depends="testinit,runtests"
   1806           description="Execute the Directory Server TestNG unit tests in text mode.  Set '-Dorg.opends.test.suppressOutput=false' to see the output from the unit tests.  Set '-Dtest.failures=true' to run only the tests that failed previously.">
   1807   </target>
   1808 
   1809   <!-- Display Java version which will be used for tests. -->
   1810   <target name="displayjavaversion">
   1811     <echo message="The following Java version will be used :"/>
   1812     <echo message=""/>
   1813     <exec executable="java">
   1814       <arg value="-version"/>
   1815     </exec>
   1816     <echo message=""/>
   1817     <echo message=""/>
   1818   </target>
   1819 
   1820   <!-- Execute the Directory Server TestNG unit tests in text mode with a coverage report. -->
   1821   <target name="testwithcoverage"
   1822           depends="coverage,test,coveragediff"
   1823           description="Execute the Directory Server TestNG unit tests in text mode with a coverage report.  Use -Dtest.packages, -Dtest.classes, or -Dtest.methods to control which unit tests are run.  Use -Dtest.diff.srcpath to control which src files show up in the coverage diff.  See the 'test' package for other properties you can set.">
   1824   </target>
   1825 
   1826   <!-- Execute the Directory Server TestNG unit tests in text mode with a coverage report and slow tests. -->
   1827   <target name="testallwithcoverage"
   1828           depends="coverage,testall,coveragediff"
   1829           description="The same as 'testwithcoverage' except 'testall' is run instead of 'test'.">
   1830   </target>
   1831 
   1832   <!-- Execute the Directory Server TestNG unit tests specified from CLI in text mode with a coverage report. -->
   1833   <target name="testcustomwithcoverage">
   1834     <echo message="This target is deprecated. Please use the testwithcoverage target as it now supports the test.* properties." />
   1835   </target>
   1836 
   1837   <target name="testhelp" unless="disable.test.help">
   1838     <echo message="About to run the unit tests.  Ant options to control the tests:"/>
   1839     <echo message=""/>
   1840     <echo message="  -Dorg.opends.test.suppressOutput=false"/>
   1841     <echo message="      writes the unit test output to the screen"/>
   1842     <echo message=""/>
   1843     <echo message="  -Dtest.progress=&quot;default,memory&quot;"/>
   1844     <echo message="      Unless explicity disabled using -Dtest.progress=none, the"/>
   1845     <echo message="      tests provide continuous progress of the tests that are being"/>
   1846     <echo message="      run.  The specific options to set for this property are"/>
   1847     <echo message=""/>
   1848     <echo message="        none:         no progress output"/>
   1849     <echo message="        all:          enables all progress (slows tests)"/>
   1850     <echo message="        default:      same as &quot;time,count,restarts&quot;"/>
   1851     <echo message="        time:         timing information for the tests"/>
   1852     <echo message="        count:        # of run test classes, methods, and invocations"/>
   1853     <echo message="        memory:       running total of memory usage (slows tests)"/>
   1854     <echo message="        threadcount:  running total of active threads"/>
   1855     <echo message="        threadchange: +/- changes for active threads between tests"/>
   1856     <echo message="        restarts:     running total of in-core server restarts"/>
   1857     <echo message=""/>
   1858     <echo message="      To specifying multiple values, nseparate them with ',' and"/>
   1859     <echo message="      quote the entire value.  For instance, when you want the default"/>
   1860     <echo message="      output plus more, do -Dtest.progress=&quot;default,memory&quot;."/>
   1861     <echo message=""/>
   1862     <echo message="      Enabling memory progress slows down the tests significantly."/>
   1863     <echo message="      Include the otherwise undocumented property &quot;gcs&quot; to see how"/>
   1864     <echo message="      much time each progress line spends doing garbage collections"/>
   1865     <echo message="      to get an accurate measure of memory usage."/>
   1866     <echo message=""/>
   1867     <echo message="      A new line of progress is written when TestNG completes running tests"/>
   1868     <echo message="      for a class.  This progress is reported immediately before TestNG"/>
   1869     <echo message="      starts to run the first test of the next class.  All @BeforeClass"/>
   1870     <echo message="      and @BeforeMethod methods will have been invoked for the next"/>
   1871     <echo message="      class as well as the @DataProvider (if any) for the first test method."/>
   1872     <echo message="      Keep this in mind when debugging memory usage, running times, and"/>
   1873     <echo message="      thread creation."/>
   1874     <echo message=""/>
   1875     <echo message="  -Dtestng.verbosity0to5=5"/>
   1876     <echo message="      for example has TestNG dump the maximum amount of debugging"/>
   1877     <echo message="      output to stdout.  This output is useful to check the order"/>
   1878     <echo message="      in which test methods are invoked.  Valid values are integer"/>
   1879     <echo message="      values from 0 (no output) to 5 (maximum output).  Since this"/>
   1880     <echo message="      implicitly sets -Dorg.opends.test.suppressOutput=false,"/>
   1881     <echo message="      other stderr/stdout output generated by the unit tests will"/>
   1882     <echo message="      also be displayed."/>
   1883     <echo message=""/>
   1884     <echo message="  -Dorg.opends.test.pauseOnFailure=true"/>
   1885     <echo message="      pauses the test suite whenever a failure occurs allowing you to inspect"/>
   1886     <echo message="      the server more closely in the failure state"/>
   1887     <echo message=""/>
   1888     <echo message="  -Dorg.opends.test.copyClassesToTestPackage=true"/>
   1889     <echo message="      copies the classes into the test server root.  This enables you to run"/>
   1890     <echo message="      the server tools on the test server.  It can slow down the test startup"/>
   1891     <echo message="      so the files are not copied by default."/>
   1892     <echo message=""/>
   1893     <echo message="  -Dtest.failed=true"/>
   1894     <echo message="      runs only the tests that failed last time"/>
   1895     <echo message=""/>
   1896     <echo message="  -Dorg.opends.server.debug.target=org.opends.server.core:level=verbose,category=data"/>
   1897     <echo message="      for example only include debug messages in the core"/>
   1898     <echo message="      package that are related to data access and at the" />
   1899     <echo message="      verbose level or higher. The syntax of this target" />
   1900     <echo message="      definition is the same as the org.opends.server.debug.target.x" />
   1901     <echo message="      property when starting ${SHORT_NAME}. " />
   1902     <echo message="      Default debug target:"/>
   1903     <echo message="      org.opends.server:level=warning,category=caught|data|database-access|message|protocol,stack,cause" />
   1904     <echo message=""/>
   1905     <echo message="  -Dtest.diff.srcpath=src/server/org/opends/server/core"/>
   1906     <echo message="      for example includes only the classes in"/>
   1907     <echo message="      src/server/org/opends/server/core in the coveragediff report."/>
   1908     <echo message="      To list multiple directories or files, separate them with"/>
   1909     <echo message="      a space as you would an argument list to 'svn diff' and quote"/>
   1910     <echo message="      the whole value."/>
   1911     <echo message=""/>
   1912     <echo message="  -Dtest.groups=exclude=slow"/>
   1913     <echo message="      for example excludes the slow tests.  Each value is expected" />
   1914     <echo message="      group inclusion/exclusion clause which consists of either 'include'" />
   1915     <echo message="      or 'exclude' followed by the '=' character and then a group name." />
   1916     <echo message="      For multiple group clauses, separate them with a ',' and "/>
   1917     <echo message="      quote the entire value. Debug logging is disabled."/>
   1918     <echo message=""/>
   1919     <echo message="  -Dtest.packages=org.opends.server.api"/>
   1920     <echo message="      for example runs only the tests in the api package"/>
   1921     <echo message="      For multiple packages, separate them with a ',' and "/>
   1922     <echo message="      quote the entire value. Debug logging is disabled."/>
   1923     <echo message=""/>
   1924     <echo message="  -Dtest.classes=org.opends.server.types.TestDN"/>
   1925     <echo message="      for example only runs the TestDN class"/>
   1926     <echo message="      For multiple classes, separate them with a ',' and "/>
   1927     <echo message="      quote the entire value. Debug logging is disabled."/>
   1928     <echo message=""/>
   1929     <echo message="  -Dtest.methods=org.opends.server.types.TestDN.testGetRDN"/>
   1930     <echo message="      for example only runs the testGetRDN method"/>
   1931     <echo message="      For multiple methods within the same class, append additional"/>
   1932     <echo message="      method names to the end separating them with a ',' and "/>
   1933     <echo message="      quote the entire value. Debug logging is disabled."/>
   1934     <echo message=""/>
   1935     <echo message="  -Dtest.remote.debug.port=5005"/>
   1936     <echo message="      for example will allow you to remotely debug the unit tests from"/>
   1937     <echo message="      the debugger of your choice by pointing it at port 5005."/>
   1938     <echo message="      The unit tests will not start to run until the debugger is attached"/>
   1939     <echo message="      unless you also specify -Dtest.remote.debug.suspend=n."/>
   1940     <echo message=""/>
   1941   </target>
   1942 
   1943 
   1944 
   1945   <!-- Internal target to execute the Directory Server TestNG unit tests in text mode after everything has been initialized. -->
   1946   <target name="runtests">
   1947     <antcall target="testhelp"/>
   1948     <antcall target="displayjavaversion"/>
   1949 
   1950     <mkdir dir="${unittest.report.dir}" />
   1951 
   1952     <taskdef resource="testngtasks">
   1953       <classpath>
   1954         <fileset dir="${testng.lib.dir}">
   1955           <include name="*.jar" />
   1956         </fileset>
   1957       </classpath>
   1958     </taskdef>
   1959 
   1960     <!-- This sets TESTASSERT to false if and only if it's not already set. -->
   1961     <condition property="TESTASSERT" value="false">
   1962       <not>
   1963         <isset property="TESTASSERT" />
   1964       </not>
   1965     </condition>
   1966 
   1967     <!-- This sets testng.verbosity if it's not already set. -->
   1968     <condition property="testng.verbosity0to5" value="0">
   1969       <not>
   1970         <isset property="testng.verbosity0to5" />
   1971       </not>
   1972     </condition>
   1973 
   1974     <!-- This sets unsuppresses the test output if and only if testng
   1975          is configured to dump debug output. -->
   1976     <condition property="org.opends.test.suppressOutput" value="false">
   1977       <not>
   1978         <equals arg1="${testng.verbosity0to5}" arg2="0"/>
   1979       </not>
   1980     </condition>
   1981 
   1982     <!-- This sets org.opends.test.suppressOutput if and only if it's not
   1983          already set. -->
   1984     <condition property="org.opends.test.suppressOutput" value="true">
   1985       <not>
   1986         <isset property="org.opends.test.suppressOutput" />
   1987       </not>
   1988     </condition>
   1989 
   1990     <!-- This sets org.opends.test.pauseOnFailure if and only if it's not
   1991          already set. -->
   1992     <condition property="org.opends.test.pauseOnFailure" value="false">
   1993       <not>
   1994         <isset property="org.opends.test.pauseOnFailure" />
   1995       </not>
   1996     </condition>
   1997 
   1998     <!-- This sets org.opends.server.debug.target if and only if its's not
   1999          already set. -->
   2000     <condition property="org.opends.server.debug.target"
   2001                value="org.opends.server:level=warning,category=caught|data|database-access|message|protocol,stack,cause">
   2002       <not>
   2003         <isset property="org.opends.server.debug.target" />
   2004       </not>
   2005     </condition>
   2006 
   2007     <condition property="org.opends.test.copyClassesToTestPackage"
   2008                value="false">
   2009       <not>
   2010         <isset property="org.opends.test.copyClassesToTestPackage" />
   2011       </not>
   2012     </condition>
   2013 
   2014     <condition property="test.progress"
   2015                value="">
   2016       <not>
   2017         <isset property="test.progress" />
   2018       </not>
   2019     </condition>
   2020 
   2021 
   2022     <!-- If the debug port was set, we pass these options into the <testng> target below:
   2023            -Xdebug
   2024            -Xnoagent
   2025            -Djava.compiler=NONE
   2026            -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
   2027      -->
   2028     <condition property="test.remote.debug.suspend" value="y">
   2029        <not>
   2030          <isset property="test.remote.debug.suspend" />
   2031        </not>
   2032     </condition>
   2033     <condition property="jvm.debug.arg1" value="-Xdebug" else="-Dopends.bogus.debug.arg1">
   2034        <isset property="test.remote.debug.port" />
   2035     </condition>
   2036     <condition property="jvm.debug.arg2" value="-Xnoagent" else="-Dopends.bogus.debug.arg2">
   2037        <isset property="test.remote.debug.port" />
   2038     </condition>
   2039     <condition property="jvm.debug.arg3" value="-Djava.compiler=NONE" else="-Dopends.bogus.debug.arg3">
   2040        <isset property="test.remote.debug.port" />
   2041     </condition>
   2042     <condition property="jvm.debug.arg4"
   2043          value="-Xrunjdwp:transport=dt_socket,server=y,suspend=${test.remote.debug.suspend},address=${test.remote.debug.port}"
   2044          else="-Dopends.bogus.debug.arg4">
   2045        <isset property="test.remote.debug.port" />
   2046     </condition>
   2047 
   2048 
   2049     <!-- Cleanout the old reports.  Otherwise, the old testng-failed.xml
   2050          will hang around even if all of the tests pass. -->
   2051     <delete>
   2052       <fileset dir="${unittest.report.dir}" includes="*"/>
   2053     </delete>
   2054 
   2055     <!-- Our testng listener will remove this file if all of the
   2056          tests passed.  This allows us to generate the coverage
   2057          report even if the tests failed and still fail the build. -->
   2058     <touch file="${unittest.report.dir}/.tests-failed-marker"/>
   2059 
   2060     <testng outputdir="${unittest.report.dir}"
   2061             haltonfailure="false"
   2062             verbose="${testng.verbosity0to5}"
   2063             enableAssert="${TESTASSERT}"
   2064             listeners="org.opends.server.TestListener org.testng.reporters.FailedReporter"
   2065             useDefaultListeners="false"
   2066             suiteRunnerClass="org.opends.server.SuiteRunner">
   2067       <classpath>
   2068         <pathelement location="${coverage.instr.dir}" />
   2069         <pathelement location="${classes.dir}" />
   2070         <pathelement location="${quicksetup.classes.dir}" />
   2071         <pathelement location="${unittest.classes.dir}" />
   2072         <pathelement location="${resource.dir}" />
   2073         <path refid="run.classpath" />
   2074         <path refid="emma.lib" />
   2075 
   2076         <fileset dir="${lib.dir}">
   2077           <include name="*.jar" />
   2078         </fileset>
   2079 
   2080         <!-- Needed by quicksetup tests -->
   2081         <fileset dir="${build.dir}/build-tools">
   2082           <include name="build-tools.jar" />
   2083         </fileset>
   2084 
   2085         <fileset dir="${testng.lib.dir}">
   2086           <include name="*.jar" />
   2087         </fileset>
   2088 
   2089         <fileset dir="${opendmk.lib.dir}">
   2090           <include name="*.jar"/>
   2091         </fileset>
   2092 
   2093       </classpath>
   2094       <jvmarg  value="-Demma.coverage.out.file=${coverage.data.dir}/unit.emma" />
   2095       <jvmarg value="-Demma.coverage.out.merge=false" />
   2096       <jvmarg value="-Dorg.opends.server.BuildRoot=${basedir}" />
   2097       <jvmarg value="-Dorg.opends.server.RunningUnitTests=true" />
   2098       <jvmarg value="-Dorg.opends.server.snmp.opendmk=${opendmk.lib.dir}"/>
   2099       <jvmarg value="-Dorg.opends.test.suppressOutput=${org.opends.test.suppressOutput}" />
   2100       <jvmarg value="-Dorg.opends.test.pauseOnFailure=${org.opends.test.pauseOnFailure}" />
   2101       <jvmarg value="-Dorg.opends.server.debug.target=${org.opends.server.debug.target}" />
   2102       <jvmarg value="-Dorg.opends.test.copyClassesToTestPackage=${org.opends.test.copyClassesToTestPackage}" />
   2103       <jvmarg value="-Dtest.progress=${test.progress}" />
   2104       <jvmarg value="-Xms${MEM}" />
   2105       <jvmarg value="-Xmx${MEM}" />
   2106       <jvmarg value="${jvm.debug.arg1}" />
   2107       <jvmarg value="${jvm.debug.arg2}" />
   2108       <jvmarg value="${jvm.debug.arg3}" />
   2109       <jvmarg value="${jvm.debug.arg4}" />
   2110       <xmlfileset dir="${unittest.resource.dir}" includes="testng.xml" />
   2111     </testng>
   2112 
   2113     <!-- Our testng listener will create this file if any of the
   2114          tests failed.  This allows us to generate the coverage
   2115          report even if the tests failed. -->
   2116     <available property="testng.tests.failed"
   2117                file="${unittest.report.dir}/.tests-failed-marker"/>
   2118 
   2119     <!-- Delete all of the report suite sub-directories since we only
   2120          have a single suite. -->
   2121     <delete dir="${unittest.report.dir}/${SHORT_NAME}"/>
   2122 
   2123     <emma enabled="${coverage.enabled}" >
   2124       <report sourcepath="${src.dir}" >
   2125         <fileset dir="${coverage.data.dir}" >
   2126           <include name="unit.emma"     />
   2127           <include name="metadata.emma" />
   2128         </fileset>
   2129 
   2130         <txt  outfile="${coverage.report.dir}/coverage.txt" />
   2131         <html outfile="${coverage.report.dir}/index.html" />
   2132         <xml  outfile="${coverage.report.dir}/coverage.xml" />
   2133       </report>
   2134 
   2135     </emma>
   2136 
   2137     <!-- We delay failing until after the coverage report is generated. -->
   2138     <fail message="The unit tests failed." if="testng.tests.failed"/>
   2139 
   2140   </target>
   2141 
   2142 
   2143 
   2144   <target name="prepdefaultalltest">
   2145     <condition property="test.groups" value="">
   2146       <not>
   2147         <or>
   2148           <isset property="test.groups" />
   2149           <isset property="test.packages" />
   2150           <isset property="test.classes" />
   2151           <isset property="test.methods" />
   2152         </or>
   2153       </not>
   2154     </condition>
   2155   </target>
   2156 
   2157 
   2158 
   2159   <target name="testreport"
   2160         depends="test"
   2161         description="Takes testng results and convert them into JUnit compatible xml">
   2162     <junitreport todir="${unittest.report.dir}">
   2163       <fileset dir="${unittest.report.dir}">
   2164         <include name="*.xml"/>
   2165       </fileset>
   2166 
   2167       <report format="noframes"  todir="${unittest.report.dir}"/>
   2168     </junitreport>
   2169   </target>
   2170 
   2171 
   2172 
   2173 
   2174   <target name="buildtools" depends="init"
   2175         description="Builds the build tools">
   2176 
   2177     <mkdir dir="${buildtools.classes.dir}" />
   2178 
   2179     <copy file="${resource.dir}/Messages.java.stub" todir="${buildtools.classes.dir}/org/opends/build/tools/resource"/>
   2180 
   2181     <javac srcdir="${src.dir}:${msg.src.dir}" destdir="${buildtools.classes.dir}"
   2182            sourcepath=""
   2183            includes="org/opends/messages/Severity.java,
   2184                      org/opends/messages/Category.java,
   2185                      org/opends/messages/Message.java,
   2186                      org/opends/messages/MessagePropertyKey.java,
   2187                      org/opends/messages/MessageDescriptor.java,
   2188                      org/opends/server/types/PublicAPI.java,
   2189                      org/opends/server/types/StabilityLevel.java"
   2190            debug="on" debuglevel="${build.debuglevel}" source="1.5"
   2191            target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
   2192            memoryMaximumSize="${MEM}"/>
   2193 
   2194 
   2195     <javac srcdir="${buildtools.src.dir}" destdir="${buildtools.classes.dir}"
   2196            debug="on" debuglevel="${build.debuglevel}" source="1.5"
   2197            target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
   2198            memoryMaximumSize="${MEM}">
   2199       <compilerarg value="-Xlint:all" />
   2200 
   2201       <classpath>
   2202         <fileset dir="${ant.lib.dir}">
   2203           <include name="*.jar" />
   2204         </fileset>
   2205 
   2206         <fileset dir="${emma.dir}">
   2207           <include name="*.jar" />
   2208         </fileset>
   2209 
   2210         <fileset dir="${svnkit.dir}">
   2211           <include name="*.jar" />
   2212         </fileset>
   2213 
   2214         <path refid="run.classpath" />
   2215       </classpath>
   2216     </javac>
   2217 
   2218     <jar jarfile="${build.dir}/build-tools/build-tools.jar"
   2219          basedir="${buildtools.classes.dir}" compress="true" index="true" />
   2220   </target>
   2221 
   2222 
   2223 
   2224   <!-- Code generation for core administration components. -->
   2225   <target name="compileadmin" depends="validateadmin" description="Code generation for configuration Object.">
   2226     <!-- The XSLT task creates a lot of noise.
   2227          I can't find any other way to shut it up. -->
   2228 
   2229     <condition property="antcmd" value="ant.bat">
   2230       <os family="windows" />
   2231     </condition>
   2232 
   2233     <condition property="antcmd" value="ant">
   2234       <not>
   2235         <isset property="antcmd" />
   2236       </not>
   2237     </condition>
   2238 
   2239     <exec executable="${ant.home}/bin/${antcmd}" failonerror="true">
   2240       <arg value="-buildfile" />
   2241       <arg value="${ant.file}" />
   2242       <arg value="-quiet" />
   2243       <arg value="-Dexclude.ndb.xml=${exclude.ndb.xml}" />
   2244       <arg value="compileadminsubtask" />
   2245       <env key="ANT_OPTS" value="-Xmx${MEM}" />
   2246     </exec>
   2247   </target>
   2248 
   2249 
   2250 
   2251   <target name="compileadminsubtask">
   2252     <!-- Generate introspection API for core administration components. -->
   2253     <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
   2254           excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/metaMO.xsl">
   2255       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.java" />
   2256       <param name="base-dir" expression="${admin.defn.dir}" />
   2257     </xslt>
   2258 
   2259     <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
   2260       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/meta/package-info.java" />
   2261       <param name="type" expression="meta" />
   2262     </xslt>
   2263 
   2264     <!-- Generate client API for core administration components. -->
   2265     <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
   2266           excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/clientMO.xsl">
   2267       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/client/\2CfgClient.java" />
   2268       <param name="base-dir" expression="${admin.defn.dir}" />
   2269     </xslt>
   2270 
   2271     <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
   2272       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/client/package-info.java" />
   2273       <param name="type" expression="client" />
   2274     </xslt>
   2275 
   2276     <!-- Generate server API for core administration components. -->
   2277     <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
   2278           excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/serverMO.xsl">
   2279       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/server/\2Cfg.java" />
   2280       <param name="base-dir" expression="${admin.defn.dir}" />
   2281     </xslt>
   2282 
   2283     <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
   2284       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/server/package-info.java" />
   2285       <param name="type" expression="server" />
   2286     </xslt>
   2287 
   2288     <!-- Generate LDAP profile for core administration components. -->
   2289     <mkdir dir="${classes.dir}" />
   2290     <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/ldap" includes="**/*Configuration.xml"
   2291           excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/ldapMOProfile.xsl">
   2292       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
   2293       <param name="base-dir" expression="${admin.defn.dir}" />
   2294     </xslt>
   2295 
   2296     <!-- Generate CLI profile for core administration components. -->
   2297     <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/cli" includes="**/*Configuration.xml"
   2298           excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/cliMOProfile.xsl">
   2299       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
   2300       <param name="base-dir" expression="${admin.defn.dir}" />
   2301     </xslt>
   2302 
   2303     <!-- Generate I18N messages for core administration components. -->
   2304     <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/messages" includes="**/*Configuration.xml"
   2305           excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/messagesMO.xsl">
   2306       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
   2307       <param name="base-dir" expression="${admin.defn.dir}" />
   2308     </xslt>
   2309 
   2310     <!-- Generate manifest file for core administration components. -->
   2311     <tempfile property="admin.temp.dir" destDir="${build.dir}" prefix="tmp" />
   2312     <mkdir dir="${admin.temp.dir}" />
   2313     <xslt basedir="${admin.defn.dir}" destdir="${admin.temp.dir}" extension=".manifest" includes="**/*Configuration.xml"
   2314           excludes="${exclude.ndb.xml}" style="${admin.rules.dir}/manifestMO.xsl"/>
   2315     <concat destfile="${classes.dir}/admin/core.manifest">
   2316       <fileset dir="${admin.temp.dir}" includes="**/*.manifest" />
   2317     </concat>
   2318     <delete dir="${admin.temp.dir}" />
   2319   </target>
   2320 
   2321 
   2322 
   2323   <!-- Remove all dynamically-generated build files. -->
   2324   <target name="cleanadmin" if="isadmingendirpresent" description="Clean up any generated source files for admin">
   2325     <delete includeemptydirs="true">
   2326       <fileset dir="${admin.src.dir}" includes="**/*" />
   2327     </delete>
   2328   </target>
   2329 
   2330   <!-- Validate core administration component XML definition files. -->
   2331   <target name="validateadmin" description="Validate core administration component XML definition files.">
   2332     <schemavalidate>
   2333       <fileset dir="${admin.defn.dir}" includes="**/*.xml" />
   2334       <schema namespace="http://www.opends.org/admin" file="${admin.rules.dir}/admin.xsd"/>
   2335       <schema namespace="http://www.opends.org/admin-ldap" file="${admin.rules.dir}/admin-ldap.xsd"/>
   2336       <schema namespace="http://www.opends.org/admin-cli" file="${admin.rules.dir}/admin-cli.xsd"/>
   2337     </schemavalidate>
   2338   </target>
   2339 
   2340   <!-- Remove all dynamically-generated build files. -->
   2341   <target name="cleanmessages" if="ismsggendirpresent" description="Clean up any generated source files for messages">
   2342     <delete includeemptydirs="true">
   2343       <fileset dir="${msg.javagen.dir}" includes="**/*" />
   2344     </delete>
   2345   </target>
   2346 
   2347   <!-- Generate a src.zip file containing all the server source. -->
   2348   <target name="srczip" depends="compileadmin"
   2349        description="Generate a src.zip file with all the server source.">
   2350     <zip destfile="${build.dir}/src.zip">
   2351       <zipfileset dir="${src.dir}" excludes="**/.svn" filemode="644"
   2352            dirmode="755" />
   2353       <zipfileset dir="${admin.src.dir}" excludes="**/.svn" filemode="644"
   2354            dirmode="755" />
   2355       <zipfileset dir="${ads.src.dir}" excludes="**/.svn" filemode="644"
   2356            dirmode="755" />
   2357       <zipfileset dir="${quicksetup.src.dir}" excludes="**/.svn" filemode="644"
   2358            dirmode="755" />
   2359       <zipfileset dir="${guitools.src.dir}" excludes="**/.svn" filemode="644"
   2360            dirmode="755" />
   2361     </zip>
   2362   </target>
   2363 
   2364 
   2365 
   2366   <!-- Generate example plugin package. -->
   2367   <target name="example-plugin" if="pdir">
   2368     <!-- Create folder hierarchy in temporary directory. -->
   2369     <tempfile property="plugin.temp.dir" destDir="${build.dir}" prefix="tmp"/>
   2370     <mkdir dir="${plugin.temp.dir}/example-plugin" />
   2371     <mkdir dir="${plugin.temp.dir}/example-plugin/src" />
   2372     <mkdir dir="${plugin.temp.dir}/example-plugin/src-generated" />
   2373     <mkdir dir="${plugin.temp.dir}/example-plugin/lib" />
   2374     <mkdir dir="${plugin.temp.dir}/example-plugin/ext" />
   2375     <mkdir dir="${plugin.temp.dir}/example-plugin/resource" />
   2376     <mkdir dir="${plugin.temp.dir}/example-plugin/resource/admin" />
   2377     <mkdir dir="${plugin.temp.dir}/example-plugin/resource/config" />
   2378     <mkdir dir="${plugin.temp.dir}/example-plugin/resource/schema" />
   2379     <mkdir dir="${plugin.temp.dir}/example-plugin/resource/messages" />
   2380     <copy todir="${plugin.temp.dir}/example-plugin/src">
   2381       <fileset dir="${admin.defn.dir}" includes="**/*.xml" />
   2382     </copy>
   2383     <copy todir="${plugin.temp.dir}/example-plugin/resource/admin">
   2384       <fileset dir="${admin.rules.dir}" excludes="example-plugin/**" />
   2385     </copy>
   2386     <copy todir="${plugin.temp.dir}/example-plugin" file="${admin.rules.dir}/example-plugin/build.xml" />
   2387     <copy todir="${plugin.temp.dir}/example-plugin" file="${admin.rules.dir}/example-plugin/README" />
   2388     <copy todir="${plugin.temp.dir}/example-plugin/resource/schema" file="${admin.rules.dir}/example-plugin/99-example-plugin.ldif" />
   2389     <copy todir="${plugin.temp.dir}/example-plugin/resource/config" file="${admin.rules.dir}/example-plugin/example-plugin.ldif" />
   2390     <copy todir="${plugin.temp.dir}/example-plugin/src/com/example/opends">
   2391       <fileset dir="${admin.rules.dir}/example-plugin" includes="*.java,*.xml" excludes="build.xml" />
   2392     </copy>
   2393     <copy todir="${plugin.temp.dir}/example-plugin/lib" file="${build.dir}/build-tools/build-tools.jar" />
   2394     <copy todir="${plugin.temp.dir}/example-plugin/resource/messages/com/example/opends/messages" file="${admin.rules.dir}/example-plugin/example_plugin.properties" />
   2395     <copy todir="${plugin.temp.dir}/example-plugin/resource/messages/com/example/opends/messages" file="${admin.rules.dir}/example-plugin/example_plugin_fr.properties" />
   2396     <!-- Package up the plugin in the OpenDS package folder. -->
   2397     <zip destfile="${pdir}/example-plugin.zip">
   2398       <zipfileset dir="${plugin.temp.dir}" filemode="644" dirmode="755" />
   2399     </zip>
   2400     <delete dir="${plugin.temp.dir}" />
   2401   </target>
   2402 
   2403   <target name="snmpmessagebuild" if="isopendmkpresent">
   2404       <echo message="SNMP extension will be built and included in the delivery."/>
   2405       <echo message="OpenDMK jar file location is ${opendmk.lib.dir}/jdmkrt.jar"/>
   2406   </target>
   2407 
   2408   <target name="snmpmessageNotbuild" unless="isopendmkpresent">
   2409       <echo message="Building without SNMP extension."/>
   2410       <echo message="To build with SNMP extension set opendmk.lib.dir build property"/>
   2411       <echo message="to indicate the location of the OpenDMK jar files. OpenDMK jars"/>
   2412       <echo message="can be found at OpenDMK project at https://opendmk.dev.java.net"/>
   2413   </target>
   2414 
   2415   <target name="snmpecho" depends="snmpmessageNotbuild,snmpmessagebuild"/>
   2416 
   2417   <!-- SNMP targets -->
   2418   <target name="cleansnmp" description="Clean up any SNMP generated source files">
   2419     <delete includeemptydirs="true" failonerror="false">
   2420       <fileset dir="${snmp.gen.dir}" includes="**/*" />
   2421     </delete>
   2422   </target>
   2423 
   2424   <target name="mibgeneration" if="isopendmkpresent" description="mibgen invocation">
   2425     <property name="opendmktk.path" location="${opendmk.lib.dir}/jdmktk.jar"/>
   2426     <mkdir dir="${snmp.gen.dir}/org/opends/server/snmp" />
   2427     <exec dir="${snmp.mib.dir}" executable="java">
   2428       <arg line="-classpath ${opendmktk.path}
   2429         com.sun.jdmk.tools.MibGen -X:use-display-hint
   2430         -d ${snmp.gen.dir}/org/opends/server/snmp -mc -desc
   2431         -tp org.opends.server.snmp ${snmp.mib.dir}/rfc2605.txt
   2432         ${snmp.mib.dir}/mib_core.txt
   2433         ${snmp.mib.dir}/rfc2021.txt ${snmp.mib.dir}/rfc2788.txt"/>
   2434     </exec>
   2435   </target>
   2436 
   2437    <target name="compilesnmp"
   2438        depends="mibgeneration"
   2439        if="isopendmkpresent"
   2440        description="Compile the SNMP Connection Handler extension source files.">
   2441 
   2442     <mkdir dir="${classes.dir}" />
   2443 
   2444     <javac srcdir="${snmp.gen.dir}"
   2445          destdir="${classes.dir}" debug="on" debuglevel="${build.debuglevel}"
   2446          source="1.4" target="1.4" deprecation="true" fork="true" nowarn="on"
   2447          memoryInitialSize="${MEM}" memoryMaximumSize="${MEM}">
   2448       <compilerarg value="-Xlint:all" />
   2449 
   2450       <classpath>
   2451         <fileset dir="${lib.dir}">
   2452           <include name="*.jar" />
   2453         </fileset>
   2454         <fileset dir="${opendmk.lib.dir}">
   2455           <include name="*.jar" />
   2456         </fileset>
   2457       </classpath>
   2458     </javac>
   2459 
   2460      <javac srcdir="${snmp.src.dir}"
   2461          destdir="${classes.dir}" debug="on" debuglevel="${build.debuglevel}"
   2462          source="1.5" target="1.5" deprecation="true" fork="true"
   2463          memoryInitialSize="${MEM}" memoryMaximumSize="${MEM}">
   2464       <compilerarg value="-Xlint:all" />
   2465 
   2466       <classpath>
   2467         <fileset dir="${lib.dir}">
   2468           <include name="*.jar" />
   2469         </fileset>
   2470         <fileset dir="${opendmk.lib.dir}">
   2471           <include name="*.jar" />
   2472         </fileset>
   2473       </classpath>
   2474     </javac>
   2475   </target>
   2476 
   2477 
   2478   <!-- Package the SNMP Directory Server extension for distribution. -->
   2479   <target name="package-snmp" if="isopendmkpresent" depends="snmpecho,compilesnmp"
   2480           description="Package the SNMP Directory Server extension for distribution.">
   2481     <property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
   2482     <mkdir dir="${pdir}/lib/extensions" />
   2483     <mkdir dir="${pdir}/snmp/mib"/>
   2484     <mkdir dir="${pdir}/config/snmp/security" />
   2485     <!-- Copy security template files -->
   2486     <copy todir="${pdir}/config/snmp/security">
   2487       <fileset dir="${snmp.security.dir}"/>
   2488     </copy>
   2489     <!-- Copy the mib -->
   2490     <copy todir="${pdir}/snmp/mib" file="${snmp.mib.dir}/rfc2605.txt"/>
   2491 
   2492     <!-- Update the config.ldif file with snmp config -->
   2493     <concat destfile="${pdir}/config/config.ldif" append="true">
   2494         <filelist dir="${snmp.config.dir}" files="config.snmp.ldif"/>
   2495     </concat>
   2496 
   2497     <!-- Create the jar file -->
   2498     <jar jarfile="${pdir}/lib/extensions/snmp-mib2605.jar"
   2499          basedir="${classes.dir}"
   2500          includes="org/opends/server/snmp/**"
   2501          compress="true" index="true" >
   2502       <manifest>
   2503         <attribute name="Extension-Name" value="snmp-mib2605"/>
   2504         <attribute name="Implementation-Version" value="${VERSION_NUMBER_STRING}"/>
   2505         <attribute name="Revision-Number" value="${REVISION_NUMBER}"/>
   2506       </manifest>
   2507     </jar>
   2508     <!-- Add admin/extension.manifest into the extension jar file -->
   2509     <jar jarfile="${pdir}/lib/extensions/snmp-mib2605.jar"
   2510          basedir="${snmp.resource.dir}"
   2511          includes="admin/**"
   2512          compress="true" index="true" update="yes">
   2513     </jar>
   2514     <echo message="SNMP Extension is built"/>
   2515     <echo message="${pdir}/lib/extensions/snmp-mib2605.jar"/>
   2516   </target>
   2517 
   2518   <target name="testsnmpinit" if="isopendmkpresent">
   2519     <!-- Compile the SNMP test cases -->
   2520     <mkdir dir="${unittest.classes.dir}" />
   2521     <javac srcdir="${unittest.testng.src.dir}" destdir="${unittest.classes.dir}"
   2522            debug="on" debuglevel="${build.debuglevel}" source="1.5"
   2523            target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
   2524            memoryMaximumSize="${MEM}" includes="org/opends/server/snmp/**">
   2525       <compilerarg value="-Xlint:all" />
   2526 
   2527       <classpath>
   2528         <fileset dir="${lib.dir}">
   2529           <include name="*.jar" />
   2530         </fileset>
   2531 
   2532         <fileset dir="${testng.lib.dir}">
   2533           <include name="*.jar" />
   2534         </fileset>
   2535 
   2536         <fileset dir="${opendmk.lib.dir}">
   2537           <include name="*.jar" />
   2538         </fileset>
   2539 
   2540         <path refid="run.classpath" />
   2541         <path refid="quickSetup.classpath" />
   2542       </classpath>
   2543     </javac>
   2544   </target>
   2545 
   2546   <import file="build-svr4.xml"/>
   2547 
   2548   <!-- Copy NDB Backend dependencies to build lib directory -->
   2549   <target name="copyndbdeps" if="ismysqldirpresent"
   2550     description="Internal target to copy NDB Backend dependencies">
   2551     <!-- Blanket copy of all jars found at mysql.lib location -->
   2552     <copy todir="${build.lib.dir}">
   2553       <fileset file="${mysql.lib.dir}/*.jar" />
   2554     </copy>
   2555   </target>
   2556 
   2557   <!-- Package NDB Backend with Directory Server distribution -->
   2558   <target name="packagendb" if="ismysqldirpresent"
   2559     description="Internal target to package NDB Backend dependencies">
   2560     <echo message="Packaging with NDB Backend dependencies"/>
   2561     <copy todir="${pdir}/lib">
   2562       <fileset file="${mysql.lib.dir}/*.jar" />
   2563     </copy>
   2564     <!-- Concat NDB Backend config entry to default config -->
   2565     <concat destfile="${pdir}/config/config.ldif" append="true">
   2566         <filelist dir="${config.dir}" files="ndbconfig.ldif"/>
   2567     </concat>
   2568   </target>
   2569 
   2570   <import file="build-pkg.xml"/>
   2571 </project>
   2572