aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-03-15 21:39:55 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2016-03-20 20:35:26 -0400
commiteaa4889b40bfe1fcab5f88d87b5208632d736444 (patch)
treed9032630e4aba1cc59982d2b50950f11a330eea9 /stage1
parentc359862021c187e680c9b3f687ab149f7ef6b7b0 (diff)
downloadcbt-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.scala31
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)