diff options
Diffstat (limited to 'stage1/resolver.scala')
-rw-r--r-- | stage1/resolver.scala | 13 |
1 files changed, 10 insertions, 3 deletions
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) |