aboutsummaryrefslogtreecommitdiff
path: root/stage2
diff options
context:
space:
mode:
Diffstat (limited to 'stage2')
-rw-r--r--stage2/BasicBuild.scala11
-rw-r--r--stage2/BuildBuild.scala4
-rw-r--r--stage2/BuildDependency.scala1
-rw-r--r--stage2/GitDependency.scala1
-rw-r--r--stage2/Lib.scala5
-rw-r--r--stage2/PackageJars.scala2
-rw-r--r--stage2/ToolsStage2.scala2
-rw-r--r--stage2/ToolsTasks.scala9
-rw-r--r--stage2/plugins/Dotty.scala27
-rw-r--r--stage2/plugins/Frege.scala9
10 files changed, 34 insertions, 37 deletions
diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala
index 9ed6787..5f73568 100644
--- a/stage2/BasicBuild.scala
+++ b/stage2/BasicBuild.scala
@@ -147,16 +147,16 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge
lib.compile(
context.cbtLastModified,
sourceFiles, compileTarget, compileStatusFile, compileDependencies,
- context.paths.mavenCache, scalacOptions, context.classLoaderCache,
+ context.paths.mavenCache, scalacOptions,
zincVersion = zincVersion, scalaVersion = scalaVersion
)
}
- def mainClasses: Seq[Class[_]] = exportedClasspath.files.flatMap( lib.mainClasses( _, classLoader(classLoaderCache) ) )
+ def mainClasses: Seq[Class[_]] = exportedClasspath.files.flatMap( lib.mainClasses( _, classLoader ) )
def runClass: Option[String] = lib.runClass( mainClasses ).map( _.getName )
- def runMain( className: String, args: String* ) = lib.runMain( className, args, classLoader(context.classLoaderCache) )
+ def runMain( className: String, args: String* ) = lib.runMain( className, args, classLoader )
def flatClassLoader: Boolean = false
@@ -200,15 +200,14 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge
}
val scalac = new ScalaCompilerDependency(context.cbtLastModified, context.paths.mavenCache, scalaVersion)
- lib.runMain(
+ runMain(
"scala.tools.nsc.MainGenericRunner",
Seq(
"-bootclasspath",
scalac.classpath.string,
"-classpath",
classpath.string
- ) ++ context.args,
- scalac.classLoader(classLoaderCache)
+ ) ++ context.args : _*
)
}
diff --git a/stage2/BuildBuild.scala b/stage2/BuildBuild.scala
index 994ac2e..474599a 100644
--- a/stage2/BuildBuild.scala
+++ b/stage2/BuildBuild.scala
@@ -57,14 +57,14 @@ trait BuildBuildWithoutEssentials extends BaseBuild{
// Launcher in the checkout with itself and then run it via reflection.
val dep = new GitDependency(base, hash, Some("nailgun_launcher"))
val ctx = managedContext.copy( cbtHome = dep.checkout )
- dep.classLoader(classLoaderCache)
+ dep.classLoader
.loadClass( "cbt.NailgunLauncher" )
.getMethod( "getBuild", classOf[AnyRef] )
.invoke( null, ctx )
}
}.getOrElse{
try{
- classLoader(context.classLoaderCache)
+ classLoader
.loadClass(lib.buildClassName)
.getConstructors.head
.newInstance(managedContext)
diff --git a/stage2/BuildDependency.scala b/stage2/BuildDependency.scala
index ed6c2bd..56069c3 100644
--- a/stage2/BuildDependency.scala
+++ b/stage2/BuildDependency.scala
@@ -16,6 +16,7 @@ trait TriggerLoop extends DependencyImplementation{
}
/** You likely want to use the factory method in the BasicBuild class instead of this. */
final case class DirectoryDependency(context: Context) extends TriggerLoop{
+ def classLoaderCache = context.classLoaderCache
override def toString = show
override def show = this.getClass.getSimpleName ++ "(" ++ context.workingDirectory.string ++ ")"
def moduleKey = this.getClass.getName ++ "("+context.workingDirectory.string+")"
diff --git a/stage2/GitDependency.scala b/stage2/GitDependency.scala
index 754e41a..ecd0ee1 100644
--- a/stage2/GitDependency.scala
+++ b/stage2/GitDependency.scala
@@ -15,6 +15,7 @@ case class GitDependency(
)(implicit val logger: Logger, classLoaderCache: ClassLoaderCache, context: Context ) extends DependencyImplementation{
import GitDependency._
override def lib = new Lib(logger)
+ def classLoaderCache = context.classLoaderCache
def moduleKey = this.getClass.getName ++ "(" ++ url ++ subDirectory.map("/" ++ _).getOrElse("") ++ "#" ++ ref ++ ")"
def transientCache = context.transientCache
// TODO: add support for authentication via ssh and/or https
diff --git a/stage2/Lib.scala b/stage2/Lib.scala
index d5119a7..2642ec9 100644
--- a/stage2/Lib.scala
+++ b/stage2/Lib.scala
@@ -84,9 +84,8 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger) with Scaffold{
scalaMajorVersion: String,
version: String,
compileArgs: Seq[String],
- classLoaderCache: ClassLoaderCache,
mavenCache: File
- )(implicit transientCache: java.util.Map[AnyRef,AnyRef]): Option[File] = {
+ )(implicit transientCache: java.util.Map[AnyRef,AnyRef], classLoaderCache: ClassLoaderCache): Option[File] = {
if(sourceFiles.isEmpty){
None
} else {
@@ -101,7 +100,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger) with Scaffold{
runMain(
"scala.tools.nsc.ScalaDoc",
args,
- new ScalaDependencies(cbtLastModified,mavenCache,scalaVersion).classLoader(classLoaderCache)
+ new ScalaDependencies(cbtLastModified,mavenCache,scalaVersion).classLoader
)
}
lib.jarFile(
diff --git a/stage2/PackageJars.scala b/stage2/PackageJars.scala
index fddbfc6..8ba1798 100644
--- a/stage2/PackageJars.scala
+++ b/stage2/PackageJars.scala
@@ -23,7 +23,7 @@ trait PackageJars extends BaseBuild with ArtifactInfo{
context.cbtLastModified,
scalaVersion, sourceFiles, compileClasspath, docTarget,
jarTarget, artifactId, scalaMajorVersion, version,
- scalacOptions, context.classLoaderCache, context.paths.mavenCache
+ scalacOptions, context.paths.mavenCache
)
}
}
diff --git a/stage2/ToolsStage2.scala b/stage2/ToolsStage2.scala
index 2899173..e1c4a8e 100644
--- a/stage2/ToolsStage2.scala
+++ b/stage2/ToolsStage2.scala
@@ -4,7 +4,7 @@ object ToolsStage2 extends Stage2Base{
def run( _args: Stage2Args ): ExitCode = {
val args = _args.args.dropWhile(Seq("tools","direct") contains _)
val lib = new Lib(_args.logger)
- val toolsTasks = new ToolsTasks(lib, args, _args.cwd, _args.classLoaderCache, _args.cache, _args.cbtHome, _args.stage2LastModified)
+ val toolsTasks = new ToolsTasks(lib, args, _args.cwd, _args.cache, _args.cbtHome, _args.stage2LastModified)(_args.classLoaderCache)
new lib.ReflectObject(toolsTasks){
def usage: String = "Available methods: " ++ lib.taskNames(toolsTasks.getClass).mkString(" ")
}.callNullary(args.lift(0))
diff --git a/stage2/ToolsTasks.scala b/stage2/ToolsTasks.scala
index 6acf72c..25156fb 100644
--- a/stage2/ToolsTasks.scala
+++ b/stage2/ToolsTasks.scala
@@ -6,16 +6,15 @@ class ToolsTasks(
lib: Lib,
args: Seq[String],
cwd: File,
- classLoaderCache: ClassLoaderCache,
cache: File,
cbtHome: File,
cbtLastModified: Long
-){
+)(implicit classLoaderCache: ClassLoaderCache){
private val paths = CbtPaths(cbtHome, cache)
import paths._
- private def Resolver( urls: URL* ) = MavenResolver(cbtLastModified,mavenCache,urls: _*)
implicit val logger: Logger = lib.logger
implicit val transientCache: java.util.Map[AnyRef,AnyRef] = new java.util.HashMap
+ private def Resolver( urls: URL* ) = MavenResolver(cbtLastModified,mavenCache,urls: _*)
def createMain: Unit = lib.createMain( cwd )
def createBuild: Unit = lib.createBuild( cwd )
def gui = NailgunLauncher.main(Array(
@@ -48,7 +47,7 @@ class ToolsTasks(
MavenDependency(
"com.lihaoyi","ammonite-repl_2.11.8",args.lift(1).getOrElse("0.5.8")
)
- ).classLoader(classLoaderCache)
+ ).classLoader
// FIXME: this does not work quite yet, throws NoSuchFileException: /ammonite/repl/frontend/ReplBridge$.class
lib.runMain(
"ammonite.repl.Main", args.drop(2), classLoader
@@ -59,7 +58,7 @@ class ToolsTasks(
val scalac = new ScalaCompilerDependency( cbtLastModified, mavenCache, version )
val _args = Seq("-cp", scalac.classpath.string) ++ args.drop(2)
lib.runMain(
- "scala.tools.nsc.MainGenericRunner", _args, scalac.classLoader(classLoaderCache)
+ "scala.tools.nsc.MainGenericRunner", _args, scalac.classLoader
)
}
def cbtEarlyDependencies = {
diff --git a/stage2/plugins/Dotty.scala b/stage2/plugins/Dotty.scala
index 5481fa6..9de2218 100644
--- a/stage2/plugins/Dotty.scala
+++ b/stage2/plugins/Dotty.scala
@@ -16,8 +16,7 @@ trait Dotty extends BaseBuild{
override def dependencies: Seq[Dependency] = Seq( dottyLibrary )
private lazy val dottyLib = new DottyLib(
- logger, context.cbtLastModified, context.paths.mavenCache,
- context.classLoaderCache, dottyCompiler
+ logger, context.cbtLastModified, context.paths.mavenCache, dottyCompiler
)
def compileJavaFirst: Boolean = false
@@ -37,7 +36,7 @@ trait Dotty extends BaseBuild{
context.cbtLastModified,
sourceFiles.filter(_.string.endsWith(".java")),
compileTarget, compileStatusFile, compileDependencies, context.paths.mavenCache,
- scalacOptions, zincVersion = zincVersion, classLoaderCache = classLoaderCache, scalaVersion = scalaVersion
+ scalacOptions, zincVersion = zincVersion, scalaVersion = scalaVersion
)
def set(time: Long) = if(compileStatusFile.exists) Files.setLastModifiedTime(compileStatusFile.toPath, FileTime.fromMillis(time) )
@@ -73,9 +72,8 @@ class DottyLib(
logger: Logger,
cbtLastModified: Long,
mavenCache: File,
- classLoaderCache: ClassLoaderCache,
- dependency: DependencyImplementation
-)(implicit transientCache: java.util.Map[AnyRef,AnyRef]){
+ dottyCompiler: DependencyImplementation
+)(implicit transientCache: java.util.Map[AnyRef,AnyRef], classLoaderCache: ClassLoaderCache){
val lib = new Lib(logger)
import lib._
@@ -85,11 +83,11 @@ class DottyLib(
"dotty.tools.dotc.repl.Main",
Seq(
"-bootclasspath",
- dependency.classpath.string,
+ dottyCompiler.classpath.string,
"-classpath",
classpath.string
) ++ args,
- dependency.classLoader(classLoaderCache)
+ dottyCompiler.classLoader
)
}
@@ -105,7 +103,7 @@ class DottyLib(
docTarget.mkdirs
val args = Seq(
// FIXME: can we use compiler dependency here?
- "-bootclasspath", dependency.classpath.string, // FIXME: does this break for builds that don't have scalac dependencies?
+ "-bootclasspath", dottyCompiler.classpath.string, // FIXME: does this break for builds that don't have scalac dependencies?
"-classpath", dependencyClasspath.string, // FIXME: does this break for builds that don't have scalac dependencies?
"-d", docTarget.toString
) ++ compileArgs ++ sourceFiles.map(_.toString)
@@ -114,7 +112,7 @@ class DottyLib(
runMain(
"dotty.tools.dottydoc.DocDriver",
args,
- dependency.classLoader(classLoaderCache),
+ dottyCompiler.classLoader,
fakeInstance = true // this is a hack as Dottydoc's main method is not static
)
}
@@ -147,7 +145,8 @@ class DottyLib(
"-d", compileTarget.toString
)
val singleArgs = dottyOptions.map( "-S" ++ _ )
- val cl = dependency.classLoader(classLoaderCache)
+ val urls = dottyCompiler.classpath.strings.map("file://"+_).map(new java.net.URL(_))
+ val cl = new java.net.URLClassLoader( urls.to )
val code =
try{
System.err.println("Compiling with Dotty to " ++ compileTarget.toString)
@@ -156,7 +155,7 @@ class DottyLib(
lib.runMain(
_class,
dualArgs ++ singleArgs ++ Seq(
- "-bootclasspath", dependency.classpath.string
+ "-bootclasspath", dottyCompiler.classpath.string
) ++ (
if(cp.isEmpty) Nil else Seq("-classpath", cp) // let's put cp last. It so long
) ++ sourceFiles.map(_.toString),
@@ -169,7 +168,7 @@ class DottyLib(
System.err.println(cl)
System.out.println(s"""
java -cp \\
-${dependency.classpath.strings.mkString(":\\\n")} \\
+${dottyCompiler.classpath.strings.mkString(":\\\n")} \\
\\
${_class} \\
\\
@@ -178,7 +177,7 @@ ${dualArgs.grouped(2).map(_.mkString(" ")).mkString(" \\\n")} \\
${singleArgs.mkString(" \\\n")} \\
\\
-bootclasspath \\
-${dependency.classpath.strings.mkString(":\\\n")} \\
+${dottyCompiler.classpath.strings.mkString(":\\\n")} \\
${if(cp.isEmpty) "" else (" -classpath \\\n" ++ classpath.strings.mkString(":\\\n"))} \\
\\
${sourceFiles.sorted.mkString(" \\\n")}
diff --git a/stage2/plugins/Frege.scala b/stage2/plugins/Frege.scala
index b5a4dd0..ae82f6b 100644
--- a/stage2/plugins/Frege.scala
+++ b/stage2/plugins/Frege.scala
@@ -21,7 +21,7 @@ trait Frege extends BaseBuild{
private lazy val fregeLib = new FregeLib(
logger, context.cbtLastModified, context.paths.mavenCache,
- context.classLoaderCache, fregeVersion = fregeVersion, classifier = classifier,
+ fregeVersion = fregeVersion, classifier = classifier,
fregeDependencies = fregeDependencies, fregeTarget = fregeTarget
)
@@ -43,12 +43,11 @@ class FregeLib(
logger: Logger,
cbtLastModified: Long,
mavenCache: File,
- classLoaderCache: ClassLoaderCache,
fregeVersion: String,
classifier: Option[String],
fregeDependencies: Seq[Dependency],
fregeTarget: String
-)(implicit transientCache: java.util.Map[AnyRef,AnyRef]){
+)(implicit transientCache: java.util.Map[AnyRef,AnyRef], classLoaderCache: ClassLoaderCache){
val lib = new Lib(logger)
import lib._
@@ -63,7 +62,7 @@ class FregeLib(
statusFile: File,
dependencies: Seq[Dependency],
fregeOptions: Seq[String]
- ): Option[Long] = {
+ )(implicit classLoaderCache: ClassLoaderCache): Option[Long] = {
val d = Dependencies(dependencies)
val classpath = d.classpath
val cp = classpath.string
@@ -93,7 +92,7 @@ class FregeLib(
lib.runMain(
_class,
dualArgs ++ singleArgs ++ sourceFiles.map(_.toString),
- fregeDependency.classLoader(classLoaderCache)
+ fregeDependency.classLoader
)
}
} catch {