<?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.19.4-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="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}/jetty-ext/">
      <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>
    <exec executable="sh">
       <arg line="src/saveVersion.sh ${version}"/>
    </exec>
  </target>

  <target name="compile" depends="clover,init,jspc">
   <!--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="jar" depends="compile">
    <!--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 file="${basedir}/conf/hbase-default.xml"/>
      <zipfileset dir="${build.webapps}" prefix="webapps"/>
   		<manifest>
            <attribute name="Main-Class" value="org/apache/hadoop/hbase/mapred/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/jetty-ext/">
        <include name="*jar" />
      </fileset>
      <fileset dir="${basedir}/lib/">
        <include name="servlet-api*jar" />
        <include name="commons-logging*jar" />
      </fileset>
    </path>
    <taskdef classname="org.apache.jasper.JspC" name="jspcompiler" >
      <classpath refid="jspc.classpath"/>
    </taskdef>
    <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>
    <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,compile-test" 
      description="Build distribution"> 
    <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}/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="${docs.dir}" />
      <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>
  </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}/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>

  <!-- ================================================================== -->
  <!-- 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" >
      <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="hadoop-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=&lt;base of Apache Forrest installation&gt; 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=&lt;base of Java 5 distribution&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/**"/>
    	</packageset>
        <link href="${javadoc.link.java}"/>
        <classpath >
          <path refid="classpath" />
          <pathelement path="${java.class.path}"/>
        </classpath>
    </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-test" depends="compile">
    <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" depends="compile-test" >
    <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>

  <!-- ================================================================== -->
  <!-- Clean.  Delete the build files, and their directories              -->
  <!-- ================================================================== -->
  <target name="clean">
    <delete dir="${build.dir}"/>
  </target>
</project>
