aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-03-29 09:04:19 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2017-04-01 23:36:33 -0400
commit5553c92eec89fa06c6eaa61645b2c9cb8332f404 (patch)
tree960336e7023745fea672839cefd900d914618eba
parentf570ad5ac5461acb7dc07a3a8654fdd54e645bb3 (diff)
downloadcbt-5553c92eec89fa06c6eaa61645b2c9cb8332f404.tar.gz
cbt-5553c92eec89fa06c6eaa61645b2c9cb8332f404.tar.bz2
cbt-5553c92eec89fa06c6eaa61645b2c9cb8332f404.zip
centralize all references to scala versions into single place
-rw-r--r--nailgun_launcher/EarlyDependencies.java68
-rw-r--r--nailgun_launcher/Stage0Lib.java10
-rw-r--r--stage1/constants.scala6
-rw-r--r--stage2/ToolsTasks.scala49
4 files changed, 83 insertions, 50 deletions
diff --git a/nailgun_launcher/EarlyDependencies.java b/nailgun_launcher/EarlyDependencies.java
index 6683393..5725e3a 100644
--- a/nailgun_launcher/EarlyDependencies.java
+++ b/nailgun_launcher/EarlyDependencies.java
@@ -8,7 +8,11 @@ import java.util.*;
import static cbt.Stage0Lib.*;
import static cbt.NailgunLauncher.*;
-class EarlyDependencies{
+public class EarlyDependencies{
+
+ public static String scalaVersion = "2.11.8";
+ public static String scalaXmlVersion = "1.0.6";
+ public static String zincVersion = "0.3.13";
/** ClassLoader for stage1 */
ClassLoader classLoader;
@@ -16,32 +20,26 @@ class EarlyDependencies{
/** ClassLoader for zinc */
ClassLoader zinc;
- String scalaReflect_2_11_8_File;
- String scalaCompiler_2_11_8_File;
- String scalaXml_1_0_5_File;
- String scalaLibrary_2_11_8_File;
- String zinc_0_3_13_File;
- String incrementalCompiler_0_13_13_File;
- String compilerInterface_0_13_13_File;
- String scalaCompiler_2_10_6_File;
- String sbtInterface_0_13_13_File;
- String scalaReflect_2_10_6_File;
- String scalaLibrary_2_10_6_File;
+ String scalaCompiler_File;
+ String scalaLibrary_File;
+ String scalaReflect_File;
+ String sbtInterface_File;
+ String compilerInterface_File;
public EarlyDependencies(
String mavenCache, String mavenUrl, ClassLoaderCache classLoaderCache, ClassLoader rootClassLoader
) throws Throwable {
- scalaReflect_2_11_8_File = mavenCache + "/org/scala-lang/scala-reflect/2.11.8/scala-reflect-2.11.8.jar";
- scalaCompiler_2_11_8_File = mavenCache + "/org/scala-lang/scala-compiler/2.11.8/scala-compiler-2.11.8.jar";
- scalaXml_1_0_5_File = mavenCache + "/org/scala-lang/modules/scala-xml_2.11/1.0.5/scala-xml_2.11-1.0.5.jar";
- scalaLibrary_2_11_8_File = mavenCache + "/org/scala-lang/scala-library/2.11.8/scala-library-2.11.8.jar";
- zinc_0_3_13_File = mavenCache + "/com/typesafe/zinc/zinc/0.3.13/zinc-0.3.13.jar";
- incrementalCompiler_0_13_13_File = mavenCache + "/com/typesafe/sbt/incremental-compiler/0.13.13/incremental-compiler-0.13.13.jar";
- compilerInterface_0_13_13_File = mavenCache + "/com/typesafe/sbt/compiler-interface/0.13.13/compiler-interface-0.13.13-sources.jar";
- scalaCompiler_2_10_6_File = mavenCache + "/org/scala-lang/scala-compiler/2.10.6/scala-compiler-2.10.6.jar";
- sbtInterface_0_13_13_File = mavenCache + "/com/typesafe/sbt/sbt-interface/0.13.13/sbt-interface-0.13.13.jar";
- scalaReflect_2_10_6_File = mavenCache + "/org/scala-lang/scala-reflect/2.10.6/scala-reflect-2.10.6.jar";
- scalaLibrary_2_10_6_File = mavenCache + "/org/scala-lang/scala-library/2.10.6/scala-library-2.10.6.jar";
+ String scalaReflect_2_11_8_File = mavenCache + "/org/scala-lang/scala-reflect/2.11.8/scala-reflect-2.11.8.jar";
+ String scalaCompiler_2_11_8_File = mavenCache + "/org/scala-lang/scala-compiler/2.11.8/scala-compiler-2.11.8.jar";
+ String scalaXml_1_0_6_File = mavenCache + "/org/scala-lang/modules/scala-xml_2.11/1.0.6/scala-xml_2.11-1.0.6.jar";
+ String scalaLibrary_2_11_8_File = mavenCache + "/org/scala-lang/scala-library/2.11.8/scala-library-2.11.8.jar";
+ String zinc_0_3_13_File = mavenCache + "/com/typesafe/zinc/zinc/0.3.13/zinc-0.3.13.jar";
+ String incrementalCompiler_0_13_13_File = mavenCache + "/com/typesafe/sbt/incremental-compiler/0.13.13/incremental-compiler-0.13.13.jar";
+ String compilerInterface_0_13_13_File = mavenCache + "/com/typesafe/sbt/compiler-interface/0.13.13/compiler-interface-0.13.13-sources.jar";
+ String scalaCompiler_2_10_6_File = mavenCache + "/org/scala-lang/scala-compiler/2.10.6/scala-compiler-2.10.6.jar";
+ String sbtInterface_0_13_13_File = mavenCache + "/com/typesafe/sbt/sbt-interface/0.13.13/sbt-interface-0.13.13.jar";
+ String scalaReflect_2_10_6_File = mavenCache + "/org/scala-lang/scala-reflect/2.10.6/scala-reflect-2.10.6.jar";
+ String scalaLibrary_2_10_6_File = mavenCache + "/org/scala-lang/scala-library/2.10.6/scala-library-2.10.6.jar";
download(new URL(mavenUrl + "/org/scala-lang/scala-reflect/2.11.8/scala-reflect-2.11.8.jar"), Paths.get(scalaReflect_2_11_8_File), "b74530deeba742ab4f3134de0c2da0edc49ca361");
download(new URL(mavenUrl + "/org/scala-lang/scala-compiler/2.11.8/scala-compiler-2.11.8.jar"), Paths.get(scalaCompiler_2_11_8_File), "fe1285c9f7b58954c5ef6d80b59063569c065e9a");
@@ -134,20 +132,26 @@ class EarlyDependencies{
scalaLibrary_2_11_8_ClasspathArray
);
- // org.scala-lang.modules:scala-xml_2.11:1.0.5
- String[] scalaXml_1_0_5_ClasspathArray = new String[]{scalaXml_1_0_5_File, scalaLibrary_2_11_8_File};
- ClassLoader scalaXml_1_0_5_ = loadDependency(
- mavenUrl + "/org/scala-lang/modules/scala-xml_2.11/1.0.5/scala-xml_2.11-1.0.5.jar",
- scalaXml_1_0_5_File,
- "77ac9be4033768cf03cc04fbd1fc5e5711de2459",
+ // org.scala-lang.modules:scala-xml_2.11:1.0.6
+ String[] scalaXml_1_0_6_ClasspathArray = new String[]{scalaXml_1_0_6_File, scalaLibrary_2_11_8_File};
+ ClassLoader scalaXml_1_0_6_ = loadDependency(
+ mavenUrl + "/org/scala-lang/modules/scala-xml_2.11/1.0.6/scala-xml_2.11-1.0.6.jar",
+ scalaXml_1_0_6_File,
+ "4ebd108453e6455351c0ec50d32509ae1154fdb1",
classLoaderCache,
scalaLibrary_2_11_8_,
- scalaXml_1_0_5_ClasspathArray
+ scalaXml_1_0_6_ClasspathArray
);
- classLoader = scalaXml_1_0_5_;
- classpathArray = scalaXml_1_0_5_ClasspathArray;
+ classLoader = scalaXml_1_0_6_;
+ classpathArray = scalaXml_1_0_6_ClasspathArray;
zinc = zinc_0_3_13_;
+
+ scalaCompiler_File = scalaCompiler_2_11_8_File;
+ scalaLibrary_File = scalaLibrary_2_11_8_File;
+ scalaReflect_File = scalaReflect_2_11_8_File;
+ sbtInterface_File = sbtInterface_0_13_13_File;
+ compilerInterface_File = compilerInterface_0_13_13_File;
}
}
diff --git a/nailgun_launcher/Stage0Lib.java b/nailgun_launcher/Stage0Lib.java
index 34af7b0..456e9d1 100644
--- a/nailgun_launcher/Stage0Lib.java
+++ b/nailgun_launcher/Stage0Lib.java
@@ -102,11 +102,11 @@ public class Stage0Lib{
List<String> zincArgs = new ArrayList<String>(
Arrays.asList(
new String[]{
- "-scala-compiler", earlyDeps.scalaCompiler_2_11_8_File,
- "-scala-library", earlyDeps.scalaLibrary_2_11_8_File,
- "-scala-extra", earlyDeps.scalaReflect_2_11_8_File,
- "-sbt-interface", earlyDeps.sbtInterface_0_13_13_File,
- "-compiler-interface", earlyDeps.compilerInterface_0_13_13_File,
+ "-scala-compiler", earlyDeps.scalaCompiler_File,
+ "-scala-library", earlyDeps.scalaLibrary_File,
+ "-scala-extra", earlyDeps.scalaReflect_File,
+ "-sbt-interface", earlyDeps.sbtInterface_File,
+ "-compiler-interface", earlyDeps.compilerInterface_File,
"-cp", classpath,
"-d", target,
"-S-deprecation",
diff --git a/stage1/constants.scala b/stage1/constants.scala
index ebc892c..d87fb64 100644
--- a/stage1/constants.scala
+++ b/stage1/constants.scala
@@ -1,7 +1,7 @@
package cbt
object constants{
- val scalaXmlVersion = "1.0.5"
- val scalaVersion = "2.11.8"
- val zincVersion = "0.3.13"
+ val scalaXmlVersion = EarlyDependencies.scalaXmlVersion
+ val scalaVersion = EarlyDependencies.scalaVersion
+ val zincVersion = EarlyDependencies.zincVersion
val scalaMajorVersion = scalaVersion.split("\\.").take(2).mkString(".")
}
diff --git a/stage2/ToolsTasks.scala b/stage2/ToolsTasks.scala
index 15052ae..a55bc7f 100644
--- a/stage2/ToolsTasks.scala
+++ b/stage2/ToolsTasks.scala
@@ -51,7 +51,7 @@ class ToolsTasks(
val version = args.lift(1).getOrElse(constants.scalaVersion)
val ammonite = Resolver(mavenCentral).bindOne(
MavenDependency(
- "com.lihaoyi","ammonite-repl_2.11.8",args.lift(1).getOrElse("0.5.8")
+ "com.lihaoyi","ammonite-repl_"++constants.scalaVersion,args.lift(1).getOrElse("0.5.8")
)
)
// FIXME: this does not work quite yet, throws NoSuchFileException: /ammonite/repl/frontend/ReplBridge$.class
@@ -76,7 +76,7 @@ class ToolsTasks(
Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)),
Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion))
)
-
+
val scalaXml = Dependencies(
Resolver(mavenCentral).bind(
MavenDependency("org.scala-lang.modules","scala-xml_"+scalaMajorVersion,scalaXmlVersion),
@@ -85,6 +85,17 @@ class ToolsTasks(
)
val zinc = Resolver(mavenCentral).bindOne(MavenDependency("com.typesafe.zinc","zinc",zincVersion))
+ val sbtVersion =
+ zinc.dependencies
+ .collect{ case d @
+ BoundMavenDependency(
+ _, _, MavenDependency( "com.typesafe.sbt", "compiler-interface", _, Classifier.sources, _), _, _
+ ) => d
+ }
+ .headOption
+ .getOrElse( throw new Exception(s"cannot find compiler-interface in zinc $zincVersion dependencies: "++zinc.dependencies.toString) )
+ .mavenDependency
+ .version
def valName(dep: BoundMavenDependency) = {
val words = dep.artifactId.split("_").head.split("-")
@@ -93,7 +104,7 @@ class ToolsTasks(
def jarVal(dep: BoundMavenDependency) = "_" + valName(dep) +"Jar"
def transitive(dep: Dependency) = (dep +: lib.transitiveDependencies(dep).reverse).collect{case d: BoundMavenDependency => d}
- def codeEach(dep: Dependency) = {
+ def codeEach(dep: Dependency) = {
transitive(dep).tails.map(_.reverse).toVector.reverse.drop(1).map{
deps =>
val d = deps.last
@@ -115,6 +126,10 @@ class ToolsTasks(
}
val assignments = codeEach(zinc) ++ codeEach(scalaXml)
val files = scalaDeps ++ transitive(scalaXml) ++ transitive(zinc)
+ val _scalaVersion = scalaVersion.replace(".","_")
+ val _scalaXmlVersion = scalaXmlVersion.replace(".","_")
+ val _zincVersion = zincVersion.replace(".","_")
+ val _sbtVersion = sbtVersion.replace(".","_")
//{ case (name, dep) => s"$name =\n ${tree(dep, 4)};" }.mkString("\n\n ")
val code = s"""// This file was auto-generated using `cbt tools cbtEarlyDependencies`
package cbt;
@@ -126,7 +141,11 @@ import java.util.*;
import static cbt.Stage0Lib.*;
import static cbt.NailgunLauncher.*;
-class EarlyDependencies{
+public class EarlyDependencies{
+
+ public static String scalaVersion = "$scalaVersion";
+ public static String scalaXmlVersion = "$scalaXmlVersion";
+ public static String zincVersion = "$zincVersion";
/** ClassLoader for stage1 */
ClassLoader classLoader;
@@ -134,25 +153,35 @@ class EarlyDependencies{
/** ClassLoader for zinc */
ClassLoader zinc;
-${files.map(d => s""" String ${valName(d)}File;""").mkString("\n")}
+ String scalaCompiler_File;
+ String scalaLibrary_File;
+ String scalaReflect_File;
+ String sbtInterface_File;
+ String compilerInterface_File;
public EarlyDependencies(
String mavenCache, String mavenUrl, ClassLoaderCache classLoaderCache, ClassLoader rootClassLoader
) throws Throwable {
-${files.map(d => s""" ${valName(d)}File = mavenCache + "${d.basePath(true)}.jar";""").mkString("\n")}
+${files.map(d => s""" String ${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;
+ classLoader = scalaXml_${_scalaXmlVersion}_;
+ classpathArray = scalaXml_${_scalaXmlVersion}_ClasspathArray;
+
+ zinc = zinc_${_zincVersion}_;
- zinc = zinc_${zincVersion.replace(".","_")}_;
+ scalaCompiler_File = scalaCompiler_${_scalaVersion}_File;
+ scalaLibrary_File = scalaLibrary_${_scalaVersion}_File;
+ scalaReflect_File = scalaReflect_${_scalaVersion}_File;
+ sbtInterface_File = sbtInterface_${_sbtVersion}_File;
+ compilerInterface_File = compilerInterface_${_sbtVersion}_File;
}
}
"""
val file = nailgun ++ ("/" ++ "EarlyDependencies.java")
- lib.write( file, code )
+ lib.writeIfChanged( file, code )
println( Console.GREEN ++ "Wrote " ++ file.string ++ Console.RESET )
}
}