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 &amp;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


Reply via email to