diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2006-05-11 15:29:25 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2006-05-11 15:29:25 +0000 |
commit | de29ef0ac4a7be7a9321f03e8a12490b0833d4ac (patch) | |
tree | dc9808b21ad49615ad9f35cf3714bb9ef231e2be /src | |
parent | 88a1448f33fbd271eefe9c155015a5c31eb223bc (diff) | |
download | scala-de29ef0ac4a7be7a9321f03e8a12490b0833d4ac.tar.gz scala-de29ef0ac4a7be7a9321f03e8a12490b0833d4ac.tar.bz2 scala-de29ef0ac4a7be7a9321f03e8a12490b0833d4ac.zip |
Seriously cleaned-up the build script.
Diffstat (limited to 'src')
6 files changed, 76 insertions, 74 deletions
diff --git a/src/compiler/scala/tools/ant/templates/generic-unix.tmpl b/src/compiler/scala/tools/ant/templates/generic-unix.tmpl index fffc0b3e9f..540f170abd 100644 --- a/src/compiler/scala/tools/ant/templates/generic-unix.tmpl +++ b/src/compiler/scala/tools/ant/templates/generic-unix.tmpl @@ -16,6 +16,17 @@ case "`uname`" in Darwin*) darwin=true ;; esac +# Prints out version if the "-version" flag is passed +for flag in "$@@" ; do + #TODO: take version only if it is before the tool class name + if [ "$flag" = '-version' ] ; then + echo "Scala runtime version @version@ -- @copyright@" + ${JAVACMD:=java} -version + exit 0 + fi +done + +# Finding the root folder for this Scala distribution SOURCE=$0; SCRIPT=`basename "$SOURCE"`; while [ -h "$SOURCE" ]; do @@ -31,71 +42,56 @@ done; SCALA_HOME=`dirname "$SOURCE"`/..; SCALA_HOME=`cd "$SCALA_HOME"; pwd`; -EXTENSION_CLASSPATH="@extclasspath@" -USER_CLASSPATH="." +# Will contain (at the end of the script) all arguments that weren't explicitly handled USER_ARGS="" -if [ "$EXTENSION_CLASSPATH" = "" ] ; then - for jar in `ls "$SCALA_HOME"/lib/*.jar` ; do - if [ "$EXTENSION_CLASSPATH" = "" ] ; then - EXTENSION_CLASSPATH="$jar" - else - EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$jar" - fi - done -fi - +# Constructing the user class-path in three overriding steps +# Step 1: Class-path set to default value "." +USER_CLASSPATH="." +# Step 2: Class-path overridden to value of "CLASSPATH" environment variable if [ "$CLASSPATH" != "" ] ; then USER_CLASSPATH="$CLASSPATH" fi - -QQ_CP_ARGUMENT=0 -for i in "$@@" ; do - if [ "$QQ_CP_ARGUMENT" -eq 1 ] ; then - USER_CLASSPATH=$i - QQ_CP_ARGUMENT=0 +# Step 3: Class-path overridden to value of "-classpath" script parameter +IS_CP_ARGUMENT=0 +for arg in "$@@" ; do + if [ "$IS_CP_ARGUMENT" -eq 1 ] ; then + USER_CLASSPATH=$arg + IS_CP_ARGUMENT=0 else - if [ "$i" = "-cp" ] || [ "$i" = "-classpath" ] ; then - QQ_CP_ARGUMENT=1 + if [ "$arg" = "-cp" ] || [ "$arg" = "-classpath" ] ; then + IS_CP_ARGUMENT=1 else - USER_ARGS="$USER_ARGS $i" - QQ_CP_ARGUMENT=0 + USER_ARGS="$USER_ARGS $arg" + IS_CP_ARGUMENT=0 fi fi done -MYCLASSPATH="" +# Constructing the extension classpath +EXTENSION_CLASSPATH="@extclasspath@" if [ "$EXTENSION_CLASSPATH" = "" ] ; then - MYCLASSPATH="$USER_CLASSPATH" -else - if [ "$USER_CLASSPATH" = "" ] ; then - MYCLASSPATH="$EXTENSION_CLASSPATH" - else - MYCLASSPATH="$USER_CLASSPATH:$EXTENSION_CLASSPATH" - fi + for ext in `ls -L "$SCALA_HOME"/lib/*` ; do + if [ "$EXTENSION_CLASSPATH" = "" ] ; then + EXTENSION_CLASSPATH="$ext" + else + EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$ext" + fi + done fi +# Setting the boot class-path to be the standard library (either as a JAR or a folder) BOOT_CLASSPATH="@bootclasspath@" -if [ "$BOOT_CLASSPATH" = "" ] && [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then - BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar" -fi - -if [ "$BOOT_CLASSPATH" != "" ] ; then - if [ "$MYCLASSPATH" = "" ] ; then - MYCLASSPATH="$BOOT_CLASSPATH" - else - MYCLASSPATH="$BOOT_CLASSPATH:$MYCLASSPATH" +if [ "$BOOT_CLASSPATH" = "" ] ; then + if [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then + BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar" + elif [ -d "$SCALA_HOME/lib/library" ] ; then + BOOT_CLASSPATH="$SCALA_HOME/lib/library" fi fi -for flag in "$@@" ; do - #TODO: take version only if it is before the tool class name - if [ "$flag" = '-version' ] ; then - echo "Scala runtime version @version@ -- @copyright@" - ${JAVACMD:=java} -version - exit 0 - fi -done +# The merge of all three previous classpaths. All Scala code must currently be in a single class loader. +MERGED_CLASSPATH="$BOOT_CLASSPATH:$USER_CLASSPATH:$EXTENSION_CLASSPATH" if $cygwin; then if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then @@ -104,10 +100,7 @@ if $cygwin; then format=windows fi SCALA_HOME=`cygpath --$format "$SCALA_HOME"` - USER_CLASSPATH=`cygpath --path --$format "$USER_CLASSPATH"` - BOOT_CLASSPATH=`cygpath --path --$format "$BOOT_CLASSPATH"` - EXTENSION_CLASSPATH=`cygpath --path --$format "$EXTENSION_CLASSPATH"` - MYCLASSPATH=`cygpath --path --$format "$MYCLASSPATH"` + MERGED_CLASSPATH=`cygpath --path --$format "$MYCLASSPATH"` fi -${JAVACMD:=java} @javaflags@ -cp "$MYCLASSPATH" -Dscala.home="$SCALA_HOME" @properties@ $USER_ARGS +${JAVACMD:=java} @javaflags@ -cp "$MERGED_CLASSPATH" -Dscala.home="$SCALA_HOME" @properties@ $USER_ARGS diff --git a/src/compiler/scala/tools/ant/templates/generic-windows.tmpl b/src/compiler/scala/tools/ant/templates/generic-windows.tmpl index 5635d9a3ee..46b42d3e78 100644 --- a/src/compiler/scala/tools/ant/templates/generic-windows.tmpl +++ b/src/compiler/scala/tools/ant/templates/generic-windows.tmpl @@ -26,7 +26,7 @@ if "%_JAVACMD%"=="" set _JAVACMD=java set _EXTENSION_CLASSPATH=@extclasspath@ if "%_EXTENSION_CLASSPATH%"=="" ( - for %%f in ("%_SCALA_HOME%\lib\*.jar") do call :add_cpath "%%f" + for %%f in ("%_SCALA_HOME%\lib\*") do call :add_cpath "%%f" ) set _BOOT_CLASSPATH=@bootclasspath@ @@ -34,6 +34,9 @@ if "%_BOOT_CLASSPATH%"=="" ( if exist "%_SCALA_HOME%\lib\scala-library.jar" ( set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\scala-library.jar ) + if exist "%_SCALA_HOME%\lib\library" ( + set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\library + ) ) rem We use the value of the CLASSPATH environment variable if defined diff --git a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl index 538566745b..1bf7259ddd 100644 --- a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl +++ b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl @@ -16,6 +16,7 @@ case "`uname`" in Darwin*) darwin=true ;; esac +# Finding the root folder for this Scala distribution SOURCE=$0; SCRIPT=`basename "$SOURCE"`; while [ -h "$SOURCE" ]; do @@ -31,31 +32,31 @@ done; SCALA_HOME=`dirname "$SOURCE"`/..; SCALA_HOME=`cd "$SCALA_HOME"; pwd`; +# Constructing the extension classpath EXTENSION_CLASSPATH="@extclasspath@" if [ "$EXTENSION_CLASSPATH" = "" ] ; then - for jar in `ls "$SCALA_HOME"/lib/*.jar` ; do + for ext in `ls -L "$SCALA_HOME"/lib/*` ; do if [ "$EXTENSION_CLASSPATH" = "" ] ; then - EXTENSION_CLASSPATH="$jar" + EXTENSION_CLASSPATH="$ext" else - EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$jar" + EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$ext" fi done fi +# Setting the boot class-path to be the standard library (either as a JAR or a folder) BOOT_CLASSPATH="@bootclasspath@" -if [ "$BOOT_CLASSPATH" = "" ] && [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then - BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar" -fi - -MYCLASSPATH="$EXTENSION_CLASSPATH" -if [ "$BOOT_CLASSPATH" != "" ] ; then - if [ "$MYCLASSPATH" = "" ] ; then - MYCLASSPATH="$BOOT_CLASSPATH" - else - MYCLASSPATH="$BOOT_CLASSPATH:$MYCLASSPATH" +if [ "$BOOT_CLASSPATH" = "" ] ; then + if [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then + BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar" + elif [ -d "$SCALA_HOME/lib/library" ] ; then + BOOT_CLASSPATH="$SCALA_HOME/lib/library" fi fi +# The merge of the two previous classpaths. All Scala code must currently be in a single class loader. +MERGED_CLASSPATH="$BOOT_CLASSPATH:$EXTENSION_CLASSPATH" + if $cygwin; then if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then format=mixed @@ -63,9 +64,7 @@ if $cygwin; then format=windows fi SCALA_HOME=`cygpath --$format "$SCALA_HOME"` - BOOT_CLASSPATH=`cygpath --path --$format "$BOOT_CLASSPATH"` - EXTENSION_CLASSPATH=`cygpath --path --$format "$EXTENSION_CLASSPATH"` - MYCLASSPATH=`cygpath --path --$format "$MYCLASSPATH"` + MERGED_CLASSPATH=`cygpath --path --$format "$MERGED_CLASSPATH"` fi -${JAVACMD:=java} @javaflags@ -cp "$MYCLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.classpath="$CLASSPATH" -Dscala.tool.name="@name@" -Dscala.tool.version="@version@" @properties@ @class@ @toolflags@ "$@@" +${JAVACMD:=java} @javaflags@ -cp "$MERGED_CLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.classpath="$CLASSPATH" -Dscala.tool.name="@name@" -Dscala.tool.version="@version@" @properties@ @class@ @toolflags@ "$@@" diff --git a/src/compiler/scala/tools/ant/templates/tool-windows.tmpl b/src/compiler/scala/tools/ant/templates/tool-windows.tmpl index 4a15430d50..198e764e05 100644 --- a/src/compiler/scala/tools/ant/templates/tool-windows.tmpl +++ b/src/compiler/scala/tools/ant/templates/tool-windows.tmpl @@ -26,7 +26,7 @@ if "%_JAVACMD%"=="" set _JAVACMD=java set _EXTENSION_CLASSPATH=@extclasspath@ if "%_EXTENSION_CLASSPATH%"=="" ( - for %%f in ("%_SCALA_HOME%\lib\*.jar") do call :add_cpath "%%f" + for %%f in ("%_SCALA_HOME%\lib\*") do call :add_cpath "%%f" ) set _BOOT_CLASSPATH=@bootclasspath@ @@ -34,6 +34,9 @@ if "%_BOOT_CLASSPATH%"=="" ( if exist "%_SCALA_HOME%\lib\scala-library.jar" ( set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\scala-library.jar ) + if exist "%_SCALA_HOME%\lib\library" ( + set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\library + ) ) set _MYCLASSPATH=%_EXTENSION_CLASSPATH% diff --git a/src/compiler/scala/tools/nsc/Settings.scala b/src/compiler/scala/tools/nsc/Settings.scala index 2cca35fa3a..e54c051d11 100644 --- a/src/compiler/scala/tools/nsc/Settings.scala +++ b/src/compiler/scala/tools/nsc/Settings.scala @@ -49,8 +49,12 @@ class Settings(error: String => unit) { private def guessedScalaBootClassPath = { val scalaHome = System.getProperty("scala.home") if (scalaHome != null) { - val guess = new File(new File(new File(scalaHome), "lib"), "scala-library.jar") - if (guess.exists()) guess.getPath() else null + val guessJar = new File(new File(new File(scalaHome), "lib"), "scala-library.jar") + if (guessJar.exists()) guessJar.getPath() + else { + val guessDir = new File(new File(new File(scalaHome), "lib"), "library") + if (guessDir.exists()) guessDir.getPath() else null + } } else null } diff --git a/src/compiler/scala/tools/nsc/util/ClassPath.scala b/src/compiler/scala/tools/nsc/util/ClassPath.scala index 5b140f2411..42533665f9 100644 --- a/src/compiler/scala/tools/nsc/util/ClassPath.scala +++ b/src/compiler/scala/tools/nsc/util/ClassPath.scala @@ -207,7 +207,7 @@ class ClassPath(onlyPresentation: Boolean) { if (file != null) { for (val file0 <- file) { val name = file0.name - if (name.endsWith(".jar") || name.endsWith(".zip")) { + if (name.endsWith(".jar") || name.endsWith(".zip") || file0.isDirectory) { val archive = AbstractFile.getDirectory(new File(file.file, name)) if (archive != null) entries += (new Library(archive)) } |