summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilles Dubochet <gilles.dubochet@epfl.ch>2006-01-09 17:19:23 +0000
committerGilles Dubochet <gilles.dubochet@epfl.ch>2006-01-09 17:19:23 +0000
commit156a21e2668e0af5bf52a55522801e2fbdfc97e4 (patch)
treed0e0ba47b7efbed51b47d0f7e534fd2e7db27645
parent281a73cdd54392a730a213a7976300f274c6564a (diff)
downloadscala-156a21e2668e0af5bf52a55522801e2fbdfc97e4.tar.gz
scala-156a21e2668e0af5bf52a55522801e2fbdfc97e4.tar.bz2
scala-156a21e2668e0af5bf52a55522801e2fbdfc97e4.zip
Improved the ScalaTool Ant task to be more cros...
Improved the ScalaTool Ant task to be more cross-platform.
-rw-r--r--build.xml53
-rw-r--r--src/compiler/scala/tools/ant/ScalaTool.scala19
-rw-r--r--src/compiler/scala/tools/ant/templates/generic-unix.tmpl14
-rw-r--r--src/compiler/scala/tools/ant/templates/tool-unix.tmpl14
4 files changed, 59 insertions, 41 deletions
diff --git a/build.xml b/build.xml
index 51098bf584..0a555a800a 100644
--- a/build.xml
+++ b/build.xml
@@ -65,10 +65,10 @@ PROPERTIES
<property name="dist.name" value="scala"/>
<property name="lib.jar.name" value="${dist.name}-${lib.dir.name}.jar"/>
<property name="comp.jar.name" value="${dist.name}-${comp.dir.name}.jar"/>
- <property name="scala.exec.name" value="${dist.name}"/>
- <property name="scalai.exec.name" value="${dist.name}i"/>
- <property name="scalac.exec.name" value="${dist.name}c"/>
- <property name="scalatok.exec.name" value="${dist.name}tok"/>
+ <property name="scala.exec.name" value="${dist.name}2"/>
+ <property name="scalai.exec.name" value="${dist.name}i2"/>
+ <property name="scalac.exec.name" value="${dist.name}c2"/>
+ <property name="scalatok.exec.name" value="${dist.name}tok2"/>
<!-- Shorcut names -->
<property name="locker.lib.dir" value="${locker.dir}/${lib.dir.name}"/>
<property name="locker.comp.dir" value="${locker.dir}/${comp.dir.name}"/>
@@ -478,8 +478,8 @@ BUILD QUICK-TEST LAYER
class="scala.tools.nsc.Main"
version="${version.number}"
copyright="${copyright}"
- classpath="$$PREFIX/${lib.dir.name}:$$PREFIX/${comp.dir.name}:$$PREFIX/${fjbg.name}:$$PREFIX/${msil.name}"
- properties="scala.boot.class.path=$$CP"
+ classpath="#PREFIX#/${lib.dir.name}:#PREFIX#/${comp.dir.name}:#PREFIX#/${fjbg.name}:#PREFIX#/${msil.name}"
+ properties="scala.boot.class.path=#CLASSPATH#"
javaFlags="-Xmx256M -Xms16M"/>
<chmod file="${quick.dir}/${exec.dir.name}/${scalac.exec.name}"
perm="ugo+rx"/>
@@ -558,14 +558,14 @@ TEST
<!-- Build executable files -->
<mkdir dir="${strap.dir}/${exec.dir.name}"/>
<quicktool file="${strap.dir}/${exec.dir.name}/${scalac.exec.name}"
- genericFile="${strap.dir}/${exec.dir.name}/${scala.exec.name}"
- name="Scala compiler"
- class="scala.tools.nsc.Main"
- version="${version.number}"
- copyright="${copyright}"
- classpath="$$PREFIX/${lib.dir.name}:$$PREFIX/${comp.dir.name}:$$PREFIX/${fjbg.name}:$$PREFIX/${msil.name}"
- properties="scala.boot.class.path=$$CP"
- javaFlags="-Xmx256M -Xms16M"/>
+ genericFile="${strap.dir}/${exec.dir.name}/${scala.exec.name}"
+ name="Scala compiler"
+ class="scala.tools.nsc.Main"
+ version="${version.number}"
+ copyright="${copyright}"
+ classpath="#PREFIX#/${lib.dir.name}:#PREFIX#/${comp.dir.name}:#PREFIX#/${fjbg.name}:#PREFIX#/${msil.name}"
+ properties="scala.boot.class.path=#CLASSPATH#"
+ javaFlags="-Xmx256M -Xms16M"/>
<chmod file="${strap.dir}/${exec.dir.name}/${scalac.exec.name}"
perm="ugo+rx"/>
<chmod file="${strap.dir}/${exec.dir.name}/${scala.exec.name}"
@@ -629,16 +629,21 @@ GENERATES A DISTRIBUTION
<copy file="${fjbg.jar}" todir="${dist.current.dir}/lib"/>
<copy file="${msil.jar}" todir="${dist.current.dir}/lib"/>
<mkdir dir="${dist.current.dir}/bin"/>
- <build.exec.unix lib.path="$$PREFIX/lib/${lib.jar.name}"
- comp.path="$$PREFIX/lib/${comp.jar.name}"
- fjbg.path="$$PREFIX/lib/${fjbg.name}"
- msil.path="$$PREFIX/lib/${msil.name}"
- exec.dir="${dist.current.dir}/bin"/>
- <build.exec.win lib.path="%SCALA_HOME%\lib\${lib.jar.name}"
- comp.path="%SCALA_HOME%\lib\${comp.jar.name}"
- fjbg.path="%SCALA_HOME%\lib\${fjbg.name}"
- msil.path="%SCALA_HOME%\lib\${msil.name}"
- exec.dir="${dist.current.dir}\bin"/>
+ <!-- Build executable files -->
+ <mkdir dir="${dist.current.dir}/bin"/>
+ <lockertool file="${dist.current.dir}/bin/${scalac.exec.name}"
+ genericFile="${dist.current.dir}/bin/${scala.exec.name}"
+ name="Scala compiler"
+ class="scala.tools.nsc.Main"
+ version="${version.number}"
+ copyright="${copyright}"
+ classpath=""
+ properties="scala.boot.class.path=#CLASSPATH#"
+ javaFlags="-Xmx256M -Xms16M"/>
+ <chmod file="${dist.current.dir}/bin/${scalac.exec.name}"
+ perm="ugo+rx"/>
+ <chmod file="${dist.current.dir}/bin/${scala.exec.name}"
+ perm="ugo+rx"/>
<if><isset property="os.unix"/>
<then>
<symlink link="${dist.latest.dir}"
diff --git a/src/compiler/scala/tools/ant/ScalaTool.scala b/src/compiler/scala/tools/ant/ScalaTool.scala
index b079fde680..9e9e8dd309 100644
--- a/src/compiler/scala/tools/ant/ScalaTool.scala
+++ b/src/compiler/scala/tools/ant/ScalaTool.scala
@@ -181,7 +181,8 @@ package scala.tools.ant {
/** Gets the value of the classpath attribute in a Scala-friendly form.
* @returns The class path as a list of files. */
private def getWinClasspath: String =
- classpath.mkString("", ";", "")
+ classpath.map(.replace("/", "\\")).
+ mkString("", ";", "")
/** Gets the value of the classpath attribute in a Scala-friendly form.
* @returns The class path as a list of files. */
@@ -252,6 +253,16 @@ package scala.tools.ant {
writer.close()
}
+ private def expandUnixVar(vars: Map[String,String]): Map[String,String] =
+ vars.map((key:String,vari:String) => vari.
+ replaceAll("#([^#]*)#", "\\$$1")
+ )
+
+ private def expandWinVar(vars: Map[String,String]): Map[String,String] =
+ vars.map((key:String,vari:String) => vari.
+ replaceAll("#([^#]*)#", "%_$1%")
+ )
+
/******************************************************************************\
** The big execute method **
@@ -275,7 +286,8 @@ package scala.tools.ant {
update("javaflags", javaFlags).
update("toolflags", toolFlags)
if (platforms.contains("unix")) {
- val unixPatches = patches.update("classpath", getUnixClasspath)
+ val unixPatches = expandUnixVar(
+ patches.update("classpath", getUnixClasspath))
val unixTemplateResource = resourceRoot + "tool-unix.tmpl"
val unixTemplate = readResource(unixTemplateResource, unixPatches)
writeFile(getFile, unixTemplate)
@@ -286,7 +298,8 @@ package scala.tools.ant {
}
}
if (platforms.contains("windows")) {
- val winPatches = patches.update("classpath", getWinClasspath)
+ val winPatches = expandWinVar(
+ patches.update("classpath", getWinClasspath))
val winTemplateResource = resourceRoot + "tool-windows.tmpl"
val winTemplate = readResource(winTemplateResource, winPatches)
writeFile(new File(getFile.getAbsolutePath() + ".bat"), winTemplate)
diff --git a/src/compiler/scala/tools/ant/templates/generic-unix.tmpl b/src/compiler/scala/tools/ant/templates/generic-unix.tmpl
index 066d623854..6f62014138 100644
--- a/src/compiler/scala/tools/ant/templates/generic-unix.tmpl
+++ b/src/compiler/scala/tools/ant/templates/generic-unix.tmpl
@@ -32,12 +32,12 @@ PREFIX=`dirname "$SOURCE"`/..;
prefix=$PREFIX;
PREFIX=`cd "$PREFIX"; pwd`;
-CP=@classpath@
-if [ "$CP" == "" ] ; then
+CLASSPATH=@classpath@
+if [ "$CLASSPATH" == "" ] ; then
for jar in `ls $PREFIX/lib/*.jar` ; do
- CP=$CP:$jar
+ CLASSPATH=$CLASSPATH:$jar
done
- CP=${CP:1}
+ CLASSPATH=${CLASSPATH:1}
fi
if $cygwin; then
@@ -46,15 +46,15 @@ if $cygwin; then
else
format=windows
fi
- CP=`cygpath --path --$format "$CP"`
+ CLASSPATH=`cygpath --path --$format "$CLASSPATH"`
fi
for flag in "$@@" ; do
if [ $flag == '-version' ] ; then
- echo "Scala runtime version @version@"
+ echo "Scala runtime version @version@ -- @copyright@"
${JAVACMD:=java} -version
exit 0
fi
done
-${JAVACMD:=java} @javaflags@ -cp "$CP" "$@@" \ No newline at end of file
+${JAVACMD:=java} @javaflags@ -Xbootclasspath/a:"$CLASSPATH" "$@@" \ No newline at end of file
diff --git a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
index 081b0219da..2dd8c1f7c4 100644
--- a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
+++ b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
@@ -32,12 +32,12 @@ PREFIX=`dirname "$SOURCE"`/..;
prefix=$PREFIX;
PREFIX=`cd "$PREFIX"; pwd`;
-CP=@classpath@
-if [ "$CP" == "" ] ; then
+CLASSPATH=@classpath@
+if [ "$CLASSPATH" == "" ] ; then
for jar in `ls $PREFIX/lib/*.jar` ; do
- CP=$CP:$jar
+ CLASSPATH=$CLASSPATH:$jar
done
- CP=${CP:1}
+ CLASSPATH=${CLASSPATH:1}
fi
if $cygwin; then
@@ -46,14 +46,14 @@ if $cygwin; then
else
format=windows
fi
- CP=`cygpath --path --$format "$CP"`
+ CLASSPATH=`cygpath --path --$format "$CLASSPATH"`
fi
for flag in "$@@" ; do
if [ $flag == '-version' ] ; then
- echo "@name@ version @version@"
+ echo "@name@ version @version@ -- @copyright@"
exit 0
fi
done
-${JAVACMD:=java} @javaflags@ -Dscala.home="$PREFIX" -Dscala.tool.name="@name@" -Dscala.tool.version="@version@" @properties@ -cp "$CP" @class@ @toolflags@ "$@@" \ No newline at end of file
+${JAVACMD:=java} @javaflags@ -Dscala.home="$PREFIX" -Dscala.tool.name="@name@" -Dscala.tool.version="@version@" @properties@ -cp "$CLASSPATH" @class@ @toolflags@ "$@@" \ No newline at end of file