summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilles Dubochet <gilles.dubochet@epfl.ch>2006-03-09 15:16:53 +0000
committerGilles Dubochet <gilles.dubochet@epfl.ch>2006-03-09 15:16:53 +0000
commitf9377afa2b2b4421d0d09913dad35555e3bebe36 (patch)
tree24a520b063bc841b69e804f3fb0444bce6608ada
parent647c85991cbdd49e90e0160d85863da3139f158b (diff)
downloadscala-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--README29
-rw-r--r--build.xml151
2 files changed, 95 insertions, 85 deletions
diff --git a/README b/README
index ad3ae3e9ce..ef0586d35d 100644
--- a/README
+++ b/README
@@ -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'
diff --git a/build.xml b/build.xml
index af122db563..0034344595 100644
--- a/build.xml
+++ b/build.xml
@@ -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"/>