summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/util/PathResolver.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-02-23 03:49:01 +0000
committerPaul Phillips <paulp@improving.org>2010-02-23 03:49:01 +0000
commitdb511fee56d50c2f74439eb8a32897313f82af8b (patch)
tree90c4ab7120378b40fd3736730ec3d2a1b37af06b /src/compiler/scala/tools/util/PathResolver.scala
parentdf94b3c5b831e78a056f7b0b5334b1fb8d3c3bd5 (diff)
downloadscala-db511fee56d50c2f74439eb8a32897313f82af8b.tar.gz
scala-db511fee56d50c2f74439eb8a32897313f82af8b.tar.bz2
scala-db511fee56d50c2f74439eb8a32897313f82af8b.zip
More fun with ClassPaths.
Review by community.
Diffstat (limited to 'src/compiler/scala/tools/util/PathResolver.scala')
-rw-r--r--src/compiler/scala/tools/util/PathResolver.scala42
1 files changed, 29 insertions, 13 deletions
diff --git a/src/compiler/scala/tools/util/PathResolver.scala b/src/compiler/scala/tools/util/PathResolver.scala
index 5c6bd2c884..cadd4d2051 100644
--- a/src/compiler/scala/tools/util/PathResolver.scala
+++ b/src/compiler/scala/tools/util/PathResolver.scala
@@ -52,23 +52,35 @@ object PathResolver {
def sourcePathEnv = envOrElse("SOURCEPATH", "") // not used
def scalaHomeEnv = envOrElse("SCALA_HOME", "") // not used
def javaBootClassPath = propOrElse("sun.boot.class.path", searchForBootClasspath)
- def javaExtDirs = propOrElse("java.ext.dirs", "")
+ def javaExtDirs = propOrEmpty("java.ext.dirs")
def javaUserClassPath = propOrElse("java.class.path", classPathEnv)
- def scalaExtDirs = propOrElse("scala.ext.dirs", "")
-
- def scalaHome = propOrElse("scala.home", null)
- def scalaHomeIsSet = scalaHome != null
- def scalaAutodetect = propIsSet("scala.auto") && !propIsSet("scala.noauto")
+ def scalaExtDirs = propOrEmpty("scala.ext.dirs")
+
+ def scalaHome = propOrEmpty("scala.home")
+
+ /** I have distilled everyone's classpath hopes and dreams into the
+ * question of how to resolve this boolean. Right at this moment if I
+ * do anything but default to true right here, partest chokes. I'm
+ * steadily reworking all the places partest gets its hands on the
+ * classpath so eventually I'll be able to remedy that, at which point
+ * my current plan is to have this default to false unless some
+ * property or command line option is supplied. This is negotiable,
+ * but at this point I can say with confidence that less magic and
+ * less autodetection is more better.
+ */
+ def useJavaClassPath = true
+ // hypothetically:
+ // def useJavaClassPath = propIsSet("scala.auto.class.path")
override def toString = """
|object Environment {
- | scalaHome = %s (autodetect = %s)
+ | scalaHome = %s (useJavaClassPath = %s)
| javaBootClassPath = <%d chars>
| javaExtDirs = %s
| javaUserClassPath = %s
| scalaExtDirs = %s
|}""".trim.stripMargin.format(
- scalaHome, scalaAutodetect,
+ scalaHome, useJavaClassPath,
javaBootClassPath.length,
ppcp(javaExtDirs),
ppcp(javaUserClassPath),
@@ -81,10 +93,10 @@ object PathResolver {
*/
object Defaults {
def javaBootClassPath = Environment.javaBootClassPath
- def javaUserClassPath = firstNonEmpty(Environment.javaUserClassPath, Environment.classPathEnv)
+ def javaUserClassPath = Environment.javaUserClassPath
def javaExtDirs = Environment.javaExtDirs
- def scalaHome = Option(Environment.scalaHome) getOrElse ""
+ def scalaHome = Environment.scalaHome
def scalaHomeDir = Directory(scalaHome)
def scalaHomeExists = scalaHomeDir.isDirectory
def scalaLibDir = Directory(scalaHomeDir / "lib")
@@ -174,6 +186,8 @@ class PathResolver(settings: Settings, context: JavaContext) {
case "sourcepath" => settings.sourcepath.value
}
+ private def useJavaClassPath = !settings.javaignorecp.value && Environment.useJavaClassPath
+
/** Calculated values based on any given command line options, falling back on
* those in Defaults.
*/
@@ -181,7 +195,7 @@ class PathResolver(settings: Settings, context: JavaContext) {
def scalaHome = Defaults.scalaHome
def javaBootClassPath = cmdLineOrElse("javabootclasspath", Defaults.javaBootClassPath)
def javaExtDirs = cmdLineOrElse("javaextdirs", Defaults.javaExtDirs)
- def javaUserClassPath = if (Environment.scalaHomeIsSet) "" else Defaults.javaUserClassPath
+ def javaUserClassPath = if (useJavaClassPath) Defaults.javaUserClassPath else ""
def scalaBootClassPath = cmdLineOrElse("bootclasspath", Defaults.scalaBootClassPath)
def scalaExtDirs = cmdLineOrElse("extdirs", Defaults.scalaExtDirs)
def userClassPath = cmdLineOrElse("classpath", ".")
@@ -208,6 +222,7 @@ class PathResolver(settings: Settings, context: JavaContext) {
| javaBootClassPath = %s
| javaExtDirs = %s
| javaUserClassPath = %s
+ | useJavaClassPath = %s
| scalaBootClassPath = %s
| scalaExtDirs = %s
| userClassPath = %s
@@ -215,6 +230,7 @@ class PathResolver(settings: Settings, context: JavaContext) {
|}""".trim.stripMargin.format(
scalaHome,
ppcp(javaBootClassPath), ppcp(javaExtDirs), ppcp(javaUserClassPath),
+ useJavaClassPath,
ppcp(scalaBootClassPath), ppcp(scalaExtDirs), ppcp(userClassPath),
ppcp(sourcePath)
)
@@ -225,8 +241,8 @@ class PathResolver(settings: Settings, context: JavaContext) {
lazy val result = {
val cp = new JavaClassPath(containers, context)
if (settings.Ylogcp.value) {
- Console.println("Classpath built from " + settings)
- Console.println("And Environment: " + PathResolver.Environment)
+ Console.println("Classpath built from " + settings.toConciseString)
+ Console.println("Defaults: " + PathResolver.Defaults)
val xs = (Calculated.basis drop 2).flatten.distinct
println("After java boot/extdirs classpath has %d entries:" format xs.size)