<?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="hbase" default="jar">
  <property name="version" value="0.20.3"/>
  <property name="Name" value="HBase"/>
  <property name="final.name" value="hbase-${version}"/>
  <property name="year" value="2010"/>
 
  <!-- Load all the default properties, and any the user wants    -->
  <!-- to contribute (without having to type -D or edit this file -->
  <property file="${user.home}/${name}.build.properties" />
  <property file="${basedir}/build.properties" />

  <property name="src.dir"  location="${basedir}/src/java"/>
  <property name="src.test" location="${basedir}/src/test"/>
  <property name="src.testdata" location="${basedir}/src/testdata"/>
  <property name="src.examples" location="${basedir}/src/examples"/>
  <property name="src.webapps" location="${basedir}/src/webapps"/>

  <property name="lib.dir" value="${basedir}/lib"/>
  <property name="conf.dir" value="${basedir}/conf"/>
  <property name="docs.dir" value="${basedir}/docs"/>
  <property name="docs.src" value="${basedir}/src/docs"/>

  <property name="contrib.dir" value="${basedir}/src/contrib"/>

  <property name="test.output" value="no"/>
  <property name="test.timeout" value="600000"/>

  <property name="build.dir" location="${basedir}/build"/>
  <property name="build.bin" location="${build.dir}/bin"/>
  <property name="build.conf" location="${build.dir}/conf"/>
  <property name="build.webapps" location="${build.dir}/webapps"/>
  <property name="build.lib" location="${build.dir}/lib"/>
  <property name="build.classes" location="${build.dir}/classes"/>
  <property name="build.test" location="${build.dir}/test"/>
  <property name="build.examples" location="${build.dir}/examples"/>
  <property name="build.docs" value="${build.dir}/docs"/>
  <property name="build.javadoc" value="${build.docs}/api"/>
  <property name="build.encoding" value="ISO-8859-1"/>
  <property name="build.src" value="${build.dir}/src"/>
  <property name="generated.webapps.src" value="${build.src}"/>

  <property name="test.build.dir" value="${build.dir}/test"/>
  <property name="test.log.dir" value="${test.build.dir}/logs"/>
  <property name="test.junit.output.format" value="plain"/>

  <property name="dist.dir" value="${build.dir}/${final.name}"/>

  <property name="javac.deprecation" value="off"/>
  <property name="javac.debug" value="on"/>
  <property name="javac.version" value="1.6"/>

  <property name="clover.db.dir" location="${build.dir}/test/clover/db"/>
  <property name="clover.report.dir" location="${build.dir}/test/clover/reports"/>


  <property name="javadoc.link.java"
    value="http://java.sun.com/javase/6/docs/api/"/>
  <property name="javadoc.packages" value="org.apache.hadoop.hbase.*"/>
  <property name="jarfile" value="${build.dir}/${final.name}.jar" />

  <property name="clover.jar" location="${clover.home}/lib/clover.jar"/>
  <available property="clover.present" file="${clover.jar}"/>

  <!-- check if clover reports should be generated -->
  <condition property="clover.enabled">
    <and>
        <isset property="run.clover"/>
        <isset property="clover.present"/>
    </and>
  </condition>

  <!--We need to have the hadoop jars ride in front of the hbase classes or we
    get the below exceptions:

     [junit] java.io.FileNotFoundException: file:/Users/stack/Documents/checkouts/hbase/trunk/build/webapps/dfs

    When we move off 0.16.0 hadoop, fix HttpStatusServer
   -->
  <fileset id="lib.jars" dir="${basedir}" includes="lib/*.jar"/>
  <path id="classpath">
    <fileset refid="lib.jars"/>
    <fileset dir="${lib.dir}/jsp-2.1/">
      <include name="*jar" />
    </fileset>
    <pathelement location="${build.classes}"/>
    <pathelement location="${conf.dir}"/>
  </path>

  <target name="init">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes}"/>
    <mkdir dir="${build.test}"/>
    <mkdir dir="${build.examples}"/>

    <!--Copy webapps over to build dir. Exclude jsp and generated-src java
      classes -->
    <mkdir dir="${build.webapps}"/>
    <copy todir="${build.webapps}">
      <fileset dir="${src.webapps}">
        <exclude name="**/*.jsp" />
        <exclude name="**/.*" />
        <exclude name="**/*~" />
      </fileset>
    </copy>
    <!--Copy bin, lib, and conf. too-->
    <mkdir dir="${build.lib}"/>
    <copy todir="${build.lib}">
      <fileset dir="${lib.dir}" />
    </copy>
    <mkdir dir="${build.conf}"/>
    <copy todir="${build.conf}">
      <fileset dir="${basedir}/conf" />
    </copy>
    <mkdir dir="${build.bin}"/>
    <copy todir="${build.bin}">
      <fileset dir="${basedir}/bin" />
    </copy>
    <chmod perm="ugo+x" type="file">
      <fileset dir="${build.bin}" />
    </chmod>
    <!--Copy contrib. templates if any-->
    <copy todir="${contrib.dir}" verbose="true">
      <fileset dir="${contrib.dir}" includes="**/*.template"/>
      <mapper type="glob" from="*.template" to="*"/>
    </copy>
    <exec executable="sh">
       <arg line="src/saveVersion.sh ${version}"/>
    </exec>
  </target>

  <target name="compile-core" depends="clover,init,jspc" description="Compile hbase core">
   <!--Compile whats under src and generated java classes made from jsp-->
   <javac
    encoding="${build.encoding}"
    srcdir="${src.dir};${build.src}"
    includes="**/*.java"
    destdir="${build.classes}"
    debug="${javac.debug}"
     target="${javac.version}"
     source="${javac.version}"
    deprecation="${javac.deprecation}">
     <classpath refid="classpath"/>
   </javac>
  </target>

  <target name="compile-contrib" depends="compile-core" description="Compile contribs">
     <subant target="compile">
        <property name="version" value="${version}"/>
        <fileset file="${contrib.dir}/build.xml"/>
     </subant>  	
  </target>

  <target name="compile" depends="compile-core, compile-contrib"
     description="Compile core, contrib">
  </target>
	
  <target name="jar" depends="compile"
       description="Build jar">
    <!--Copy over any properties under src-->
    <copy todir="${build.classes}">
      <fileset dir="${src.dir}">
        <include name="**/*.properties" />
      </fileset>
    </copy>
    <jar jarfile="${jarfile}" basedir="${build.classes}" >
      <fileset dir="${conf.dir}" >
        <include name="hbase-default.xml" />
      </fileset>
      <zipfileset dir="conf" prefix="conf" includes="hbase-default.xml" />
      <zipfileset dir="${build.webapps}" prefix="webapps"/>
   		<manifest>
            <attribute name="Main-Class" value="org/apache/hadoop/hbase/mapreduce/Driver" />
    	</manifest>
    </jar>
  </target>

   <!--Conditionally generate the jsp java pages.
       We do it once per ant invocation.  See hbase-593.
     -->
  <target name="jspc" depends="init" unless="jspc.not.required">
    <path id="jspc.classpath">
      <fileset dir="${basedir}/lib/jsp-2.1/">
        <include name="*jar" />
      </fileset>
      <fileset dir="${basedir}/lib/">
        <include name="servlet-api*jar" />
        <include name="commons-logging*jar" />
        <include name="jasper-*jar" />
        <include name="jetty-*jar" />
      </fileset>
    </path>
    <taskdef classname="org.apache.jasper.JspC" name="jspcompiler" >
      <classpath refid="jspc.classpath"/>
    </taskdef>
    <mkdir dir="${build.webapps}/master/WEB-INF"/>
    <jspcompiler
     uriroot="${src.webapps}/master"
     outputdir="${generated.webapps.src}"
     package="org.apache.hadoop.hbase.generated.master"
     webxml="${build.webapps}/master/WEB-INF/web.xml">
    </jspcompiler>
    <mkdir dir="${build.webapps}/regionserver/WEB-INF"/>
    <jspcompiler
     uriroot="${src.webapps}/regionserver"
     outputdir="${generated.webapps.src}"
     package="org.apache.hadoop.hbase.generated.regionserver"
     webxml="${build.webapps}/regionserver/WEB-INF/web.xml">
    </jspcompiler>
    <property name="jspc.not.required" value="true" />
    <echo message="Setting jspc.notRequired property. jsp pages generated once per ant session only" />
  </target>

  <target name="clover" depends="clover.setup, clover.info"
    description="Instrument the Unit tests using Clover.  To use, specify -Dclover.home=&lt;base of clover installation&gt; -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}/hbase_coverage.db">
      <fileset dir="src" includes="java/**/*"/>
    </clover-setup>
  </target>

  <target name="clover.info" 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 specify -Dclover.home=&lt;base of clover installation&gt;
      on the command line.
      ##################################################################
    </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>

  <!-- ================================================================== -->
  <!-- Package                                                            -->
  <!-- ================================================================== -->
  <target name="package" depends="jar,javadoc" 
      description="Build distribution; must define -Dforrest.home so can generate doc"> 
    <echo message="Be sure to run 'docs' target before this one else package will be missing site documentation" />
    <mkdir dir="${dist.dir}"/>
    <copy todir="${dist.dir}" includeEmptyDirs="false" flatten="true">
      <fileset dir="${build.dir}">
        <include name="${final.name}.jar" />
        <include name="${final.name}-test.jar" />
      </fileset>
    </copy>
    <mkdir dir="${dist.dir}/contrib"/>
    <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"/>
    </subant>  	
    <mkdir dir="${dist.dir}/webapps"/>
    <copy todir="${dist.dir}/webapps">
      <fileset dir="${build.webapps}" />
    </copy>
    <mkdir dir="${dist.dir}/lib"/>
    <copy todir="${dist.dir}/lib">
      <fileset dir="${build.lib}" />
    </copy>
    <mkdir dir="${dist.dir}/conf" />
    <copy todir="${dist.dir}/conf">
      <fileset dir="${build.conf}" />
    </copy>
    <mkdir dir="${dist.dir}/bin" />
    <copy todir="${dist.dir}/bin">
      <fileset dir="${build.bin}" />
    </copy>
    <chmod perm="ugo+x" type="file">
      <fileset dir="${dist.dir}/bin" />
    </chmod>
    <mkdir dir="${dist.dir}/docs" />
    <copy todir="${dist.dir}/docs">
      <fileset dir="${build.docs}"/>
    </copy>
    <copy todir="${dist.dir}">
      <fileset dir=".">
        <include name="*.txt" />
        <include name="build.xml" />
      </fileset>
    </copy>
    <mkdir dir="${dist.dir}/src" />
    <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                                               -->
  <!-- ================================================================== -->
  <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>
  <target name="tar" depends="package" description="Make release tarball">
    <macro_tar param.destfile="${build.dir}/${final.name}.tar.gz">
      <param.listofitems>
        <tarfileset dir="${build.dir}" mode="664">
          <exclude name="${final.name}/bin/*" />
          <include name="${final.name}/**" />
        </tarfileset>
        <tarfileset dir="${build.dir}" mode="755">
          <include name="${final.name}/bin/*" />
        </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">
          <exclude name="${final.name}/bin/*" />
          <exclude name="${final.name}/contrib/*/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/*" />
          <exclude name="${final.name}/contrib/*/bin/*" />
        </tarfileset>
      </param.listofitems>
    </macro_tar>
  </target>

  <!-- ================================================================== -->
  <!-- Doc                                                                -->
  <!-- ================================================================== -->
  <target name="docs" depends="forrest.check"
      description="Generate forrest-based documentation. To use, specify -Dforrest.home=&lt;base of Apache Forrest installation&gt; on the command line." if="forrest.home">
    <exec dir="${docs.src}" executable="${forrest.home}/bin/forrest" failonerror="true" />
    <copy todir="${build.docs}">
      <fileset dir="${docs.src}/build/site/" />
    </copy>
    <style basedir="${conf.dir}" destdir="${build.docs}"
           includes="hadoop-default.xml" style="conf/configuration.xsl"/>
    <!--Copy to $HBASE_HOME/docs ... need to check it in to persist it.-->
    <copy todir="${docs.dir}">
      <fileset dir="${build.docs}" />
    </copy>
  </target>

  <target name="forrest.check" unless="forrest.home">
    <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=&lt;base of Apache Forrest installation&gt; to Ant on the command-line." />
  </target>

  <!-- Javadoc -->
  <target name="javadoc" description="Generate javadoc">
    <mkdir dir="${build.javadoc}"/>
    <javadoc
      overview="${src.dir}/overview.html"
      packagenames="org.apache.hadoop.hbase.*"
      destdir="${build.javadoc}"
      author="true"
      version="true"
      use="true"
      windowtitle="${Name} ${version} API"
      doctitle="${Name} ${version} API"
      bottom="Copyright &amp;copy; ${year} The Apache Software Foundation"
      >
    	<packageset dir="${src.dir}">
          <include name="org/apache/**"/>
          <exclude name="org/onelab/**"/>
          <exclude name="org/apache/hadoop/hbase/thrift/generated/**"/>
    	</packageset>
        <link href="${javadoc.link.java}"/>
        <classpath >
          <path refid="classpath" />
          <fileset dir="src/contrib/">
            <include name="*/lib/*.jar" />
          </fileset>
          <pathelement path="${java.class.path}"/>
        </classpath>
    	<packageset dir="src/contrib/transactional/src/java"/>
    	<packageset dir="src/contrib/stargate/src/java"/>
    </javadoc>
  </target>	

  <!-- ================================================================== -->
  <!-- Run unit tests                                                     -->
  <!-- ================================================================== -->
  <path id="test.classpath">
    <!-- ============  *  *  *  *  *  N O T E  *  *  *  *  * ============
           ${src.test} *must* come before rest of class path. Otherwise
                    the test hbase-site.xml will not be found.
         ============  *  *  *  *  *  N O T E  *  *  *  *  * ============ -->
    <pathelement location="${src.test}"/>
    <pathelement location="${build.test}" />
    <path refid="classpath"/>
    <pathelement location="${build.dir}"/>
    <pathelement path="${clover.jar}"/>
  </path>

  <!--'compile-test' used to depend on 'compile' but removed it. Hudson doesn't like
      redoing init and jscpc at this stage of the game; i.e. the prereqs
      for compile.  TODO: Investigate why.  For now, test will fail
      if not preceeded by manual 'jar' or 'compile' invokation -->
  <target name="compile-core-test" depends="compile" description="Build test jar">
    <javac encoding="${build.encoding}" 
       srcdir="${src.test}" 
       includes="**/*.java" 
       destdir="${build.test}" 
       debug="${javac.debug}"
       target="${javac.version}"
       source="${javac.version}"
       deprecation="${javac.deprecation}"> 
    <classpath refid="test.classpath"/> 
    </javac>
    <jar jarfile="${build.dir}/${final.name}-test.jar" >
      <fileset dir="${build.test}" includes="org/**" />
      <fileset dir="${build.classes}" />
      <fileset dir="${src.test}" includes="**/*.properties" />
      <manifest>
        <attribute name="Main-Class"
          value="org/apache/hadoop/hbase/PerformanceEvaluation"/>
      </manifest>
    </jar>
  </target>

  <target name="test-core" depends="compile-core-test"
   	  description="Build test jar and run tests">
    <delete dir="${test.log.dir}"/>
    <mkdir dir="${test.log.dir}"/>
    <junit
      printsummary="yes" showoutput="${test.output}" 
      haltonfailure="no" fork="yes" maxmemory="512m"
      errorProperty="tests.failed" failureProperty="tests.failed"
      timeout="${test.timeout}">
      
      <sysproperty key="test.build.data" value="${build.test}/data"/>
      <sysproperty key="build.test" value="${build.test}"/>
      <sysproperty key="src.testdata" value="${src.testdata}"/>
      <sysproperty key="contrib.name" value="${name}"/>
      
      <sysproperty key="user.dir" value="${build.test}/data"/>
      <sysproperty key="fs.default.name" value="${fs.default.name}"/>
      <sysproperty key="hadoop.test.localoutputfile" value="${hadoop.test.localoutputfile}"/>
      <sysproperty key="test.log.dir" value="${hadoop.log.dir}"/> 
      <classpath refid="test.classpath"/>
      <formatter type="${test.junit.output.format}" />
      <batchtest todir="${build.test}" unless="testcase">
        <fileset dir="${src.test}"
                 includes="**/Test*.java" excludes="**/${test.exclude}.java" />
      </batchtest>
      <batchtest todir="${build.test}" if="testcase">
        <fileset dir="${src.test}" includes="**/${testcase}.java"/>
      </batchtest>
    </junit>
    <fail if="tests.failed">Tests failed!</fail>
  </target>

  <target name="test-contrib" depends="compile, compile-core-test"
      description="Run contrib unit tests">
    <subant target="test">
       <property name="version" value="${version}"/>
       <fileset file="${contrib.dir}/build.xml"/>
    </subant> 
  </target>

  <target name="test" depends="test-core, test-contrib"
    description="Run core, contrib unit tests">
  </target>

  <!-- ================================================================== -->
  <!-- Clean.  Delete the build files, and their directories              -->
  <!-- ================================================================== -->
  <target name="clean-contrib" description="Clean contrib">
     <subant target="clean">        
        <fileset file="src/contrib/build.xml"/>
     </subant>  	
  </target>
  <target name="clean" depends="clean-contrib" description="Clean all old builds">
    <delete dir="${build.dir}"/>
    <delete dir="${docs.src}/build"/>
  </target>
</project>
