diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2008-04-11 15:05:44 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2008-04-11 15:05:44 +0000 |
commit | 0b89f667d285ce2ba52be39885e4584ae0785feb (patch) | |
tree | 69423f13d77e40fa37e0934fa856be0557f24e4d | |
parent | 5df2f76bb8f89f0537fa0098ad63f44fe24e5836 (diff) | |
download | scala-0b89f667d285ce2ba52be39885e4584ae0785feb.tar.gz scala-0b89f667d285ce2ba52be39885e4584ae0785feb.tar.bz2 scala-0b89f667d285ce2ba52be39885e4584ae0785feb.zip |
Added what is needed to properly build, test an...
Added what is needed to properly build, test and package a distribution
for jvm 1.4.
-rw-r--r-- | sabbus.xml | 183 | ||||
-rw-r--r-- | src/build/four.xml | 325 |
2 files changed, 357 insertions, 151 deletions
diff --git a/sabbus.xml b/sabbus.xml index fc0592d099..5aa5d49e04 100644 --- a/sabbus.xml +++ b/sabbus.xml @@ -3,9 +3,7 @@ <project name="sabbus" default="build"> <description> - SuperSabbus for Scala core, builds the scala library and compiler. It can also package it as a simple distribution, - tests it for stable bootstrapping and against the Scala test suite. Use PackSabbus to package it for different install - management tools such as Sbaz. + SuperSabbus for Scala core, builds the scala library and compiler. It can also package it as a simple distribution, tests it for stable bootstrapping and against the Scala test suite. Use PackSabbus to package it for different install management tools such as Sbaz. </description> <!-- =========================================================================== @@ -71,8 +69,7 @@ PROPERTIES <property name="test.dir" value="${basedir}/test"/> <!-- Loads custom properties definitions --> - <property name="properties.file" value="${basedir}/build.properties"/> - <property file="${properties.file}"/> + <property file="${basedir}/build.properties"/> <!-- Sets location of pre-compiled libraries --> <property name="lib.starr.jar" value="${lib.dir}/scala-library.jar"/> @@ -89,7 +86,6 @@ PROPERTIES <property name="build-quick.dir" value="${build.dir}/quick"/> <property name="build-pack.dir" value="${build.dir}/pack"/> <property name="build-strap.dir" value="${build.dir}/strap"/> - <property name="build-four.dir" value="${build.dir}/four"/> <property name="build-docs.dir" value="${build.dir}/scaladoc"/> <property name="dists.dir" value="${basedir}/dists"/> @@ -433,22 +429,17 @@ QUICK BUILD (QUICK) <condition property="quick.bin.available"> <isset property="quick.comp.available"/> </condition> + </target> + + <target name="quick.bin" depends="quick.pre-bin" unless="quick.bin.available"> <path id="quick.bin.classpath"> <pathelement location="${build-quick.dir}/classes/library"/> <pathelement location="${build-quick.dir}/classes/compiler"/> <pathelement location="${fjbg.jar}"/> <pathelement location="${jline.jar}"/> </path> - </target> - - <target name="quick.bin" depends="quick.pre-bin" unless="quick.bin.available"> + <taskdef name="quick-bin" classname="scala.tools.ant.ScalaTool" classpathref="quick.bin.classpath"/> <mkdir dir="${build-quick.dir}/bin"/> - <taskdef name="quick-bin" classname="scala.tools.ant.ScalaTool"> - <classpath> - <pathelement location="${build-quick.dir}/classes/library"/> - <pathelement location="${build-quick.dir}/classes/compiler"/> - </classpath> - </taskdef> <quick-bin file="${build-quick.dir}/bin/scala" class="scala.tools.nsc.MainGenericRunner" @@ -544,15 +535,15 @@ PACKED QUICK BUILD (PACK) property="pack.bin.available" srcfile="${build-pack.dir}/lib/scala-compiler.jar" targetfile="${build-pack.dir}/bin.complete"/> + </target> + + <target name="pack.bin" depends="pack.pre-bin" unless="pack.bin.available"> <taskdef name="pack-bin" classname="scala.tools.ant.ScalaTool"> <classpath> <pathelement location="${build-pack.dir}/lib/scala-library.jar"/> <pathelement location="${build-pack.dir}/lib/scala-compiler.jar"/> </classpath> </taskdef> - </target> - - <target name="pack.bin" depends="pack.pre-bin" unless="pack.bin.available"> <mkdir dir="${build-pack.dir}/bin"/> <pack-bin file="${build-pack.dir}/bin/scala" @@ -759,15 +750,7 @@ BOOTSTRAPPING BUILD (STRAP) DOCUMENTATION ============================================================================ --> - <target name="docs.start" depends="pack.done"> - <uptodate property="docs.available" targetfile="${build-docs.dir}/build.complete"> - <srcfiles dir="${src.dir}"> - <include name="library/**"/> - <include name="dbc/**"/> - <include name="actors/**"/> - </srcfiles> - </uptodate> - </target> + <target name="docs.start" depends="pack.done"/> <target name="docs.pre-lib" depends="docs.start"> <uptodate property="docs.lib.available" targetfile="${build-docs.dir}/library.complete"> @@ -794,7 +777,7 @@ DOCUMENTATION </src> <include name="**/*.scala"/> </scaladoc> - <touch file="${build-docs.dir}/lib.complete" verbose="no"/> + <touch file="${build-docs.dir}/library.complete" verbose="no"/> <stopwatch name="docs.lib.timer" action="total"/> </target> @@ -815,7 +798,7 @@ DOCUMENTATION srcdir="${src.dir}/compiler"> <include name="**/*.scala"/> </scaladoc> - <touch file="${build-docs.dir}/comp.complete" verbose="no"/> + <touch file="${build-docs.dir}/compiler.complete" verbose="no"/> <stopwatch name="docs.comp.timer" action="total"/> </target> @@ -826,128 +809,6 @@ DOCUMENTATION </target> <!-- =========================================================================== -JAVA 1.4 LIBRARY AND COMPILER BUILD (FOUR) -============================================================================ --> - - <target name="four.start" depends="pack.done"/> - - <target name="four.pre-lib" depends="four.start"> - <uptodate property="four.lib.available" targetfile="${build-four.dir}/library.complete"> - <srcfiles dir="${src.dir}"> - <include name="library/**"/> - <include name="dbc/**"/> - <include name="actors/**"/> - </srcfiles> - </uptodate> - </target> - - <target name="four.lib" depends="four.pre-lib" unless="four.lib.available"> - <stopwatch name="four.lib.timer"/> - <mkdir dir="${build-four.dir}/classes/library"/> - <javac - srcdir="${src.dir}/library" - destdir="${build-four.dir}/classes/library" - classpath="${build-four.dir}/classes/library" - includes="**/*.java" - target="1.4" source="1.4"/> - <javac - srcdir="${src.dir}/actors" - destdir="${build-four.dir}/classes/library" - classpath="${build-four.dir}/classes/library" - includes="**/*.java" - target="1.4" source="1.4"/> - <scalac - srcdir="${src.dir}/library" - destdir="${build-four.dir}/classes/library" - classpath="${build-four.dir}/classes/library" - sourcepath="${src.dir}/library" - target="jvm-1.4"> - <include name="scala/Predef.scala"/> - </scalac> - <scalac - srcdir="${src.dir}/library" - destdir="${build-four.dir}/classes/library" - classpath="${build-four.dir}/classes/library" - target="jvm-1.4"> - <include name="**/*.scala"/> - <exclude name="scala/Predef.scala"/> - </scalac> - <scalac - srcdir="${src.dir}/actors" - destdir="${build-four.dir}/classes/library" - classpath="${build-four.dir}/classes/library" - target="jvm-1.4"> - <include name="**/*.scala"/> - </scalac> - <scalac - srcdir="${src.dir}/dbc" - destdir="${build-four.dir}/classes/library" - classpath="${build-four.dir}/classes/library" - target="jvm-1.4"> - <include name="**/*.scala"/> - </scalac> - <propertyfile file="${build-four.dir}/classes/library/library.properties"> - <entry key="version.number" value="${version.number}"/> - <entry key="copyright.string" value="${copyright.string}"/> - </propertyfile> - <copy todir="${build-four.dir}/classes/library"> - <fileset dir="${src.dir}/library"> - <include name="**/*.tmpl"/> - <include name="**/*.xml"/> - <include name="**/*.js"/> - <include name="**/*.css"/> - </fileset> - </copy> - <touch file="${build-four.dir}/library.complete" verbose="no"/> - <stopwatch name="four.lib.timer" action="total"/> - </target> - - <target name="four.pre-comp" depends="four.lib"> - <uptodate property="four.comp.available" targetfile="${build-four.dir}/compiler.complete"> - <srcfiles dir="${src.dir}/compiler"/> - </uptodate> - </target> - - <target name="four.comp" depends="four.pre-comp" unless="four.comp.available"> - <stopwatch name="four.comp.timer"/> - <mkdir dir="${build-four.dir}/classes/compiler"/> - <scalac - srcdir="${src.dir}/compiler" - destdir="${build-four.dir}/classes/compiler" - target="jvm-1.4"> - <include name="**/*.scala"/> - <classpath> - <pathelement location="${build-four.dir}/classes/library"/> - <pathelement location="${build-four.dir}/classes/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${jline.jar}"/> - <pathelement location="${ant.jar}"/> - </classpath> - </scalac> - <propertyfile file="${build-four.dir}/classes/compiler/compiler.properties"> - <entry key="version.number" value="${version.number}"/> - <entry key="copyright.string" value="${copyright.string}"/> - </propertyfile> - <copy todir="${build-four.dir}/classes/compiler"> - <fileset dir="${src.dir}/compiler"> - <include name="**/*.tmpl"/> - <include name="**/*.xml"/> - <include name="**/*.js"/> - <include name="**/*.css"/> - </fileset> - </copy> - <touch file="${build-four.dir}/compiler.complete" verbose="no"/> - <stopwatch name="four.comp.timer" action="total"/> - </target> - - <target name="four.done" depends="four.comp"/> - - <target name="four.clean"> - <delete dir="${build-four.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/> - </target> - -<!-- =========================================================================== BOOTRAPING TEST AND TEST SUITE ============================================================================ --> @@ -1072,6 +933,26 @@ STABLE REFERENCE (STARR) <target name="starr.done" depends="starr.src"/> <!-- =========================================================================== +FORWARDED TARGETS FOR JVM 1.4 BUILD +============================================================================ --> + + <target name="four" depends="pack.done"> + <ant antfile="${src.dir}/build/four.xml" target="four-pack.done" inheritall="yes" inheritrefs="yes"/> + </target> + + <target name="fourtest" depends="pack.done"> + <ant antfile="${src.dir}/build/four.xml" target="four-test.done" inheritall="yes" inheritrefs="yes"/> + </target> + + <target name="fourdist" depends="pack.done"> + <ant antfile="${src.dir}/build/four.xml" target="four-all.done" inheritall="yes" inheritrefs="yes"/> + </target> + + <target name="fourclean"> + <ant antfile="${src.dir}/build/four.xml" target="four-all.clean" inheritall="yes" inheritrefs="yes"/> + </target> + +<!-- =========================================================================== MISCELLANEOUS ============================================================================ --> diff --git a/src/build/four.xml b/src/build/four.xml new file mode 100644 index 0000000000..5b1579a684 --- /dev/null +++ b/src/build/four.xml @@ -0,0 +1,325 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project name="sabbus-four"> + + <description> + SuperSabbus extension for the Scala library and compiler targeted for the JVM 1.4. THIS FILE IS NOT STAND-ALONE AND SHOULD ONLY BE USED THROUGH ENTRY POINTS IN SUPERSABBUS. + </description> + + <!-- TODO: Use a 1.4 Java standard library to compile against, instead of that of the JVM running the script. --> + <!-- TODO: Use a 1.4 Java standard library to run partests. Add a bootclasspath option to partest to allow that. --> + +<!-- =========================================================================== +PROPERTIES +============================================================================ --> + + <property name="build-four.dir" value="${build.dir}/four"/> + <property name="build-four-src.dir" value="${build.dir}/four-src"/> + <property name="build-four-pack.dir" value="${build.dir}/four-pack"/> + <property name="build-four-docs.dir" value="${build.dir}/four-docs"/> + +<!-- =========================================================================== +JAVA 1.4 LIBRARY AND COMPILER BUILD (FOUR) +============================================================================ --> + + <target name="four.start"/> + + <target name="four.src" depends="four.start"> + <mkdir dir="${build-four-src.dir}"/> + <sync todir="${build-four-src.dir}"> + <fileset dir="${src.dir}/library"/> + </sync> + <copy todir="${build-four-src.dir}"> + <fileset dir="${src.dir}/jvm14-library"/> + </copy> + </target> + + <target name="four.lib" depends="four.src"> + <stopwatch name="four.lib.timer"/> + <mkdir dir="${build-four.dir}/classes/library"/> + <javac + srcdir="${build-four-src.dir}" + destdir="${build-four.dir}/classes/library" + classpath="${build-four.dir}/classes/library" + includes="**/*.java" + target="1.4" source="1.4"/> + <javac + srcdir="${src.dir}/actors" + destdir="${build-four.dir}/classes/library" + classpath="${build-four.dir}/classes/library" + includes="**/*.java" + target="1.4" source="1.4"/> + <scalac + srcdir="${build-four-src.dir}" + destdir="${build-four.dir}/classes/library" + classpath="${build-four.dir}/classes/library" + sourcepath="${build-four-src.dir}" + target="jvm-1.4"> + <include name="scala/Predef.scala"/> + </scalac> + <scalac + srcdir="${build-four-src.dir}" + destdir="${build-four.dir}/classes/library" + classpath="${build-four.dir}/classes/library" + target="jvm-1.4"> + <include name="**/*.scala"/> + <exclude name="scala/Predef.scala"/> + </scalac> + <scalac + srcdir="${src.dir}/actors" + destdir="${build-four.dir}/classes/library" + classpath="${build-four.dir}/classes/library" + target="jvm-1.4"> + <include name="**/*.scala"/> + </scalac> + <scalac + srcdir="${src.dir}/dbc" + destdir="${build-four.dir}/classes/library" + classpath="${build-four.dir}/classes/library" + target="jvm-1.4"> + <include name="**/*.scala"/> + </scalac> + <propertyfile file="${build-four.dir}/classes/library/library.properties"> + <entry key="version.number" value="${version.number}"/> + <entry key="copyright.string" value="${copyright.string}"/> + </propertyfile> + <copy todir="${build-four.dir}/classes/library"> + <fileset dir="${build-four-src.dir}"> + <include name="**/*.tmpl"/> + <include name="**/*.xml"/> + <include name="**/*.js"/> + <include name="**/*.css"/> + </fileset> + </copy> + <touch file="${build-four.dir}/library.complete" verbose="no"/> + <stopwatch name="four.lib.timer" action="total"/> + </target> + + <target name="four.comp" depends="four.lib"> + <stopwatch name="four.comp.timer"/> + <mkdir dir="${build-four.dir}/classes/compiler"/> + <scalac + srcdir="${src.dir}/compiler" + destdir="${build-four.dir}/classes/compiler" + target="jvm-1.4"> + <include name="**/*.scala"/> + <classpath> + <pathelement location="${build-four.dir}/classes/library"/> + <pathelement location="${build-four.dir}/classes/compiler"/> + <pathelement location="${fjbg.jar}"/> + <pathelement location="${msil.jar}"/> + <pathelement location="${jline.jar}"/> + <pathelement location="${ant.jar}"/> + </classpath> + </scalac> + <propertyfile file="${build-four.dir}/classes/compiler/compiler.properties"> + <entry key="version.number" value="${version.number}"/> + <entry key="copyright.string" value="${copyright.string}"/> + </propertyfile> + <copy todir="${build-four.dir}/classes/compiler"> + <fileset dir="${src.dir}/compiler"> + <include name="**/*.tmpl"/> + <include name="**/*.xml"/> + <include name="**/*.js"/> + <include name="**/*.css"/> + </fileset> + </copy> + <touch file="${build-four.dir}/compiler.complete" verbose="no"/> + <stopwatch name="four.comp.timer" action="total"/> + </target> + + <target name="four.done" depends="four.comp"/> + + <target name="four.clean" depends="four-pack.clean"> + <delete dir="${build-four.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/> + <delete dir="${build-four-src.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/> + </target> + +<!-- =========================================================================== +PACKED FOUR BUILD (FOUR-PACK) +============================================================================ --> + + <target name="four-pack.start" depends="four.done"/> + + <target name="four-pack.lib" depends="four-pack.start"> + <mkdir dir="${build-four-pack.dir}/lib"/> + <jar destfile="${build-four-pack.dir}/lib/scala-library.jar"> + <fileset dir="${build-four.dir}/classes/library"> + <exclude name="scala/dbc/**"/> + </fileset> + </jar> + <jar destfile="${build-four-pack.dir}/lib/scala-dbc.jar"> + <fileset dir="${build-four.dir}/classes/library"> + <include name="scala/dbc/**"/> + </fileset> + </jar> + </target> + + <target name="four-pack.comp" depends="four-pack.lib"> + <mkdir dir="${build-four-pack.dir}/lib"/> + <jar destfile="${build-four-pack.dir}/lib/scala-compiler.jar"> + <fileset dir="${build-four.dir}/classes/compiler"/> + <zipfileset src="${fjbg.jar}"/> + <zipfileset src="${msil.jar}"/> + </jar> + </target> + + <target name="four-pack.bin" depends="four-pack.comp"> + <taskdef name="four-pack-bin" classname="scala.tools.ant.ScalaTool"> + <classpath> + <pathelement location="${build-four-pack.dir}/lib/scala-library.jar"/> + <pathelement location="${build-four-pack.dir}/lib/scala-compiler.jar"/> + </classpath> + </taskdef> + <mkdir dir="${build-four-pack.dir}/bin"/> + <four-pack-bin + file="${build-four-pack.dir}/bin/scala" + class="scala.tools.nsc.MainGenericRunner" + javaFlags="${java.flags}"/> + <four-pack-bin + file="${build-four-pack.dir}/bin/scalac" + class="scala.tools.nsc.Main" + javaFlags="${java.flags}"/> + <four-pack-bin + file="${build-four-pack.dir}/bin/scaladoc" + class="scala.tools.nsc.ScalaDoc" + javaFlags="${java.flags}"/> + <four-pack-bin + file="${build-four-pack.dir}/bin/fsc" + class="scala.tools.nsc.CompileClient" + javaFlags="${java.flags}"/> + <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/scala"/> + <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/scalac"/> + <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/scaladoc"/> + <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/fsc"/> + <touch file="${build-four-pack.dir}/bin.complete" verbose="no"/> + </target> + + <target name="four-pack.done" depends="four-pack.bin"/> + + <target name="four-pack.clean"> + <delete dir="${build-four-pack.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/> + </target> + +<!-- =========================================================================== +DOCUMENTATION +============================================================================ --> + + <target name="four-docs.start" depends="four-pack.done"/> + + <target name="four-docs.lib" depends="four-docs.start"> + <stopwatch name="four-docs.lib.timer"/> + <mkdir dir="${build-four-docs.dir}/library"/> + <scaladoc + destdir="${build-four-docs.dir}/library" + windowtitle="Scala Library for JVM 1.4" + doctitle="Scala ${version.number} API" + classpathref="pack.classpath"> + <src> + <files includes="${src.dir}/dbc"/> + <files includes="${src.dir}/actors"/> + <files includes="${build-four-src.dir}"/> + </src> + <include name="**/*.scala"/> + </scaladoc> + <touch file="${build-four-docs.dir}/lib.complete" verbose="no"/> + <stopwatch name="four-docs.lib.timer" action="total"/> + </target> + + <target name="four-docs.done" depends="four-docs.lib"/> + + <target name="four-docs.clean"> + <delete dir="${build-four-docs.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/> + </target> + +<!-- =========================================================================== +BOOTRAPING TEST AND TEST SUITE +============================================================================ --> + + <target name="four-test.suite" depends="four-pack.done"> + <partest showlog="yes" erroronfailed="no"> + <classpath> + <pathelement location="${build-four-pack.dir}/lib/scala-library.jar"/> + <pathelement location="${build-four-pack.dir}/lib/scala-compiler.jar"/> + <fileset dir="${test.dir}/files/lib" includes="*.jar"/> + </classpath> + <postests dir="${test.dir}/files/pos" includes="*.scala"/> + <negtests dir="${test.dir}/files/neg" includes="*.scala"/> + <runtests dir="${test.dir}/files"> + <include name="run/**/*.scala"/> + <include name="jvm/**/*.scala"/> + </runtests> + <residenttests dir="${test.dir}/files/res" includes="*.res"/> + </partest> + </target> + + <target name="four-test.done" depends="four-test.suite"/> + +<!-- =========================================================================== +DISTRIBUTION +============================================================================ --> + + <target name="four-dist.start" depends="four-pack.done, four-docs.done"> + <property name="four-dist.dir" value="${dists.dir}/scala-jvm4-${version.number}"/> + </target> + + <target name="four-dist.base" depends="four-dist.start"> + <mkdir dir="${four-dist.dir}/lib"/> + <copy toDir="${four-dist.dir}/lib"> + <fileset dir="${build-four-pack.dir}/lib"/> + </copy> + <mkdir dir="${four-dist.dir}/bin"/> + <copy toDir="${four-dist.dir}/bin"> + <fileset dir="${build-four-pack.dir}/bin"/> + </copy> + <chmod perm="ugo+rx" file="${four-dist.dir}/bin/scala"/> + <chmod perm="ugo+rx" file="${four-dist.dir}/bin/scalac"/> + <chmod perm="ugo+rx" file="${four-dist.dir}/bin/scaladoc"/> + <chmod perm="ugo+rx" file="${four-dist.dir}/bin/fsc"/> + </target> + + <target name="four-dist.doc" depends="four-dist.base"> + <mkdir dir="${four-dist.dir}/doc/api"/> + <copy toDir="${four-dist.dir}/doc/api"> + <fileset dir="${build-four-docs.dir}/library"/> + </copy> + </target> + + <target name="four-dist.src" depends="four-dist.doc"> + <mkdir dir="${four-dist.dir}/src"/> + <jar destfile="${four-dist.dir}/src/scala-library-src.jar"> + <fileset dir="${build-four-src.dir}"/> + <fileset dir="${src.dir}/actors"/> + </jar> + <jar destfile="${four-dist.dir}/src/scala-dbc-src.jar"> + <fileset dir="${src.dir}/dbc"/> + </jar> + <jar destfile="${four-dist.dir}/src/scala-compiler-src.jar"> + <fileset dir="${src.dir}/compiler"/> + </jar> + </target> + + <target name="four-dist.done" depends="four-dist.src"/> + +<!-- =========================================================================== +TEST AND DISTRIBUTION BUNDLE (ALL) +============================================================================ --> + + <target name="four-all.done" depends="four-dist.done, four-test.done"/> + + <target name="four-all.clean" depends="four-docs.clean, four.clean"/> + +<!-- =========================================================================== +MISCELLANEOUS +============================================================================ --> + + <target name="graph.init"> + <echo message="${basedir}/lib/ant/vizant.jar"/> + <taskdef name="vizant" classname="vizant.Vizant" classpath="${basedir}/../../lib/ant/vizant.jar"/> + </target> + + <target name="graph.four" depends="graph.init"> + <vizant antfile="${ant.file}" outfile="${ant.project.name}.dot"/> + </target> + +</project> |