diff options
author | Jan Christopher Vogt <oss.nsp@cvogt.org> | 2016-11-10 00:13:56 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-10 00:13:56 -0500 |
commit | 11d01cbd4900ebdddff585f0f6bbae24eb3ed012 (patch) | |
tree | e24cac47045421a29293c18c31cfecd0b515e1ac /stage1 | |
parent | 9f17b211154bdd9f0a0fe1ca0125287641ad602c (diff) | |
parent | ba189b841194f1eb5f755b7af4efe550d8abf9e5 (diff) | |
download | cbt-11d01cbd4900ebdddff585f0f6bbae24eb3ed012.tar.gz cbt-11d01cbd4900ebdddff585f0f6bbae24eb3ed012.tar.bz2 cbt-11d01cbd4900ebdddff585f0f6bbae24eb3ed012.zip |
Merge pull request #300 from cvogt/dynamic-overrides
Dynamic overrides
Diffstat (limited to 'stage1')
-rw-r--r-- | stage1/ContextImplementation.scala | 2 | ||||
-rw-r--r-- | stage1/Stage1.scala | 4 | ||||
-rw-r--r-- | stage1/cbt.scala | 4 | ||||
-rw-r--r-- | stage1/constants.scala | 2 | ||||
-rw-r--r-- | stage1/logger.scala | 2 | ||||
-rw-r--r-- | stage1/resolver.scala | 13 |
6 files changed, 17 insertions, 10 deletions
diff --git a/stage1/ContextImplementation.scala b/stage1/ContextImplementation.scala index 91c54f4..152e606 100644 --- a/stage1/ContextImplementation.scala +++ b/stage1/ContextImplementation.scala @@ -10,10 +10,10 @@ case class ContextImplementation( enabledLoggersArray: Array[String], startCompat: Long, cbtHasChangedCompat: Boolean, - versionOrNull: String, scalaVersionOrNull: String, permanentKeys: ConcurrentHashMap[String,AnyRef], permanentClassLoaders: ConcurrentHashMap[AnyRef,ClassLoader], + taskCache: ConcurrentHashMap[AnyRef,AnyRef], cache: File, cbtHome: File, cbtRootHome: File, diff --git a/stage1/Stage1.scala b/stage1/Stage1.scala index c94d1a4..79bf1d5 100644 --- a/stage1/Stage1.scala +++ b/stage1/Stage1.scala @@ -105,7 +105,7 @@ object Stage1{ cbtDependency.dependencyClasspath, mavenCache, Seq("-deprecation","-feature","-unchecked"), classLoaderCache, - zincVersion = "0.3.9", scalaVersion = constants.scalaVersion + zincVersion = constants.zincVersion, scalaVersion = constants.scalaVersion ) logger.stage1(s"calling CbtDependency.classLoader") @@ -165,7 +165,7 @@ object Stage1{ val stage2Args = Stage2Args( new File( args.args(0) ), - args.args.drop(1).toVector, + args.args.drop(1).dropWhile(_ == "direct").toVector, // launcher changes cause entire nailgun restart, so no need for them here cbtHasChanged = cbtHasChanged, classLoaderCache = classLoaderCache, diff --git a/stage1/cbt.scala b/stage1/cbt.scala index 7a239a1..c08a5f3 100644 --- a/stage1/cbt.scala +++ b/stage1/cbt.scala @@ -62,7 +62,6 @@ object `package`{ def args: Seq[String] = argsArray.to def enabledLoggers: Set[String] = enabledLoggersArray.to def scalaVersion = Option(scalaVersionOrNull) - def version = Option(versionOrNull) def parentBuild = Option(parentBuildOrNull) def start: scala.Long = startCompat def cbtHasChanged: scala.Boolean = cbtHasChangedCompat @@ -72,7 +71,6 @@ object `package`{ args: Seq[String] = args, enabledLoggers: Set[String] = enabledLoggers, cbtHasChanged: Boolean = cbtHasChanged, - version: Option[String] = version, scalaVersion: Option[String] = scalaVersion, cache: File = cache, cbtHome: File = cbtHome, @@ -84,10 +82,10 @@ object `package`{ enabledLoggers.to, startCompat, cbtHasChangedCompat, - version.getOrElse(null), scalaVersion.getOrElse(null), permanentKeys, permanentClassLoaders, + taskCache, cache, cbtHome, cbtRootHome, diff --git a/stage1/constants.scala b/stage1/constants.scala index 437cf19..f0414bc 100644 --- a/stage1/constants.scala +++ b/stage1/constants.scala @@ -2,6 +2,6 @@ package cbt object constants{ val scalaXmlVersion = "1.0.5" val scalaVersion = "2.11.8" - val zincVersion = "0.3.9" + val zincVersion = "0.3.12" val scalaMajorVersion = scalaVersion.split("\\.").take(2).mkString(".") } diff --git a/stage1/logger.scala b/stage1/logger.scala index 57f0cfa..effdc35 100644 --- a/stage1/logger.scala +++ b/stage1/logger.scala @@ -40,6 +40,7 @@ case class Logger(enabledLoggers: Set[String], start: Long) { final def test(msg: => String) = log(names.test, msg) final def git(msg: => String) = log(names.git, msg) final def pom(msg: => String) = log(names.pom, msg) + final def dynamic(msg: => String) = log(names.dynamic, msg) private object names{ val stage1 = "stage1" @@ -52,6 +53,7 @@ case class Logger(enabledLoggers: Set[String], start: Long) { val test = "test" val pom = "pom" val git = "git" + val dynamic = "dynamic" } private def logUnguarded(name: String, msg: => String) = { diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 13e8e52..e45237d 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -11,6 +11,13 @@ trait DependencyImplementation extends Dependency{ implicit protected def logger: Logger protected def lib = new Stage1Lib(logger) + /** + CAREFUL: this is never allowed to return true for the same dependency more than + once in a single cbt run. Otherwise we can end up with multiple classloaders + for the same classes since classLoaderRecursion recreates the classLoader when it + sees this flag and it can be called multiple times. Maybe we can find a safer + solution than this current state. + */ def needsUpdate: Boolean //def cacheClassLoader: Boolean = false private[cbt] def targetClasspath: ClassPath @@ -137,7 +144,7 @@ case class Dependencies( dependencies: Seq[Dependency] )(implicit val logger: Lo } case class Stage1Dependency(cbtHasChanged: Boolean, mavenCache: File, nailgunTarget: File, stage1Target: File, compatibilityTarget: File)(implicit val logger: Logger) extends DependencyImplementation{ - override def needsUpdate = cbtHasChanged + override def needsUpdate = false override def targetClasspath = exportedClasspath override def exportedClasspath = ClassPath( Seq(nailgunTarget, stage1Target) ) val compatibilityDependency = CompatibilityDependency(cbtHasChanged, compatibilityTarget) @@ -150,13 +157,13 @@ case class Stage1Dependency(cbtHasChanged: Boolean, mavenCache: File, nailgunTar ) } case class CompatibilityDependency(cbtHasChanged: Boolean, compatibilityTarget: File)(implicit val logger: Logger) extends DependencyImplementation{ - override def needsUpdate = cbtHasChanged + override def needsUpdate = false override def targetClasspath = exportedClasspath override def exportedClasspath = ClassPath( Seq(compatibilityTarget) ) override def dependencies = Seq() } case class CbtDependency(cbtHasChanged: Boolean, mavenCache: File, nailgunTarget: File, stage1Target: File, stage2Target: File, compatibilityTarget: File)(implicit val logger: Logger) extends DependencyImplementation{ - override def needsUpdate = cbtHasChanged + override def needsUpdate = false override def targetClasspath = exportedClasspath override def exportedClasspath = ClassPath( Seq( stage2Target ) ) val stage1Dependency = Stage1Dependency(cbtHasChanged, mavenCache, nailgunTarget, stage1Target, compatibilityTarget) |