diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2006-01-09 17:19:23 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2006-01-09 17:19:23 +0000 |
commit | 156a21e2668e0af5bf52a55522801e2fbdfc97e4 (patch) | |
tree | d0e0ba47b7efbed51b47d0f7e534fd2e7db27645 | |
parent | 281a73cdd54392a730a213a7976300f274c6564a (diff) | |
download | scala-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.xml | 53 | ||||
-rw-r--r-- | src/compiler/scala/tools/ant/ScalaTool.scala | 19 | ||||
-rw-r--r-- | src/compiler/scala/tools/ant/templates/generic-unix.tmpl | 14 | ||||
-rw-r--r-- | src/compiler/scala/tools/ant/templates/tool-unix.tmpl | 14 |
4 files changed, 59 insertions, 41 deletions
@@ -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 |