diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-15 21:39:55 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-20 20:35:26 -0400 |
commit | eaa4889b40bfe1fcab5f88d87b5208632d736444 (patch) | |
tree | d9032630e4aba1cc59982d2b50950f11a330eea9 /stage1 | |
parent | c359862021c187e680c9b3f687ab149f7ef6b7b0 (diff) | |
download | cbt-eaa4889b40bfe1fcab5f88d87b5208632d736444.tar.gz cbt-eaa4889b40bfe1fcab5f88d87b5208632d736444.tar.bz2 cbt-eaa4889b40bfe1fcab5f88d87b5208632d736444.zip |
better handle classloaders for watchservice and reflect. even more speedup.
Diffstat (limited to 'stage1')
-rw-r--r-- | stage1/Stage1.scala | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/stage1/Stage1.scala b/stage1/Stage1.scala index b1017f7..69fc372 100644 --- a/stage1/Stage1.scala +++ b/stage1/Stage1.scala @@ -37,7 +37,7 @@ object Stage1{ a.lastModified > b.lastModified } - def main(args: Array[String]): Unit = { + def main(args: Array[String], classLoader: ClassLoader): Unit = { val mainClass = if(args contains "admin") "cbt.AdminStage2" else "cbt.Stage2" val init = new Init(args) val lib = new Stage1Lib(init.logger) @@ -53,18 +53,39 @@ object Stage1{ val classLoaderCache = new ClassLoaderCache(logger) + val deps = ClassPath.flatten( + Seq( + JavaDependency("net.incongru.watchservice","barbary-watchservice","1.0"), + JavaDependency("org.scala-lang","scala-reflect",constants.scalaVersion), + ScalaDependency( + "org.scala-lang.modules", "scala-xml", "1.0.5", scalaVersion=constants.scalaMajorVersion + ), + JavaDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r") + ).map(_.classpath) + ) + logger.stage1("before conditionally running zinc to recompile CBT") if( src.exists(newerThan(_, changeIndicator)) ) { - val stage1Classpath = CbtDependency()(logger).dependencyClasspath - logger.stage1("cbt.lib has changed. Recompiling with cp: " ++ stage1Classpath.string) - zinc( true, src, stage2Target, stage1Classpath, classLoaderCache, Seq("-deprecation") )( zincVersion = "0.3.9", scalaVersion = constants.scalaVersion ) + logger.stage1("cbt.lib has changed. Recompiling.") + zinc( true, src, stage2Target, nailgunTarget +: stage1Target +: deps, classLoaderCache, Seq("-deprecation") )( zincVersion = "0.3.9", scalaVersion = constants.scalaVersion ) } logger.stage1(s"[$now] calling CbtDependency.classLoader") + val cp = stage2Target + val cl = classLoaderCache.transient.get( + (stage2Target +: deps).string, + cbt.URLClassLoader( + ClassPath(Seq(stage2Target)), + classLoaderCache.persistent.get( + deps.string, + cbt.URLClassLoader( deps, classLoader ) + ) + ) + ) logger.stage1(s"[$now] Run Stage2") val ExitCode(exitCode) = /*trapExitCode*/{ // this - runMain( mainClass, cwd +: args.drop(1).toVector, CbtDependency()(logger).classLoader(classLoaderCache) ) + runMain( mainClass, cwd +: args.drop(1).toVector, cl ) } logger.stage1(s"[$now] Stage1 end") System.exit(exitCode) |