diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2006-03-09 15:16:53 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2006-03-09 15:16:53 +0000 |
commit | f9377afa2b2b4421d0d09913dad35555e3bebe36 (patch) | |
tree | 24a520b063bc841b69e804f3fb0444bce6608ada | |
parent | 647c85991cbdd49e90e0160d85863da3139f158b (diff) | |
download | scala-f9377afa2b2b4421d0d09913dad35555e3bebe36.tar.gz scala-f9377afa2b2b4421d0d09913dad35555e3bebe36.tar.bz2 scala-f9377afa2b2b4421d0d09913dad35555e3bebe36.zip |
Fixed some distribution-related build dependenc...
Fixed some distribution-related build dependencies and improved the way
devel, patch and minor distributions can be requested. Updated README to
match current build script.
-rw-r--r-- | README | 29 | ||||
-rw-r--r-- | build.xml | 151 |
2 files changed, 95 insertions, 85 deletions
@@ -13,6 +13,7 @@ build script or user-created if needed. scala/ build/ † Temporary staging area for build products. build.excludes † An optional build configuration file. + build.number The version number of the current distribution. build.properties † An optional build configuration file. build.xml The main Ant build script. dist/ † The destination folder of Scala distributions. @@ -21,17 +22,16 @@ scala/ examples/ Scala example files. man/ UNIX manual files. lib/ Pre-compiled libraries for the build. + ant-contrib.jar Support libraries for the build tool. fjbg.jar The Java byte-code generation library. jaco.jar The JaCo Java compiler. - msil.jar The CLR byte-code generation library. scala-compiler.jar The last stable version of the Scala compiler. scala-library.jar The last stable version of the Scala library. - scala.dll The Scala library for Windows. + logs/ † Build tool log files. README The file you are currently reading. sandbox/ † A folder to test code etc. src/ All the source files of Scala. compiler/ The sources of the Scala compiler. - exec/ The sources of the executable wrapper-scripts. library/ The sources of the Scala library. test/ The Scala test suite. @@ -62,8 +62,7 @@ Part III. Requirements for SABBUS -------------------------------------------------------------------------------- The Scala build system is based on Apache Ant. Most required pre-compiled libraries are part of the repository (in 'lib/'). The following however is assumed to be installed on the build machine: - - A Java runtime environment (JRE) or SDK 1.4 or above (with 1.5 highly - recommended for performance reasons). + - A Java runtime environment (JRE) or SDK 1.4 or above. - Apache Ant version 1.6 or above. Part IV. Common use-cases @@ -98,15 +97,33 @@ Part IV. Common use-cases make sure it is stable). - (planned) Runs the test suite. +'ant docs' + Generates the HTML documentation for the library from the sources using the + scaladoc tool in quick. + +'ant docs.compiler' + Generates the HTML documentation for the compiler from the sources using the + scaladoc tool in quick. + 'ant dist' Builds a distribution. - Runs all the tests as above (and refuses to build a distribution if it fails). - Creates a local distribution in 'dists/latest'. - Creates all relevant Scala Bazaar archives and advertisement files. - - (planned) Creates the IzPack installer. + +'ant dist.devel' or 'ant dist.patch' or 'ant dist.minor' + Builds a distribution to be publicly released and manages version numbers. + - Patch and Minor versions are public releases. The version number is + automatically bumped up and is formatted as 'major.minor.patch'. + - Devel versions are betas for semi-public release. Numbers are formatted as + 'major.minor.patch.svn'. Version '2.3.4.5875' is a beta for either patch + '2.3.5' or minor version '2.4.0'. 'ant clean' + Removes all temporary build files (locker is preserved). + +'ant clean.build' Removes all build files (including locker). 'ant clean.all' @@ -32,17 +32,20 @@ PROPERTIES <property name="lib.dir" value="${basedir}/lib"/> <property name="src.dir" value="${basedir}/src"/> <property name="test.dir" value="${basedir}/test"/> + <property name="properties" value="${basedir}/build.properties"/> + <echo level="verbose" message="properties=${properties}"/> <!-- User properties --> - <property file="${basedir}/build.properties"/> + <property file="${properties}"/> <!-- General properties --> <property name="number.file" value="${basedir}/build.number"/> <property name="copyright" value="(c) 2002-2006 LAMP/EPFL"/> + <property name="logs.dir" value="${basedir}/logs"/> <!-- NSC configuration properties --> <property name="nsc.logging" value="none"/> <property name="nsc.log-files" value="no"/> <property name="nsc.excludes" value="${basedir}/build.excludes"/> <property name="nsc.params" value=""/> - <property name="nsc.timers" value="${basedir}/build.timers"/> + <property name="nsc.timers" value="${logs.dir}/build.timers"/> <!-- SVN configuration properties --> <property name="svn.entries" value="${basedir}/.svn/entries"/> <!-- Location of pre-compiled libraries properties --> @@ -166,7 +169,7 @@ INITIALISATION <pathelement location="${starr.comp.jar}"/> <path refid="common.classpath"/> </path> - <!-- Creating boot-level tasks --> + <!-- Setting-up Ant contrib tasks --> <taskdef resource="net/sf/antcontrib/antlib.xml"> <classpath> <pathelement location="${ant-contrib.jar}"/> @@ -210,6 +213,7 @@ INITIALISATION <fail>System environment could not be determined</fail> </else> </if> + <!-- Printing out some information about what environment I am running in --> <echo level="info" message="OS: ${os.type} (${os.name} ${os.arch} ${os.version});" @@ -226,6 +230,20 @@ INITIALISATION level="info" message="Ant: ${ant.version}." /> + <!-- Finding out SVN revision --> + <loadfile + property="entries" + srcFile="${svn.entries}" + failonerror="false" + /> + <propertyregex + property="svn.revision" + input="${entries}" + regexp="revision=\042([0-9]*)\042\.*" + select="\1" + defaultValue="x" + /> + <property name="init.avail" value="yes"/> </target> <target name="setup" depends="init"> @@ -267,89 +285,20 @@ INITIALISATION <condition property="locker.avail"> <available file="${locker.dir}/complete"/> </condition> - <!-- Defining version number --> - <loadfile - property="entries" - srcFile="${svn.entries}" - failonerror="false" - /> - <propertyregex - property="svn.revision" - input="${entries}" - regexp="revision=\042([0-9]*)\042\.*" - select="\1" - defaultValue="x" - /> - <!-- OVER-ENGINEERING ALERT: Calculating version numbers might be over-engineered --> - <!-- But deciding of a versioning scheme was hard enough: let's hard code it! --> - <if> - <not><isset property="release"/></not> - <then> - <property file="${number.file}"/> - <property - name="version.number" - value="${version.major}.${version.minor}.${version.patch}.${svn.revision}.${time.short}" - /> - </then> - <elseif> - <equals arg1="${release}" arg2="devel"/> - <then> - <property file="${number.file}"/> - <property - name="version.number" - value="${version.major}.${version.minor}.${version.patch}.${svn.revision}" - /> - </then> - </elseif> - <elseif> - <equals arg1="${release}" arg2="patch"/> - <then> - <propertyfile - file="${number.file}" - comment="Version last updated on ${time.human}" - > - <entry key="version.patch" type="int" default="0" operation="+"/> - </propertyfile> - <property file="${number.file}"/> - <property - name="version.number" - value="${version.major}.${version.minor}.${version.patch}" - /> - </then> - </elseif> - <elseif> - <equals arg1="${release}" arg2="minor"/> - <then> - <propertyfile - file="${number.file}" - comment="Version last updated on ${time.human}" - > - <entry key="version.minor" type="int" default="0" operation="+"/> - <entry key="version.patch" type="int" value="0"/> - </propertyfile> - <property file="${number.file}"/> - <property - name="version.number" - value="${version.major}.${version.minor}.${version.patch}" - /> - </then> - </elseif> - <else> - <fail message="The 'release' property must be set to 'devel', 'minor' or 'major'"/> - </else> - </if> - <!-- End of over-engineering alert --> - <echo level="verbose" message="version.number=${version.number}"/> + <!-- Generating version number --> + <property file="${number.file}"/> <property - name="dist.current.dir" - value="${dist.dir}/${dist.name}-${version.number}" + name="version.number" + value="${version.major}.${version.minor}.${version.patch}.${svn.revision}.${time.short}" /> + <echo level="verbose" message="version.number=${version.number}"/> + <!-- Setup timer --> + <mkdir dir="${logs.dir}"/> <echo file="${nsc.timers}" append="true" message="${line.separator}Revision ${svn.revision};${line.separator} built ${time.human};${line.separator} by ${java.vm.name} ${java.vm.version};${line.separator} on ${os.name} ${os.arch} ${os.version}:${line.separator}" /> - <property name="init.avail" value="yes"/> </target> <target name="setup.locker" depends="setup, build.locker"> @@ -915,12 +864,56 @@ DOCUMENTATION <!-- =========================================================================== GENERATES A DISTRIBUTION ============================================================================ --> + + <target name="dist.devel" depends="init"> + <property file="${number.file}"/> + <property + name="version.number" + value="${version.major}.${version.minor}.${version.patch}.${svn.revision}" + /> + <runtarget target="dist"/> + </target> + + <target name="dist.patch" depends="init"> + <propertyfile + file="${number.file}" + comment="Version last updated on ${time.human}" + > + <entry key="version.patch" type="int" default="0" operation="+"/> + </propertyfile> + <property file="${number.file}"/> + <property + name="version.number" + value="${version.major}.${version.minor}.${version.patch}" + /> + <runtarget target="dist"/> + </target> + + <target name="dist.minor" depends="init"> + <propertyfile + file="${number.file}" + comment="Version last updated on ${time.human}" + > + <entry key="version.minor" type="int" default="0" operation="+"/> + <entry key="version.patch" type="int" value="0"/> + </propertyfile> + <property file="${number.file}"/> + <property + name="version.number" + value="${version.major}.${version.minor}.${version.patch}" + /> + <runtarget target="dist"/> + </target> <target name="dist" depends="test, docs" description="Creates a complete Scala distribution" > + <property + name="dist.current.dir" + value="${dist.dir}/${dist.name}-${version.number}" + /> <mkdir dir="${dist.current.dir}"/> <!-- Copy all requires libraries --> <mkdir dir="${dist.current.dir}/lib"/> |