2011-03-11 03:54:14 +08:00
<!--
2012-01-09 01:11:55 +08:00
~ Copyright (c) 2012, The Broad Institute
2011-03-11 03:54:14 +08:00
~
~ Permission is hereby granted, free of charge, to any person
~ obtaining a copy of this software and associated documentation
~ files (the "Software"), to deal in the Software without
~ restriction, including without limitation the rights to use,
~ copy, modify, merge, publish, distribute, sublicense, and/or sell
~ copies of the Software, and to permit persons to whom the
~ Software is furnished to do so, subject to the following
~ conditions:
~
~ The above copyright notice and this permission notice shall be
~ included in all copies or substantial portions of the Software.
~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
~ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
~ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
~ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
~ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
~ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
~ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
~ OTHER DEALINGS IN THE SOFTWARE.
-->
2012-10-16 14:21:38 +08:00
<project name= "Sting" default= "dist" basedir= "."
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
xmlns:ivy="antlib:org.apache.ivy.ant">
2009-03-25 05:16:12 +08:00
<description > Compile and distribute the Sting toolkit</description>
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Properties -->
<!-- ******************************************************************************** -->
<!-- The system classpath should take precedence over classpaths specified in this file -->
2009-12-08 03:19:29 +08:00
<property name= "build.sysclasspath" value= "first" />
2012-05-10 23:31:32 +08:00
<!-- Use this prefix to access environment variables -->
<property environment= "env" />
<!-- Build defaults: -->
<property name= "default.build.target" value= "all" /> <!-- can be "all", "public" (public only), or "protected" (public + protected) -->
<property name= "compile.scala.by.default" value= "true" /> <!-- compile Scala by default? "true" or "false" -->
<property name= "use.contracts.by.default" value= "false" /> <!-- should contracts be built by default? "true" or "false -->
<!-- Top - level directories -->
2009-12-05 04:08:41 +08:00
<property name= "build.dir" value= "build" />
2009-12-03 07:27:45 +08:00
<property name= "dist.dir" value= "dist" />
2011-07-09 03:34:39 +08:00
<property name= "lib.dir" value= "lib" />
2011-06-28 18:55:19 +08:00
<property name= "public.dir" value= "public" />
<property name= "private.dir" value= "private" />
2012-05-10 23:31:32 +08:00
<property name= "protected.dir" value= "protected" />
<property name= "external.dir" value= "external" />
<!-- Source directories -->
2011-06-28 18:55:19 +08:00
<property name= "java.public.source.dir" value= "${public.dir}/java/src" />
<property name= "java.private.source.dir" value= "${private.dir}/java/src" />
2012-05-10 23:31:32 +08:00
<property name= "java.protected.source.dir" value= "${protected.dir}/java/src" />
<property name= "scala.public.source.dir" value= "${public.dir}/scala/src" />
<property name= "scala.private.source.dir" value= "${private.dir}/scala/src" />
<property name= "scala.protected.source.dir" value= "${protected.dir}/scala/src" />
<property name= "queue-extensions.source.dir" value= "${build.dir}/queue-extensions/src" />
2011-10-25 03:49:02 +08:00
<property name= "R.public.scripts.dir" value= "${public.dir}/R/scripts" />
2011-10-27 11:05:41 +08:00
<property name= "R.private.scripts.dir" value= "${private.dir}/R/scripts" />
2012-05-10 23:31:32 +08:00
<property name= "R.protected.scripts.dir" value= "${protected.dir}/R/scripts" />
2011-10-25 03:49:02 +08:00
<property name= "R.public.src.dir" value= "${public.dir}/R/src" />
2009-12-03 07:27:45 +08:00
2012-05-10 23:31:32 +08:00
<!-- Build directories -->
<property name= "java.classes" value= "${build.dir}/java/classes" />
2011-01-08 06:03:36 +08:00
<property name= "scala.classes" value= "${build.dir}/scala/classes" />
2012-05-10 23:31:32 +08:00
<property name= "R.library.dir" value= "${public.dir}/R" /> <!-- TODO: Installing libraries back into the source directory: intentionally avoids ant clean?? -->
<property name= "R.tar.dir" value= "${build.dir}/R/src" />
<property name= "R.package.path" value= "org/broadinstitute/sting/utils/R" />
<property name= "R.script.staging.dir" value= "${build.dir}/R/stage" />
2010-08-10 00:42:48 +08:00
2012-05-10 23:31:32 +08:00
<!-- Packaging system properties -->
<property name= "package.xml.dir" value= "${public.dir}/packages" />
<property name= "package.output.dir" value= "${dist.dir}/packages" />
<property name= "staging.dir" value= "staging" />
2012-05-25 00:05:14 +08:00
<property name= "default.executable" value= "none" />
2011-08-12 07:19:25 +08:00
2012-08-16 03:56:54 +08:00
<!-- GATKDocs/Javadoc/Scaladoc directories -->
<property name= "gatkdocs.dir" value= "gatkdocs" />
2011-08-12 07:19:25 +08:00
<property name= "javadoc.dir" value= "javadoc" />
<property name= "scaladoc.dir" value= "scaladoc" />
2011-10-25 03:49:02 +08:00
2012-05-10 23:31:32 +08:00
<!-- Resource file used for help text and version information -->
<property name= "resource.file" value= "StingText.properties" />
<property name= "resource.path" value= "${java.classes}/StingText.properties" />
<!-- Directory containing cryptographic keys used by the GATK -->
<property name= "key.dir" value= "${public.dir}/keys" />
2011-05-19 02:05:59 +08:00
<!-- Contracts for Java -->
2011-08-27 14:32:47 +08:00
<!-- By default, enabled only for test targets -->
<!-- To disable for test targets, run with - Duse.contracts=false -->
<!-- To enable for non - test targets, run with - Duse.contracts=true -->
2012-05-10 23:31:32 +08:00
<property name= "java.contracts.dir" value= "${build.dir}/java/contracts" />
2012-08-10 05:08:43 +08:00
<property name= "contracts.version" value= "1.0-r139" />
2011-07-09 03:34:39 +08:00
<property name= "cofoja.jar" value= "${lib.dir}/cofoja-${contracts.version}.jar" />
2012-05-10 23:31:32 +08:00
<property name= "contract.dump.dir" value= "dump" />
2010-08-06 02:47:53 +08:00
2010-11-02 05:31:44 +08:00
<!-- do we want to halt on failure of a unit test? default to yes (Bamboo uses 'no') -->
2009-12-03 14:19:39 +08:00
<property name= "halt" value= "yes" />
2011-10-25 03:49:02 +08:00
2012-05-10 23:31:32 +08:00
<!-- should our unit test output go to a file or the screen? false means it goes to the screen (default) true to file -->
2009-09-03 23:00:27 +08:00
<property name= "usefile" value= "false" />
2012-05-10 23:31:32 +08:00
<!-- To run tests with debugging, use - Dtest.debug=true - Dtest.debug.port=XXXX on the command line -->
<property name= "test.debug.port" value= "5005" /> <!-- override on the command line if desired -->
2012-12-21 03:53:58 +08:00
<property name= "test.default.maxmemory" value= "4g" />
2009-03-25 05:16:12 +08:00
2012-12-25 00:27:32 +08:00
<!-- clover parameters -->
<property name= "clover.jar" location= "private/resources/clover/lib/clover.jar" />
2012-12-25 05:31:47 +08:00
<property name= "clover.instrument.level" value= "method" />
2012-12-25 00:27:32 +08:00
<taskdef resource= "cloverlib.xml" classpath= "${clover.jar}" />
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Filesets and paths -->
<!-- ******************************************************************************** -->
<!-- All the complexity of selecting among public/private/protected should be up here, not down in the targets -->
<patternset id= "java.source.directories.pattern" >
<include name= "${java.public.source.dir}" />
<include name= "${java.private.source.dir}" if= "include.private" />
<include name= "${java.protected.source.dir}" if= "include.protected" />
</patternset>
<patternset id= "java.source.files.pattern" >
2011-06-28 18:55:19 +08:00
<include name= "${java.public.source.dir}/**/*.java" />
<include name= "${java.private.source.dir}/**/*.java" if= "include.private" />
2012-05-10 23:31:32 +08:00
<include name= "${java.protected.source.dir}/**/*.java" if= "include.protected" />
2010-09-25 05:17:16 +08:00
</patternset>
2012-05-10 23:31:32 +08:00
<patternset id= "scala.source.directories.pattern" >
<include name= "${scala.public.source.dir}" />
<include name= "${scala.private.source.dir}" if= "include.private" />
<include name= "${scala.protected.source.dir}" if= "include.protected" />
</patternset>
2010-09-25 05:17:16 +08:00
2012-05-10 23:31:32 +08:00
<patternset id= "scala.source.files.pattern" >
<include name= "${scala.public.source.dir}/**/*.scala" />
<include name= "${scala.private.source.dir}/**/*.scala" if= "include.private" />
<include name= "${scala.protected.source.dir}/**/*.scala" if= "include.protected" />
</patternset>
<patternset id= "R.script.source.directories.pattern" >
<include name= "${R.public.scripts.dir}" />
<include name= "${R.private.scripts.dir}" if= "include.private" />
<include name= "${R.protected.scripts.dir}" if= "include.protected" />
2011-07-24 08:00:35 +08:00
</patternset>
2012-05-10 23:31:32 +08:00
<patternset id= "R.script.source.files.pattern" >
<include name= "${R.public.scripts.dir}/**/*.R" />
<include name= "${R.private.scripts.dir}/**/*.R" if= "include.private" />
<include name= "${R.protected.scripts.dir}/**.*.R" if= "include.protected" />
</patternset>
<path id= "java.source.path" >
<dirset dir= "${basedir}" >
<patternset refid= "java.source.directories.pattern" />
</dirset>
</path>
<path id= "scala.source.path" >
<dirset dir= "${basedir}" >
<patternset refid= "scala.source.directories.pattern" />
</dirset>
</path>
<path id= "R.script.source.path" >
<dirset dir= "${basedir}" >
<patternset refid= "R.script.source.directories.pattern" />
</dirset>
</path>
<fileset id= "java.source.files" dir= "${basedir}" >
<patternset refid= "java.source.files.pattern" />
2011-07-24 08:00:35 +08:00
</fileset>
2012-05-10 23:31:32 +08:00
<fileset id= "scala.source.files" dir= "${basedir}" >
<patternset refid= "scala.source.files.pattern" />
</fileset>
<fileset id= "R.script.source.files" dir= "${basedir}" >
<patternset refid= "R.script.source.files.pattern" />
2010-09-25 05:17:16 +08:00
</fileset>
2010-03-30 12:20:19 +08:00
2011-01-11 05:07:29 +08:00
<fileset id= "java.class.files" dir= "${java.classes}" erroronmissingdir= "false" >
<include name= "**/*.class" />
</fileset>
2012-11-29 09:44:09 +08:00
<patternset id= "dependency.mask" includes= "*.jar" />
2011-10-25 03:49:02 +08:00
2010-09-09 04:37:54 +08:00
<path id= "external.dependencies" >
2012-05-10 23:31:32 +08:00
<fileset dir= "${lib.dir}" erroronmissingdir= "false" >
<patternset refid= "dependency.mask" />
2011-09-29 04:23:54 +08:00
</fileset>
</path>
2011-01-08 06:03:36 +08:00
<path id= "scala.dependencies" >
2010-09-09 04:37:54 +08:00
<path refid= "external.dependencies" />
2010-08-12 05:58:26 +08:00
<pathelement location= "${java.classes}" />
<!-- Need the resources as we will be running a command line program which needs the help text. -->
<pathelement location= "${resource.path}" />
2011-01-08 06:03:36 +08:00
<!-- Add any previously compiled scala classes to the path. -->
<pathelement location= "${scala.classes}" />
2010-08-12 05:58:26 +08:00
</path>
2012-11-29 09:44:09 +08:00
<path id= "build.results" >
<!-- Ensure that GenomeAnalysisTK.jar comes first in the path, as it contains overrides for certain classes in our dependencies -->
<pathelement location= "${dist.dir}/GenomeAnalysisTK.jar" />
<!-- After GenomeAnalysisTK.jar we include all of the other jars in the dist directory -->
<fileset dir= "${dist.dir}" erroronmissingdir= "false" >
<patternset refid= "dependency.mask" />
<exclude name= "GenomeAnalysisTK.jar" />
</fileset>
</path>
2012-05-10 23:31:32 +08:00
<fileset id= "external.source.files" dir= "${external.dir}" erroronmissingdir= "false" >
<include name= "**/*.java" />
</fileset>
2012-08-16 10:54:13 +08:00
<path id= "external.build.dir" >
<path path= "${java.classes}" />
</path>
<path id= "external.dist.dir" >
<path path= "${dist.dir}" />
</path>
2012-05-10 23:31:32 +08:00
<!-- GATK dependencies consist of 3rd party plugins plus compiled GATK classes -->
2012-08-16 03:56:54 +08:00
<path id= "external.gatk.classpath" >
2012-05-10 23:31:32 +08:00
<path path= "${java.classes}" />
<path refid= "external.dependencies" />
2012-08-16 03:56:54 +08:00
</path>
2012-05-10 23:31:32 +08:00
<!-- the path for resources that need to go into the GATK jar;
any additional resources should go into this set. -->
<path id= "gatk.resources" >
2012-11-29 03:06:58 +08:00
<fileset dir= "${java.public.source.dir}" >
<include name= "**/resources/*" />
<include name= "**/templates/*" />
</fileset>
<fileset dir= "${java.private.source.dir}" erroronmissingdir= "false" >
<include name= "**/resources/*" if= "include.private" />
<include name= "**/templates/*" if= "include.private" />
</fileset>
<fileset dir= "${java.protected.source.dir}" erroronmissingdir= "false" >
<include name= "**/resources/*" if= "include.protected" />
<include name= "**/templates/*" if= "include.protected" />
2012-05-10 23:31:32 +08:00
</fileset>
</path>
<!-- ******************************************************************************** -->
<!-- Ivy Retrieve -->
<!-- ******************************************************************************** -->
2010-08-13 01:45:53 +08:00
<target name= "init.resolve" unless= "init.resolve.done" >
2010-08-10 00:42:48 +08:00
<!-- ivy properties -->
2010-11-19 04:22:01 +08:00
<property name= "ivy.install.version" value= "2.2.0" />
2010-08-10 00:42:48 +08:00
<property name= "ivy.home" value= "${user.home}/.ant" />
2011-07-09 03:34:39 +08:00
<property name= "ivy.jar.dir" value= "${ivy.home}/${lib.dir}" />
2010-08-10 00:42:48 +08:00
<property name= "ivy.jar.file" value= "ivy-${ivy.install.version}.jar" />
<property name= "ivy.settings.dir" value= "settings" />
<property file= "${ivy.settings.dir}/ivysettings.properties" />
2012-10-16 14:21:38 +08:00
<property name= "maven-ant-tasks.install.version" value= "2.1.3" />
<property name= "maven-ant-tasks.jar.file" value= "maven-ant-tasks-${maven-ant-tasks.install.version}.jar" />
2011-10-25 03:49:02 +08:00
2012-05-10 23:31:32 +08:00
<mkdir dir= "${lib.dir}" />
<mkdir dir= "${ivy.jar.dir}" />
2011-07-09 03:34:39 +08:00
2012-10-16 14:21:38 +08:00
<!-- Comment out the following lines to build the GATK without a network connection, assuming you have all of the libraries cached already -->
2012-12-25 05:31:47 +08:00
<get src= "http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/${ivy.jar.file}"
dest="${ivy.jar.dir}/${ivy.jar.file}"
usetimestamp="true"/>
<taskdef resource= "org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant"
classpath="${ivy.jar.dir}/${ivy.jar.file}"/>
2011-10-04 10:20:33 +08:00
2012-12-25 05:31:47 +08:00
<get src= "http://repo1.maven.org/maven2/org/apache/maven/maven-ant-tasks/${maven-ant-tasks.install.version}/${maven-ant-tasks.jar.file}"
dest="${ivy.jar.dir}/${maven-ant-tasks.jar.file}"
usetimestamp="true"/>
<taskdef resource= "org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:antlib:org.apache.maven.artifact.ant"
classpath="${ivy.jar.dir}/${maven-ant-tasks.jar.file}"/>
2012-10-16 14:21:38 +08:00
<!-- End network lines -->
2012-05-10 23:31:32 +08:00
<ivy:settings file= "${ivy.settings.dir}/ivysettings.xml" />
2010-08-13 01:45:53 +08:00
<property name= "init.resolve.done" value= "true" />
2010-08-12 13:10:26 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "resolve" depends= "init.resolve,init" description= "locate and download library dependencies" >
2011-01-08 06:03:36 +08:00
<property name= "ivy.conf" value= "default" />
2012-05-10 23:31:32 +08:00
<ivy:retrieve file= "ivy.xml" conf= "${ivy.conf}" />
<!-- Remove old versions of ivy jars AFTER the ivy:retrieve has been class loaded. -->
<delete file= "${ivy.jar.dir}/ivy-2.0.0.jar" />
<delete file= "${ivy.jar.dir}/ivy-2.2.0-rc1.jar" />
2010-08-13 01:45:53 +08:00
</target>
2011-08-12 07:19:25 +08:00
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Initialization -->
<!-- ******************************************************************************** -->
2011-08-27 14:32:47 +08:00
2012-05-10 23:31:32 +08:00
<!-- Targets for generating the build version -->
2011-06-28 20:37:05 +08:00
<target name= "git.describe" >
<exec executable= "git" outputproperty= "git.describe.output" resultproperty= "git.describe.exit.value" failonerror= "false" >
2012-01-03 23:18:45 +08:00
<arg line= "describe --long" />
2011-06-28 20:37:05 +08:00
</exec>
<condition property= "git.describe.succeeded" >
<equals arg1= "${git.describe.exit.value}" arg2= "0" />
</condition>
</target>
2011-10-25 03:49:02 +08:00
2011-06-28 20:37:05 +08:00
<target name= "tagged.build.version" depends= "git.describe" if= "git.describe.succeeded" >
<property name= "build.version" value= "${git.describe.output}" />
</target>
2011-10-25 03:49:02 +08:00
2011-07-06 09:59:00 +08:00
<target name= "git.rev-parse" depends= "git.describe" unless= "git.describe.succeeded" >
<exec executable= "git" outputproperty= "git.rev-parse.output" resultproperty= "git.rev-parse.exit.value" failonerror= "false" >
2012-10-16 14:21:38 +08:00
<arg line= "rev-parse --short HEAD" />
2010-01-20 00:55:42 +08:00
</exec>
2011-07-06 09:59:00 +08:00
<condition property= "git.rev-parse.succeeded" >
<equals arg1= "${git.rev-parse.exit.value}" arg2= "0" />
</condition>
2011-06-28 20:37:05 +08:00
</target>
2011-10-25 03:49:02 +08:00
2011-07-06 09:59:00 +08:00
<target name= "untagged.build.version" depends= "git.rev-parse" if= "git.rev-parse.succeeded" >
<property name= "build.version" value= "${git.rev-parse.output}" />
</target>
2011-10-25 03:49:02 +08:00
2011-07-06 09:59:00 +08:00
<target name= "generate.build.version" depends= "tagged.build.version, untagged.build.version" >
<!-- Set build.version to exported if no other value has been set -->
<property name= "build.version" value= "exported" />
</target>
2011-06-28 20:37:05 +08:00
2012-05-10 23:31:32 +08:00
<!-- INIT OVERRIDES: call these targets BEFORE init to override build defaults -->
2012-10-31 23:49:50 +08:00
<target name= "init.build.publiconly" >
2012-05-10 23:31:32 +08:00
<property name= "build.target" value= "public" />
</target>
2012-10-31 23:49:50 +08:00
<target name= "init.build.publicprotectedonly" >
2012-05-10 23:31:32 +08:00
<property name= "build.target" value= "protected" />
</target>
2012-10-31 23:49:50 +08:00
<target name= "init.build.all" >
<property name= "build.target" value= "all" />
</target>
2012-05-10 23:31:32 +08:00
<target name= "init.javaonly" >
<property name= "compile.scala" value= "false" />
</target>
2012-05-25 00:05:14 +08:00
<target name= "init.javaandscala" >
<property name= "compile.scala" value= "true" />
</target>
2012-05-10 23:31:32 +08:00
<target name= "init.usecontracts" >
<property name= "use.contracts" value= "true" />
</target>
<!-- INIT -->
2011-06-28 20:37:05 +08:00
<target name= "init" depends= "generate.build.version" >
2012-05-10 23:31:32 +08:00
<tstamp >
<format property= "build.timestamp" pattern= "yyyy/MM/dd HH:mm:ss" />
</tstamp>
<!-- These properties should be overridden before init is called if the defaults are not desired -->
<property name= "build.target" value= "${default.build.target}" />
<property name= "compile.scala" value= "${compile.scala.by.default}" />
<property name= "use.contracts" value= "${use.contracts.by.default}" />
2012-05-25 00:05:14 +08:00
<property name= "executable" value= "${default.executable}" />
2012-05-10 23:31:32 +08:00
<!-- Determine what should be built -->
<condition property= "include.scala" >
<equals arg1= "${compile.scala}" arg2= "true" />
</condition>
2010-01-20 00:55:42 +08:00
2012-05-10 23:31:32 +08:00
<condition property= "include.private" >
<and >
<available file= "${private.dir}" />
<equals arg1= "${build.target}" arg2= "all" />
</and>
2010-08-10 00:42:48 +08:00
</condition>
2012-05-10 23:31:32 +08:00
<condition property= "include.protected" >
<and >
<available file= "${protected.dir}" />
<or >
<equals arg1= "${build.target}" arg2= "all" />
<equals arg1= "${build.target}" arg2= "protected" />
</or>
</and>
2010-08-10 00:42:48 +08:00
</condition>
2012-05-10 23:31:32 +08:00
<condition property= "include.contracts" >
<equals arg1= "${use.contracts}" arg2= "true" />
2010-08-10 00:42:48 +08:00
</condition>
2012-05-10 23:31:32 +08:00
<condition property= "include.external" >
<available file= "${external.dir}" />
2010-08-10 00:42:48 +08:00
</condition>
2011-01-08 06:03:36 +08:00
2012-05-10 23:31:32 +08:00
<!-- Construct display strings for the build properties print out -->
2011-10-25 03:49:02 +08:00
2012-05-10 23:31:32 +08:00
<condition property= "include.scala.display.string" value= "yes" else= "no" >
<isset property= "include.scala" />
</condition>
2010-08-10 00:42:48 +08:00
2012-05-10 23:31:32 +08:00
<condition property= "include.private.display.string" value= "yes" else= "no" >
<isset property= "include.private" />
</condition>
2012-01-19 05:34:42 +08:00
2012-05-10 23:31:32 +08:00
<condition property= "include.protected.display.string" value= "yes" else= "no" >
<isset property= "include.protected" />
</condition>
2011-07-09 03:34:39 +08:00
2012-05-10 23:31:32 +08:00
<condition property= "include.external.display.string" value= "yes" else= "no" >
<isset property= "include.external" />
</condition>
2010-11-18 04:41:04 +08:00
2012-05-10 23:31:32 +08:00
<condition property= "include.contracts.display.string" value= "yes" else= "no" >
<isset property= "include.contracts" />
</condition>
2010-11-18 04:41:04 +08:00
2012-05-10 23:31:32 +08:00
<!-- Print out build properties -->
<echo message= "BUILD PROPERTIES" />
<echo message= "Include Scala? : ${include.scala.display.string}" />
<echo message= "Include Private? : ${include.private.display.string}" />
<echo message= "Include Protected? : ${include.protected.display.string}" />
<echo message= "Include External? : ${include.external.display.string}" />
<echo message= "Include Contracts? : ${include.contracts.display.string}" />
<echo message= "Source revision : ${build.version}" />
<echo message= "Build time : ${build.timestamp}" />
2010-11-18 04:41:04 +08:00
2012-05-10 23:31:32 +08:00
<!-- Create the build directory structure used by compile -->
<mkdir dir= "${build.dir}" />
<mkdir dir= "${lib.dir}" />
<mkdir dir= "${java.classes}" />
<mkdir dir= "${java.contracts.dir}" />
2009-03-25 05:16:12 +08:00
</target>
2010-08-10 00:42:48 +08:00
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Java Compilation -->
<!-- ******************************************************************************** -->
2011-06-28 18:55:19 +08:00
2012-05-10 23:31:32 +08:00
<target name= "gatk.compile.internal.source" depends= "init,resolve" >
<javac fork= "true" memoryMaximumSize= "512m" destdir= "${java.classes}" debug= "true" debuglevel= "lines,vars,source" classpathref= "external.dependencies" tempdir= "${java.io.tmpdir}" >
<src refid= "java.source.path" />
<compilerarg value= "-proc:none" />
2011-10-25 03:49:02 +08:00
</javac>
2011-06-29 00:55:18 +08:00
</target>
2010-09-25 05:17:16 +08:00
2012-05-10 23:31:32 +08:00
<target name= "gatk.compile.external.source" depends= "gatk.compile.internal.source" if= "include.external" >
2010-09-25 05:17:16 +08:00
<subant target= "compile" genericantfile= "build.xml" >
2012-08-16 10:54:13 +08:00
<property name= "build.dir" refid= "external.build.dir" />
<property name= "dist.dir" refid= "external.dist.dir" />
2012-08-16 03:56:54 +08:00
<property name= "gatk.classpath" refid= "external.gatk.classpath" />
2011-02-18 03:22:21 +08:00
<fileset dir= "${external.dir}" includes= "*/build.xml" erroronmissingdir= "false" />
2011-10-25 03:49:02 +08:00
</subant>
2009-03-25 05:16:12 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "gatk.compile.source" depends= "gatk.compile.internal.source,gatk.compile.external.source" description= "Compile the GATK source" />
2011-06-29 00:55:18 +08:00
2012-05-10 23:31:32 +08:00
<target name= "gatk.contracts" depends= "gatk.compile.source" if= "include.contracts" >
<javac fork= "true" memoryMaximumSize= "512m" destdir= "${java.contracts.dir}" debug= "true" debuglevel= "lines,vars,source" tempdir= "${java.io.tmpdir}" >
<src refid= "java.source.path" />
2011-06-28 18:55:19 +08:00
<classpath >
<path refid= "external.dependencies" />
<pathelement path= "${java.classes}" />
</classpath>
<compilerarg value= "-Acom.google.java.contract.debug" />
2011-10-25 03:49:02 +08:00
<compilerarg value= "-Acom.google.java.contract.dump=${contract.dump.dir}" />
2011-06-28 18:55:19 +08:00
<compilerarg value= "-proc:only" />
2011-10-25 03:49:02 +08:00
</javac>
2011-07-09 03:34:39 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "gatk.compile" depends= "init,resolve,gatk.compile.source,gatk.contracts" />
2011-06-29 00:55:18 +08:00
2011-10-25 03:49:02 +08:00
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Scala Compilation -->
<!-- ******************************************************************************** -->
2011-05-19 02:05:59 +08:00
2011-01-08 06:03:36 +08:00
<target name= "init.queue-extensions.generate" depends= "gatk.compile" >
<condition property= "uptodate.queue-extensions.generate" >
<or >
<not >
2012-05-10 23:31:32 +08:00
<isset property= "include.scala" />
2011-01-08 06:03:36 +08:00
</not>
<uptodate targetfile= "${queue-extensions.source.dir}" >
2011-01-11 05:07:29 +08:00
<srcfiles refid= "java.class.files" />
2011-03-11 03:54:14 +08:00
<srcfiles file= "${queue-extensions.gatk.jar}" />
2011-01-08 06:03:36 +08:00
</uptodate>
</or>
</condition>
</target>
2010-08-10 00:42:48 +08:00
<!-- NOTE: Extracting help first to avoid "Unable to load help text. Help output will be sparse." warning message. -->
2012-05-10 23:31:32 +08:00
<target name= "queue-extensions.generate" depends= "gatk.compile,extracthelp,init.queue-extensions.generate" unless= "uptodate.queue-extensions.generate" description= "generate GATK modules for Queue" >
2010-08-14 07:52:24 +08:00
<mkdir dir= "${queue-extensions.source.dir}" />
2010-08-10 00:42:48 +08:00
<echo > Generating Queue GATK extensions...</echo>
2011-03-11 03:54:14 +08:00
<java fork= "true" failonerror= "true" classname= "org.broadinstitute.sting.queue.extensions.gatk.GATKExtensionsGenerator" >
2010-08-10 00:42:48 +08:00
<arg value= "-outDir" />
2010-08-14 07:52:24 +08:00
<arg path= "${queue-extensions.source.dir}" />
2010-08-12 05:58:26 +08:00
<arg value= "-l" />
<arg value= "WARN" />
2011-03-11 03:54:14 +08:00
<classpath >
<file file= "${queue-extensions.gatk.jar}" />
<path refid= "scala.dependencies" />
</classpath>
2010-08-10 00:42:48 +08:00
</java>
2011-01-08 06:03:36 +08:00
<touch >
<file file= "${queue-extensions.source.dir}" />
</touch>
2010-08-12 05:58:26 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "init.scala.compile" depends= "resolve" description= "Initializes the scala ant tasks from scala-compiler.jar" >
<path id= "scala.classpath" >
<fileset dir= "${lib.dir}" >
<include name= "scala-compiler-*.jar" />
<include name= "scala-library-*.jar" />
</fileset>
</path>
<taskdef resource= "scala/tools/ant/antlib.xml" >
<classpath refid= "scala.classpath" />
</taskdef>
</target>
2011-01-08 06:03:36 +08:00
<!-- Scala depends on the java compile -->
2012-05-10 23:31:32 +08:00
<target name= "scala.compile" depends= "init,resolve,gatk.compile,queue-extensions.generate,init.scala.compile" if= "include.scala" >
2011-01-08 06:03:36 +08:00
<mkdir dir= "${scala.classes}" />
<echo > Building Scala...</echo>
<scalac fork= "true" jvmargs= "-Xmx512m" destdir= "${scala.classes}" classpathref= "scala.dependencies" deprecation= "yes" unchecked= "yes" >
2012-05-10 23:31:32 +08:00
<src refid= "scala.source.path" />
2010-10-05 03:38:29 +08:00
<src path= "${queue-extensions.source.dir}" />
2012-05-10 23:31:32 +08:00
<include name= "**/*.scala" />
2011-10-25 03:49:02 +08:00
</scalac>
2011-06-29 00:55:18 +08:00
</target>
2011-10-25 03:49:02 +08:00
2011-06-29 00:55:18 +08:00
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Sting Resource File Generation -->
<!-- ******************************************************************************** -->
2010-08-10 00:42:48 +08:00
2011-02-04 02:07:55 +08:00
<target name= "init.extracthelp" depends= "gatk.compile" >
<loadfile property= "properties.version" srcfile= "${basedir}/${resource.path}" failonerror= "false" quiet= "true" >
<filterchain >
<linecontains >
<contains value= "org.broadinstitute.sting.gatk.CommandLineGATK.version" />
</linecontains>
<tokenfilter >
<replaceregex pattern= "^.*\.(.*?)$" replace= "\1" />
</tokenfilter>
<striplinebreaks />
</filterchain>
</loadfile>
2011-04-08 02:40:53 +08:00
<!-- This fileset will contain only source files modified since the resource file was last generated,
or all source files if the resource file doesn't exist -->
<fileset dir= "${basedir}" id= "modified.source.files" >
2012-05-10 23:31:32 +08:00
<patternset refid= "java.source.files.pattern" />
2011-04-08 02:40:53 +08:00
<include name= "${external.dir}/**/*.java" />
<depend targetdir= "${basedir}" >
<mapper type= "merge" to= "${resource.path}" />
</depend>
</fileset>
<!-- Set the sources.modified property only if our fileset of modified source files is non - empty -->
<pathconvert refid= "modified.source.files" property= "sources.modified" setonempty= "false" />
<!-- Due to a limitation in the doclet API, we always need to pass package - info files to javadoc -->
<fileset dir= "${basedir}" id= "package.info.files" >
2011-06-28 18:55:19 +08:00
<include name= "${java.public.source.dir}/**/package-info.java" />
<include name= "${java.private.source.dir}/**/package-info.java" if= "include.private" />
2012-05-10 23:31:32 +08:00
<include name= "${java.protected.source.dir}/**/package-info.java" if= "include.protected" />
2011-04-08 02:40:53 +08:00
<include name= "${external.dir}/**/package-info.java" />
</fileset>
2011-01-08 06:03:36 +08:00
<condition property= "uptodate.extracthelp" >
<or >
<isset property= "disable.help" />
2011-02-04 02:07:55 +08:00
<and >
2011-04-08 02:40:53 +08:00
<not >
<isset property= "sources.modified" />
</not>
<equals arg1= "${properties.version}" arg2= "${build.version}" />
2011-02-04 02:07:55 +08:00
</and>
2011-01-08 06:03:36 +08:00
</or>
</condition>
</target>
2011-04-08 02:40:53 +08:00
<target name= "extracthelp" depends= "init.extracthelp" unless= "uptodate.extracthelp"
description="Extract help key/value pair file from the JavaDoc tags.">
2010-08-10 00:42:48 +08:00
<path id= "doclet.classpath" >
2011-04-08 02:40:53 +08:00
<path refid= "external.dependencies" />
<pathelement location= "${java.classes}" />
2012-12-21 03:53:58 +08:00
<pathelement location= "${clover.jar}" />
2010-08-10 00:42:48 +08:00
</path>
2010-09-25 05:17:16 +08:00
2011-03-12 09:33:08 +08:00
<javadoc doclet= "org.broadinstitute.sting.utils.help.ResourceBundleExtractorDoclet"
docletpathref="doclet.classpath"
classpathref="external.dependencies"
2011-04-08 02:40:53 +08:00
classpath="${java.classes}"
2012-09-01 07:54:33 +08:00
maxmemory="2g"
2011-06-28 20:37:05 +08:00
additionalparam="-build-timestamp " ${build.timestamp}" -absolute-version ${build.version} -out ${basedir}/${resource.path} -quiet">
2011-04-08 02:40:53 +08:00
<sourcefiles >
<union >
<fileset refid= "modified.source.files" />
<fileset refid= "package.info.files" />
</union>
</sourcefiles>
2011-03-12 09:33:08 +08:00
</javadoc>
2009-12-05 04:08:41 +08:00
</target>
2011-08-04 06:11:22 +08:00
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Build Jars -->
<!-- ******************************************************************************** -->
2011-07-21 12:18:07 +08:00
2012-05-10 23:31:32 +08:00
<target name= "sting.compile" depends= "gatk.compile, scala.compile" />
2011-08-27 15:17:46 +08:00
2012-05-10 23:31:32 +08:00
<target name= "init.jar" depends= "sting.compile,extracthelp" >
<mkdir dir= "${dist.dir}" />
<copy todir= "${dist.dir}" >
<fileset dir= "${lib.dir}" includes= "*.jar" />
</copy>
2011-07-21 12:18:07 +08:00
</target>
2011-10-25 03:49:02 +08:00
<target name= "R.public.tar" >
<mkdir dir= "${R.tar.dir}/${R.package.path}" />
<tar compression= "gzip" basedir= "${R.public.src.dir}/${R.package.path}" includes= "gsalib/**" destfile= "${R.tar.dir}/${R.package.path}/gsalib.tar.gz" />
</target>
2012-05-10 23:31:32 +08:00
<target name= "R.script.stage" >
<mkdir dir= "${R.script.staging.dir}" />
<copy todir= "${R.script.staging.dir}" overwrite= "true" >
<fileset refid= "R.script.source.files" />
<!-- remove the initial path components (eg., public/R/scripts) when doing the copy -->
<!-- ant 1.8.2 has a cutdirsmapper, but ant versions < 1.8.2 are too common to use it -->
<mapper type= "regexp" from= "^(${R.public.scripts.dir}|${R.private.scripts.dir}|${R.protected.scripts.dir})/(.*)" to= "\2" />
2009-03-25 05:16:12 +08:00
</copy>
2010-08-10 00:42:48 +08:00
</target>
2009-03-25 05:16:12 +08:00
2012-05-10 23:31:32 +08:00
<target name= "sting-utils.jar" depends= "gatk.compile, init.jar, R.public.tar, R.script.stage" >
2009-12-03 07:27:45 +08:00
<jar jarfile= "${dist.dir}/StingUtils.jar" >
2012-12-19 03:56:48 +08:00
<fileset dir= "${java.classes}" includes= "**/sting/utils/**/*.class" />
<fileset dir= "${java.classes}" includes= "**/sting/commandline/**/*.class" />
2011-07-06 23:32:46 +08:00
<fileset dir= "${java.classes}" includes= "**/sting/pipeline/**/*.class" />
2012-02-23 05:45:20 +08:00
<fileset dir= "${java.classes}" includes= "**/sting/tools/**/*.class" />
2010-12-10 12:36:06 +08:00
<fileset dir= "${java.classes}" includes= "**/sting/jna/**/*.class" />
2010-09-09 04:37:54 +08:00
<fileset dir= "${java.classes}" includes= "net/sf/picard/**/*.class" />
2011-02-09 09:51:34 +08:00
<fileset dir= "${java.classes}" includes= "net/sf/samtools/**/*.class" />
2011-10-25 03:49:02 +08:00
<fileset dir= "${R.tar.dir}" >
<include name= "**/${R.package.path}/**/*.tar.gz" />
</fileset>
2012-05-10 23:31:32 +08:00
<fileset dir= "${R.script.staging.dir}" >
2012-12-19 03:56:48 +08:00
<include name= "**/sting/utils/**/*.R" />
2011-10-27 11:05:41 +08:00
</fileset>
2010-07-28 02:44:15 +08:00
<manifest >
<attribute name= "Premain-Class" value= "org.broadinstitute.sting.utils.instrumentation.Sizeof" />
</manifest>
2009-03-25 05:16:12 +08:00
</jar>
2010-08-10 00:42:48 +08:00
</target>
2009-03-25 05:16:12 +08:00
2012-11-30 03:38:09 +08:00
<target name= "na12878kb.jar" depends= "gatk.compile,init.jar" >
<jar jarfile= "${dist.dir}/na12878kb.jar" >
<fileset dir= "${java.classes}" >
<include name= "org/broadinstitute/sting/utils/GenomeLocParser*.class" />
<include name= "org/broadinstitute/sting/utils/GenomeLoc.class" />
<include name= "org/broadinstitute/sting/utils/HasGenomeLocation.class" />
2013-02-07 00:15:03 +08:00
<include name= "org/broadinstitute/sting/utils/BaseUtils.class" />
2012-11-30 03:38:09 +08:00
<include name= "org/broadinstitute/sting/utils/Utils.class" />
<include name= "org/broadinstitute/sting/utils/exceptions/**/*.class" />
<include name= "org/broadinstitute/sting/gatk/walkers/na12878kb/core/**/*.class" />
<include name= "net/sf/picard/reference/FastaSequenceFile.class" />
</fileset>
<fileset dir= "${java.private.source.dir}" >
<include name= "org/broadinstitute/sting/gatk/walkers/na12878kb/core/resources/**/*" />
</fileset>
</jar>
</target>
2012-05-10 23:31:32 +08:00
<target name= "gatk.jar" depends= "gatk.compile, init.jar, R.script.stage" description= "generate the GATK distribution" >
2009-12-03 07:27:45 +08:00
<jar jarfile= "${dist.dir}/GenomeAnalysisTK.jar" >
2010-03-30 12:20:19 +08:00
<path refid= "gatk.resources" />
2012-05-10 23:31:32 +08:00
<fileset dir= "${java.contracts.dir}" />
2010-06-23 02:39:20 +08:00
<fileset dir= "${java.classes}" >
2010-03-30 12:20:19 +08:00
<include name= "${resource.file}" />
2012-12-19 03:56:48 +08:00
<include name= "**/sting/gatk/**/*.class" />
<include name= "**/sting/alignment/**/*.class" />
2009-11-03 08:15:45 +08:00
</fileset>
2012-05-10 23:31:32 +08:00
<fileset dir= "${R.script.staging.dir}" >
2012-12-19 03:56:48 +08:00
<include name= "**/sting/gatk/**/*.R" />
<include name= "**/sting/alignment/**/*.R" />
2011-10-27 11:05:41 +08:00
</fileset>
2012-02-23 05:45:20 +08:00
<fileset dir= "${key.dir}" >
<include name= "**/*.key" />
</fileset>
2009-03-25 05:16:12 +08:00
<manifest >
2010-07-28 02:44:15 +08:00
<attribute name= "Main-Class" value= "org.broadinstitute.sting.gatk.CommandLineGATK" />
2009-03-25 05:16:12 +08:00
</manifest>
</jar>
2010-11-18 04:41:04 +08:00
<jar jarfile= "${dist.dir}/Aligner.jar" >
2012-12-19 03:56:48 +08:00
<fileset dir= "${java.classes}" includes= "**/sting/alignment/**/*.class" />
2010-11-18 04:41:04 +08:00
</jar>
2009-11-14 06:29:29 +08:00
2011-03-31 05:43:37 +08:00
<subant target= "dist" genericantfile= "build.xml" >
2012-08-16 10:54:13 +08:00
<property name= "build.dir" refid= "external.build.dir" />
<property name= "dist.dir" refid= "external.dist.dir" />
<property name= "gatk.classpath" refid= "external.gatk.classpath" />
2011-03-31 05:43:37 +08:00
<fileset dir= "${external.dir}" includes= "*/build.xml" erroronmissingdir= "false" />
</subant>
</target>
2011-04-02 21:41:29 +08:00
2012-05-10 23:31:32 +08:00
<target name= "scala.jar" depends= "scala.compile, init.jar" if= "include.scala" >
2011-01-08 06:03:36 +08:00
<jar jarfile= "${dist.dir}/GATKScala.jar" >
<fileset dir= "${scala.classes}" >
<include name= "org/broadinstitute/sting/scala/**/*.class" />
</fileset>
</jar>
</target>
2012-05-10 23:31:32 +08:00
<target name= "queue.jar" depends= "scala.compile, init.jar, R.script.stage" if= "include.scala" >
2010-08-10 00:42:48 +08:00
<jar jarfile= "${dist.dir}/Queue.jar" >
2011-01-08 06:03:36 +08:00
<fileset dir= "${scala.classes}" >
2010-08-10 00:42:48 +08:00
<include name= "org/broadinstitute/sting/queue/**/*.class" />
</fileset>
2010-08-14 07:52:24 +08:00
<fileset dir= "${java.classes}" >
<include name= "org/broadinstitute/sting/queue/**/*.class" />
</fileset>
2012-05-10 23:31:32 +08:00
<fileset dir= "${R.script.staging.dir}" >
2011-10-27 11:05:41 +08:00
<include name= "org/broadinstitute/sting/queue/**/*.R" />
</fileset>
2010-08-10 00:42:48 +08:00
<manifest >
<attribute name= "Main-Class" value= "org.broadinstitute.sting.queue.QCommandLine" />
</manifest>
</jar>
</target>
2013-02-07 00:15:03 +08:00
<target name= "sting.jar" depends= "sting-utils.jar, gatk.jar, queue.jar" />
2010-08-10 00:42:48 +08:00
<target name= "init.manifests" depends= "sting.jar" >
2009-03-25 05:16:12 +08:00
<pathconvert property= "jar.classpath" pathsep= " " >
<flattenmapper />
2009-12-03 07:27:45 +08:00
<fileset dir= "${dist.dir}" includes= "*.jar" />
2009-11-02 14:02:41 +08:00
<filelist files= "GATKScala.jar" />
2009-03-25 05:16:12 +08:00
</pathconvert>
2010-08-10 00:42:48 +08:00
</target>
2009-03-25 05:16:12 +08:00
2010-08-10 00:42:48 +08:00
<target name= "sting-utils.manifests" depends= "sting-utils.jar, init.manifests" >
<jar jarfile= "${dist.dir}/StingUtils.jar" update= "true" >
2009-12-03 03:04:38 +08:00
<manifest >
2010-08-10 00:42:48 +08:00
<attribute name= "Class-Path" value= "${jar.classpath}" />
2009-12-03 03:04:38 +08:00
</manifest>
</jar>
2010-08-10 00:42:48 +08:00
</target>
2009-12-03 03:04:38 +08:00
2010-08-10 00:42:48 +08:00
<target name= "gatk.manifests" depends= "gatk.jar, init.manifests" >
2009-12-03 07:27:45 +08:00
<jar jarfile= "${dist.dir}/GenomeAnalysisTK.jar" update= "true" >
2009-03-25 05:16:12 +08:00
<manifest >
<attribute name= "Class-Path" value= "${jar.classpath}" />
</manifest>
</jar>
2011-03-31 05:43:37 +08:00
</target>
2011-10-25 03:49:02 +08:00
2012-05-10 23:31:32 +08:00
<target name= "queue.manifests" depends= "queue.jar, init.manifests" if= "include.scala" >
2010-08-10 00:42:48 +08:00
<jar jarfile= "${dist.dir}/Queue.jar" update= "true" >
<manifest >
<attribute name= "Class-Path" value= "${jar.classpath}" />
</manifest>
</jar>
</target>
2011-06-28 18:55:19 +08:00
<target name= "sting.manifests" depends= "sting-utils.manifests, gatk.manifests, queue.manifests" />
2010-08-10 00:42:48 +08:00
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Top - Level Build Targets -->
<!-- ******************************************************************************** -->
<target name= "dist" depends= "sting.manifests" />
<target name= "gatk" depends= "init.javaonly, sting.manifests" />
<target name= "queue" depends= "dist" /> <!-- Obsolete target. Now just an alias for dist -->
<target name= "scala" depends= "scala.jar" description= "build the scala directory" />
<!-- ******************************************************************************** -->
<!-- GATKDocs -->
<!-- ******************************************************************************** -->
<target name= "gatkdocs" depends= "gatk.compile" description= "Extract help key/value pair file from the JavaDoc tags." >
<path id= "doclet.classpath" >
<path refid= "external.dependencies" />
<pathelement location= "${java.classes}" />
</path>
<!-- Run with - Dgatkdocs.include.hidden=true to include documentation for hidden features -->
<condition property= "gatkdocs.include.hidden.arg" value= "-include-hidden" else= "" >
<isset property= "gatkdocs.include.hidden" />
</condition>
<javadoc doclet= "org.broadinstitute.sting.utils.help.GATKDoclet"
docletpathref="doclet.classpath"
classpathref="external.dependencies"
classpath="${java.classes}"
2012-09-01 07:54:33 +08:00
maxmemory="2g"
2012-05-10 23:31:32 +08:00
additionalparam="${gatkdocs.include.hidden.arg} -private -build-timestamp " ${build.timestamp}" -absolute-version ${build.version} -quiet"> <!-- - test to only do DocumentationTest walker -->
<sourcefiles >
<fileset refid= "java.source.files" />
</sourcefiles>
</javadoc>
</target>
<!-- ******************************************************************************** -->
<!-- Javadoc -->
<!-- ******************************************************************************** -->
<target name= "init.javadoc" >
<mkdir dir= "${javadoc.dir}" />
</target>
<target name= "javadoc" depends= "init.javadoc,resolve" >
<javadoc destdir= "${javadoc.dir}" classpathref= "external.dependencies" >
<fileset refid= "java.source.files" />
<sourcepath path= "${external.dir}" />
</javadoc>
</target>
<!-- ******************************************************************************** -->
<!-- Scaladoc -->
<!-- ******************************************************************************** -->
<target name= "init.scaladoc" >
<mkdir dir= "${scaladoc.dir}" />
2009-03-28 06:32:44 +08:00
</target>
2012-05-10 23:31:32 +08:00
<!-- NOTE: the scaladoc target requires that the environment variable ANT_OPTS has been set to " - Xmx1G" -->
<target name= "scaladoc" depends= "resolve,queue-extensions.generate,init.scala.compile,scala.compile,init.scaladoc" >
<scaladoc srcdir= "${basedir}" destdir= "${scaladoc.dir}" classpathref= "scala.dependencies" deprecation= "yes" unchecked= "yes" >
<patternset refid= "scala.source.files.pattern" />
<include name= "${queue-extensions.source.dir}/**/*.scala" />
</scaladoc>
2009-12-03 07:27:45 +08:00
</target>
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Release - related tasks -->
<!-- ******************************************************************************** -->
2012-10-31 23:49:50 +08:00
<target name= "init.executable.gatkfull" depends= "init.build.publicprotectedonly, init.javaonly" >
2012-05-25 00:05:14 +08:00
<property name= "executable" value= "GenomeAnalysisTK" />
</target>
2012-10-31 23:49:50 +08:00
<target name= "init.executable.queueall" depends= "init.build.all, init.javaandscala" >
2012-05-25 00:05:14 +08:00
<property name= "executable" value= "Queue" />
</target>
2012-10-31 23:49:50 +08:00
<target name= "init.executable.queuefull" depends= "init.build.publicprotectedonly, init.javaandscala" >
<property name= "executable" value= "Queue" />
</target>
2012-05-25 00:05:14 +08:00
<target name= "require.executable" >
<condition property= "no.executable.defined" >
<or >
<equals arg1= "${executable}" arg2= "none" />
<equals arg1= "${executable}" arg2= "$${executable}" />
</or>
</condition>
<fail message= "No executable defined. Call a more specific packaging/release target, or define an executable manually" if= "no.executable.defined" />
</target>
2012-05-10 23:31:32 +08:00
<!-- Unzip all classes from their current locations and assemble them in a staging directory -->
<target name= "stage" description= "stage files for distribution" >
<mkdir dir= "${staging.dir}" />
2010-08-10 01:59:51 +08:00
<!--
2012-05-10 23:31:32 +08:00
HACK: Create the edu directory before EDU on case-insensitive mac filesystems.
The ivy dependency colt -> concurrent contains an EDU.oswego package which
BCEL doesn't even pull in but messes up edu.mit.broad.
-->
<mkdir dir= "${staging.dir}/edu" />
<unjar dest= "${staging.dir}" overwrite= "false" >
<fileset dir= "${dist.dir}" >
<patternset refid= "dependency.mask" />
</fileset>
</unjar>
<!-- HACK: The GATK jar itself contains overrides for some core classes. Make sure the GATK.jar is unrolled last. -->
<unjar dest= "${staging.dir}" overwrite= "true" >
<fileset dir= "${dist.dir}" includes= "**/GenomeAnalysisTK.jar" />
</unjar>
2010-08-10 00:42:48 +08:00
</target>
2012-05-25 00:05:14 +08:00
<!-- Build a package consisting of all supporting files. Don't call this target directly. Call one of the specific packaging targets below -->
2012-11-03 07:01:59 +08:00
<target name= "package" depends= "require.clean,dist,stage,require.executable" description= "bundle up an executable for distribution" >
2012-05-10 23:31:32 +08:00
<mkdir dir= "${package.output.dir}" />
<xslt destdir= "${package.output.dir}" style= "${package.xml.dir}/CreatePackager.xsl" useImplicitFileset= "false" >
<flattenmapper />
<fileset dir= "${package.xml.dir}" >
<include name= "${executable}.xml" />
</fileset>
<fileset dir= "${external.dir}" erroronmissingdir= "false" >
<include name= "*/${executable}.xml" />
</fileset>
</xslt>
<ant antfile= "${package.output.dir}/${executable}.xml" target= "package" />
2011-09-03 02:34:31 +08:00
</target>
2012-05-25 00:05:14 +08:00
<!-- Package specific versions of the GATK/Queue. ALWAYS do an ant clean before invoking these! -->
2012-10-31 23:49:50 +08:00
<target name= "package.gatk.full" depends= "init.executable.gatkfull,package" />
<target name= "package.queue.all" depends= "init.executable.queueall,package" />
2012-05-25 00:05:14 +08:00
2012-10-31 23:49:50 +08:00
<target name= "package.queue.full" depends= "init.executable.queuefull,package" />
2012-05-25 00:05:14 +08:00
<!-- Release a build. Don't call this target directly. Call one of the specific release targets below -->
<target name= "release" depends= "require.executable" description= "release a build, putting each file in a location specified by the package" >
<ant antfile= "${package.output.dir}/${executable}.xml" target= "release" />
2011-09-03 02:34:31 +08:00
</target>
2012-05-25 00:05:14 +08:00
<!-- Release specific versions of the GATK/Queue. ALWAYS do an ant clean before invoking these! -->
<target name= "release.gatk.full" depends= "package.gatk.full,release" />
<target name= "release.queue.full" depends= "package.queue.full,release" />
2012-05-10 23:31:32 +08:00
<!-- Build a subset of picard with only those classes we need by completely abusing the packaging system -->
<!-- TODO: Reuse as much as possible of the 'stage' and 'package' targets -->
<target name= "build-picard-private" depends= "resolve" >
<!-- Build out a classpath -->
<pathconvert property= "required.picard.jars" pathsep= ":" >
<fileset dir= "${basedir}" >
<include name= "${staging.dir}" />
<include name= "${lib.dir}/picard-*.*.*.jar" />
<include name= "${lib.dir}/sam-*.jar" />
</fileset>
</pathconvert>
<echo message= "required.picard.jars=${required.picard.jars}" />
<!-- Stage picard - private -->
<delete dir= "${staging.dir}" />
<mkdir dir= "${staging.dir}" />
<unjar src= "${picard.dist.dir}/picard-private.jar" dest= "${staging.dir}" overwrite= "true" />
<!-- Use the packaging system to extract parts of picard - private we need -->
<mkdir dir= "${package.output.dir}" />
<xslt in= "${package.xml.dir}/PicardPrivate.xml" out= "${package.output.dir}/BuildPicardPrivate.xml" style= "${package.xml.dir}/CreatePackager.xsl" />
<ant antfile= "${package.output.dir}/BuildPicardPrivate.xml" >
<property name= "additional.jars" value= "${required.picard.jars}" />
</ant>
2011-01-08 06:03:36 +08:00
</target>
2010-08-12 05:58:26 +08:00
2012-10-16 14:21:38 +08:00
<!-- Maven install a package consisting of all supporting files. Don't call this target directly. Call one of the specific packaging targets below -->
<target name= "mvninstall" depends= "package" description= "maven install a package into .m2/repository" >
2013-01-11 02:46:49 +08:00
<property name= "mvn.build.version" value= "0.0.2" />
2012-10-16 14:21:38 +08:00
<!--
We should use the build version or better yet a git tag version, but tags are currently missing. Alternatively how do we then depend on the LATEST?
<property name= "mvn.build.version" value= "${build.version}" />
-->
<artifact:pom id= "${executable}.pom" groupId= "org.broadinstitute.sting" artifactId= "${executable}" version= "${mvn.build.version}" name= "${executable}" />
<artifact:writepom pomRefId= "${executable}.pom" file= "${package.output.dir}/${executable}-${build.version}/${executable}.pom.xml" />
<artifact:install file= "${package.output.dir}/${executable}-${build.version}/${executable}.jar" >
<artifact:pom file= "${package.output.dir}/${executable}-${build.version}/${executable}.pom.xml" />
</artifact:install>
</target>
<!-- Maven install specific versions of the GATK/Queue. ALWAYS do an ant clean before invoking these! -->
<target name= "mvninstall.gatk.full" depends= "package.gatk.full,mvninstall" />
2012-10-31 23:49:50 +08:00
<target name= "mvninstall.queue.all" depends= "package.queue.all,mvninstall" />
2012-10-16 14:21:38 +08:00
<target name= "mvninstall.queue.full" depends= "package.queue.full,mvninstall" />
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- Clean -->
<!-- ******************************************************************************** -->
<target name= "clean.gatkdocs" >
<delete dir= "${gatkdocs.dir}" />
2012-01-19 05:34:42 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "clean.javadoc" >
<delete dir= "${javadoc.dir}" />
</target>
2011-09-03 02:34:31 +08:00
2012-05-10 23:31:32 +08:00
<target name= "clean.scaladoc" >
<delete dir= "${scaladoc.dir}" />
2011-09-03 02:34:31 +08:00
</target>
2012-12-31 22:24:01 +08:00
<target name= "-check.clover" >
<available property= "clover.installed" classname= "com.cenqua.clover.CloverInstr" />
</target>
<target name= "clean.clover" depends= "-check.clover" if= "clover.installed" >
<clover-clean />
</target>
2012-05-10 23:31:32 +08:00
<target name= "clean.gsalib" >
<!-- Currently not cleaning out the lib during 'ant clean' -->
<exec executable= "R" failonerror= "false" >
<arg line= "R CMD REMOVE gsalib" />
</exec>
</target>
2012-12-31 22:24:01 +08:00
<target name= "clean" description= "clean up" depends= "clean.javadoc,clean.scaladoc,clean.gatkdocs,clean.clover" >
2012-05-10 23:31:32 +08:00
<delete dir= "${build.dir}" />
<delete dir= "${lib.dir}" />
<delete dir= "${contract.dump.dir}" />
<delete dir= "${staging.dir}" />
<delete dir= "${dist.dir}" />
<delete dir= "${pipelinetest.dir}" />
</target>
2012-11-03 07:01:59 +08:00
<!-- Depend on this target if your target requires a clean working directory but you don't want to depend on clean directly -->
<target name= "require.clean" >
<condition property= "not.clean" >
<or >
<available file= "${build.dir}" />
<available file= "${lib.dir}" />
<available file= "${contract.dump.dir}" />
<available file= "${staging.dir}" />
<available file= "${dist.dir}" />
<available file= "${pipelinetest.dir}" />
<available file= "${javadoc.dir}" />
<available file= "${scaladoc.dir}" />
<available file= "${gatkdocs.dir}" />
</or>
</condition>
<fail message= "Selected build target requires a clean working directory. Run ant clean and then try again." if= "not.clean" />
</target>
2012-05-10 23:31:32 +08:00
<!-- ******************************************************************************** -->
<!-- gsalib -->
<!-- ******************************************************************************** -->
<!-- Build gsalib R module -->
<target name= "gsalib" >
<exec executable= "R" failonerror= "true" >
<arg line= "R CMD INSTALL --preclean ${R.public.src.dir}/${R.package.path}/gsalib" />
</exec>
2009-03-28 06:32:44 +08:00
</target>
2011-01-08 06:03:36 +08:00
2012-05-10 23:31:32 +08:00
<!-- ***************************************************************************** -->
<!-- *********** Tests and associated tasks ********* -->
<!-- ***************************************************************************** -->
2009-08-28 08:15:01 +08:00
2012-05-10 23:31:32 +08:00
<!-- Properties and Paths -->
<property name= "java.test.classes" value= "${build.dir}/java/testclasses" />
<property name= "java.public.test.sources" value= "${public.dir}/java/test" />
<property name= "java.private.test.sources" value= "${private.dir}/java/test" />
<property name= "java.protected.test.sources" value= "${protected.dir}/java/test" />
<property name= "scala.test.classes" value= "${build.dir}/scala/testclasses" />
<property name= "scala.public.test.sources" value= "${public.dir}/scala/test" />
<property name= "scala.private.test.sources" value= "${private.dir}/scala/test" />
<property name= "scala.protected.test.sources" value= "${protected.dir}/scala/test" />
<property name= "pipelinetest.dir" value= "pipelinetests" />
<property name= "report" value= "${build.dir}/report" />
2012-05-28 22:22:09 +08:00
<property name= "iwww.report.dir" value= "${user.home}/private_html/report" />
2012-05-10 23:31:32 +08:00
<property name= "test.output" value= "${dist.dir}/test" />
2013-02-15 11:02:30 +08:00
<property name= "testng.jar" value= "${lib.dir}/testng-6.8.jar" />
2012-05-10 23:31:32 +08:00
<path id= "java.test.source.path" >
<dirset dir= "${basedir}" >
<include name= "${java.public.test.sources}" />
<include name= "${java.private.test.sources}" if= "include.private" />
<include name= "${java.protected.test.sources}" if= "include.protected" />
</dirset>
</path>
<path id= "scala.test.source.path" >
<dirset dir= "${basedir}" >
<include name= "${scala.public.test.sources}" />
<include name= "${scala.private.test.sources}" if= "include.private" />
<include name= "${scala.protected.test.sources}" if= "include.protected" />
</dirset>
</path>
<path id= "testng.dependencies" >
<fileset dir= "${lib.dir}" >
<include name= "jcommander*.jar" />
<include name= "guice*.jar" />
<include name= "junit*.jar" />
<include name= "bsh*.jar" />
<include name= "snakeyaml*.jar" />
2012-05-30 04:11:17 +08:00
<include name= "reportng*.jar" />
2012-05-10 23:31:32 +08:00
</fileset>
</path>
2011-09-29 04:23:54 +08:00
<path id= "testng.default.classpath" >
2012-11-29 09:44:09 +08:00
<path refid= "build.results" />
2012-12-21 03:53:58 +08:00
<pathelement path= "${clover.jar}" />
2012-05-10 23:31:32 +08:00
<pathelement location= "${java.contracts.dir}" />
<pathelement location= "${java.test.classes}" />
<pathelement location= "${scala.test.classes}" />
2011-09-29 04:23:54 +08:00
</path>
2012-05-10 23:31:32 +08:00
<!-- Test targets -->
2012-12-21 03:53:58 +08:00
<target name= "clover.report" >
2012-12-25 05:31:47 +08:00
<clover-report coverageCacheSize= "nocache" >
<current outfile= "clover_html" title= "GATK clover report" showUniqueCoverage= "false" numThreads= "4" >
<format type= "html" filter= "catch,static,property" />
<fileset dir= "public" >
<patternset id= "clover.excludes" >
<exclude name= "**/*UnitTest.java" />
<exclude name= "**/*TestProvider*.java" />
<exclude name= "**/*PerformanceTest.java" />
<exclude name= "**/*Benchmark.java" />
<exclude name= "**/*LargeScaleTest.java" />
<exclude name= "**/*IntegrationTest.java" />
<exclude name= "**/jna/**/*.java" />
<exclude name= "**/queue/extensions/**/*.java" />
<exclude name= "**/sting/utils/help/*.java" />
<exclude name= "**/sting/tools/*.java" />
<exclude name= "**/datasources/reads/utilities/*.java" />
<exclude name= "**/sting/alignment/**/*.java" />
<exclude name= "**/examples/**/*.java" />
</patternset>
</fileset>
<fileset dir= "private" >
<patternset refid= "clover.excludes" />
</fileset>
<fileset dir= "protected" >
<patternset refid= "clover.excludes" />
</fileset>
</current>
</clover-report>
2012-12-21 03:53:58 +08:00
</target>
<target name= "with.clover" >
2012-12-25 00:27:32 +08:00
<clover-setup fullyQualifyJavaLang= "true" instrumentationLevel= "${clover.instrument.level}" >
2012-12-21 03:53:58 +08:00
</clover-setup>
<property name= "compile.scala" value= "false" /> <!-- currently doesn't work with scala -->
<property name= "test.maxmemory" value= "32g" /> <!-- clover requires lots of memory -->
2012-12-25 05:31:47 +08:00
<echo message= "Clover instrument level: ${clover.instrument.level}" />
2012-12-21 03:53:58 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "test.init.compile" >
<mkdir dir= "${java.test.classes}" />
<mkdir dir= "${scala.test.classes}" />
</target>
<target name= "test.java.internal.compile" depends= "dist,test.init.compile" >
<echo message= "Sting: Compiling java test cases!" />
<javac fork= "true" memoryMaximumSize= "512m" destdir= "${java.test.classes}" debug= "true" optimize= "on" tempdir= "${java.io.tmpdir}" >
<src refid= "java.test.source.path" />
<classpath >
2012-11-29 09:44:09 +08:00
<path refid= "build.results" />
2012-05-10 23:31:32 +08:00
<pathelement location= "${java.contracts.dir}" />
</classpath>
<compilerarg value= "-proc:none" />
</javac>
</target>
<target name= "test.java.external.compile" depends= "dist,test.init.compile,test.java.internal.compile" if= "include.external" >
<echo message= "Sting: Compiling external java test cases!" />
<javac fork= "true" memoryMaximumSize= "512m" destdir= "${java.test.classes}" debug= "true" optimize= "on" tempdir= "${java.io.tmpdir}" srcdir= "${external.dir}" >
<include name= "*/test/**/*.java" />
<classpath >
2012-11-29 09:44:09 +08:00
<path refid= "build.results" />
2012-05-10 23:31:32 +08:00
<pathelement location= "${java.test.classes}" />
<pathelement location= "${java.contracts.dir}" />
</classpath>
<compilerarg value= "-proc:none" />
</javac>
</target>
<target name= "test.java.compile" depends= "test.java.internal.compile, test.java.external.compile" />
<target name= "test.scala.compile" depends= "test.java.compile,scala.compile" if= "include.scala" >
<echo message= "Scala: Compiling test cases!" />
<scalac fork= "true" jvmargs= "-Xmx512m" destdir= "${scala.test.classes}" deprecation= "yes" unchecked= "yes" >
<src refid= "scala.test.source.path" />
<classpath >
2012-11-29 09:44:09 +08:00
<path refid= "build.results" />
2012-05-10 23:31:32 +08:00
<pathelement location= "${java.test.classes}" />
</classpath>
</scalac>
</target>
<!-- NOTE: contracts enabled for all tests -->
<target name= "test.compile" depends= "init.usecontracts,dist,test.java.compile,test.scala.compile" />
<!-- Run test macro -->
2010-04-08 23:37:15 +08:00
<macrodef name= "run-test" >
<attribute name= "testtype" />
2011-09-10 00:04:41 +08:00
<attribute name= "outputdir" />
2011-09-03 02:34:31 +08:00
<attribute name= "runfailed" />
2010-04-08 23:37:15 +08:00
<sequential >
2011-09-03 02:34:31 +08:00
<condition property= "run.failed.tests" >
<equals arg1= "@{runfailed}" arg2= "true" />
</condition>
2011-04-09 02:44:32 +08:00
<!-- Get the pipeline run type. Default to dry. -->
<condition property= "pipeline.run" value= "dry" else= "${pipeline.run}" >
<equals arg1= "${pipeline.run}" arg2= "$${pipeline.run}" />
</condition>
2011-07-09 03:34:39 +08:00
<condition property= "cofoja.jvm.args" value= "-javaagent:${cofoja.jar} -Dcom.google.java.contract.log.contract=false" else= "" >
<isset property= "include.contracts" />
</condition>
2012-05-10 23:31:32 +08:00
<condition property= "debug.jvm.args" value= "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${test.debug.port}" else= "" >
<isset property= "test.debug" />
</condition>
2011-09-10 00:04:41 +08:00
<mkdir dir= "@{outputdir}" />
2012-05-30 04:11:17 +08:00
<echo message= "" />
<echo message= "Test Classpath ID: ${testng.classpath}" />
<property name= "test.classpath.display.string" refid= "${testng.classpath}" />
<echo message= "Test Classpath: ${test.classpath.display.string}" />
<echo message= "" />
2010-04-09 21:03:31 +08:00
<echo message= "Sting: Running @{testtype} test cases!" />
2012-12-21 03:53:58 +08:00
<echo message= "Test Memory : ${test.maxmemory}" />
2012-05-30 04:11:17 +08:00
2012-11-01 07:52:25 +08:00
<!-- no test is allowed to run for more than 10 hours -->
2011-09-03 02:34:31 +08:00
<taskdef resource= "testngtasks" classpath= "${testng.jar}" />
2011-09-10 00:04:41 +08:00
<testng outputDir= "@{outputdir}"
2012-05-10 23:31:32 +08:00
classpathref="${testng.classpath}"
2010-11-03 00:57:15 +08:00
haltOnFailure="false" failureProperty="test.failure"
verbose="2"
2012-11-01 07:52:25 +08:00
timeout="36000000"
2010-11-16 07:43:14 +08:00
workingDir="${basedir}"
useDefaultListeners="false"
2012-11-01 07:52:25 +08:00
listeners="org.testng.reporters.FailedReporter,org.testng.reporters.JUnitXMLReporter,org.broadinstitute.sting.TestNGTestTransformer,org.broadinstitute.sting.StingTextReporter,org.uncommons.reportng.HTMLReporter">
2010-11-17 03:55:20 +08:00
<jvmarg value= "-Xmx${test.maxmemory}" />
2012-05-15 03:34:32 +08:00
<jvmarg value= "-ea" />
2012-12-21 03:53:58 +08:00
<jvmarg value= "-Dclover.pertest.coverage=diff" />
2010-11-17 03:55:20 +08:00
<jvmarg value= "-Djava.awt.headless=true" />
2010-11-23 06:59:42 +08:00
<jvmarg value= "-Dpipeline.run=${pipeline.run}" />
2011-05-12 04:56:35 +08:00
<jvmarg value= "-Djava.io.tmpdir=${java.io.tmpdir}" />
2013-01-03 00:28:54 +08:00
<jvmarg line= "${cofoja.jvm.args}" />
2012-05-10 23:31:32 +08:00
<jvmarg line= "${debug.jvm.args}" />
2010-04-08 23:37:15 +08:00
2012-05-10 23:31:32 +08:00
<!-- NOTE: To run tests with debugging, use - Dtest.debug=true - Dtest.debug.port=XXXX on the command line -->
<classfileset dir= "${java.test.classes}" includes= "**/@{testtype}.class" />
2012-01-19 05:34:42 +08:00
<classfileset dir= "${java.external.test.classes}" erroronmissingdir= "false" >
<include name= "**/@{testtype}.class" if= "include.external" />
</classfileset>
2012-05-10 23:31:32 +08:00
<classfileset dir= "${scala.test.classes}" erroronmissingdir= "false" >
<include name= "**/@{testtype}*.class" if= "include.scala" />
2011-09-03 02:34:31 +08:00
</classfileset>
<xmlfileset dir= "${basedir}" >
<include name= "@{testtype}" if= "run.failed.tests" />
</xmlfileset>
2010-11-02 05:31:44 +08:00
</testng>
<!-- generate a report for Bamboo or Hudson to read in -->
2011-09-10 00:04:41 +08:00
<junitreport todir= "@{outputdir}" >
<fileset dir= "@{outputdir}" >
2010-11-02 05:31:44 +08:00
<include name= "*/*.xml" />
</fileset>
2011-09-10 00:04:41 +08:00
<report format= "noframes" todir= "@{outputdir}" />
2010-11-02 05:31:44 +08:00
</junitreport>
2011-07-16 07:34:14 +08:00
2012-05-28 22:22:09 +08:00
<!-- copy the report to our private_html directory for easy viewing in a broswer -->
<mkdir dir= "${iwww.report.dir}/@{testtype}" />
2012-09-20 04:59:24 +08:00
<copy todir= "${iwww.report.dir}/@{testtype}" verbose= "false" >
2012-05-28 22:22:09 +08:00
<fileset dir= "@{outputdir}" />
</copy>
2011-07-16 07:34:14 +08:00
<fail message= "test failed" if= "test.failure" />
</sequential>
</macrodef>
2010-04-08 23:37:15 +08:00
2012-05-10 23:31:32 +08:00
2011-09-29 04:23:54 +08:00
<target name= "test.init" >
<property name= "testng.classpath" value= "testng.default.classpath" />
2012-12-21 03:53:58 +08:00
<property name= "test.maxmemory" value= "${test.default.maxmemory}" />
2011-09-29 04:23:54 +08:00
</target>
2012-05-25 00:05:14 +08:00
<target name= "init.testgatkjar" >
2012-05-30 04:11:17 +08:00
<path id= "gatk.binary.release.tests.classpath" >
<path refid= "testng.dependencies" />
<path >
<fileset dir= "${package.output.dir}" >
<include name= "**/${executable}.jar" />
</fileset>
</path>
<pathelement location= "${java.contracts.dir}" />
<pathelement location= "${java.test.classes}" />
<pathelement location= "${scala.test.classes}" />
<pathelement location= "${scala.classes}" />
<path >
<fileset dir= "${lib.dir}" >
<include name= "scala*.jar" />
<include name= "jna*.jar" />
</fileset>
</path>
</path>
2012-05-25 00:05:14 +08:00
<property name= "testng.classpath" value= "gatk.binary.release.tests.classpath" />
</target>
<target name= "init.testqueuejar" >
2012-05-30 04:11:17 +08:00
<path id= "queue.binary.release.tests.classpath" >
<path refid= "testng.dependencies" />
<path >
<fileset dir= "${package.output.dir}" >
<include name= "**/${executable}.jar" />
</fileset>
</path>
<pathelement location= "${java.contracts.dir}" />
<pathelement location= "${java.test.classes}" />
<pathelement location= "${scala.test.classes}" />
</path>
2012-05-25 00:05:14 +08:00
<property name= "testng.classpath" value= "queue.binary.release.tests.classpath" />
</target>
2012-05-30 04:11:17 +08:00
2012-07-19 00:37:04 +08:00
<target name= "committests" depends= "unittest,integrationtest,pipelinetest" />
2011-09-09 23:45:57 +08:00
2012-06-02 01:08:46 +08:00
<!-- Order of the dependencies is significant in the *.release.tests targets -->
<target name= "gatkfull.binary.release.tests" depends= "init.usecontracts,package.gatk.full,init.testgatkjar,unittest,integrationtest" />
2012-05-25 00:05:14 +08:00
2012-06-02 01:08:46 +08:00
<target name= "queuefull.binary.release.tests" depends= "init.usecontracts,package.queue.full,init.testqueuejar,pipelinetest" />
2012-05-25 00:05:14 +08:00
2012-05-10 23:31:32 +08:00
<!-- Our four different test types: UnitTest, IntegrationTest, LargeScaleTest, PipelineTest -->
<target name= "unittest" depends= "test.compile,test.init" description= "Run unit tests" >
2010-04-09 21:03:31 +08:00
<condition property= "ttype" value= "*UnitTest" else= "${single}" >
2010-04-08 23:37:15 +08:00
<not > <isset property= "single" /> </not>
</condition>
2012-05-10 23:31:32 +08:00
<run-test testtype= "${ttype}" outputdir= "${report}/${ttype}" runfailed= "false" />
2009-09-09 23:01:40 +08:00
</target>
2011-09-03 02:34:31 +08:00
2012-05-10 23:31:32 +08:00
<!-- Keep the alias "test" for "unittest" for backwards compatibility -->
<target name= "test" depends= "unittest" />
<target name= "integrationtest" depends= "test.compile,test.init" description= "Run integration tests" >
2010-04-09 21:03:31 +08:00
<condition property= "itype" value= "*IntegrationTest" else= "${single}" >
2010-04-08 23:37:15 +08:00
<not > <isset property= "single" /> </not>
</condition>
2012-05-10 23:31:32 +08:00
<run-test testtype= "${itype}" outputdir= "${report}/${itype}" runfailed= "false" />
2009-03-28 06:32:44 +08:00
</target>
2011-09-03 02:34:31 +08:00
2012-05-10 23:31:32 +08:00
<target name= "largescaletest" depends= "test.compile,test.init" description= "Run large-scale tests" >
2011-12-22 23:38:49 +08:00
<condition property= "ptype" value= "*LargeScaleTest" else= "${single}" >
2010-04-08 23:37:15 +08:00
<not > <isset property= "single" /> </not>
</condition>
2012-05-10 23:31:32 +08:00
<run-test testtype= "${ptype}" outputdir= "${report}/${ptype}" runfailed= "false" />
2009-05-07 01:18:23 +08:00
</target>
2011-09-03 02:34:31 +08:00
2012-05-10 23:31:32 +08:00
<target name= "pipelinetest" depends= "test.compile,test.init" description= "Run pipeline tests" >
2010-11-23 06:59:42 +08:00
<condition property= "pipetype" value= "*PipelineTest" else= "${single}" >
<not > <isset property= "single" /> </not>
</condition>
2012-05-10 23:31:32 +08:00
<run-test testtype= "${pipetype}" outputdir= "${report}/${pipetype}" runfailed= "false" />
2010-11-23 06:59:42 +08:00
</target>
2011-09-03 02:34:31 +08:00
2012-05-10 23:31:32 +08:00
<target name= "pipelinetestrun" depends= "test.compile,test.init" description= "Run pipeline tests" >
2011-04-09 02:44:32 +08:00
<property name= "pipeline.run" value= "run" />
<condition property= "pipetype" value= "*PipelineTest" else= "${single}" >
<not > <isset property= "single" /> </not>
</condition>
2012-05-10 23:31:32 +08:00
<run-test testtype= "${pipetype}" outputdir= "${report}/${pipetype}" runfailed= "false" />
2011-04-09 02:44:32 +08:00
</target>
2010-08-06 02:47:53 +08:00
2012-05-10 23:31:32 +08:00
<target name= "failed-unit" depends= "test.compile,test.init" >
<run-test testtype= "${report}/*UnitTest/testng-failed.xml" outputdir= "${report}/failed_rerun" runfailed= "true" />
2011-07-16 07:34:14 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "failed-integration" depends= "test.compile,test.init" >
<run-test testtype= "${report}/*IntegrationTest/testng-failed.xml" outputdir= "${report}/failed_rerun" runfailed= "true" />
2011-07-16 07:34:14 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "failed-largescale" depends= "test.compile,test.init" >
<run-test testtype= "${report}/*LargeScaleTest/testng-failed.xml" outputdir= "${report}/failed_rerun" runfailed= "true" />
2011-07-16 07:34:14 +08:00
</target>
2012-05-10 23:31:32 +08:00
<target name= "failed-pipeline" depends= "test.compile,test.init" >
<run-test testtype= "${report}/*PipelineTest/testng-failed.xml" outputdir= "${report}/failed_rerun" runfailed= "true" />
2011-07-16 07:34:14 +08:00
</target>
2012-06-02 03:03:43 +08:00
<!-- Fast test target that cuts major corners for speed. Requires that a full build has been done first. Java - only, single test class only -->
<!-- Usage: ant fasttest - Dsingle=TestClass -->
2012-11-29 09:44:09 +08:00
<target name= "fasttest" depends= "init.javaonly,init" >
2012-12-21 03:53:58 +08:00
<property name= "test.maxmemory" value= "${test.default.maxmemory}" />
2012-06-02 03:03:43 +08:00
<condition property= "not.clean" >
<and >
<available file= "${build.dir}" />
<available file= "${lib.dir}" />
<available file= "${dist.dir}" />
<available file= "${java.test.classes}" />
</and>
</condition>
<fail message= "fasttest requires a NON-CLEAN working directory (INCLUDING test classes). Do a full test build using ant test.compile first." unless= "not.clean" />
<condition property= "no.single.test.specified" >
<equals arg1= "${single}" arg2= "$${single}" />
</condition>
<fail message= "Must specify a specific test. Usage: ant fasttest -Dsingle=TestClass" if= "no.single.test.specified" />
<javac fork= "true" memoryMaximumSize= "512m" destdir= "${java.classes}" debug= "true" debuglevel= "lines,vars,source" classpathref= "external.dependencies" tempdir= "${java.io.tmpdir}" >
<src refid= "java.source.path" />
<compilerarg value= "-proc:none" />
</javac>
<javac fork= "true" memoryMaximumSize= "512m" destdir= "${java.test.classes}" debug= "true" optimize= "on" tempdir= "${java.io.tmpdir}" >
<src refid= "java.test.source.path" />
<classpath >
<pathelement location= "${java.classes}" />
2012-11-29 09:44:09 +08:00
<path refid= "external.dependencies" />
2012-06-02 03:03:43 +08:00
</classpath>
<compilerarg value= "-proc:none" />
</javac>
2012-11-29 09:44:09 +08:00
<!-- fasttest uses the unpackaged class files in its test classpath to avoid having to rebuild the jars in dist/ -->
<path id= "testng.fasttest.classpath" >
<pathelement location= "${java.classes}" />
<pathelement location= "${scala.classes}" />
<pathelement location= "${java.contracts.dir}" />
<pathelement location= "${java.test.classes}" />
<pathelement location= "${scala.test.classes}" />
<pathelement location= "${R.tar.dir}" />
<path refid= "R.script.source.path" />
<pathelement location= "${key.dir}" />
<path refid= "external.dependencies" />
<path refid= "java.source.path" /> <!-- Terrible hack to allow fasttest to see resource files stored in the source tree -->
</path>
<property name= "testng.classpath" value= "testng.fasttest.classpath" />
2012-06-02 03:03:43 +08:00
<run-test testtype= "${single}" outputdir= "${report}/${single}" runfailed= "false" />
</target>
2009-03-07 06:58:12 +08:00
</project>