aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2016-11-10 00:13:56 -0500
committerGitHub <noreply@github.com>2016-11-10 00:13:56 -0500
commit11d01cbd4900ebdddff585f0f6bbae24eb3ed012 (patch)
treee24cac47045421a29293c18c31cfecd0b515e1ac /stage1
parent9f17b211154bdd9f0a0fe1ca0125287641ad602c (diff)
parentba189b841194f1eb5f755b7af4efe550d8abf9e5 (diff)
downloadcbt-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.scala2
-rw-r--r--stage1/Stage1.scala4
-rw-r--r--stage1/cbt.scala4
-rw-r--r--stage1/constants.scala2
-rw-r--r--stage1/logger.scala2
-rw-r--r--stage1/resolver.scala13
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)