<?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="hcatalog" default="jar"
         xmlns:ivy="antlib:org.apache.ivy.ant"
         xmlns:artifact="artifact:org.apache.maven.artifact.ant">

    <property name="path.to.basedir" location="${basedir}"/>

    <loadproperties srcfile="${basedir}/build.properties"/>

    <!--
   ================================================================================
   Imports
   ================================================================================ -->

    <!--
    ================================================================================
    Properties and Classpaths Section
    ================================================================================
    -->

    <condition property="staging">
        <equals arg1="${repo}" arg2="staging"/>
    </condition>

    <!-- e2e test properties -->
    <property name="test.e2e.dir" value="${basedir}/src/test/e2e/hcatalog"/>

    <!-- ivy properties set here -->
    <property name="ivy.repo.dir" value="${user.home}/ivyrepo"/>
    <property name="ivy.dir" location="ivy"/>
    <loadproperties srcfile="${ivy.dir}/libraries.properties"/>
    <property name="asfrepo" value="https://repository.apache.org"/>
    <property name="asfsnapshotrepo" value="${asfrepo}/content/repositories/snapshots"/>
    <property name="mvnrepo" value="http://repo2.maven.org/maven2"/>
    <property name="asfstagingrepo" value="${asfrepo}/service/local/staging/deploy/maven2"/>
    <property name="ivy.jar" location="${ivy.dir}/ivy-${ivy.version}.jar"/>
    <property name="ant_task.jar" location="${ivy.dir}/maven-ant-tasks-${ant-task.version}.jar"/>
    <property name="ant_task_repo_url"
              value="${mvnrepo}/org/apache/maven/maven-ant-tasks/${ant-task.version}/maven-ant-tasks-${ant-task.version}.jar"/>
    <property name="ivy_repo_url" value="${mvnrepo}/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"/>
    <property name="ivy.xml" location="${basedir}/ivy.xml"/>
    <property name="ivysettings.xml" location="${ivy.dir}/ivysettings.xml"/>
    <property name="build.ivy.dir" location="${build.dir}/ivy"/>
    <property name="pom.file" location="${build.ivy.dir}/${ant.project.name}-${hcatalog.version}.pom"/>
    <property name="build.ivy.lib.dir" location="${build.ivy.dir}/lib"/>
    <property name="ivy.lib.dir" location="${build.ivy.lib.dir}/${ant.project.name}"/>
    <property name="build.ivy.report.dir" location="${build.ivy.dir}/report"/>

    <!-- packaging properties -->
    <property name="package.prefix" value="/usr"/>
    <property name="package.conf.dir" value="/etc/hcatalog"/>
    <property name="package.log.dir" value="/var/log/hcatalog"/>
    <property name="package.pid.dir" value="/var/run/hcatalog"/>
    <property name="package.var.dir" value="/var/lib/hcatalog"/>
    <property name="package.share.dir" value="/share/hcatalog/${module}"/>
    <property name="package.buildroot" value="${build.dir}/rpm/hcatalog_package_build_${user.name}"/>
    <property name="package.build.dir" value="${build.dir}/rpm/hcatalog_package_build_${user.name}/BUILD"/>

    <!-- rats properties -->
    <property name="rat.reporting.classname" value="rat.Report"/>

    <path id="compile.classpath">
        <fileset dir="${build.dir}/ivy/lib/default">
            <include name="**/*.jar"/>
        </fileset>
    </path>

    <path id="test.class.path">
        <pathelement location="${test.classes}"/>
        <pathelement location="${build.classes}"/>
        <pathelement location="conf"/>
        <fileset dir="${build.dir}/ivy/lib/test">
            <include name="**/*.jar"/>
        </fileset>
        <pathelement location="${basedir}/hcatalog-pig-adapter/build/hcatalog-pig-adapter-${hcatalog.version}.jar"/>
    </path>

    <!-- Classpath that includes all sub packages, used for things like Java docs -->
    <path id="uber.classpath">
        <fileset dir="${basedir}">
            <include name="**/build/ivy/lib/default/*.jar"/>
        </fileset>
    </path>

    <!-- This is a little janky because hcatalog-core.jar is not yet a submodule. -->
    <target name="ivy-report" depends="ivy-retrieve">
        <antcall target="_ivy-report"/>
        <ant target="_ivy-report" dir="hcatalog-pig-adapter" inheritAll="false" useNativeBasedir="true"/>
        <ant target="ivy-report" dir="storage-handlers" inheritAll="false" useNativeBasedir="true"/>
    </target>

    <target name="ivy-download" description="To download ivy" unless="offline">
        <echo message="${ant.project.name}"/>
        <get src="${ivy_repo_url}" dest="${ivy.jar}" usetimestamp="true" skipexisting="true"/>
        <typedef uri="antlib:org.apache.ivy.ant" onerror="fail" loaderRef="ivyLoader">
            <classpath>
                <pathelement location="${ivy.jar}"/>
            </classpath>
        </typedef>
    </target>

    <target name="ivy-init" depends="ivy-download,_ivy-init">
        <!-- HCatalog started as a single source tree that produced multiple artifacts.
        Currently its going through a transition to subprojects. During this transition
        we jank together pom files for artifacts produced in the existing source tree until
        they are correctly generated from per-subproject ivy.xml files. -->
        <copy file="${pom.file}" tofile="${build.ivy.dir}/hcatalog-core-${hcatalog.version}.pom"
              overwrite="true"/>
        <replace file="${build.ivy.dir}/hcatalog-core-${hcatalog.version}.pom"
                 token="artifactId>hcatalog"
                 value="artifactId>hcatalog-core"/>

        <copy file="${pom.file}" overwrite="true"
              tofile="${build.ivy.dir}/hcatalog-server-extensions-${hcatalog.version}.pom"/>
        <replace file="${build.ivy.dir}/hcatalog-server-extensions-${hcatalog.version}.pom"
                 token="artifactId>hcatalog"
                 value="artifactId>hcatalog-server-extensions"/>
    </target>

    <target name="init" depends="ivy-retrieve,mvn-init">
        <mkdir dir="${dist.dir}"/>
        <mkdir dir="${build.classes}"/>
        <mkdir dir="${test.classes}"/>
    </target>

    <!--
    ================================================================================
    Main Build and Jar Section
    ================================================================================
    -->
    <!-- Build HCatalog src files -->
    <target name="compile-src" depends="init">
        <javac encoding="${build.encoding}" srcdir="${src.dir}" excludes="${excludes}"
               includes="**/*.java" destdir="${build.classes}" debug="${javac.debug}"
               optimize="${javac.optimize}" target="${javac.version}"
               source="${javac.version}" deprecation="${javac.deprecation}"
               includeantruntime="false">
            <compilerarg line="${javac.args}"/>
            <classpath refid="compile.classpath"/>
        </javac>
    </target>

    <!-- Build the hcatalog client jar -->
    <target name="clientjar" depends="compile-src">
        <jar jarfile="${build.dir}/${ant.project.name}/${hcatalog.core.jar}"
             basedir="${build.classes}"/>
        <artifact:install file="${build.dir}/${ant.project.name}/${hcatalog.core.jar}">
            <artifact:pom file="${build.ivy.dir}/hcatalog-core-${hcatalog.version}.pom"/>
        </artifact:install>
    </target>

    <!--
    ================================================================================
    Build server side code, mainly listener.
    ================================================================================
    -->
    <target name="server-extensions" depends="compile-src">
        <jar jarfile="${build.dir}/${ant.project.name}/${ant.project.name}-server-extensions-${hcatalog.version}.jar"
             basedir="${build.classes}"
             includes="org/apache/hcatalog/listener/**,org/apache/hcatalog/metadata/**"/>
        <artifact:install
                file="${build.dir}/${ant.project.name}/${ant.project.name}-server-extensions-${hcatalog.version}.jar">
            <artifact:pom file="${build.ivy.dir}/hcatalog-server-extensions-${hcatalog.version}.pom"/>
        </artifact:install>
    </target>

    <!--
    ================================================================================
    Build both clientjar and server-extensions
    ================================================================================
    -->
    <target name="jar" depends="checkstyle,shims,clientjar,server-extensions,jar-storage-handlers">
        <ant target="jar" dir="hcatalog-pig-adapter" inheritAll="false"/>
        <ant target="jar" dir="webhcat/svr" inheritAll="false"/>
        <ant target="jar" dir="webhcat/java-client" inheritAll="false"/>

        <!-- Build hcatalog.jar, bundling the pig adapter. Our intention is to stop producing this
             fat jar after some migration period. -->
        <jar jarfile="${build.dir}/${ant.project.name}/${hcatalog.jar}">
            <zipfileset src="${build.dir}/${ant.project.name}/${hcatalog.core.jar}"/>
            <zipfileset src="hcatalog-pig-adapter/build/hcatalog-pig-adapter-${hcatalog.version}.jar"/>
        </jar>
    </target>

    <!--
    ================================================================================
    Build shims
    ================================================================================
    -->

    <target name="shims" depends="compile-src">
        <ant antfile="shims/build.xml" target="jar" inheritAll="false" useNativeBasedir="true"/>
    </target>

    <!--
    ================================================================================
    Build storage handlers
    ================================================================================
    -->

    <target name="jar-storage-handlers">
        <ant target="jar" dir="storage-handlers" inheritAll="false" useNativeBasedir="true"/>
    </target>

    <!--
    ================================================================================
    Test Section
    ================================================================================
    -->
    <!-- Build HCatalog test files -->
    <target name="compile-test" depends="jar">
        <javac
                encoding="${build.encoding}"
                srcdir="${test.src.dir}"
                excludes="${test.excludes}"
                includes="**/*.java"
                destdir="${test.classes}"
                debug="${javac.debug}"
                optimize="${javac.optimize}"
                target="${javac.version}"
                source="${javac.version}"
                deprecation="${javac.deprecation}"
                includeantruntime="false">
            <compilerarg line="${javac.args}"/>
            <classpath refid="test.class.path"/>
        </javac>
    </target>

    <target name="test" depends="compile-test" description="run unit tests">
        <_junit srcDir="${basedir}/src/test"/>
        <ant target="test" dir="hcatalog-pig-adapter" inheritAll="false"/>
        <ant target="test" dir="webhcat/svr" inheritAll="false"/>
        <ant target="test" dir="webhcat/java-client" inheritAll="false"/>
        <ant target="test" dir="storage-handlers" inheritAll="false" useNativeBasedir="true"/>
    </target>

    <target name="test-with-clover" depends="clover-init, compile-test"
            description="run unit tests and generate code coverage reports">
        <_junit srcDir="${basedir}/src/test"/>
        <ant target="_test-with-clover" dir="hcatalog-pig-adapter" inheritAll="false"/>
        <ant target="_test-with-clover" dir="webhcat/svr" inheritAll="false"/>
        <ant target="_test-with-clover" dir="webhcat/java-client" inheritAll="false"/>
        <!-- storage-handlers do not have coverage as they have not
             yet been migrated to the new build files. -->
        <ant target="test" dir="storage-handlers" inheritAll="false" useNativeBasedir="true"/>
    </target>


    <!--
    ================================================================================
    Findbugs Section
    ================================================================================
    -->

    <target name="findbugs" depends="init-findbugs,jar">
        <property name="findbugs.out.dir" value="${test.dir}/findbugs"/>
        <property name="findbugs.exclude.file" value="${test.src.dir}/findbugsExcludeFile.xml"/>
        <property name="findbugs.report.htmlfile"
                  value="${findbugs.out.dir}/hcat-findbugs-report.html"/>
        <property name="findbugs.report.xmlfile"
                  value="${findbugs.out.dir}/hcat-findbugs-report.xml"/>

        <_findbugs outputDir="${findbugs.out.dir}"
                   outputFile="${findbugs.report.xmlfile}"
                   excludeFilter="${findbugs.exclude.file}"
                   findbugsReportXmlFile="${findbugs.report.xmlfile}"
                   findbugsReportHtmlFile="${findbugs.report.htmlfile}"
                   sourceDir="${src.dir}"
                   jarDir="${build.dir}/${ant.project.name}"
                   classPathRef="compile.classpath"/>

        <ant target="findbugs" dir="hcatalog-pig-adapter" inheritAll="false"/>
        <ant target="findbugs" dir="webhcat/svr" inheritAll="false"/>
        <ant target="findbugs" dir="webhcat/java-client" inheritAll="false"/>
    </target>

    <!--
    ================================================================================
    Clean Section
    ================================================================================
    -->
    <!-- Clean up children -->
    <target name="clean" description="Cleanup all build artifacts">
        <echo message="${ant.project.name}"/>
        <delete dir="${build.dir}"/>
        <delete dir="${test.warehouse.dir}"/>
        <ant target="clean" dir="hcatalog-pig-adapter" inheritAll="false"/>
        <ant target="clean" dir="webhcat/svr" inheritAll="false"/>
        <ant target="clean" dir="webhcat/java-client" inheritAll="false"/>
        <ant target="clean" dir="storage-handlers" inheritAll="false" useNativeBasedir="true"/>
        <ant target="clean" dir="shims" inheritAll="false" useNativeBasedir="true"/>
    </target>

    <!--
    ================================================================================
    Docs Section
    ================================================================================
    -->
    <target name="docs" depends="forrest, javadoc"
            description="Generate Javadoc and Forrest documentation">
    </target>

    <target name="forrest" if="forrest.home"
            description="Generate forrest-based documentation. To use, specify -Dforrest.home=&lt;base of Apache Forrest installation&gt; on the command line.">
        <exec dir="${docs.src}" executable="${forrest.home}/bin/forrest"
              failonerror="true">
        </exec>
        <copy todir="${build.docs}/">
            <fileset dir="${docs.src}/build/site/"/>
        </copy>
    </target>

    <target name="javadoc" depends="jar" description="Generate Javadoc documentation">
        <mkdir dir="${build.javadoc}"/>
        <javadoc overview="${src.dir}/../docs/overview.html"
                 packagenames="org.apache.hcatalog.*"
                 destdir="${build.javadoc}"
                 author="true"
                 version="true"
                 use="true"
                 noqualifier="all"
                 windowtitle="HCatalog ${hcatalog.version} API"
                 doctitle="HCatalog ${hcatalog.version} API"
                 failonerror="true">
            <packageset dir="${src.dir}"/>
            <packageset dir="hcatalog-pig-adapter/src/main/java"/>
            <packageset dir="webhcat/svr/src/main/java"/>
            <packageset dir="webhcat/java-client/src/main/java"/>
            <classpath>
                <path refid="uber.classpath"/>
            </classpath>
            <group title="hcatalog" packages="org.apache.hcatalog.*"/>
        </javadoc>
    </target>

    <!--
    ===============================================================================
    Distribution Section
    ===============================================================================
    -->
    <target name="package-storage-handlers">
        <property name="handlers.dir" value="${dist.dir}/share/hcatalog/storage-handlers"/>
        <mkdir dir="${handlers.dir}"/>
        <ant target="package" dir="storage-handlers" inheritAll="false" useNativeBasedir="true">
            <property name="dist.handlers.dir" value="${handlers.dir}"/>
        </ant>
        <copy todir="${dist.dir}/share/${ant.project.name}/lib" includeEmptyDirs="false" flatten="true">
            <fileset dir="${dist.dir}/share/${ant.project.name}/storage-handlers">
                <include name="*/lib/*"/>
            </fileset>
        </copy>
    </target>

    <target name="package" depends="jar, docs" description="Create an HCatalog release">
        <mkdir dir="${dist.dir}"/>
        <mkdir dir="${dist.dir}/share/${ant.project.name}/lib"/>
        <mkdir dir="${dist.dir}/etc/hcatalog"/>
        <mkdir dir="${dist.dir}/bin"/>
        <mkdir dir="${dist.dir}/sbin"/>
        <mkdir dir="${dist.dir}/share/${ant.project.name}/scripts"/>
        <mkdir dir="${dist.dir}/share/${ant.project.name}/templates/conf"/>
        <mkdir dir="${dist.dir}/share/doc/${ant.project.name}"/>
        <mkdir dir="${dist.dir}/share/doc/${ant.project.name}/api"/>
        <mkdir dir="${dist.dir}/share/doc/${ant.project.name}/jdiff"/>
        <mkdir dir="${dist.dir}/share/doc/${ant.project.name}/license"/>

        <copy todir="${dist.dir}/share/${ant.project.name}" includeEmptyDirs="false">
            <fileset dir="${build.dir}/${ant.project.name}/">
                <include name="hcatalog-*.jar"/>
            </fileset>
            <fileset dir="hcatalog-pig-adapter/build">
                <include name="hcatalog-*.jar"/>
            </fileset>
            <fileset dir="webhcat/svr/build">
                <include name="webhcat-*.jar"/>
            </fileset>
            <fileset dir="webhcat/java-client/build">
                <include name="webhcat-java-client*.jar"/>
            </fileset>
        </copy>

        <copy todir="${dist.dir}/bin">
            <fileset dir="bin/">
                <include name="hcat"/>
            </fileset>

        </copy>
        <copy todir="${dist.dir}/libexec">
            <fileset dir="bin">
                <include name="hcat-config.sh"/>
            </fileset>
        </copy>

        <copy todir="${dist.dir}/sbin">
            <fileset dir="${package.dir}">
                <include name="*.sh"/>
            </fileset>
        </copy>

        <copy todir="${dist.dir}/etc/${ant.project.name}">
            <fileset dir="conf"/>
        </copy>

        <copy todir="${dist.dir}/share/${ant.project.name}/scripts">
            <fileset dir="scripts">
                <include name="*.sh"/>
            </fileset>
        </copy>

        <copy todir="${dist.dir}/share/${ant.project.name}/templates/conf">
            <fileset dir="src/packages/templates/conf">
                <include name="*"/>
            </fileset>
        </copy>

        <copy todir="${dist.dir}/sbin">
            <fileset dir="${package.dir}">
                <include name="*.sh"/>
            </fileset>
            <fileset dir="webhcat/svr/src/main/bin">
                <include name="*.sh"/>
            </fileset>
            <fileset dir="bin">
                <include name="hcat_server.sh"/>
            </fileset>
        </copy>

        <!-- Copy the licenses and such -->
        <copy todir="${dist.dir}/share/doc/${ant.project.name}">
            <fileset dir=".">
                <include name="*.txt"/>
            </fileset>
        </copy>

        <copy todir="${dist.dir}/share/doc/${ant.project.name}/license">
            <fileset dir="license"/>
        </copy>

        <chmod perm="ugo+x" type="file">
            <fileset dir="${dist.dir}/bin"/>
            <fileset dir="${dist.dir}/sbin"/>
        </chmod>
        <!--package storage-handlers -->
        <antcall target="package-storage-handlers"/>
    </target>

    <target name="releaseaudit" depends="ivy-retrieve" description="Release Audit activities">
        <java classname="${rat.reporting.classname}" fork="true">
            <classpath refid="releaseaudit.classpath"/>
            <arg value="${basedir}/src"/>
        </java>
    </target>

    <!-- ================================================================== -->
    <!-- Make release tarball                                               -->
    <!-- ================================================================== -->
    <target name="src-release" depends="clean" description="Source distribution">
        <mkdir dir="${build.dir}"/>
        <tar compression="gzip" longfile="gnu"
             destfile="${build.dir}/${ant.project.name}-src-${hcatalog.version}.tar.gz">
            <tarfileset dir="${basedir}" mode="644" prefix="${ant.project.name}-src-${hcatalog.version}">
                <include name="conf/**"/>
                <include name="hcatalog-pig-adapter/**"/>
                <include name="webhcat/**"/>
                <include name="ivy/**"/>
                <exclude name="ivy/*.jar"/>
                <include name="license/**"/>
                <include name="shims/**"/>
                <include name="src/**"/>
                <include name="storage-handlers/**"/>
                <include name="*.txt"/>
                <include name="*.xml"/>
                <include name="KEYS"/>
            </tarfileset>
            <tarfileset dir="" mode="755" prefix="${ant.project.name}-src-${hcatalog.version}">
                <include name="scripts/**"/>
                <include name="bin/**"/>
            </tarfileset>
        </tar>
    </target>

    <!-- ================================================================== -->
    <!-- Make release binary packages                                       -->
    <!-- ================================================================== -->
    <target name="tar" depends="package" description="Create release tarball">
        <tar compression="gzip" longfile="gnu" destfile="${build.dir}/${final.name}.tar.gz">
            <tarfileset dir="${build.dir}" mode="664">
                <include name="${final.name}/**"/>
                <exclude name="${final.name}/bin/*"/>
                <exclude name="${final.name}/sbin/*"/>
                <exclude name="${final.name}/share/hcatalog/scripts/*"/>
            </tarfileset>
            <tarfileset dir="${build.dir}" mode="755">
                <include name="${final.name}/bin/*"/>
                <include name="${final.name}/sbin/*"/>
                <include name="${final.name}/share/hcatalog/scripts/*"/>
            </tarfileset>
        </tar>
    </target>

    <!-- ================================================================== -->
    <!-- End to end tests                                                   -->
    <!-- ================================================================== -->

    <target name="test-e2e" description="run end-to-end tests">
        <ant dir="${test.e2e.dir}"/>
    </target>

    <target name="test-e2e-install" description="deploy end-to-end tests to existing cluster">
        <ant dir="${test.e2e.dir}" target="install"/>
    </target>

    <target name="test-e2e-deploy" description="deploy end-to-end tests to existing cluster">
        <ant dir="${test.e2e.dir}" target="deploy"/>
    </target>

    <import file="ant/checkstyle.xml"/>
    <import file="ant/dependencies.xml"/>
    <import file="ant/deploy.xml"/>
    <import file="ant/findbugs.xml"/>
    <import file="ant/test.xml"/>

</project>
