1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039 |
- <?xml version="1.0"?>
- <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <project name="ZooKeeper" default="jar">
- <property name="Name" value="ZooKeeper" />
- <property name="name" value="zookeeper" />
- <property environment="env"/>
-
- <property name="version" value="3.2.0" />
- <property name="final.name" value="${name}-${version}"/>
- <property name="revision.dir" value="${basedir}/.revision" />
- <property name="revision.properties" value="revision.properties" />
- <property file="${basedir}/src/java/${revision.properties}" />
-
- <!-- Target JDK version to build for. Certain zookeeper features -->
- <!-- (for example, JMX) are only supported on JDK 1.6 -->
- <property name="target.jdk" value="${ant.java.version}" />
- <property name="src.dir" value="${basedir}/src" />
- <property name="java.src.dir" value="${src.dir}/java/main" />
- <property name="jmx.src.dir" value="${src.dir}/java/jmx" />
- <property name="lib.dir" value="${src.dir}/java/lib" />
- <property name="build.dir" value="${basedir}/build" />
- <property name="distribution" value="${basedir}/distribution" />
- <property name="src_generated.dir" value="${src.dir}/java/generated" />
- <property name="c.src.dir" value="${src.dir}/c" />
- <property name="csrc_generated.dir" value="${c.src.dir}/generated" />
- <property name="build.classes" value="${build.dir}/classes" />
- <property name="jar.name" value="zookeeper-dev.jar" />
- <property name="jute.file" value="${src.dir}/zookeeper.jute" />
- <property name="build.testclasses" value="${build.dir}/testclasses"/>
- <property name="test.build.dir" value="${build.dir}/test" />
- <property name="test.src.dir" value="${src.dir}/java/test"/>
- <property name="systest.src.dir" value="${src.dir}/java/systest"/>
- <property name="test.log.dir" value="${test.build.dir}/logs" />
- <property name="test.data.dir" value="${test.build.dir}/data" />
- <property name="test.data.upgrade.dir" value="${test.data.dir}/upgrade" />
- <property name="test.data.invalid.dir" value="${test.data.dir}/invalidsnap" />
- <property name="test.cppunit.dir" value="${test.build.dir}/test-cppunit"/>
- <property name="test.tmp.dir" value="${test.build.dir}/tmp" />
- <property name="test.output" value="no" />
- <property name="test.timeout" value="900000" />
- <property name="test.junit.output.format" value="plain" />
- <property name="test.junit.fork.mode" value="perTest" />
- <property name="test.junit.printsummary" value="yes" />
- <property name="test.junit.haltonfailure" value="no" />
- <property name="config.dir" value="${src.dir}/java/test/config" />
- <property name="test.junit.maxmem" value="512m" />
- <property name="conf.dir" value="${basedir}/conf"/>
- <property name="docs.dir" value="${basedir}/docs"/>
- <property name="docs.src" value="${basedir}/src/docs"/>
- <property name="javadoc.link.java"
- value="http://java.sun.com/javase/6/docs/api/" />
- <property name="javadoc.packages" value="org.apache.*" />
- <property name="build.docs" value="${build.dir}/docs" />
- <property name="build.javadoc" value="${build.docs}/api" />
- <property name="build.javadoc.dev" value="${build.docs}/dev-api"/>
- <property name="dist.dir" value="${build.dir}/${final.name}"/>
- <property name="clover.home" location="${env.CLOVER_HOME}"/>
- <property name="clover.jar" location="${clover.home}/lib/clover.jar" />
- <property name="clover.db.dir" location="${test.build.dir}/clover/db"/>
- <property name="clover.report.dir"
- location="${test.build.dir}/clover/reports"/>
- <property name="contrib.dir" value="${src.dir}/contrib"/>
- <property name="recipes.dir" value="${src.dir}/recipes"/>
- <available property="clover.present"
- classname="com.cenqua.clover.CloverInstr"
- classpath="${clover.home}/lib/clover.jar"/>
- <available file="${c.src.dir}/Makefile" property="Makefile.present"/>
- <!-- check if clover reports should be generated -->
- <condition property="clover.enabled">
- <and>
- <isset property="run.clover"/>
- <isset property="clover.present"/>
- </and>
- </condition>
- <property name="test.cobertura.output.format" value="html" />
- <property name="coveragereport.dir" value="${build.dir}/cobertura" />
- <!-- rats properties -->
- <property name="rats_url" value="http://arat.googlecode.com/files/rat-lib-all-0.5.1.jar" />
- <property name="rat.reporting.classname" value="rat.Report"/>
- <!-- test patch properties -->
- <property name="scratch.dir" value="${user.home}/tmp"/>
- <property name="svn.cmd" value="svn"/>
- <property name="grep.cmd" value="grep"/>
- <property name="patch.cmd" value="patch"/>
- <property name="make.cmd" value="make"/>
- <property name="test_patch_sh" value="${test.src.dir}/bin/test-patch.sh"/>
- <!-- jdiff.home property set -->
- <property name="jdiff.home" value="${lib.dir}"/>
- <property name="jdiff.version" value="1.0.9"/>
- <property name="xerces.version" value="1.4.4"/>
- <property name="jdiff.jar" value="${jdiff.home}/jdiff-${jdiff.version}.jar"/>
- <property name="xerces.jar" value="${jdiff.home}/xerces-${xerces.version}.jar"/>
- <property name="jdiff.build.dir" value="${build.docs}/jdiff"/>
- <property name="jdiff.xml.dir" value="${lib.dir}/jdiff"/>
- <property name="jdiff.stable" value="3.1.1"/>
- <property name="jdiff.stable.javadoc"
- value="http://hadoop.apache.org/zookeeper/docs/r${jdiff.stable}/api/"/>
- <property name="jdiff.download.url"
- value="http://mirrors.ibiblio.org/pub/mirrors/maven2/jdiff/jdiff/${jdiff.version}/jdiff-${jdiff.version}.jar"/>
- <property name="jdiff.jar" value="${jdiff.home}/jdiff.jar"/>
- <property name="xerces.download.url"
- value="http://mirrors.ibiblio.org/pub/mirrors/maven2/xerces/xerces/${xerces.version}/xerces-${xerces.version}.jar"/>
- <property name="xerces.jar" value="${jdiff.home}/xerces.jar"/>
- <!-- ====================================================== -->
- <!-- Macro definitions -->
- <!-- ====================================================== -->
- <macrodef name="macro_tar" description="Worker Macro for tar">
- <attribute name="param.destfile"/>
- <element name="param.listofitems"/>
- <sequential>
- <tar compression="gzip" longfile="gnu"
- destfile="@{param.destfile}">
- <param.listofitems/>
- </tar>
- </sequential>
- </macrodef>
- <!-- ====================================================== -->
- <!-- Generate and compile the Java files -->
- <!-- ====================================================== -->
- <target name="init">
- <mkdir dir="${build.classes}" />
- <tstamp>
- <format property="build.time" pattern="MM/dd/yyyy HH:mm zz" timezone="GMT"/>
- <format property="year" pattern="yyyy" timezone="GMT"/>
- </tstamp>
- <condition property="extra.src.dir" value="${jmx.src.dir}">
- <and>
- <equals arg1="${target.jdk}" arg2="1.6"/>
- <available file="${jmx.src.dir}" type="dir"/>
- </and>
- </condition>
- <path id="project.classpath">
- <fileset dir="${build.classes}" />
- <pathelement path="${lib.dir}/log4j-1.2.15.jar" />
- <pathelement path="${clover.jar}" />
- <pathelement path="${lib.dir}/jline-0.9.94.jar" />
- </path>
- </target>
-
- <target name="jute" depends="init">
- <javac srcdir="${java.src.dir}" destdir="${build.classes}" target="${target.jdk}"
- includes="org/apache/jute/**" debug="on" />
- </target>
- <target name="compile_jute_uptodate">
- <uptodate property="juteBuild.notRequired"
- srcfile="${jute.file}"
- targetfile="${src_generated.dir}/.generated"/>
- </target>
- <target name="compile_jute" depends="jute,compile_jute_uptodate" unless="juteBuild.notRequired">
- <mkdir dir="${src_generated.dir}" />
- <mkdir dir="${csrc_generated.dir}" />
- <java classname="org.apache.jute.compiler.generated.Rcc" fork="true" dir="${src_generated.dir}">
- <arg value="-l" />
- <arg value="java" />
- <arg value="../../zookeeper.jute" />
- <classpath>
- <pathelement path="${build.classes}" />
- </classpath>
- </java>
-
- <java classname="org.apache.jute.compiler.generated.Rcc" fork="true" dir="${csrc_generated.dir}">
- <arg value="-l" />
- <arg value="c" />
- <arg value="../../zookeeper.jute" />
- <classpath>
- <pathelement path="${build.classes}" />
- </classpath>
- </java>
- <touch file="${src_generated.dir}/.generated"/>
- </target>
- <target name="ver-gen" depends="init">
- <javac srcdir="${java.src.dir}" destdir="${build.classes}" target="${target.jdk}"
- includes="org/apache/zookeeper/version/util/**" debug="on" />
- </target>
-
- <target name="svn-revision" unless="lastRevision">
- <mkdir dir="${revision.dir}" />
- <condition property="shell.name" value="cmd" else="sh">
- <os family="windows"/>
- </condition>
- <condition property="revision.cmd.line"
- value="/c ${src.dir}\lastRevision.bat" else="${src.dir}/lastRevision.sh">
- <os family="windows"/>
- </condition>
- <exec executable="${shell.name}">
- <arg line="${revision.cmd.line} ${revision.dir}${file.separator}${revision.properties}"/>
- </exec>
- <property file="${revision.dir}/${revision.properties}" />
- </target>
-
- <target name="version-info" depends="ver-gen,svn-revision">
- <mkdir dir="${src_generated.dir}" />
- <java classname="org.apache.zookeeper.version.util.VerGen" fork="true"
- dir="${src_generated.dir}">
- <arg value="${version}" />
- <arg value="${lastRevision}" />
- <arg value="${build.time}" />
- <classpath>
- <pathelement path="${build.classes}" />
- </classpath>
- </java>
- </target>
-
- <target name="build-generated" depends="compile_jute,version-info" >
- <javac srcdir="${src_generated.dir}" destdir="${build.classes}"
- target="${target.jdk}" debug="on" />
- </target>
-
- <target name="compile-extra" depends="compile-main" if="extra.src.dir">
- <javac srcdir="${extra.src.dir}" destdir="${build.classes}"
- target="${target.jdk}" debug="on">
- <classpath refid="project.classpath"/>
- </javac>
- <copy todir="${build.classes}">
- <fileset dir="${extra.src.dir}"/>
- </copy>
- </target>
-
- <target name="compile-main" depends="build-generated">
- <javac srcdir="${java.src.dir}" destdir="${build.classes}"
- target="${target.jdk}" debug="on">
- <classpath refid="project.classpath"/>
- <compilerarg value="-Xlint:all"/>
- <compilerarg value="-Xlint:-path"/>
- </javac>
- <copy todir="${build.classes}">
- <fileset dir="${java.src.dir}"/>
- <fileset dir="${src_generated.dir}"/>
- </copy>
- </target>
- <target name="compile" depends="clover,compile-main,compile-extra"/>
- <target name="test-classpath">
- <path id="test.classpath">
- <fileset dir="${basedir}">
- <include name="*.jar"/>
- </fileset>
- <fileset dir="${lib.dir}">
- <include name="*.jar"/>
- </fileset>
- <pathelement path="${clover.jar}" />
- </path>
- </target>
- <target name="compile-test" depends="jar,test-classpath">
- <mkdir dir="${build.testclasses}"/>
- <javac srcdir="${test.src.dir}" destdir="${build.testclasses}"
- target="${target.jdk}" debug="on">
- <classpath refid="test.classpath"/>
- </javac>
- <javac srcdir="${systest.src.dir}" destdir="${build.testclasses}"
- target="${target.jdk}" debug="on">
- <classpath refid="test.classpath"/>
- </javac>
- </target>
- <!-- ====================================================== -->
- <!-- Documentation -->
- <!-- ====================================================== -->
- <target name="docs" depends="forrest.check" description="Generate forrest-based documentation. To use, specify -Dforrest.home=<base of Apache Forrest installation> on the command line." if="forrest.home">
- <condition property="forrest.exec" value="forrest.bat" else="forrest">
- <os family="windows"/>
- </condition>
- <exec dir="${docs.src}" executable="${forrest.home}/bin/forrest"
- failonerror="true">
- <env key="JAVA_HOME" value="${java5.home}"/>
- </exec>
- <copy todir="${docs.dir}">
- <fileset dir="${docs.src}/build/site/" />
- </copy>
- <style basedir="${conf.dir}" destdir="${docs.dir}"
- includes="zookeeper-default.xml" style="conf/configuration.xsl"/>
- </target>
- <target name="forrest.check" unless="forrest.home" depends="java5.check">
- <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=<base of Apache Forrest installation> to Ant on the command-line." />
- </target>
- <target name="java5.check" unless="java5.home">
- <fail message="'java5.home' is not defined. Forrest requires Java 5. Please pass -Djava5.home=<base of Java 5 distribution> to Ant on the command-line." />
- </target>
-
- <!-- Javadoc -->
- <target name="javadoc-dev" depends="jar"
- description="Generate javadoc for zookeeper developers">
- <mkdir dir="${build.javadoc.dev}"/>
- <javadoc
- overview="${java.src.dir}/overview.html"
- packagenames="org.apache.zookeeper.*"
- destdir="${build.javadoc.dev}"
- author="true"
- version="true"
- use="true"
- windowtitle="${Name} ${version} API"
- doctitle="${Name} ${version} API"
- bottom="Copyright &copy; ${year} The Apache Software Foundation"
- >
- <packageset dir="${java.src.dir}">
- <include name="org/apache/**"/>
- <exclude name="org/apache/jute/**"/>
- </packageset>
- <packageset dir="${src_generated.dir}"/>
- <link href="${javadoc.link.java}"/>
- <classpath refid="project.classpath"/>
- </javadoc>
- </target>
- <target name="javadoc" depends="jar" description="Generate javadoc">
- <mkdir dir="${build.javadoc}"/>
- <javadoc
- overview="${java.src.dir}/overview.html"
- packagenames="org.apache.zookeeper.*"
- destdir="${build.javadoc}"
- author="true"
- version="true"
- use="true"
- Public="yes"
- windowtitle="${Name} ${version} API"
- doctitle="${Name} ${version} API"
- bottom="Copyright &copy; ${year} The Apache Software Foundation"
- >
- <fileset dir="${java.src.dir}">
- <include name="org/apache/**/*Main.java"/>
- <include name="org/apache/zookeeper/AsyncCallback.java"/>
- <include name="org/apache/zookeeper/CreateMode.java"/>
- <include name="org/apache/zookeeper/KeeperException.java"/>
- <include name="org/apache/zookeeper/ServerAdminClient.java"/>
- <include name="org/apache/zookeeper/Watcher.java"/>
- <include name="org/apache/zookeeper/ZooDefs.java"/>
- <include name="org/apache/zookeeper/ZooKeeper.java"/>
- <include name="org/apache/zookeeper/server/LogFormatter.java"/>
- <include name="org/apache/zookeeper/server/PurgeTxnLog.java"/>
- <exclude name="org/apache/zookeeper/server/quorum/QuorumPacket"/>
- </fileset>
- <packageset dir="${src_generated.dir}">
- <exclude name="org/apache/zookeeper/proto"/>
- <exclude name="org/apache/zookeeper/txn"/>
- <exclude name="org/apache/zookeeper/version"/>
- <exclude name="org/apache/zookeeper/server/**"/>
- </packageset>
- <link href="${javadoc.link.java}"/>
- <classpath>
- <fileset dir="${basedir}">
- <include name="${jar.name}"/>
- </fileset>
- <path refid="project.classpath"/>
- </classpath>
- </javadoc>
- </target>
- <!-- ====================================================== -->
- <!-- Make zookeeper.jar -->
- <!-- ====================================================== -->
- <target name="jar" depends="compile">
- <java classname="org.apache.zookeeper.Version" fork="true"
- outputproperty="revision" failonerror="true">
- <arg value="--revision" />
- <classpath>
- <pathelement path="${build.classes}" />
- <pathelement path="${clover.jar}" />
- </classpath>
- </java>
- <exec executable="hostname" outputproperty="host.name"/>
- <jar jarfile="${jar.name}">
- <fileset file="LICENSE" />
- <fileset dir="${build.classes}" excludes="**/.generated"/>
- <manifest>
- <attribute name="Main-Class" value="org.apache.zookeeper.server.quorum.QuorumPeer" />
- <attribute name="Built-By" value="${user.name}"/>
- <attribute name="Built-At" value="${build.time}"/>
- <attribute name="Built-On" value="${host.name}" />
- <attribute name="Implementation-Title" value="org.apache.zookeeper"/>
- <attribute name="Implementation-Version" value="${revision}"/>
- <attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
- </manifest>
- </jar>
- </target>
- <target name="release-jar">
- <antcall target="jar">
- <param name="jar.name" value="${build.dir}/${final.name}.jar" />
- </antcall>
- </target>
-
- <!-- ================================================================== -->
- <!-- D I S T R I B U T I O N -->
- <!-- ================================================================== -->
- <!-- -->
- <!-- ================================================================== -->
- <target name="package"
- depends="release-jar,api-report,compile-test,create-cppunit-configure"
- description="Build distribution">
- <mkdir dir="${dist.dir}"/>
- <mkdir dir="${dist.dir}/lib"/>
- <mkdir dir="${dist.dir}/contrib"/>
- <mkdir dir="${dist.dir}/recipes"/>
- <mkdir dir="${dist.dir}/bin"/>
- <mkdir dir="${dist.dir}/docs"/>
- <mkdir dir="${dist.dir}/docs/jdiff"/>
- <mkdir dir="${dist.dir}/docs/api"/>
- <copy todir="${dist.dir}/lib" includeEmptyDirs="false">
- <fileset dir="${lib.dir}"/>
- </copy>
- <subant target="package">
- <!--Pass down the version in case its needed again and the target
- distribution directory so contribs know where to install to.-->
- <property name="version" value="${version}"/>
- <property name="dist.dir" value="${dist.dir}"/>
- <fileset file="${contrib.dir}/build.xml"/>
- <fileset file="${recipes.dir}/build.xml"/>
- </subant>
- <copy todir="${dist.dir}">
- <fileset file="${build.dir}/${final.name}.jar"/>
- </copy>
-
- <copy todir="${dist.dir}/bin">
- <fileset dir="bin"/>
- </copy>
- <copy todir="${dist.dir}/conf">
- <fileset dir="${conf.dir}" excludes="**/*.template"/>
- </copy>
- <copy todir="${dist.dir}/docs">
- <fileset dir="${docs.dir}" />
- <fileset dir="${build.docs}"/>
- </copy>
- <copy todir="${dist.dir}">
- <fileset dir=".">
- <include name="*.txt" />
- </fileset>
- </copy>
- <copy todir="${dist.dir}/src" includeEmptyDirs="true">
- <fileset dir="src" excludes="**/*.template **/docs/build/**/*"/>
- </copy>
-
- <copy todir="${dist.dir}/" file="build.xml"/>
- <chmod perm="ugo+x" type="file" parallel="false">
- <fileset dir="${dist.dir}/bin"/>
- <fileset dir="${dist.dir}/src/contrib/">
- <include name="*/bin/*" />
- </fileset>
- </chmod>
- </target>
- <!-- ================================================================== -->
- <!-- Make release tarball -->
- <!-- ================================================================== -->
- <target name="tar" depends="package" description="Make release tarball">
- <macro_tar param.destfile="${build.dir}/${final.name}.tar.gz">
- <param.listofitems>
- <!-- it's unfortunate that the binaries have to be duplicated
- however that's the only way ant currently supports afaik -->
- <tarfileset dir="${build.dir}" mode="664">
- <exclude name="${final.name}/bin/*" />
- <exclude name="${final.name}/contrib/*/bin/*" />
- <exclude name="${final.name}/**/compile" />
- <exclude name="${final.name}/**/config.guess" />
- <exclude name="${final.name}/**/config.sub" />
- <exclude name="${final.name}/**/configure" />
- <exclude name="${final.name}/**/depcomp" />
- <exclude name="${final.name}/**/install-sh" />
- <exclude name="${final.name}/**/ltmain.sh" />
- <exclude name="${final.name}/**/missing" />
- <exclude name="${final.name}/**/*.sh" />
- <include name="${final.name}/**" />
- </tarfileset>
- <tarfileset dir="${build.dir}" mode="755">
- <!-- be sure to add to exclude list above if you add here -->
- <include name="${final.name}/bin/*" />
- <include name="${final.name}/contrib/*/bin/*" />
- <!-- autotools related commands -->
- <include name="${final.name}/**/compile" />
- <include name="${final.name}/**/config.guess" />
- <include name="${final.name}/**/config.sub" />
- <include name="${final.name}/**/configure" />
- <include name="${final.name}/**/depcomp" />
- <include name="${final.name}/**/install-sh" />
- <include name="${final.name}/**/ltmain.sh" />
- <include name="${final.name}/**/missing" />
- <!-- any shell scripts -->
- <include name="${final.name}/**/*.sh" />
- </tarfileset>
- </param.listofitems>
- </macro_tar>
- </target>
- <target name="binary" depends="package"
- description="Make tarball without source and documentation">
- <macro_tar param.destfile="${build.dir}/${final.name}-bin.tar.gz">
- <param.listofitems>
- <tarfileset dir="${build.dir}" mode="664">
- <include name="${final.name}/src/c/**" />
- <exclude name="${final.name}/src/c/generated/**" />
- </tarfileset>
- <tarfileset dir="${build.dir}" mode="664">
- <exclude name="${final.name}/bin/*" />
- <exclude name="${final.name}/src/**" />
- <exclude name="${final.name}/docs/**" />
- <include name="${final.name}/**" />
- </tarfileset>
- <tarfileset dir="${build.dir}" mode="755">
- <include name="${final.name}/bin/*" />
- </tarfileset>
- </param.listofitems>
- </macro_tar>
- </target>
- <!-- ====================================================== -->
- <!-- Clean. Delete the build files, and their directories -->
- <!-- ====================================================== -->
- <target name="clean" depends="clean-contrib,clean-recipes"
- description="Clean. Delete the build files, and their directories">
- <delete dir="${build.dir}"/>
- <delete dir="${docs.src}/build"/>
- <delete dir="${src_generated.dir}" />
- <delete dir="${csrc_generated.dir}" />
- <delete file="${jdiff.jar}" />
- <delete file="${xerces.jar}" />
- <delete file="${lib.dir}/Null.java"/>
- <delete file="${lib.dir}/rats.jar" />
- <delete file="${jdiff.xml.dir}/${name}_${version}.xml"/>
- <delete file="${jar.name}" />
- <delete dir="${distribution}"/>
- <delete dir="${revision.dir}"/>
- <delete>
- <fileset dir="${basedir}" includes="*.jar,*.tar.gz"/>
- </delete>
- </target>
- <target name="clean-contrib">
- <subant target="clean">
- <fileset file="${contrib.dir}/build.xml"/>
- </subant>
- </target>
- <target name="clean-recipes">
- <subant target="clean">
- <fileset file="${recipes.dir}/build.xml"/>
- </subant>
- </target>
- <!-- ====================================================== -->
- <!-- Run unit tests -->
- <!-- ====================================================== -->
- <target name="test-init" depends="jar,compile-test">
- <delete dir="${test.log.dir}" />
- <delete dir="${test.tmp.dir}" />
- <delete dir="${test.data.upgrade.dir}" />
- <delete dir="${test.data.invalid.dir}" />
- <delete dir="${test.data.dir}" />
- <mkdir dir="${test.log.dir}" />
- <mkdir dir="${test.tmp.dir}" />
- <mkdir dir="${test.data.dir}" />
- <mkdir dir="${test.data.upgrade.dir}" />
- <mkdir dir="${test.data.invalid.dir}" />
- <copy todir="${test.data.upgrade.dir}">
- <fileset dir="${basedir}/src/java/test/data/upgrade"/>
- </copy>
- <copy todir="${test.data.invalid.dir}">
- <fileset dir="${basedir}/src/java/test/data/invalidsnap"/>
- </copy>
-
- </target>
- <target name="junit.run">
- <junit showoutput="${test.output}"
- printsummary="${test.junit.printsummary}"
- haltonfailure="${test.junit.haltonfailure}"
- fork="yes"
- forkmode="${test.junit.fork.mode}"
- maxmemory="${test.junit.maxmem}"
- dir="${basedir}" timeout="${test.timeout}"
- errorProperty="tests.failed" failureProperty="tests.failed">
- <sysproperty key="build.test.dir" value="${test.tmp.dir}" />
- <sysproperty key="test.data.dir" value="${test.data.dir}" />
- <sysproperty key="log4j.configuration"
- value="file:${basedir}/conf/log4j.properties" />
- <classpath refid="test.classpath"/>
- <classpath>
- <pathelement path="${build.testclasses}" />
- </classpath>
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${test.log.dir}" unless="testcase">
- <fileset dir="${test.src.dir}"
- includes="**/*${test.category}Test.java"/>
- </batchtest>
- <batchtest todir="${test.log.dir}" if="testcase">
- <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/>
- </batchtest>
- </junit>
- <fail if="tests.failed">Tests failed!</fail>
- </target>
- <target name="check-cppunit-configure" depends="init" >
- <condition property="need.cppunit.configure">
- <not> <available file="${c.src.dir}/configure"/> </not>
- </condition>
- </target>
- <target name="check-cppunit-makefile" depends="init" >
- <condition property="need.cppunit.makefile">
- <not> <available file="${test.cppunit.dir}/Makefile"/> </not>
- </condition>
- </target>
- <!--
- 1. If we have a Makefile it will handle up-to-date check and also
- regenerate the configure script if missing. (done)
- 2. If we don't have a Makefile use the configure script to
- regenerate it. (done)
- 3. If we don't have a Makefile nor a configure script then it's
- last resort and run autoreconf, then configure (done)
- -->
- <target name="create-cppunit-configure" depends="check-cppunit-configure"
- if="need.cppunit.configure">
- <exec executable="autoreconf" dir="${c.src.dir}" searchpath="yes"
- failonerror="yes">
- <arg value="-if"/>
- </exec>
- </target>
- <target name="create-cppunit-makefile" depends="check-cppunit-makefile"
- if="need.cppunit.makefile">
- <antcall target="create-cppunit-configure">
- <param name="cppunit" value="true"/>
- </antcall>
- <mkdir dir="${test.cppunit.dir}"/>
- <exec executable="${c.src.dir}/configure" dir="${test.cppunit.dir}"
- failonerror="yes">
- <env key="base_dir" value="${basedir}"/>
- <env key="CALLER" value="ANT"/>
- <arg value="--prefix=${test.cppunit.dir}"/>
- </exec>
- </target>
- <target name="call-test-cppunit" description="to execute cppunit tests">
- <antcall target="create-cppunit-makefile"/>
- <antcall target="test-cppunit">
- <param name="cppunit" value="true"/>
- </antcall>
- </target>
- <target name="test-cppunit"
- depends="compile_jute, jar, create-cppunit-makefile"
- if="cppunit"
- description="to run cppunit test cases">
- <property name="fuser.bin" value="/sbin"/>
- <property name="lib.cppunit" value="/usr/local/lib"/>
- <exec dir="${test.cppunit.dir}" executable="make" failonerror="true">
- <env key="LD_LIBRARY_PATH" value="${lib.cppunit}"/>
- <env key="PATH" path="${env.PATH};${c.src.dir};${fuser.bin};"/>
- <env key="CALLER" value="ANT"/>
- <env key="base_dir" value="${basedir}"/>
- <arg line="clean run-check"/>
- </exec>
- </target>
-
- <target name="test-unit-category">
- <property name="test.category" value="Unit"/>
- </target>
- <target name="test-unit" depends="test-init,test-unit-category,junit.run"/>
- <target name="test-func-category">
- <property name="test.category" value="Func"/>
- </target>
- <target name="test-func" depends="test-init,test-func-category,junit.run"/>
- <target name="test-perf-category">
- <property name="test.category" value="Perf"/>
- </target>
- <target name="test-perf" depends="test-init,test-perf-category,junit.run"/>
- <target name="test-category">
- <property name="test.category" value=""/>
- </target>
- <target name="test" description="to run core and contrib tests">
- <antcall target="test-core"/>
- <antcall target="test-contrib"/>
- </target>
-
- <target name="test-contrib" description="to run contrib tests">
- <!-- yet to implement -->
- </target>
-
- <target name="test-core-java" depends="test-init, test-category, junit.run"/>
- <target name="test-core-cppunit" depends="test-init, test-category, call-test-cppunit"/>
- <target name="test-core" depends="test-core-java, test-core-cppunit"/>
- <!-- ====================================================== -->
- <!-- Run optional third-party tool targets -->
- <!-- ====================================================== -->
- <!-- clover code coverage -->
- <target name="clover" depends="clover.setup, clover.info"
- description="Instrument the Unit tests using Clover. Requires a Clover license and CLOVER_HOME environment variable set appropriately. To use, specify -Drun.clover=true on the command line."/>
- <target name="clover.setup" if="clover.enabled">
- <taskdef resource="cloverlib.xml" classpath="${clover.jar}"/>
- <mkdir dir="${clover.db.dir}"/>
- <clover-setup initString="${clover.db.dir}/zookeeper_coverage.db">
- <fileset dir="${java.src.dir}"
- includes="org/apache/zookeeper/**/*"
- excludes="org/apache/zookeeper/version/**/*"/>
- </clover-setup>
- </target>
- <target name="clover.info" if="run.clover" unless="clover.present">
- <echo>
- Clover not found. Code coverage reports disabled.
- </echo>
- </target>
- <target name="clover.check">
- <fail unless="clover.present">
- ##################################################################
- Clover not found.
- Please make sure clover.jar is in ANT_HOME/lib, or made available
- to Ant using other mechanisms like -lib or CLASSPATH.
- ##################################################################
- </fail>
- </target>
- <target name="generate-clover-reports" depends="clover.check, clover">
- <mkdir dir="${clover.report.dir}"/>
- <clover-report>
- <current outfile="${clover.report.dir}" title="${final.name}">
- <format type="html"/>
- </current>
- </clover-report>
- <clover-report>
- <current outfile="${clover.report.dir}/clover.xml" title="${final.name}">
- <format type="xml"/>
- </current>
- </clover-report>
- </target>
- <!-- Run with 'ant -Dfindbugs.home="path to Findbugs directory" findbugs -->
- <property name="findbugs.home" value="" />
- <target name="findbugs" depends="check-for-findbugs, jar" if="findbugs.present">
- <property name="findbugs.out.dir" value="${test.build.dir}/findbugs" />
- <property name="findbugs.exclude.file" value="${config.dir}/findbugsExcludeFile.xml" />
- <property name="findbugs.report.htmlfile" value="${findbugs.out.dir}/zookeeper-findbugs-report.html" />
- <property name="findbugs.report.xmlfile" value="${findbugs.out.dir}/zookeeper-findbugs-report.xml" />
- <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
- classpath="${findbugs.home}/lib/findbugs-ant.jar" />
- <mkdir dir="${findbugs.out.dir}" />
- <findbugs home="${findbugs.home}" output="xml:withMessages" excludeFilter="${findbugs.exclude.file}"
- outputFile="${findbugs.report.xmlfile}" effort="max" jvmargs="-Xmx512M">
- <auxClasspath path="${lib.dir}/log4j-1.2.15.jar" />
- <sourcePath path="${java.src.dir}" />
- <class location="${basedir}/${jar.name}" />
- </findbugs>
- <xslt style="${findbugs.home}/src/xsl/default.xsl" in="${findbugs.report.xmlfile}"
- out="${findbugs.report.htmlfile}" />
- </target>
- <target name="check-for-findbugs">
- <available property="findbugs.present" file="${findbugs.home}/lib/findbugs.jar" />
- </target>
- <!-- Code coverage -->
- <target name="cobertura-instrument" depends="compile-test">
- <taskdef resource="tasks.properties">
- <classpath>
- <pathelement path="${lib.dir}/cobertura/cobertura.jar" />
- <fileset dir="${lib.dir}/cobertura/lib">
- <include name="*.jar"/>
- </fileset>
- <fileset dir="${lib.dir}">
- <include name="*.jar"/>
- </fileset>
- </classpath>
- </taskdef>
- <cobertura-instrument todir="${build.dir}/cobertura">
- <fileset dir="${build.classes}">
- <include name="org/apache/zookeeper/**/*.class"/>
- </fileset>
- </cobertura-instrument>
- </target>
- <target name="cobertura-test" depends="test-init,cobertura-instrument">
- <junit showoutput="${test.output}" printsummary="yes" haltonfailure="no" fork="yes"
- maxmemory="${test.junit.maxmem}" dir="${basedir}" timeout="${test.timeout}"
- errorProperty="tests.failed" failureProperty="tests.failed">
- <sysproperty key="build.test.dir" value="${test.tmp.dir}" />
- <sysproperty key="test.data.dir" value="${test.data.dir}" />
- <sysproperty key="log4j.configuration"
- value="file:${basedir}/conf/log4j.properties" />
- <classpath>
- <pathelement path="${build.dir}/cobertura" />
- <pathelement path="${lib.dir}/cobertura/cobertura.jar" />
- <fileset dir="${lib.dir}/cobertura/lib">
- <include name="*.jar"/>
- </fileset>
- <fileset dir="${lib.dir}">
- <include name="*.jar"/>
- </fileset>
- </classpath>
- <classpath>
- <pathelement path="${build.testclasses}" />
- </classpath>
- <classpath refid="test.classpath"/>
- <classpath>
- <pathelement path="${build.classes}" />
- </classpath>
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${test.log.dir}" unless="testcase">
- <fileset dir="${test.src.dir}"
- includes="**/*Test.java"/>
- </batchtest>
- <batchtest todir="${test.log.dir}" if="testcase">
- <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/>
- </batchtest>
- </junit>
- <fail if="tests.failed">Tests failed!</fail>
- </target>
- <target name="cobertura-report" depends="cobertura-test">
- <cobertura-report format="${test.cobertura.output.format}"
- destdir="${coveragereport.dir}" >
- <fileset dir="${java.src.dir}">
- <include name="**/*.java" />
- </fileset>
- <fileset dir="${src_generated.dir}">
- <include name="**/*.java" />
- </fileset>
- </cobertura-report>
- </target>
- <target name="checkstyle" depends="checkstyle.check, set-checkstyle-classpath" if="checkstyle.home"
- description="Run optional third-party tool targets">
- <taskdef resource="checkstyletask.properties">
- <classpath refid="checkstyle-classpath"/>
- </taskdef>
- <mkdir dir="${test.build.dir}"/>
- <checkstyle config="${test.src.dir}/checkstyle.xml" failOnViolation="false">
- <fileset dir="${src.dir}/java" includes="**/*.java" excludes="**/generated/**"/>
- <formatter type="xml" toFile="${test.build.dir}/checkstyle-errors.xml"/>
- </checkstyle>
- <xslt style="${test.src.dir}/checkstyle-noframes-sorted.xsl" in="${test.build.dir}/checkstyle-errors.xml"
- out="${test.build.dir}/checkstyle-errors.html"/>
- </target>
- <target name="checkstyle.check" unless="checkstyle.home">
- <fail message="'checkstyle.home' is not defined. Please pass -Dcheckstyle.home=<base of checkstyle installation>
- to Ant on the command-line." />
- </target>
-
- <target name="set-checkstyle-classpath">
- <path id="checkstyle-classpath">
- <fileset dir="${checkstyle.home}">
- <include name="**/*.jar"/>
- </fileset>
- </path>
- </target>
- <!-- ================================================================== -->
- <!-- Perform audit activities for the release -->
- <!-- ================================================================== -->
-
- <target name="get-rats" depends="package" description="Downloads the release audit tool">
- <get src="${rats_url}" dest="${lib.dir}/rats.jar" usetimestamp="false" />
- </target>
-
- <target name="releaseaudit" depends="get-rats" description="Release Audit activities">
- <java classname="${rat.reporting.classname}" fork="true" classpath="${lib.dir}/rats.jar">
- <arg value="${build.dir}/${final.name}"/>
- </java>
- </target>
- <target name="findbugs.check" depends="check-for-findbugs" unless="findbugs.present">
- <fail message="'findbugs.home' is not defined. Please pass -Dfindbugs.home=<base of Findbugs installation>
- to Ant on the command-line." />
- </target>
- <target name="patch.check" unless="patch.file">
- <fail message="'patch.file' is not defined. Please pass -Dpatch.file=<location of patch file>
- to Ant on the command-line." />
- </target>
- <target name="test-patch" depends="patch.check,findbugs.check,forrest.check">
- <exec executable="bash" failonerror="true">
- <arg value="${test_patch_sh}"/>
- <arg value="DEVELOPER"/>
- <arg value="${patch.file}"/>
- <arg value="${scratch.dir}"/>
- <arg value="${svn.cmd}"/>
- <arg value="${grep.cmd}"/>
- <arg value="${patch.cmd}"/>
- <arg value="${findbugs.home}"/>
- <arg value="${forrest.home}"/>
- <arg value="${basedir}"/>
- <arg value="${java5.home}"/>
- <arg value="${ant.project.name}"/>
- </exec>
- </target>
- <target name="hudson-test-patch" depends="findbugs.check,forrest.check">
- <exec executable="bash" failonerror="true">
- <arg value="${test_patch_sh}"/>
- <arg value="HUDSON"/>
- <arg value="${scratch.dir}"/>
- <arg value="${support.dir}"/>
- <arg value="${ps.cmd}"/>
- <arg value="${wget.cmd}"/>
- <arg value="${jiracli.cmd}"/>
- <arg value="${svn.cmd}"/>
- <arg value="${grep.cmd}"/>
- <arg value="${patch.cmd}"/>
- <arg value="${findbugs.home}"/>
- <arg value="${forrest.home}"/>
- <arg value="${eclipse.home}"/>
- <arg value="${python.home}"/>
- <arg value="${basedir}"/>
- <arg value="${trigger.url}"/>
- <arg value="${jira.passwd}"/>
- <arg value="${java5.home}"/>
- <arg value="${curl.cmd}"/>
- <arg value="${defect}"/>
- <arg value="${ant.project.name}"/>
- </exec>
- </target>
- <target name="get-jdiff" description="download jdiff and its dependencies">
- <get src="${jdiff.download.url}" dest="${jdiff.jar}" usetimestamp="true"/>
- <get src="${xerces.download.url}" dest="${xerces.jar}" usetimestamp="true"/>
- </target>
- <target name="api-xml" depends="get-jdiff, javadoc, write-null">
- <javadoc>
- <doclet name="jdiff.JDiff"
- path="${jdiff.jar}:${xerces.jar}">
- <param name="-apidir" value="${jdiff.xml.dir}"/>
- <param name="-apiname" value="${name} ${version}"/>
- </doclet>
- <packageset dir="${java.src.dir}">
- <include name="org/apache/zookeeper"/>
- <exclude name="org/apache/jute"/>
- </packageset>
- <classpath>
- <fileset dir="${lib.dir}">
- <include name="**/*.jar"/>
- </fileset>
- <pathelement path="${build.classes}" />
- </classpath>
- </javadoc>
- </target>
-
- <target name="write-null">
- <exec executable="touch">
- <arg value="${jdiff.home}/Null.java"/>
- </exec>
- </target>
- <target name="api-report" depends="api-xml">
- <mkdir dir="${jdiff.build.dir}"/>
- <javadoc sourcepath="${java.src.dir}"
- destdir="${jdiff.build.dir}"
- excludepackagenames="org.apache.jute"
- sourceFiles="${jdiff.home}/Null.java">
- <doclet name="jdiff.JDiff" path="${jdiff.jar}:${xerces.jar}">
- <param name="-oldapi" value="${name} ${jdiff.stable}"/>
- <param name="-newapi" value="${name} ${version}"/>
- <param name="-oldapidir" value="${jdiff.xml.dir}"/>
- <param name="-newapidir" value="${jdiff.xml.dir}"/>
- <param name="-javadocold" value="${jdiff.stable.javadoc}"/>
- <param name="-javadocnew" value="../../api/"/>
- <param name="-stats"/>
- </doclet>
- <classpath>
- <fileset dir="${lib.dir}">
- <include name="**/*.jar"/>
- </fileset>
- <pathelement path="${build.classes}" />
- </classpath>
- </javadoc>
- </target>
- </project>
|