Author: olga Date: Mon Feb 25 11:14:53 2008 New Revision: 630961 URL: http://svn.apache.org/viewvc?rev=630961&view=rev Log: PIG-68: build.xml improvements
Modified: incubator/pig/trunk/CHANGES.txt incubator/pig/trunk/build.xml Modified: incubator/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/incubator/pig/trunk/CHANGES.txt?rev=630961&r1=630960&r2=630961&view=diff ============================================================================== --- incubator/pig/trunk/CHANGES.txt (original) +++ incubator/pig/trunk/CHANGES.txt Mon Feb 25 11:14:53 2008 @@ -125,3 +125,5 @@ PIG-72: Move unit tests to use MiniDFS and MiniMR so that unit tests can be run w/o access to a hadoop cluster. (xuzh via gates) + + PIG-68: improvements to build.xml (joa23 via olgan) Modified: incubator/pig/trunk/build.xml URL: http://svn.apache.org/viewvc/incubator/pig/trunk/build.xml?rev=630961&r1=630960&r2=630961&view=diff ============================================================================== --- incubator/pig/trunk/build.xml (original) +++ incubator/pig/trunk/build.xml Mon Feb 25 11:14:53 2008 @@ -1,154 +1,283 @@ <project name="Pig" default="jar"> - <!-- properties --> - <property name="dist.dir" value="${basedir}/dist" /> - <property name="lib.dir" value="${basedir}/lib" /> - <property name="src.dir" value="${basedir}/src" /> - <property name="doc.dir" value="${basedir}/doc" /> - <property name="test.reports.dir" value="${basedir}/test/reports" /> + <!-- 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}/build.properties" /> + <property file="${basedir}/build.properties" /> + + <!-- name and version properties --> + <property name="name" value="pig" /> + <property name="Name" value="Pig" /> + <property name="version" value="0.1.0-dev" /> + <property name="final.name" value="${name}-${version}" /> + + <!-- source properties --> + <property name="lib.dir" value="${basedir}/lib/" /> + <property name="src.dir" value="${basedir}/src/" /> + <property name="src.lib.dir" value="${basedir}/lib-src/" /> + <property name="src.gen.dir" value="${basedir}/src-gen/" /> + + <!-- javacc properties --> + <property name="src.gen.query.parser.dir" value="${src.gen.dir}/org/apache/pig/impl/logicalLayer/parser" /> + <property name="src.gen.script.parser.dir" value="${src.gen.dir}/org/apache/pig/tools/pigscript/parser" /> + + <property name="javacc.home" value="${basedir}/lib" /> + + <!-- javac properties --> + <property name="javac.debug" value="on" /> + <property name="javac.optimize" value="on" /> + <property name="javac.deprecation" value="off" /> + <property name="javac.version" value="1.5" /> + <property name="javac.args" value="" /> + <!-- TODO we should use warning... <property name="javac.args.warnings" value="-Xlint:unchecked" /> --> + <property name="javac.args.warnings" value="" /> + + <!-- build properties --> + <property name="build.dir" value="${basedir}/build" /> + <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}" /> + <property name="build.encoding" value="ISO-8859-1" /> + <!-- TODO with only one version of hadoop in the lib folder we do not need that anymore --> + <property name="hadoop.jarfile" value="hadoop15.jar" /> + + <!-- jar names. TODO we might want to use the svn reversion name in the name in case it is a dev version --> + <property name="output.jarfile" value="${build.dir}/${final.name}.jar" /> + <property name="output.jarfile.core" value="${build.dir}/${final.name}-core.jar" /> + + <!-- test properties --> + <property name="test.src.dir" value="${basedir}/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="900000" /> + <property name="test.junit.output.format" value="plain" /> + + <!-- test configuration, use ${user.home}/build.properties to configure values --> + <property name="ssh.gateway" value="" /> + <property name="hod.server" value="" /> + <property name="junit.hadoop.conf" value="" /> <property name="test.log.dir" value="${basedir}/test/logs"/> - <property name="shock.src.dir" value="${basedir}/lib-src/shock" /> - <property name="bzip2.src.dir" value="${basedir}/lib-src/bzip2" /> - <property name="test.src.dir" value="${basedir}/test" /> - <property name="output.jarfile" value="pig.jar" /> - <property name="hadoop.jarfile" value="hadoop15.jar"/> - <property name="ssh.gateway" value=""/> - <property name="hod.server" value=""/> - <property name="hod.command" value=""/> - <property name="hod.param" value=""/> - <property name="test.junit.output.format" value="plain"/> - <property name="junit.hadoop.conf" value="${user.home}/pigtest/conf/"/> - - <!-- setup the classpath --> - <path id="classpath"> - <fileset file="${lib.dir}/${hadoop.jarfile}" /> - <fileset dir="${lib.dir}" /> - </path> - - <target name="clean"> - <delete dir="${dist.dir}" /> - <delete dir="${doc.dir}" /> - <delete dir="${test.reports.dir}" /> - <delete file="${output.jarfile}" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParser.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/JJTQueryParserState.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/Node.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/ParseException.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParser.jj" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParserConstants.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParserTokenManager.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParserTreeConstants.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/SimpleCharStream.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/SimpleNode.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/Token.java" /> - <delete file="${src.dir}/org/apache/pig/impl/logicalLayer/parser/TokenMgrError.java" /> - <delete file="${src.dir}/org/apache/pig/tools/pigscript/parser/PigScriptParser.java" /> - <delete file="${src.dir}/org/apache/pig/tools/pigscript/parser/PigScriptParserConstants.java" /> - <delete file="${src.dir}/org/apache/pig/tools/pigscript/parser/PigScriptParserTokenManager.java" /> - <delete file="${src.dir}/org/apache/pig/tools/pigscript/parser/ParseException.java" /> - <delete file="${src.dir}/org/apache/pig/tools/pigscript/parser/SimpleCharStream.java" /> - <delete file="${src.dir}/org/apache/pig/tools/pigscript/parser/Token.java" /> - <delete file="${src.dir}/org/apache/pig/tools/pigscript/parser/TokenMgrError.java" /> - </target> - - <target name="depend"> - <mkdir dir="depend"/> - <echo>*** Resolving dependencies ***</echo> - <depend srcdir="src;lib-src/shock;lib-src/bzip2" destdir="dist" cache="depend"/> - </target> - - <target name="compile" depends="depend, cc-compile, lib-compile"> - <mkdir dir="${dist.dir}" /> - <echo>*** Building Main Sources ***</echo> - <javac srcdir="${src.dir};${shock.src.dir};${bzip2.src.dir}" destdir="${dist.dir}" target="1.5" debug="on" deprecation="on"> - <classpath refid="classpath" /> - <compilerarg value="-Xlint:unchecked"/> - </javac> - <echo>*** Building Test Sources ***</echo> - <javac srcdir="test" destdir="${dist.dir}" debug="on"> - <classpath refid="classpath" /> - <compilerarg value="-Xlint:unchecked"/> - </javac> - </target> - - <target name="cc-compile"> - <jjtree - target="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt" - outputdirectory="${src.dir}/org/apache/pig/impl/logicalLayer/parser" - javacchome="${basedir}/lib" /> - <javacc - target="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParser.jj" - outputdirectory="${src.dir}/org/apache/pig/impl/logicalLayer/parser" - javacchome="${basedir}/lib" /> - <javacc - target="${src.dir}/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj" - outputdirectory="${src.dir}/org/apache/pig/tools/pigscript/parser" - javacchome="${basedir}/lib" /> - </target> - - <target name="lib-compile"> - <mkdir dir="${dist.dir}" /> - <echo>*** Building Library Sources ***</echo> - <javac srcdir="${shock.src.dir};${bzip2.src.dir}" destdir="${dist.dir}" target="1.5" debug="on"> - <classpath refid="classpath" /> - </javac> - </target> - - <target name="jar" depends="compile"> - <jar duplicate="preserve" jarfile="${output.jarfile}" basedir="${dist.dir}"> - <manifest> - <attribute name="Main-Class" value="org.apache.pig.Main"/> - </manifest> - <zipfileset src="${lib.dir}/junit-4.1.jar"/> - <zipfileset src="${lib.dir}/${hadoop.jarfile}"/> - <zipfileset src="${lib.dir}/jsch-0.1.33.jar"/> - </jar> - </target> - - <target name="test"> - <delete dir="${test.log.dir}"/> - <mkdir dir="${test.log.dir}"/> - <mkdir dir="test/reports"/> - <junit printsummary="on" haltonfailure="no" - errorProperty="tests.failed" failureProperty="tests.failed"> - <jvmarg line="-Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m"/> - <sysproperty key="ssh.gateway" value="${ssh.gateway}"/> - <sysproperty key="hod.server" value="${hod.server}"/> - <!-- <sysproperty key="hod.command" value="${hod.command}"/> - <sysproperty key="hod.param" value="${hod.param}"/> --> - <sysproperty key="hadoop.log.dir" value="${test.log.dir}"/> - <classpath> - <pathelement location="${output.jarfile}"/> - <pathelement location="${junit.hadoop.conf}"/> - <fileset dir="${lib.dir}"> - <include name="**/*.jar" /> - <exclude name="hadoop*.jar" /> - <include name="${hadoop.jarfile}" /> - </fileset> - </classpath> - <formatter type="${test.junit.output.format}" /> - <batchtest fork="yes" todir="test/reports"> - <fileset dir="test"> - <include name="**/*Test*.java" /> - <exclude name="**/TestLargeFile.java" /> - <exclude name="**/TestOrderBy.java" /> - <exclude name="**/TestPi.java" /> - <exclude name="**/nightly/**" /> - </fileset> - </batchtest> - </junit> - <fail if="tests.failed">Tests failed!</fail> - </target> - - <target name="doc"> - <mkdir dir="doc"/> - <echo>*** Building Java Docs ***</echo> - <javadoc packagenames="org.apache.pig.*" sourcepath="${src.dir}" destdir="${doc.dir}"> - <classpath> - <path refid="classpath"/> - <pathelement path="${java.class.path}"/> - </classpath> - </javadoc> - </target> + <property name="junit.hadoop.conf" value="${user.home}/pigtest/conf/"/> + + <!-- ====================================================== --> + <!-- Stuff needed by all targets --> + <!-- ====================================================== --> + <!-- setup the classpath --> + <path id="classpath"> + <fileset file="${lib.dir}/hadoop15.jar" /> + <fileset file="${lib.dir}/javacc.jar" /> + <fileset file="${lib.dir}/jsch-0.1.33.jar" /> + <fileset file="${lib.dir}/junit-4.1.jar" /> + </path> + + <path id="test.classpath"> + <pathelement location="${build.classes}"/> + <pathelement location="${test.src.dir}"/> + <path refid="classpath"/> + </path> + + + <target name="init"> + <mkdir dir="${src.gen.query.parser.dir}" /> + <mkdir dir="${src.gen.script.parser.dir}" /> + <mkdir dir="${dist.dir}" /> + <mkdir dir="${build.classes}" /> + <mkdir dir="${test.build.classes}" /> + </target> + + <!-- ================================================================== --> + <!-- Clean. Delete the build files, and their directories --> + <!-- ================================================================== --> + <target name="clean"> + <delete dir="${src.gen.dir}" /> + <delete dir="${build.dir}" /> + </target> + + <!-- ================================================================== --> + <!-- Java Compiler Compiler, generate Parsers --> + <!-- ================================================================== --> + <target name="cc-compile" depends="init"> + <jjtree target="${src.dir}/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt" outputdirectory="${src.gen.query.parser.dir}" javacchome="${javacc.home}" /> + <javacc target="${src.gen.query.parser.dir}/QueryParser.jj" outputdirectory="${src.gen.query.parser.dir}" javacchome="${javacc.home}" /> + <javacc target="${src.dir}/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj" outputdirectory="${src.gen.script.parser.dir}" javacchome="${javacc.home}" /> + </target> + + <!-- ================================================================== --> + <!-- Build sources --> + <!-- ================================================================== --> + <target name="compile" depends="init, cc-compile"> + <echo>*** Building Main Sources ***</echo> + <antcall target="compile-sources"> + <param name="sources" value="${src.dir};${src.gen.dir};${src.lib.dir}/shock;${src.lib.dir}/bzip2" /> + <param name="dist" value="${build.classes}" /> + <param name="cp" value="classpath" /> + </antcall> + </target> + + <target name="compile-test" depends="compile"> + + + + <echo>*** Building Test Sources ***</echo> + <antcall target="compile-sources"> + <param name="sources" value="${test.src.dir}" /> + <param name="dist" value="${test.build.classes}" /> + <param name="cp" value="test.classpath" /> + </antcall> + </target> + + <target name="compile-sources"> + <javac encoding="${build.encoding}" srcdir="${sources}" includes="**/*.java" destdir="${dist}" debug="${javac.debug}" optimize="${javac.optimize}" target="${javac.version}" source="${javac.version}" deprecation="${javac.deprecation}"> + <compilerarg line="${javac.args} ${javac.args.warnings}" /> + <classpath refid="${cp}" /> + </javac> + </target> + + <!-- ================================================================== --> + <!-- Documentation --> + <!-- ================================================================== --> + <target name="javadoc" depends="init"> + <mkdir dir="${build.javadoc}" /> + <javadoc overview="${src.dir}/overview.html" packagenames="org.apache.pig.*" destdir="${build.javadoc}" author="true" version="true" use="true" windowtitle="${Name} ${version} API" doctitle="${Name} ${version} API" bottom="Copyright &copy; ${year} The Apache Software Foundation"> + <packageset dir="${src.dir}" /> + <link href="${javadoc.link.java}" /> + <classpath> + <path refid="classpath" /> + <pathelement path="${java.class.path}" /> + </classpath> + <group title="pig" packages="org.apache.*" /> + </javadoc> + </target> + + <!-- ================================================================== --> + <!-- @depricated, Documentation --> + <!-- ================================================================== --> + <target name="doc" depends="javadoc"> + </target> + + <!-- ================================================================== --> + <!-- Make pig.jar --> + <!-- ================================================================== --> + <!-- TODO we should also exculte test here... --> + <!-- ================================================================== --> + <target name="jar" depends="compile"> + <jar jarfile="${output.jarfile.core}" basedir="${build.classes}"> + <manifest> + <attribute name="Main-Class" value="org.apache.pig.Main" /> + <section name="org/apache/pig"> + <attribute name="Implementation-Title" value="Pig" /> + <attribute name="Implementation-Version" value="${version}" /> + <attribute name="Implementation-Vendor" value="Apache" /> + </section> + </manifest> + </jar> + <!-- @depricated --> + <jar jarfile="${output.jarfile}" basedir="${build.classes}"> + <manifest> + <attribute name="Main-Class" value="org.apache.pig.Main" /> + <section name="org/apache/pig"> + <attribute name="Implementation-Title" value="Pig" /> + <attribute name="Implementation-Version" value="${version}" /> + <attribute name="Implementation-Vendor" value="Apache" /> + </section> + </manifest> + <zipfileset src="${lib.dir}/junit-4.1.jar" /> + <zipfileset src="${lib.dir}/${hadoop.jarfile}" /> + <zipfileset src="${lib.dir}/jsch-0.1.33.jar" /> + </jar> + </target> + + <!-- ================================================================== --> + <!-- Run unit tests --> + <!-- ================================================================== --> + <target name="test" depends="compile-test,jar"> + <delete dir="${test.log.dir}"/> + <mkdir dir="${test.log.dir}"/> + <junit showoutput="${test.output}" printsummary="yes" haltonfailure="no" fork="yes" maxmemory="256m" dir="${basedir}" timeout="${test.timeout}" errorProperty="tests.failed" failureProperty="tests.failed"> + <sysproperty key="ssh.gateway" value="${ssh.gateway}" /> + <sysproperty key="hod.server" value="${hod.server}" /> + <!-- <sysproperty key="hod.command" value="${hod.command}"/> + <sysproperty key="hod.param" value="${hod.param}"/> --> + <sysproperty key="hadoop.log.dir" value="${test.log.dir}"/> + <classpath> + <pathelement location="${output.jarfile}" /> + <pathelement location="${test.build.classes}" /> + <pathelement location="${junit.hadoop.conf}" /> + <path refid="classpath"/> + </classpath> + <formatter type="${test.junit.output.format}" /> + <batchtest fork="yes" todir="${test.log.dir}"> + <fileset dir="test"> + <include name="**/*Test*.java" /> + <exclude name="**/TestLargeFile.java" /> + <exclude name="**/TestOrderBy.java" /> + <exclude name="**/TestPi.java" /> + <exclude name="**/nightly/**" /> + </fileset> + </batchtest> + </junit> + <fail if="tests.failed">Tests failed!</fail> + </target> + + <!-- ================================================================== --> + <!-- D I S T R I B U T I O N --> + <!-- ================================================================== --> + <target name="package" depends="jar, javadoc"> + <mkdir dir="${dist.dir}" /> + <mkdir dir="${dist.dir}/lib" /> + <mkdir dir="${dist.dir}/scripts" /> + <mkdir dir="${dist.dir}/docs" /> + <mkdir dir="${dist.dir}/docs/api" /> + + <copy todir="${dist.dir}/lib" includeEmptyDirs="false"> + <fileset dir="${lib.dir}"> + </fileset> + </copy> + + <copy file="${output.jarfile.core}" todir="${dist.dir}" /> + + <copy todir="${dist.dir}/scripts"> + <fileset dir="scripts" /> + </copy> + + <copy todir="${dist.dir}/docs"> + <fileset dir="${build.docs}" /> + </copy> + + <copy todir="${dist.dir}/src" includeEmptyDirs="true"> + <fileset dir="${src.dir}" /> + <fileset dir="${src.gen.dir}" /> + </copy> + + <copy todir="${dist.dir}/" file="build.xml" /> + + <copy todir="${dist.dir}"> + <fileset dir="."> + <include name="*.txt" /> + </fileset> + </copy> + + <chmod perm="ugo+x" type="file"> + <fileset dir="${dist.dir}/scripts" /> + </chmod> + + </target> + + <!-- ================================================================== --> + <!-- Make release tarball --> + <!-- ================================================================== --> + <target name="tar" depends="package"> + <tar compression="gzip" longfile="gnu" destfile="${build.dir}/${final.name}.tar.gz"> + <tarfileset dir="${dist.dir}" mode="664"> + <exclude name="scripts/*" /> + <include name="**" /> + </tarfileset> + <tarfileset dir="${dist.dir}" mode="755"> + <include name="scripts/*" /> + </tarfileset> + </tar> + </target> -</project> +</project> \ No newline at end of file