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="default,memory""/> 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 "time,count,restarts""/> 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="default,memory"."/> 1861 <echo message=""/> 1862 <echo message=" Enabling memory progress slows down the tests significantly."/> 1863 <echo message=" Include the otherwise undocumented property "gcs" 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