diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-09 21:20:11 -0500 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-09 22:43:00 -0500 |
commit | e8673866b79f7473391dcee26243eee80d5d3cb6 (patch) | |
tree | 16146affeebdb58cd302a1f8527220c906818c96 /stage2/ToolsTasks.scala | |
parent | bee13ba7a4458482ce00a5c6bae4cd64328c4e5e (diff) | |
download | cbt-e8673866b79f7473391dcee26243eee80d5d3cb6.tar.gz cbt-e8673866b79f7473391dcee26243eee80d5d3cb6.tar.bz2 cbt-e8673866b79f7473391dcee26243eee80d5d3cb6.zip |
idempotent change propagation
using lastModified instead of a non-idempotent needsUpdate flag
this fixes a bug where dependees would not be rebuilt if cbt exited
or was killed after dependencies were already rebuilt.
Diffstat (limited to 'stage2/ToolsTasks.scala')
-rw-r--r-- | stage2/ToolsTasks.scala | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/stage2/ToolsTasks.scala b/stage2/ToolsTasks.scala index 839780a..6acf72c 100644 --- a/stage2/ToolsTasks.scala +++ b/stage2/ToolsTasks.scala @@ -9,11 +9,11 @@ class ToolsTasks( classLoaderCache: ClassLoaderCache, cache: File, cbtHome: File, - cbtHasChanged: Boolean + cbtLastModified: Long ){ private val paths = CbtPaths(cbtHome, cache) import paths._ - private def Resolver( urls: URL* ) = MavenResolver(cbtHasChanged,mavenCache,urls: _*) + private def Resolver( urls: URL* ) = MavenResolver(cbtLastModified,mavenCache,urls: _*) implicit val logger: Logger = lib.logger implicit val transientCache: java.util.Map[AnyRef,AnyRef] = new java.util.HashMap def createMain: Unit = lib.createMain( cwd ) @@ -56,7 +56,7 @@ class ToolsTasks( } def scala = { val version = args.lift(1).getOrElse(constants.scalaVersion) - val scalac = new ScalaCompilerDependency( cbtHasChanged, mavenCache, version ) + val scalac = new ScalaCompilerDependency( cbtLastModified, mavenCache, version ) val _args = Seq("-cp", scalac.classpath.string) ++ args.drop(2) lib.runMain( "scala.tools.nsc.MainGenericRunner", _args, scalac.classLoader(classLoaderCache) @@ -97,14 +97,15 @@ class ToolsTasks( val n = valName(d) s""" // ${d.groupId}:${d.artifactId}:${d.version} - download(new URL(mavenUrl + "${d.basePath(true)}.jar"), Paths.get(${n}File), "${d.jarSha1}"); - String[] ${n}ClasspathArray = new String[]{${deps.sortBy(_.jar).map(valName(_)+"File").mkString(", ")}}; - String ${n}Classpath = classpath( ${n}ClasspathArray ); - ClassLoader $n = - classLoaderCache.contains( ${n}Classpath ) - ? classLoaderCache.get( ${n}Classpath ) - : classLoaderCache.put( classLoader( ${n}File, $parentString ), ${n}Classpath );""" + ClassLoader $n = loadDependency( + mavenUrl + "${d.basePath(true)}.jar", + ${n}File, + "${d.jarSha1}", + classLoaderCache, + $parentString, + ${n}ClasspathArray + );""" } } val assignments = codeEach(zinc) ++ codeEach(scalaXml) @@ -116,6 +117,7 @@ import java.io.*; import java.nio.file.*; import java.net.*; import java.security.*; +import java.util.*; import static cbt.Stage0Lib.*; import static cbt.NailgunLauncher.*; @@ -130,13 +132,13 @@ class EarlyDependencies{ ${files.map(d => s""" String ${valName(d)}File;""").mkString("\n")} public EarlyDependencies( - String mavenCache, String mavenUrl, JavaCache<ClassLoader> classLoaderCache, ClassLoader rootClassLoader + String mavenCache, String mavenUrl, ClassLoaderCache classLoaderCache, ClassLoader rootClassLoader ) throws Throwable { ${files.map(d => s""" ${valName(d)}File = mavenCache + "${d.basePath(true)}.jar";""").mkString("\n")} ${scalaDeps.map(d => s""" download(new URL(mavenUrl + "${d.basePath(true)}.jar"), Paths.get(${valName(d)}File), "${d.jarSha1}");""").mkString("\n")} ${assignments.mkString("\n")} - + classLoader = scalaXml_${scalaXmlVersion.replace(".","_")}_; classpathArray = scalaXml_${scalaXmlVersion.replace(".","_")}_ClasspathArray; |