blob: 10ab4d64e59e3bfaf64b1d9b867991257c17f8d4 [file] [log] [blame]
<?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="hive" default="deploy" >
<property name="hive.root" location="${basedir}"/>
<property file="${hive.root}/build.properties"/>
<property file="${user.home}/build.properties" />
<property file="${basedir}/build.properties" />
<property name="target.dir" location="${build.dir.hive}/dist"/>
<property name="target.lib.dir" location="${target.dir}/lib"/>
<property name="target.conf.dir" location="${target.dir}/conf"/>
<property name="target.bin.dir" location="${target.dir}/bin"/>
<property name="target.example.dir" location="${target.dir}/examples"/>
<property name="ql.test.query.dir" location="${basedir}/ql/src/test/queries"/>
<property name="test.data.dir" location="${basedir}/data"/>
<property name="test.build.dir" value="${build.dir.hive}/test"/>
<property name="build.docs" value="${target.dir}/docs"/>
<property name="build.javadoc" value="${build.docs}/api"/>
<property name="docs.src" value="${hive.root}/docs"/>
<property name="changes.src" value="${docs.src}/changes"/>
<property name="images.src" value="${docs.src}/images"/>
<property name="javadoc.link.java"
value="http://java.sun.com/javase/6/docs/api/"/>
<property name="final.name" value="${name}-${version}-hadoop-${hadoop.version}"/>
<property name="dev.final.name" value="${final.name}-dev"/>
<property name="bin.final.name" value="${final.name}-bin"/>
<!-- ====================================================== -->
<!-- Macro definitions -->
<!-- ====================================================== -->
<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>
<!-- the normal classpath -->
<path id="common-classpath">
<pathelement location="${hadoop.jar}"/>
<pathelement location="${build.dir.hive}/classes"/>
<fileset dir="${hive.root}" includes="hive_*.jar"/>
<fileset dir="${hive.root}/lib" includes="*.jar"/>
<fileset dir="${hive.root}/ql/lib" includes="*.jar"/>
</path>
<path id="classpath">
<pathelement location="${build.dir.hive}/common/classes"/>
<pathelement location="${build.dir.hive}/serde/classes"/>
<pathelement location="${build.dir.hive}/metastore/classes"/>
<pathelement location="${build.dir.hive}/ql/classes"/>
<pathelement location="${build.dir.hive}/cli/classes"/>
<fileset dir="${hive.root}/data" includes="files/*.jar"/>
<fileset dir="${hive.root}/ql" includes="lib/*.jar"/>
<fileset dir="${hive.root}/cli" includes="lib/*.jar"/>
<fileset dir="${hive.root}/service" includes="lib/*.jar"/>
<path refid="common-classpath"/>
</path>
<!-- ====================================================== -->
<!-- Initialize for running junit tests -->
<!-- ====================================================== -->
<target name="init">
<subant target="init">
<fileset dir="." includes="*/build.xml"/>
</subant>
</target>
<target name="test-init">
<subant target="test-init">
<fileset dir="." includes="*/build.xml"/>
</subant>
</target>
<!-- ====================================================== -->
<!-- Compile all the contrib jars. -->
<!-- ====================================================== -->
<target name="compile">
<subant target="compile">
<fileset dir="." includes="common/build.xml"/>
</subant>
<subant target="compile">
<fileset dir="." includes="serde/build.xml"/>
</subant>
<subant target="compile">
<fileset dir="." includes="metastore/build.xml"/>
</subant>
<subant target="compile">
<fileset dir="." includes="ql/build.xml"/>
</subant>
<subant target="compile">
<fileset dir="." includes="cli/build.xml"/>
</subant>
<subant target="compile">
<fileset dir="." includes="service/build.xml"/>
</subant>
<subant target="compile">
<fileset dir="." includes="jdbc/build.xml"/>
</subant>
<subant target="compile">
<fileset dir="." includes="hwi/build.xml"/>
</subant>
</target>
<!-- ====================================================== -->
<!-- Build & deploy all the contrib jars. -->
<!-- ====================================================== -->
<target name="deploy">
<subant target="deploy">
<fileset dir="." includes="common/build.xml"/>
</subant>
<subant target="deploy">
<fileset dir="." includes="serde/build.xml"/>
</subant>
<subant target="deploy">
<fileset dir="." includes="metastore/build.xml"/>
</subant>
<subant target="deploy">
<fileset dir="." includes="ql/build.xml"/>
</subant>
<subant target="deploy">
<fileset dir="." includes="cli/build.xml"/>
</subant>
<subant target="deploy">
<fileset dir="." includes="service/build.xml"/>
</subant>
<subant target="deploy">
<fileset dir="." includes="jdbc/build.xml"/>
</subant>
<subant target="deploy">
<fileset dir="." includes="hwi/build.xml"/>
</subant>
</target>
<!-- ====================================================== -->
<!-- Test everything. -->
<!-- ====================================================== -->
<target name="test" depends="clean-test,deploy">
<subant target="test">
<fileset dir="." includes="*/build.xml" excludes="ant/build.xml"/>
</subant>
</target>
<!-- create an html report from junit output files -->
<target name="testreport">
<junitreport todir="${test.build.dir}">
<fileset dir="${build.dir.hive}">
<include name="**/TEST-*.xml"/>
</fileset>
<report format="noframes" todir="${test.build.dir}"/>
</junitreport>
</target>
<target name="clean-test">
<subant target="clean-test">
<fileset dir="." includes="*/build.xml" excludes="ant/build.xml"/>
</subant>
<delete dir="${build.dir.hive}/test"/>
</target>
<!-- ====================================================== -->
<!-- Clean everything. -->
<!-- ====================================================== -->
<target name="clean">
<subant target="clean">
<fileset dir="." includes="*/build.xml"/>
</subant>
<delete dir="${target.dir}"/>
<delete dir="${build.dir.hive}"/>
</target>
<!-- ====================================================== -->
<!-- Generate some of the test data. -->
<!-- ====================================================== -->
<target name="gen-testdata" depends="deploy">
<subant target="gen-testdata">
<fileset dir="." includes="serde/build.xml"/>
</subant>
</target>
<target name="package" depends="deploy">
<echo message="Deploying Hive jars to ${target.dir}"/>
<mkdir dir="${target.dir}"/>
<mkdir dir="${target.lib.dir}"/>
<mkdir dir="${target.conf.dir}"/>
<mkdir dir="${target.bin.dir}"/>
<mkdir dir="${target.example.dir}"/>
<mkdir dir="${target.example.dir}/files"/>
<mkdir dir="${target.example.dir}/queries"/>
<mkdir dir="${target.lib.dir}/py"/>
<mkdir dir="${target.lib.dir}/php"/>
<copy file="${hive.root}/bin/hive" todir="${target.bin.dir}"/>
<copy todir="${target.bin.dir}/ext">
<fileset dir="${hive.root}/bin/ext" excludes="**/.svn"/>
</copy>
<copy file="${hive.root}/bin/hive-config.sh" todir="${target.bin.dir}"/>
<copy file="${basedir}/conf/hive-default.xml" todir="${target.conf.dir}"/>
<copy file="${basedir}/conf/hive-log4j.properties" todir="${target.conf.dir}"/>
<copy file="${basedir}/conf/jpox.properties" todir="${target.conf.dir}"/>
<copy todir="${target.lib.dir}/php">
<fileset dir="${hive.root}/serde/src/gen-php" excludes="**/.svn"/>
<fileset dir="${hive.root}/metastore/src/gen-php" excludes="**/.svn"/>
</copy>
<!-- Create the python thrift package -->
<copy todir="${target.lib.dir}/py">
<fileset dir="${hive.root}/service/lib/py" excludes="**/.svn"/>
</copy>
<copy todir="${target.lib.dir}/py/hive_serde">
<fileset dir="${hive.root}/serde/src/gen-py/org_apache_hadoop_hive_serde" excludes="**/.svn"/>
</copy>
<copy todir="${target.lib.dir}/py/hive_metastore">
<fileset dir="${hive.root}/metastore/src/gen-py/hive_metastore" excludes="**/.svn"/>
</copy>
<copy todir="${target.lib.dir}/py/hive_service">
<fileset dir="${hive.root}/service/src/gen-py/hive_service" excludes="**/.svn"/>
</copy>
<copy todir="${target.lib.dir}" preservelastmodified="true" flatten="true">
<fileset dir="${hive.root}" includes="*/*.jar, */*/*.jar" excludes="**/antlr-2*,**/antlr-3*"/>
<fileset file="${build.dir.hive}/cli/hive_cli.jar"/>
<fileset file="${build.dir.hive}/common/hive_common.jar"/>
<fileset file="${build.dir.hive}/ql/hive_exec.jar"/>
<fileset file="${build.dir.hive}/metastore/hive_metastore.jar"/>
<fileset file="${build.dir.hive}/hive_hwi.war"/>
</copy>
<copy todir="${target.example.dir}/files" preservelastmodified="true" flatten="true">
<fileset dir="${test.data.dir}/files" includes="*.*" excludes="**/.svn"/>
</copy>
<copy file="${basedir}/README.txt" todir="${target.dir}"/>
<copy todir="${target.example.dir}/queries" preservelastmodified="true" flatten="true">
<fileset dir="${ql.test.query.dir}/positive" includes="*.q" excludes="**/.svn"/>
</copy>
<chmod perm="ugo+x" type="file" parallel="false">
<fileset dir="${target.bin.dir}"/>
</chmod>
</target>
<!-- ====================================================== -->
<!-- Generate files for eclipse. -->
<!-- ====================================================== -->
<target name="eclipse-files" depends="init"
description="Generate files for Eclipse">
<condition property="hadoop.version" value="0.19">
<not>
<isset property="hadoop.version"/>
</not>
</condition>
<echo message="Using hadoop version ${hadoop.version}"/>
<pathconvert property="eclipse.project">
<path path="${basedir}"/>
<regexpmapper from="^.*/([^/]+)$$" to="\1" handledirsep="yes"/>
</pathconvert>
<copy todir="." overwrite="true">
<fileset dir="eclipse-templates">
<exclude name="**/README.txt"/>
<exclude name="**/.svn"/>
</fileset>
<filterset>
<filter token="PROJECT" value="${eclipse.project}"/>
<filter token="HADOOPVER" value="${hadoop.version}"/>
</filterset>
</copy>
<move todir="." includeemptydirs="false">
<fileset dir=".">
<include name="*.launchtemplate"/>
</fileset>
<mapper type="glob" from="*.launchtemplate" to="*.launch"/>
</move>
</target>
<target name="clean-eclipse-files"
description="Delete files for Eclipse">
<delete includeemptydirs="true">
<fileset dir="." includes=".classpath .project .settings/ .externalToolBuilders/"/>
</delete>
</target>
<!-- ================================================================== -->
<!-- Documentation -->
<!-- ================================================================== -->
<target name="docs">
<antcall target="changes-to-html"/>
</target>
<target name="changes-to-html" description="Convert CHANGES.txt into an html file">
<mkdir dir="${build.docs}"/>
<exec executable="perl" input="CHANGES.txt"
output="${build.docs}/changes.html" failonerror="true">
<arg value="${changes.src}/changes2html.pl"/>
</exec>
<copy todir="${build.docs}">
<fileset dir="${changes.src}" includes="*.css"/>
</copy>
<copy todir="${build.docs}/images">
<fileset dir="${images.src}" includes="*.jpg"/>
</copy>
</target>
<target name="javadoc" depends="package" description="Generate javadoc">
<mkdir dir="${build.javadoc}"/>
<javadoc
packagenames="org.apache.hadoop.hive.*"
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="ant/src"/>
<packageset dir="hwi/src/java"/>
<packageset dir="hwi/src/test"/>
<packageset dir="common/src/java"/>
<packageset dir="service/src/java"/>
<packageset dir="service/src/test"/>
<packageset dir="service/src/gen-javabean"/>
<packageset dir="serde/src/java"/>
<packageset dir="serde/src/test"/>
<packageset dir="serde/src/gen-java"/>
<packageset dir="jdbc/src/java"/>
<packageset dir="jdbc/src/test"/>
<packageset dir="metastore/src/java"/>
<packageset dir="metastore/src/test"/>
<packageset dir="metastore/src/gen-javabean"/>
<packageset dir="metastore/src/model"/>
<packageset dir="cli/src/java"/>
<packageset dir="${build.dir.hive}/ql/java"/>
<packageset dir="${build.dir.hive}/ql/gen-java"/>
<link href="${javadoc.link.java}"/>
<classpath >
<fileset dir="${hadoop.root}/lib">
<include name="**/*.jar" />
<exclude name="**/excluded/" />
</fileset>
<path refid="classpath" />
<pathelement path="${java.class.path}"/>
</classpath>
<group title="Hive" packages="org.apache.*"/>
</javadoc>
</target>
<!-- ================================================================== -->
<!-- Make release tarball -->
<!-- ================================================================== -->
<target name="tar" depends="package, docs, javadoc" description="Make release tarball">
<macro_tar param.destfile="${build.dir.hive}/${dev.final.name}.tar.gz">
<param.listofitems>
<tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${dev.final.name}">
<include name="bin/**"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${dev.final.name}">
<include name="lib/py/**/*-remote"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="664" prefix="${dev.final.name}">
<include name="**"/>
<exclude name="bin/**"/>
<exclude name="lib/py/**/*-remote"/>
</tarfileset>
<tarfileset dir="${hive.root}" mode="664" prefix="${dev.final.name}/src">
<exclude name="build/**" />
<exclude name="bin/**" />
<exclude name="**/py/**/*-remote" />
<exclude name="data/scripts/**" />
<exclude name="metastore/scripts/**" />
<exclude name="ql/src/test/scripts/**" />
</tarfileset>
<tarfileset dir="${hive.root}" mode="755" prefix="${dev.final.name}/src">
<include name="bin/**" />
<include name="**/py/**/*-remote" />
<include name="data/scripts/**" />
<include name="metastore/scripts/**" />
<include name="ql/src/test/scripts/**" />
</tarfileset>
</param.listofitems>
</macro_tar>
</target>
<target name="binary" depends="package, docs, javadoc" description="Make tarball without source and documentation">
<macro_tar param.destfile="${build.dir.hive}/${bin.final.name}.tar.gz">
<param.listofitems>
<tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${bin.final.name}">
<include name="bin/**"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${bin.final.name}">
<include name="lib/py/**/*-remote"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="664" prefix="${bin.final.name}">
<include name="**"/>
<exclude name="bin/**"/>
<exclude name="docs/**"/>
<exclude name="lib/py/**/*-remote"/>
</tarfileset>
</param.listofitems>
</macro_tar>
</target>
</project>