<?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-dev"/>
  <property name="Name" value="HBase"/>
  <property name="final.name" value="hbase-${version}"/>
  <property name="year" value="2009"/>
 
  <!-- 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>
