| <?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" > |
| |
| <!-- |
| ================================================================================ |
| Properties and Classpaths Section |
| ================================================================================ |
| --> |
| <!-- name and version --> |
| <property name="_version" value="0.2.1"/> |
| <property name="_vtype" value="-dev"/> |
| <property name="hcatalog.version" value="${_version}${_vtype}"/> |
| <property name="hcatalog.jar" value="${ant.project.name}-${hcatalog.version}.jar"/> |
| <property name="final.name" value="${ant.project.name}-${hcatalog.version}" /> |
| <property name="package.release" value="1"/> |
| <!-- hive properties --> |
| <property name="hive.root" value="${basedir}/hive/external"/> |
| |
| <!-- build properties --> |
| <property name="lib.dir" value="${basedir}/lib/" /> |
| <property name="src.dir" location="${basedir}/src/java"/> |
| <property name="package.dir" location="${basedir}/src/packages"/> |
| <property name="docs.src" value="${basedir}/src/docs"/> |
| <property name="build.dir" value="${basedir}/build"/> |
| <property name="artifacts.dir" value="${basedir}/artifacts"/> |
| <property name="build.classes" value="${build.dir}/classes" /> |
| <property name="build.docs" value="${build.dir}/docs" /> |
| <property name="build.javadoc" value="${build.docs}/api" /> |
| <property name="dist.dir" value="${build.dir}/${final.name}" /> |
| |
| <!-- javac properties --> |
| <property name="build.encoding" value="UTF8" /> |
| <property name="excludes" value=""/> |
| <property name="javac.debug" value="on" /> |
| <property name="javac.optimize" value="on" /> |
| <property name="javac.deprecation" value="off" /> |
| <property name="javac.version" value="1.6" /> |
| <property name="javac.args" value="" /> |
| |
| <!-- test properties --> |
| <property name="test.src.dir" value="${basedir}/src/test" /> |
| <property name="test.build.dir" value="${build.dir}/test" /> |
| <property name="test.build.classes" value="${test.build.dir}/classes" /> |
| <property name="test.log.dir" value="${test.build.dir}/logs" /> |
| <property name="test.timeout" value="2700000" /> |
| <property name="test.junit.output.format" value="plain" /> |
| <property name="test.all.file" value="${test.src.dir}/all-tests"/> |
| <property name="test.exclude.file" value="${test.src.dir}/excluded-tests"/> |
| <property name="test.output" value="no"/> |
| <property name="hive.conf.dir" value="${hive.root}/conf"/> |
| <property name="test.warehouse.dir" value="/tmp/hcat_junit_warehouse"/> |
| |
| <!-- ivy properteis 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="ivysettings.xml" location="${ivy.dir}/ivysettings.xml" /> |
| <property name="build.ivy.dir" location="${build.dir}/ivy" /> |
| <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"/> |
| |
| <!--this is the naming policy for artifacts we want pulled down--> |
| <property name="ivy.artifact.retrieve.pattern" value="${ant.project.name}/[artifact]-[revision](-[classifier]).[ext]"/> |
| |
| <!-- Classpaths for various builds --> |
| <path id="classpath"> |
| <fileset dir="${hive.root}" includes="testlibs/*.jar"/> |
| <fileset dir="${hive.root}" includes="testlibs/*.jar"/> |
| <fileset dir="${hive.root}/lib" includes="*.jar"/> |
| <fileset dir="${hive.root}/build/cli" includes="*.jar"/> |
| <fileset dir="${hive.root}/build/common" includes="*.jar"/> |
| <fileset dir="${hive.root}/build/serde" includes="*.jar"/> |
| <fileset dir="${hive.root}/build/metastore" includes="*.jar"/> |
| <fileset dir="${hive.root}/build/ql" includes="*.jar"/> |
| <fileset dir="${hive.root}/ql/lib" includes="antlr-3.0.1.jar"/> |
| <fileset dir="${hive.root}/build/hadoopcore/hadoop-0.20.3-CDH3-SNAPSHOT/" |
| includes="hadoop-core-0.20.3-CDH3-SNAPSHOT.jar"/> |
| <fileset dir="${ivy.lib.dir}" includes="*.jar"/> |
| <fileset dir="${hive.root}/build/ivy/lib/default" includes="jdo2-api-2.3-ec.jar"/> |
| <fileset dir="${hive.root}/build/ivy/lib/default" includes="datanucleus-enhancer-2.0.3.jar"/> |
| <fileset dir="${hive.root}/build/ivy/lib/default" includes="datanucleus-core-2.0.3.jar"/> |
| <fileset dir="${hive.root}/lib" includes="asm-3.1.jar"/> |
| </path> |
| |
| <path id="test.classpath"> |
| <pathelement location="${test.build.classes}" /> |
| <pathelement location="${build.classes}" /> |
| <pathelement location="conf"/> |
| <pathelement location="${hive.conf.dir}"/> |
| <!-- jars Hive depends on --> |
| <fileset dir="${hive.root}/build/ivy/lib/default/"> |
| <include name="**/*.jar" /> |
| </fileset> |
| <!-- jars Hadoop depends on --> |
| <fileset dir="${hive.root}/build/hadoopcore/hadoop-0.20.3-CDH3-SNAPSHOT/lib/" > |
| <include name="**/*.jar" /> |
| </fileset> |
| <!-- |
| <pathelement location="${test.src.data.dir}/conf"/> |
| <pathelement location="${hadoop.oldstyle-name.test.jar}"/> |
| <pathelement location="${hadoop.newstyle-name.test.jar}"/> |
| <pathelement location="${common.jar}"/> |
| <pathelement location="${jsp.test.jar}"/> |
| --> |
| <pathelement location="${hcatalog.jar}"/> |
| <!-- |
| <pathelement location="${hadoop.root}/lib/jsp-2.1/jsp-api-2.1.jar"/> |
| --> |
| <path refid="classpath"/> |
| <fileset dir="${hive.root}/build/hadoopcore/hadoop-0.20.3-CDH3-SNAPSHOT/" |
| includes="hadoop-test-0.20.3-CDH3-SNAPSHOT.jar"/> |
| </path> |
| |
| <!-- |
| ================================================================================ |
| Ivy Section |
| ================================================================================ |
| --> |
| <!-- Ivy goop stolen directly from Pig's build.xml --> |
| <target name="ivy-init-dirs"> |
| <mkdir dir="${build.ivy.dir}" /> |
| <mkdir dir="${build.ivy.lib.dir}" /> |
| <mkdir dir="${build.ivy.report.dir}" /> |
| </target> |
| |
| <target name="ivy-probe-antlib" > |
| <condition property="ivy.found"> |
| <typefound uri="antlib:org.apache.ivy.ant" name="cleancache"/> |
| </condition> |
| </target> |
| |
| <target name="ivy-download" description="To download ivy" unless="offline"> |
| <get src="${ivy_repo_url}" dest="${ivy.jar}" usetimestamp="true"/> |
| </target> |
| |
| <!-- |
| To avoid Ivy leaking things across big projects, always load Ivy in the same classloader. |
| Also note how we skip loading Ivy if it is already there, just to make sure all is well. |
| --> |
| <target name="ivy-init-antlib" depends="ivy-download,ivy-init-dirs,ivy-probe-antlib" unless="ivy.found"> |
| <typedef uri="antlib:org.apache.ivy.ant" onerror="fail" loaderRef="ivyLoader"> |
| <classpath> |
| <pathelement location="${ivy.jar}"/> |
| </classpath> |
| </typedef> |
| <fail> |
| <condition > |
| <not> |
| <typefound uri="antlib:org.apache.ivy.ant" name="cleancache"/> |
| </not> |
| </condition> |
| You need Apache Ivy 2.0 or later from http://ant.apache.org/ |
| It could not be loaded from ${ivy_repo_url} |
| </fail> |
| </target> |
| |
| <target name="ivy-init" depends="ivy-init-antlib" > |
| <!--Configure Ivy by reading in the settings file |
| If anyone has already read in a settings file into this settings ID, it gets priority |
| --> |
| <ivy:configure settingsid="${ant.project.name}.ivy.settings" |
| file="${ivysettings.xml}" override='false'/> |
| </target> |
| |
| <target name="ivy-compile" depends="ivy-init" description="Resolve, Retrieve Ivy-managed artifacts for compile configuration"> |
| <ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="common"/> |
| <ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" |
| pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" conf="common"/> |
| <ivy:cachepath pathid="compile.classpath" conf="common"/> |
| </target> |
| |
| <target name="ivy-package" depends="ivy-init" |
| description="Retrieve Ivy-managed artifacts for the package configurations"> |
| <ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="package"/> |
| <ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" |
| pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" conf="package"/> |
| <ivy:cachepath pathid="package.classpath" conf="package"/> |
| </target> |
| |
| <target name="ivy-releaseaudit" depends="ivy-init" description="Resolve, Retrieve Ivy-managed artifacts for releaseaudit configuration"> |
| <ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="releaseaudit"/> |
| <ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" |
| pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" conf="releaseaudit"/> |
| <ivy:cachepath pathid="releaseaudit.classpath" conf="releaseaudit"/> |
| </target> |
| |
| <target name="init" depends="ivy-compile, ivy-package" > |
| <mkdir dir="${dist.dir}" /> |
| <mkdir dir="${build.classes}" /> |
| <mkdir dir="${test.build.classes}" /> |
| </target> |
| |
| |
| <!-- Build the external hive code --> |
| <target name="hive.jar"> |
| <ant antfile="build.xml" dir="${hive.root}" target="package"/> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Main Build and Jar Section |
| ================================================================================ |
| --> |
| <!-- Build HCatalog src files --> |
| <target name="compile-src" depends="hive.jar,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="classpath" /> |
| </javac> |
| </target> |
| |
| <!-- Build the hcatalog client jar --> |
| <target name="clientjar" depends="compile-src"> |
| <jar jarfile="${build.dir}/${ant.project.name}/${hcatalog.jar}" basedir="${build.classes}"> |
| </jar> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Build server side code, mainly listener. |
| ================================================================================ |
| --> |
| <!-- Build the server side jar --> |
| <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/**"> |
| </jar> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Build both clientjar and server-extensions |
| ================================================================================ |
| --> |
| <target name="jar" depends="clientjar,server-extensions"/> |
| |
| <!-- |
| ================================================================================ |
| Test Section |
| ================================================================================ |
| --> |
| <!-- Build HCatalog test files --> |
| <target name="compile-test" depends="jar"> |
| <javac encoding="${build.encoding}" srcdir="${test.src.dir}" excludes="${excludes}" |
| includes="**/*.java" destdir="${test.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="test.classpath" /> |
| </javac> |
| </target> |
| |
| <!-- Run the unit tests --> |
| <target name="test" depends="compile-test"> |
| <sequential> |
| <!-- If anyone knows how to set umask inside ant please do so --> |
| <exec executable="bin/umaskcheck.sh" failonerror="true"/> |
| <delete dir="${test.log.dir}"/> |
| <delete dir="${test.warehouse.dir}"/> |
| <mkdir dir="${test.log.dir}"/> |
| <mkdir dir="${test.warehouse.dir}"/> |
| <junit showoutput="${test.output}" printsummary="yes" haltonfailure="no" |
| fork="yes" maxmemory="512m" dir="${basedir}" timeout="${test.timeout}" |
| errorProperty="tests.failed" failureProperty="tests.failed"> |
| <sysproperty key="hadoop.log.dir" value="${test.log.dir}"/> |
| <sysproperty key="hive.metastore.warehouse.dir" value="${test.warehouse.dir}"/> |
| <classpath> |
| <pathelement location="${test.build.classes}" /> |
| <pathelement location="." /> |
| <path refid="test.classpath"/> |
| </classpath> |
| <formatter type="${test.junit.output.format}" /> |
| <!-- If the user has not defined a particular test to run, run them all --> |
| <batchtest fork="yes" todir="${test.log.dir}" unless="testcase"> |
| <fileset dir="src/test"> |
| <patternset> |
| <includesfile name="${test.all.file}"/> |
| <excludesfile name="${test.exclude.file}"/> |
| </patternset> |
| </fileset> |
| </batchtest> |
| <!-- Run one test case. To use this define -Dtestcase=X on the command line --> |
| <batchtest fork="yes" todir="${test.log.dir}" if="testcase"> |
| <fileset dir="src/test" includes="**/${testcase}.java"/> |
| </batchtest> |
| |
| <assertions> |
| <enable /> |
| </assertions> |
| |
| </junit> |
| <fail if="tests.failed">Tests failed!</fail> |
| </sequential> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Clean Section |
| ================================================================================ |
| --> |
| <!-- Clean the external hive code --> |
| <target name="hive.clean"> |
| <ant antfile="${hive.root}/build.xml" dir="${hive.root}" target="clean"/> |
| </target> |
| |
| <!-- Clean up children --> |
| <target name="clean-builds" depends="hive.clean" description="Cleanup build"> |
| <delete dir="${build.dir}" /> |
| <delete dir="${test.warehouse.dir}"/> |
| </target> |
| |
| <!-- Clean up children --> |
| <target name="clean" depends="clean-builds" description="Cleanup all build artifacts"> |
| <delete dir="${artifacts.dir}" /> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Docs Section |
| ================================================================================ |
| --> |
| <target name="docs" depends="javadoc, forrest.check" description="Generate forrest-based documentation. To use, specify -Dforrest.home=<base of Apache Forrest installation> on the command line." if="forrest.home"> |
| <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="forrest.check" unless="forrest.home" > |
| <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=<base of Apache Forrest installation> to Ant on the command-line." /> |
| </target> |
| |
| <target name="javadoc" depends="jar" description="Create 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" windowtitle="HCatalog ${hcatalog.version} API" doctitle="HCatalog ${hcatalog.version} API"> |
| <packageset dir="${src.dir}" /> |
| <classpath> |
| <path refid="classpath" /> |
| </classpath> |
| <group title="hcatalog" packages="org.apache.hcatalog.*" /> |
| </javadoc> |
| </target> |
| |
| |
| <!-- |
| =============================================================================== |
| Distribution Section |
| =============================================================================== |
| --> |
| <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}/bin/ext" /> |
| <mkdir dir="${dist.dir}/bin/ext/util" /> |
| <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" /> |
| <mkdir dir="${dist.dir}/share/${ant.project.name}/hive" /> |
| <mkdir dir="${dist.dir}/share/${ant.project.name}/hive/external" /> |
| |
| <copy todir="${dist.dir}/share/${ant.project.name}" includeEmptyDirs="false"> |
| <fileset dir="${build.dir}/${ant.project.name}/"> |
| <include name="hcatalog-*.jar"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/share/${ant.project.name}/lib" includeEmptyDirs="false"> |
| <fileset dir="${lib.dir}"/> |
| |
| <fileset dir="hive/external/build/ivy/lib/default"> |
| <include name="jdo2-api-*.jar"/> |
| <include name="log4j-*.jar"/> |
| <include name="slf4j-*.jar"/> |
| <include name="datanucleus-connectionpool-*.jar"/> |
| <include name="datanucleus-core-*.jar"/> |
| <include name="datanucleus-rdbms-*.jar"/> |
| <include name="datanucleus-enhancer-*.jar"/> |
| <include name="commons-cli-*.jar"/> |
| <include name="commons-pool-*.jar"/> |
| <include name="commons-dbcp-*.jar"/> |
| <include name="guava-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/build/shims"> |
| <include name="hive-shims-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/build/common"> |
| <include name="hive-common-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/build/cli"> |
| <include name="hive-cli-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/build/service"> |
| <include name="hive-service-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/build/serde"> |
| <include name="hive-serde-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/build/ql"> |
| <include name="hive-exec-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/build/metastore"> |
| <include name="hive-metastore-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/lib"> |
| <include name="commons-collections-*.jar"/> |
| <include name="commons-logging-*.jar"/> |
| <include name="commons-logging-api-*.jar"/> |
| <include name="commons-lang-*.jar"/> |
| <include name="asm-api-*.jar"/> |
| <include name="derby-*.jar"/> |
| <include name="thrift-fb303-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/cli/lib"> |
| <include name="jline-*.jar"/> |
| </fileset> |
| |
| <fileset dir="hive/external/ql/lib"> |
| <include name="antlr-runtime-*.jar"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/bin"> |
| <fileset dir="bin/"> |
| <include name="hcat"/> |
| </fileset> |
| <fileset file="hive/external/bin/hive"/> |
| <fileset dir="bin"> |
| <include name="hive-config.sh"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/libexec"> |
| <fileset dir="bin"> |
| <include name="hcat-config.sh"/> |
| </fileset> |
| <!-- fileset file="hive/external/bin/hive-config.sh" /--> |
| </copy> |
| |
| <copy todir="${dist.dir}/sbin"> |
| <fileset dir="${package.dir}"> |
| <include name="*.sh"/> |
| </fileset> |
| <fileset dir="bin"> |
| <include name="hcat_server.sh"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/bin/ext"> |
| <fileset file="hive/external/bin/ext/metastore.sh"/> |
| <fileset file="hive/external/bin/ext/cli.sh"/> |
| <fileset file="hive/external/bin/ext/help.sh"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/bin/ext/util"> |
| <fileset file="hive/external/bin/ext/util/execHiveCmd.sh"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/share/doc/${ant.project.name}"> |
| <fileset dir="${build.docs}" /> |
| </copy> |
| |
| <copy todir="${dist.dir}/etc/${ant.project.name}"> |
| <fileset dir="conf" /> |
| <fileset file="hive/external/conf/hive-default.xml"/> |
| </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}/share/${ant.project.name}/scripts"> |
| <fileset file="hive/external/metastore/scripts/upgrade/mysql/hive-schema-0.7.0.mysql.sql"/> |
| <fileset dir="scripts"> |
| <include name="*.sh"/> |
| </fileset> |
| </copy> |
| |
| <!-- Copy source files for reference --> |
| <copy todir="${dist.dir}/src/java" includeEmptyDirs="true"> |
| <fileset dir="${src.dir}" /> |
| </copy> |
| |
| <copy todir="${dist.dir}/src/test" includeEmptyDirs="true"> |
| <fileset dir="${test.src.dir}" /> |
| </copy> |
| |
| <copy todir="${dist.dir}/src/docs" includeEmptyDirs="true"> |
| <fileset dir="${docs.src}" /> |
| </copy> |
| |
| <copy todir="${dist.dir}/src/packages" includeEmptyDirs="true"> |
| <fileset dir="${package.dir}" /> |
| </copy> |
| |
| <copy todir="${dist.dir}/share/${ant.project.name}/hive/external" includeEmptyDirs="true"> |
| <fileset dir="${hive.root}"> |
| <exclude name="build/**"/> |
| </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> |
| |
| </target> |
| |
| <target name="releaseaudit" depends="ivy-releaseaudit, package" description="Release Audit activities"> |
| <java classname="${rat.reporting.classname}" fork="true"> |
| <classpath refid="releaseaudit.classpath"/> |
| <arg value="${build.dir}/${final.name}"/> |
| </java> |
| </target> |
| |
| <target name="build-artifacts" depends="jar,docs" description="Build hcatalog artifacts and copy them"> |
| <mkdir dir="${artifacts.dir}"/> |
| <copy todir="${artifacts.dir}"> |
| <fileset dir="build/hcatalog"> |
| <include name="*.jar"/> |
| </fileset> |
| </copy> |
| <mkdir dir="${artifacts.dir}/docs"/> |
| <copy todir="${artifacts.dir}/docs"> |
| <fileset dir="build/docs" /> |
| </copy> |
| </target> |
| |
| <target name="build-artifacts-and-clean" depends="build-artifacts,clean-builds" description="First build artifacts, then clean up"/> |
| |
| |
| <!-- ================================================================== --> |
| <!-- Make release tarball --> |
| <!-- ================================================================== --> |
| <target name="src-release" depends="build-artifacts-and-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="hive/**"/> |
| <include name="ivy/**"/> |
| <exclude name="ivy/*.jar"/> |
| <include name="lib/**"/> |
| <include name="license/**"/> |
| <include name="src/**"/> |
| <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> |
| <tarfileset dir="" mode="644" prefix="${ant.project.name}-src-${hcatalog.version}"> |
| <include name="artifacts/**"/> |
| </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> |
| |
| <target name="rpm" depends="tar" description="Create rpm package"> |
| <mkdir dir="${package.buildroot}/BUILD" /> |
| <mkdir dir="${package.buildroot}/RPMS" /> |
| <mkdir dir="${package.buildroot}/SRPMS" /> |
| <mkdir dir="${package.buildroot}/SOURCES" /> |
| <mkdir dir="${package.buildroot}/SPECS" /> |
| <copy todir="${package.buildroot}/SOURCES"> |
| <fileset dir="${build.dir}"> |
| <include name="${final.name}.tar.gz" /> |
| </fileset> |
| </copy> |
| <copy file="${package.dir}/rpm/spec/hcatalog.spec" todir="${package.buildroot}/SPECS"> |
| <filterchain> |
| <replacetokens> |
| <token key="final.name" value="${final.name}" /> |
| <token key="version" value="${hcatalog.version}" /> |
| <token key="package.release" value="${package.release}" /> |
| <token key="package.build.dir" value="${package.build.dir}" /> |
| <token key="package.prefix" value="${package.prefix}" /> |
| <token key="package.conf.dir" value="${package.conf.dir}" /> |
| <token key="package.log.dir" value="${package.log.dir}" /> |
| <token key="package.pid.dir" value="${package.pid.dir}" /> |
| <token key="package.var.dir" value="${package.var.dir}" /> |
| </replacetokens> |
| </filterchain> |
| </copy> |
| <rpm specFile="hcatalog.spec" command="-bb --target ${os.arch}" topDir="${package.buildroot}" cleanBuildDir="true" failOnError="true"/> |
| <copy todir="${build.dir}/" flatten="true"> |
| <fileset dir="${package.buildroot}/RPMS"> |
| <include name="**/*.rpm" /> |
| </fileset> |
| </copy> |
| <delete dir="${package.buildroot}" quiet="true" verbose="false"/> |
| </target> |
| |
| <target name="deb" depends="tar" description="Create debian package"> |
| <taskdef name="deb" classname="org.vafer.jdeb.ant.DebAntTask"> |
| <classpath refid="package.classpath" /> |
| </taskdef> |
| <mkdir dir="${package.build.dir}/hcatalog.control" /> |
| <mkdir dir="${package.build.dir}/hcatalog-server.control" /> |
| <mkdir dir="${package.buildroot}/${package.prefix}" /> |
| <copy todir="${package.buildroot}/${package.prefix}"> |
| <fileset dir="${build.dir}/${final.name}"> |
| <include name="**" /> |
| </fileset> |
| </copy> |
| <copy todir="${package.build.dir}/hcatalog.control"> |
| <fileset dir="${package.dir}/deb/hcatalog.control"> |
| <exclude name="control" /> |
| <exclude name="server.control" /> |
| </fileset> |
| </copy> |
| <copy file="${package.dir}/deb/hcatalog.control/control" todir="${package.build.dir}/hcatalog.control"> |
| <filterchain> |
| <replacetokens> |
| <token key="final.name" value="${final.name}" /> |
| <token key="version" value="${hcatalog.version}" /> |
| <token key="package.release" value="${package.release}" /> |
| <token key="package.build.dir" value="${package.build.dir}" /> |
| <token key="package.prefix" value="${package.prefix}" /> |
| <token key="package.conf.dir" value="${package.conf.dir}" /> |
| <token key="package.log.dir" value="${package.log.dir}" /> |
| <token key="package.pid.dir" value="${package.pid.dir}" /> |
| </replacetokens> |
| </filterchain> |
| </copy> |
| <copy file="${package.dir}/deb/hcatalog.control/server.control" tofile="${package.build.dir}/hcatalog-server.control/control"> |
| <filterchain> |
| <replacetokens> |
| <token key="final.name" value="${final.name}" /> |
| <token key="version" value="${_version}" /> |
| <token key="package.release" value="${package.release}" /> |
| <token key="package.build.dir" value="${package.build.dir}" /> |
| <token key="package.prefix" value="${package.prefix}" /> |
| <token key="package.conf.dir" value="${package.conf.dir}" /> |
| <token key="package.log.dir" value="${package.log.dir}" /> |
| <token key="package.pid.dir" value="${package.pid.dir}" /> |
| </replacetokens> |
| </filterchain> |
| </copy> |
| <deb destfile="${package.buildroot}/${ant.project.name}_${_version}-${package.release}_${os.arch}.deb" control="${package.build.dir}/hcatalog.control"> |
| <tarfileset dir="${build.dir}/${final.name}" filemode="644" prefix="${package.prefix}"> |
| <exclude name="bin" /> |
| <exclude name="etc" /> |
| <exclude name="etc/**" /> |
| <exclude name="sbin" /> |
| <exclude name="sbin/**" /> |
| <exclude name="share/hcatalog/hcatalog-server*" /> |
| <include name="**" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}/${final.name}/etc/hcatalog" filemode="644" prefix="${package.conf.dir}"> |
| <include name="**" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}/${final.name}/bin" filemode="755" prefix="${package.prefix}/bin"> |
| <include name="**" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}/${final.name}/sbin" filemode="755" prefix="${package.prefix}/sbin"> |
| <include name="update-hcatalog-env.sh" /> |
| </tarfileset> |
| </deb> |
| <copy todir="${build.dir}/" flatten="true"> |
| <fileset dir="${package.buildroot}"> |
| <include name="**/hcatalog*.deb" /> |
| </fileset> |
| </copy> |
| <deb destfile="${package.buildroot}/${ant.project.name}-server_${_version}-${package.release}_${os.arch}.deb" control="${package.build.dir}/hcatalog-server.control"> |
| <tarfileset dir="${build.dir}/${final.name}" filemode="644" prefix="${package.prefix}"> |
| <include name="share/hcatalog/hcatalog-server*" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}/${final.name}/sbin" filemode="755" prefix="${package.prefix}/sbin"> |
| <include name="hcat_server.sh" /> |
| </tarfileset> |
| <tarfileset dir="${basedir}/src/packages/deb/init.d" filemode="755" prefix="/etc/init.d"> |
| <include name="**" /> |
| </tarfileset> |
| |
| </deb> |
| <copy todir="${build.dir}/" flatten="true"> |
| <fileset dir="${package.buildroot}"> |
| <include name="**/hcatalog*.deb" /> |
| </fileset> |
| </copy> |
| <delete dir="${package.buildroot}" quiet="true" verbose="false"/> |
| </target> |
| </project> |