diff options
Diffstat (limited to 'stage2')
-rw-r--r-- | stage2/BasicBuild.scala | 11 | ||||
-rw-r--r-- | stage2/BuildBuild.scala | 4 | ||||
-rw-r--r-- | stage2/BuildDependency.scala | 1 | ||||
-rw-r--r-- | stage2/GitDependency.scala | 1 | ||||
-rw-r--r-- | stage2/Lib.scala | 5 | ||||
-rw-r--r-- | stage2/PackageJars.scala | 2 | ||||
-rw-r--r-- | stage2/ToolsStage2.scala | 2 | ||||
-rw-r--r-- | stage2/ToolsTasks.scala | 9 | ||||
-rw-r--r-- | stage2/plugins/Dotty.scala | 27 | ||||
-rw-r--r-- | stage2/plugins/Frege.scala | 9 |
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 { |