<?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.1.3"/>
  <property name="Name" value="HBase"/>
  <property name="final.name" value="hbase-${version}"/>
  <property name="year" value="2008"/>
 
  <!-- 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.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="javadoc.link.java"
    value="http://java.sun.com/j2se/1.5/docs/api/"/>
  <property name="javadoc.packages" value="org.apache.hadoop.hbase.*"/>


  <!--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="javacc" if="javacc.home">
      <echo message="javacc.home: ${javacc.home}"/>
     <property name="hql.src.dir" 
       value="${src.dir}/org/apache/hadoop/hbase/hql" /> 
     <mkdir dir="${hql.src.dir}/generated" />
     <javacc
       target="${hql.src.dir}/HQLParser.jj"
       outputdirectory="${hql.src.dir}/generated"
       javacchome="${javacc.home}"
     />
  </target>

  <target name="compile" depends="init,jspc,javacc">
   <!--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}"
    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="${build.dir}/${final.name}.jar"
        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>

  <target name="jspc" >
    <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="${src.webapps}/master/WEB-INF/web.xml">
    </jspcompiler>
    <jspcompiler
     uriroot="${src.webapps}/regionserver"
     outputdir="${generated.webapps.src}"
     package="org.apache.hadoop.hbase.generated.regionserver"
     webxml="${src.webapps}/regionserver/WEB-INF/web.xml">
    </jspcompiler>
  </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" />
    <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">
    <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/**"/>
    	</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}"/>
  </path>

  <target name="compile-test" depends="compile" > 
    <javac encoding="${build.encoding}" 
       srcdir="${src.test}" 
       includes="**/*.java" 
       destdir="${build.test}" 
       debug="${javac.debug}"> 
    <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, compile" >
    <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="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>
