aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2017-04-02 03:21:42 -0400
committerGitHub <noreply@github.com>2017-04-02 03:21:42 -0400
commit2476e2ec1100813ae4e05cf2183feff8bf5ec8ea (patch)
treea334625acfe91c0233abf57a5fb7b52f040e0846
parente7112d59b811ca4a0bda448a18e0c45cb4841abb (diff)
parentc220ef8d12e77ce6af6fafde3b388fc3e334b380 (diff)
downloadcbt-2476e2ec1100813ae4e05cf2183feff8bf5ec8ea.tar.gz
cbt-2476e2ec1100813ae4e05cf2183feff8bf5ec8ea.tar.bz2
cbt-2476e2ec1100813ae4e05cf2183feff8bf5ec8ea.zip
Merge pull request #471 from cvogt/2.12-ready
2.12 ready
-rw-r--r--build/build.scala6
-rw-r--r--circle.yml2
-rw-r--r--examples/build-info-example/build/build.scala19
-rw-r--r--examples/build-info-example/src_generated/BuildInfo.scala11
-rw-r--r--examples/scalatest-example/build/build/build.scala1
-rw-r--r--libraries/common-1/build/build.scala2
-rw-r--r--libraries/eval/build/build/build.scala5
-rw-r--r--libraries/file/build/build.scala2
-rw-r--r--libraries/file/file.scala12
-rw-r--r--libraries/reflect/build/build.scala2
-rw-r--r--nailgun_launcher/EarlyDependencies.java68
-rw-r--r--nailgun_launcher/Stage0Lib.java10
-rw-r--r--plugins/scalariform/build/build.scala6
-rw-r--r--plugins/scalatest/build/build.scala8
-rw-r--r--ports/migration-manager/build/build.scala2
-rw-r--r--ports/scalariform/build/build.scala26
-rw-r--r--stage1/Stage1Lib.scala3
-rw-r--r--stage1/constants.scala6
-rw-r--r--stage1/resolver.scala14
-rw-r--r--stage2/BasicBuild.scala7
-rw-r--r--stage2/BuildBuild.scala2
-rw-r--r--stage2/LazyDependency.scala6
-rw-r--r--stage2/Lib.scala3
-rw-r--r--stage2/Plugin.scala2
-rw-r--r--stage2/ToolsTasks.scala49
-rw-r--r--stage2/libraries.scala37
-rw-r--r--stage2/plugins.scala12
-rw-r--r--stage2/plugins/GenerateBuildInfo.scala29
-rw-r--r--stage2/plugins/ScalaTest.scala (renamed from plugins/scalatest/ScalaTest.scala)4
-rw-r--r--stage2/ports.scala12
-rw-r--r--test/test.scala1
31 files changed, 235 insertions, 134 deletions
diff --git a/build/build.scala b/build/build.scala
index e077343..c596245 100644
--- a/build/build.scala
+++ b/build/build.scala
@@ -13,7 +13,7 @@ class Build(val context: Context) extends Shared with Scalariform with PublishLo
super.dependencies ++ Resolver(mavenCentral).bind(
MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r"),
ScalaDependency("org.scala-lang.modules","scala-xml",constants.scalaXmlVersion)
- ) :+ libraries.reflect :+ libraries.eval
+ ) :+ libraries.cbt.reflect :+ libraries.cbt.eval
}
override def sources = Seq(
@@ -24,8 +24,10 @@ class Build(val context: Context) extends Shared with Scalariform with PublishLo
Seq(
context.cbtHome / "stage2" / "DirectoryDependency.scala",
context.cbtHome / "stage2" / "LazyDependency.scala",
+ context.cbtHome / "stage2" / "plugins" / "ScalaTest.scala",
context.cbtHome / "stage2" / "libraries.scala",
- context.cbtHome / "stage2" / "plugins.scala"
+ context.cbtHome / "stage2" / "plugins.scala",
+ context.cbtHome / "stage2" / "ports.scala"
)
)
diff --git a/circle.yml b/circle.yml
index 467c72d..08d9182 100644
--- a/circle.yml
+++ b/circle.yml
@@ -14,6 +14,7 @@ dependencies:
compile:
override:
+ - rm ~/.gitconfig # avoid url replacement breaking jgit
- ./cbt direct compile
- ./cbt direct test.compile
- ./cbt compile
@@ -22,7 +23,6 @@ compile:
test:
override:
- - rm ~/.gitconfig # avoid url replacement breaking jgit
- ./cbt direct test.run slow:
timeout: 1800
- ./cbt direct test.run slow:
diff --git a/examples/build-info-example/build/build.scala b/examples/build-info-example/build/build.scala
index cc4c2db..2628efc 100644
--- a/examples/build-info-example/build/build.scala
+++ b/examples/build-info-example/build/build.scala
@@ -1,22 +1,17 @@
import cbt._
import java.nio.file.Files._
-class Build(val context: Context) extends PackageJars{
+class Build(val context: Context) extends PackageJars with GenerateBuildInfo{
override def name = "build-info-example"
def groupId = "cbt.examples"
override def defaultScalaVersion = "2.11.8"
def version = "0.1"
- override def compile = { buildInfo; super.compile }
- def buildInfo = lib.writeIfChanged(
- projectDirectory / "src_generated/BuildInfo.scala",
- s"""// generated file
-import java.io._
-object BuildInfo{
-def artifactId = "$artifactId"
-def groupId = "$groupId"
-def version = "$version"
-def scalaVersion = "$scalaVersion"
-}
+ override def buildInfo = super.buildInfo.copy(
+ s"""
+ def artifactId = "$artifactId"
+ def groupId = "$groupId"
+ def version = "$version"
+ def scalaVersion = "$scalaVersion"
"""
)
}
diff --git a/examples/build-info-example/src_generated/BuildInfo.scala b/examples/build-info-example/src_generated/BuildInfo.scala
index ac0e680..4ca1162 100644
--- a/examples/build-info-example/src_generated/BuildInfo.scala
+++ b/examples/build-info-example/src_generated/BuildInfo.scala
@@ -1,8 +1,9 @@
// generated file
-import java.io._
object BuildInfo{
-def artifactId = "build-info-example"
-def groupId = "cbt.examples"
-def version = "0.1"
-def scalaVersion = "2.11.8"
+
+ def artifactId = "build-info-example"
+ def groupId = "cbt.examples"
+ def version = "0.1"
+ def scalaVersion = "2.11.8"
+
}
diff --git a/examples/scalatest-example/build/build/build.scala b/examples/scalatest-example/build/build/build.scala
index d641b51..c7b1b2b 100644
--- a/examples/scalatest-example/build/build/build.scala
+++ b/examples/scalatest-example/build/build/build.scala
@@ -2,7 +2,6 @@ import cbt._
class Build(val context: Context) extends BuildBuild{
override def dependencies = super.dependencies ++ Seq(
- plugins.scalaTest,
plugins.sbtLayout
)
}
diff --git a/libraries/common-1/build/build.scala b/libraries/common-1/build/build.scala
index 247fd01..3d7868d 100644
--- a/libraries/common-1/build/build.scala
+++ b/libraries/common-1/build/build.scala
@@ -4,5 +4,5 @@ import cbt_internal._
class Build(val context: Context) extends Library{
override def inceptionYear = 2017
override def description = "classes shared by multiple cbt libraries and needed in stage 1"
- override def dependencies = super.dependencies :+ libraries.common_0 :+ libraries.interfaces
+ override def dependencies = super.dependencies :+ libraries.cbt.common_0 :+ libraries.cbt.interfaces
}
diff --git a/libraries/eval/build/build/build.scala b/libraries/eval/build/build/build.scala
deleted file mode 100644
index af4eb64..0000000
--- a/libraries/eval/build/build/build.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-import cbt._
-
-class Build(val context: Context) extends BuildBuild{
- override def dependencies = super.dependencies :+ plugins.scalaTest
-}
diff --git a/libraries/file/build/build.scala b/libraries/file/build/build.scala
index d9017a1..eb7cabf 100644
--- a/libraries/file/build/build.scala
+++ b/libraries/file/build/build.scala
@@ -4,5 +4,5 @@ import cbt_internal._
class Build(val context: Context) extends Library{
override def inceptionYear = 2017
override def description = "helpers to work with java io and nio"
- override def dependencies = super.dependencies :+ libraries.common_1
+ override def dependencies = super.dependencies :+ libraries.cbt.common_1
}
diff --git a/libraries/file/file.scala b/libraries/file/file.scala
index f20c9a8..900e9ec 100644
--- a/libraries/file/file.scala
+++ b/libraries/file/file.scala
@@ -83,12 +83,12 @@ trait Module {
val duplicateFiles = ( relatives diff relatives.distinct ).distinct
assert(
duplicateFiles.isEmpty, {
- val rs = relatives.toSet
- "Conflicting:\n\n" +
- map.filter( rs contains _._2 ).groupBy( _._2 ).mapValues( _.map( _._1 ).sorted ).toSeq.sortBy( _._1 ).map {
- case ( name, files ) => s"$name:\n" ++ files.mkString( "\n" )
- }.mkString( "\n\n" )
- }
+ val rs = relatives.toSet
+ "Conflicting:\n\n" +
+ map.filter( rs contains _._2 ).groupBy( _._2 ).mapValues( _.map( _._1 ).sorted ).toSeq.sortBy( _._1 ).map {
+ case ( name, files ) => s"$name:\n" ++ files.mkString( "\n" )
+ }.mkString( "\n\n" )
+ }
)
}
map
diff --git a/libraries/reflect/build/build.scala b/libraries/reflect/build/build.scala
index 3b6658a..77e0460 100644
--- a/libraries/reflect/build/build.scala
+++ b/libraries/reflect/build/build.scala
@@ -4,5 +4,5 @@ import cbt_internal._
class Build(val context: Context) extends Library{
override def inceptionYear = 2017
override def description = "discover classes on your classpath and invoke methods reflectively, preventing System.exit"
- override def dependencies = super.dependencies :+ libraries.file :+ libraries.common_1
+ override def dependencies = super.dependencies :+ libraries.cbt.file :+ libraries.cbt.common_1
}
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/plugins/scalariform/build/build.scala b/plugins/scalariform/build/build.scala
index 5910b41..80f3966 100644
--- a/plugins/scalariform/build/build.scala
+++ b/plugins/scalariform/build/build.scala
@@ -1,9 +1,5 @@
import cbt._
class Build(val context: Context) extends Plugin {
- override def dependencies =
- super.dependencies ++
- Resolver( mavenCentral ).bind(
- ScalaDependency("org.scalariform", "scalariform", "0.1.8")
- )
+ override def dependencies = super.dependencies :+ ports.scalariform
}
diff --git a/plugins/scalatest/build/build.scala b/plugins/scalatest/build/build.scala
deleted file mode 100644
index 4e94cd7..0000000
--- a/plugins/scalatest/build/build.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-import cbt._
-
-class Build(val context: Context) extends BaseBuild{
- override def dependencies = (
- super.dependencies
- :+ context.cbtDependency
- )
-}
diff --git a/ports/migration-manager/build/build.scala b/ports/migration-manager/build/build.scala
index 43b24f5..edae75f 100644
--- a/ports/migration-manager/build/build.scala
+++ b/ports/migration-manager/build/build.scala
@@ -3,7 +3,7 @@ import cbt._
class Build(val context: Context) extends BaseBuild{
override def dependencies =
Resolver( mavenCentral ).bind(
- MavenDependency( "org.scala-lang", "scala-compiler", "2.11.8" )
+ MavenDependency( "org.scala-lang", "scala-compiler", scalaVersion )
)
def mima = GitDependency.checkout(
"git@github.com:typesafehub/migration-manager.git", "92cbce52b4bf04ca1c338f34818ebfb9f0ebc285"
diff --git a/ports/scalariform/build/build.scala b/ports/scalariform/build/build.scala
new file mode 100644
index 0000000..c2ade6b
--- /dev/null
+++ b/ports/scalariform/build/build.scala
@@ -0,0 +1,26 @@
+package migration_manager_build
+import cbt._
+class Build(val context: Context) extends AdvancedScala{ outer =>
+ override def dependencies = Seq( libraries.scala.xml, libraries.scala.parserCombinators )
+
+ val scalariform = GitDependency.checkout(
+ "https://github.com/scala-ide/scalariform.git", "f53978c60579fa834ac9e56986a6133c0a621bfd"
+ )
+
+ override def sources = Seq(
+ scalariform / "scalariform" / "src" / "main" / "scala" / "scalariform"
+ )
+
+ override def scalacOptions = super.scalacOptions ++ Seq(
+ "-language:implicitConversions", "-language:reflectiveCalls"
+ )
+
+ override def test = new BasicBuild( context ) with ScalaTest{
+ override def target = outer.target / "test"
+ override def dependencies = super.dependencies :+ outer
+ override def scalacOptions = outer.scalacOptions
+ override def sources = Seq(
+ scalariform / "scalariform" / "src" / "test" / "scala" / "scalariform"
+ )
+ }
+}
diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala
index 6e2963e..40b3fed 100644
--- a/stage1/Stage1Lib.scala
+++ b/stage1/Stage1Lib.scala
@@ -314,9 +314,10 @@ ${sourceFiles.sorted.mkString(" \\\n")}
.map( dejavafy )
.orElse{
(cacheFile.exists && cacheFile.lastModified > cbtLastModified).option{
- import collection.JavaConversions._
+ import collection.JavaConverters._
val v = Files
.readAllLines( cacheFile.toPath, StandardCharsets.UTF_8 )
+ .asScala
.toStream
.map( deserialize )
persistentCache.put(key, Array(System.currentTimeMillis:java.lang.Long, javafy(v)))
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/stage1/resolver.scala b/stage1/resolver.scala
index 6134a16..48099e5 100644
--- a/stage1/resolver.scala
+++ b/stage1/resolver.scala
@@ -108,7 +108,7 @@ trait DependencyImplementation extends Dependency{
def flatClassLoader: Boolean = false
- def classLoader: ClassLoader = taskCache[DependencyImplementation]( "classLoader" ).memoize{
+ override def classLoader: ClassLoader = taskCache[DependencyImplementation]( "classLoader" ).memoize{
if( flatClassLoader ){
new java.net.URLClassLoader(classpath.strings.map(f => new URL("file://" ++ f)).toArray)
} else {
@@ -170,13 +170,13 @@ case class BinaryDependency( paths: Seq[File], dependencies: Seq[Dependency] )(i
def exportedClasspath = ClassPath(paths)
override def lastModified = paths.map(_.lastModifiedRecursive).max // FIXME: cache this
def targetClasspath = exportedClasspath
- lazy val moduleKey = this.getClass.getName + "(" + paths.mkString(", ") + ")" // PERFORMANCE HOTSPOT
+ override lazy val moduleKey = this.getClass.getName + "(" + paths.mkString(", ") + ")" // PERFORMANCE HOTSPOT
}
/** Allows to easily assemble a bunch of dependencies */
case class Dependencies( dependencies: Seq[Dependency] )(implicit val logger: Logger, val transientCache: java.util.Map[AnyRef,AnyRef], val classLoaderCache: ClassLoaderCache) extends DependencyImplementation{
override def lastModified = dependencies.map(_.lastModified).maxOption.getOrElse(0)
- lazy val moduleKey = this.getClass.getName + "(" + dependencies.map(_.moduleKey).mkString(", ") + ")" // PERFORMANCE HOTSPOT
+ override lazy val moduleKey = this.getClass.getName + "(" + dependencies.map(_.moduleKey).mkString(", ") + ")" // PERFORMANCE HOTSPOT
def targetClasspath = ClassPath()
def exportedClasspath = ClassPath()
override def show: String = this.getClass.getSimpleName + "( " + dependencies.map(_.show).mkString(", ") + " )"
@@ -184,7 +184,7 @@ case class Dependencies( dependencies: Seq[Dependency] )(implicit val logger: Lo
case class PostBuildDependency(target: File, _dependencies: Seq[DependencyImplementation])(implicit val logger: Logger, val transientCache: java.util.Map[AnyRef,AnyRef], val classLoaderCache: ClassLoaderCache) extends DependencyImplementation{
override final lazy val lastModified = (target++".last-success").lastModified
- lazy val moduleKey = target.string
+ override lazy val moduleKey = target.string
override def show = s"PostBuildDependency($target)"
override def targetClasspath = exportedClasspath
override def exportedClasspath = ClassPath( Seq(target) )
@@ -246,7 +246,7 @@ case class BoundMavenDependency(
)(
implicit val logger: Logger, val transientCache: java.util.Map[AnyRef,AnyRef], val classLoaderCache: ClassLoaderCache
) extends ArtifactInfo with DependencyImplementation{
- lazy val moduleKey = this.getClass.getName + "(" + mavenDependency.serialize + ")" // PERFORMANCE HOTSPOT
+ override lazy val moduleKey = this.getClass.getName + "(" + mavenDependency.serialize + ")" // PERFORMANCE HOTSPOT
override def hashCode = mavenDependency.hashCode
override def equals(other: Any) = other match{
case o: BoundMavenDependency => o.mavenDependency == mavenDependency && o.repositories == repositories
@@ -284,7 +284,7 @@ case class BoundMavenDependency(
def exportedJars = Seq( jar )
override def exportedClasspath = ClassPath( exportedJars )
override def targetClasspath = exportedClasspath
- import scala.collection.JavaConversions._
+ import scala.collection.JavaConverters._
private def resolve(suffix: String, hash: Option[String], useClassifier: Boolean): File = {
logger.resolver(lib.blue("Resolving ")+this)
@@ -304,7 +304,7 @@ case class BoundMavenDependency(
val result = Files.readAllLines(
path,
StandardCharsets.UTF_8
- ).mkString("\n").split(" ").head.trim
+ ).asScala.mkString("\n").split(" ").head.trim
classLoaderCache.hashMap.put("hash:"+path, result)
result
}
diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala
index 2cf97e5..05e3c41 100644
--- a/stage2/BasicBuild.scala
+++ b/stage2/BasicBuild.scala
@@ -17,10 +17,11 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with SbtDep
// will create new instances given the context, which means operations in the
// overrides will happen multiple times and if they are not idempotent stuff likely breaks
def context: Context
- lazy val moduleKey: String = "BaseBuild("+target.string+")"
+ override lazy val moduleKey: String = "BaseBuild("+target.string+")"
implicit def transientCache: java.util.Map[AnyRef,AnyRef] = context.transientCache
- implicit def libraries(implicit context: Context): libraries = new libraries(context, scalaVersion)
+ object libraries extends libraries( context, scalaVersion, scalaMajorVersion )
+ object ports extends ports( context, scalaVersion )
// library available to builds
implicit protected final val logger: Logger = context.logger
@@ -153,7 +154,7 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with SbtDep
"-unchecked"
)
- final def lastModified: Long = compile.getOrElse(0L)
+ override final def lastModified: Long = compile.getOrElse(0L)
def triggerLoopFiles: Set[File] = sources.toSet
diff --git a/stage2/BuildBuild.scala b/stage2/BuildBuild.scala
index cc69905..8430f49 100644
--- a/stage2/BuildBuild.scala
+++ b/stage2/BuildBuild.scala
@@ -7,7 +7,7 @@ class ConcreteBuildBuild(val context: Context) extends BuildBuild
trait BuildBuild extends BaseBuild{
override def dependencies = super.dependencies :+ context.cbtDependency
- object plugins extends plugins
+ object plugins extends plugins( context, scalaVersion )
assert(
projectDirectory.getName === lib.buildDirectoryName,
diff --git a/stage2/LazyDependency.scala b/stage2/LazyDependency.scala
index afc6263..2822638 100644
--- a/stage2/LazyDependency.scala
+++ b/stage2/LazyDependency.scala
@@ -1,11 +1,11 @@
package cbt
class LazyDependency( _dependency: => Dependency )( implicit logger: Logger, transientCache: java.util.Map[AnyRef, AnyRef], classLoaderCache: ClassLoaderCache ) extends Dependency {
lazy val dependency = _dependency
- def classLoader = dependency.classLoader
+ override def classLoader = dependency.classLoader
def dependenciesArray = Array( dependency )
def exportedClasspathArray = Array()
- def lastModified = dependency.lastModified
- lazy val moduleKey = show
+ override def lastModified = dependency.lastModified
+ override lazy val moduleKey = show
def show = s"LazyDependency(${dependency.show})"
override def toString = show
override def equals( other: Any ) = other match {
diff --git a/stage2/Lib.scala b/stage2/Lib.scala
index 6488c1a..52973f1 100644
--- a/stage2/Lib.scala
+++ b/stage2/Lib.scala
@@ -209,12 +209,11 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){
} else {
val performDelete = (
force || {
- val console = consoleOrFail("Use `cbt direct clean` or `cbt clean help`")
System.err.println("Files to be deleted:\n")
files.foreach( System.err.println )
System.err.println("")
System.err.print("To delete the above files type 'delete': ")
- console.readLine() == "delete"
+ new BufferedReader( new InputStreamReader(System.in), 1 ).readLine == "delete"
}
)
diff --git a/stage2/Plugin.scala b/stage2/Plugin.scala
index 43e26fa..2cc242d 100644
--- a/stage2/Plugin.scala
+++ b/stage2/Plugin.scala
@@ -1,5 +1,5 @@
package cbt
trait Plugin extends BaseBuild{
override def dependencies = super.dependencies :+ context.cbtDependency
- object plugins extends plugins
+ object plugins extends plugins( context, scalaVersion )
}
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 )
}
}
diff --git a/stage2/libraries.scala b/stage2/libraries.scala
index f0e4ecc..3c4800d 100644
--- a/stage2/libraries.scala
+++ b/stage2/libraries.scala
@@ -1,5 +1,5 @@
package cbt
-class libraries( context: Context, scalaVersion: String ) {
+class libraries( context: Context, scalaVersion: String, scalaMajorVersion: String ) {
private def dep( name: String ) = DirectoryDependency(
context.copy(
scalaVersion = Some( scalaVersion ),
@@ -7,13 +7,30 @@ class libraries( context: Context, scalaVersion: String ) {
),
None
)
- def captureArgs = dep( "capture_args" )
- def eval = dep( "eval" )
- def file = dep( "file" )
- def proguard = dep( "proguard" )
- def reflect = dep( "reflect" )
- def common_0 = dep( "common-0" )
- def common_1 = dep( "common-1" )
- def interfaces = dep( "interfaces" )
- def scalatestRunner = dep( "scalatest-runner" )
+ object cbt {
+ def captureArgs = dep( "capture_args" )
+ def common_0 = dep( "common-0" )
+ def common_1 = dep( "common-1" )
+ def eval = dep( "eval" )
+ def file = dep( "file" )
+ def interfaces = dep( "interfaces" )
+ def proguard = dep( "proguard" )
+ def reflect = dep( "reflect" )
+ def scalatestRunner = dep( "scalatest-runner" )
+ }
+ object scala {
+ private def _maven = ( g: String, a: String, v: String ) => {
+ MavenResolver(
+ context.cbtLastModified, context.paths.mavenCache, mavenCentral
+ )(
+ context.logger, context.transientCache, context.classLoaderCache
+ ) bindOne MavenDependency( g, a, v )
+ }
+
+ def library = _maven( "org.scala-lang", "scala-library", scalaVersion )
+ def reflect = _maven( "org.scala-lang", "scala-reflect", scalaVersion )
+ def compiler = _maven( "org.scala-lang", "scala-compiler", scalaVersion )
+ def xml = _maven( "org.scala-lang.modules", "scala-xml_" ++ scalaMajorVersion, "1.0.6" )
+ def parserCombinators = _maven( "org.scala-lang.modules", "scala-parser-combinators_" ++ scalaMajorVersion, "1.0.5" )
+ }
}
diff --git a/stage2/plugins.scala b/stage2/plugins.scala
index 6c5ee29..d82740f 100644
--- a/stage2/plugins.scala
+++ b/stage2/plugins.scala
@@ -1,7 +1,12 @@
package cbt
-class plugins( implicit context: Context ) {
- // TODO: move this out of the OO
- private def plugin( dir: String ) = DirectoryDependency( context.cbtHome / "plugins" / dir )
+class plugins( context: Context, scalaVersion: String ) {
+ private def plugin( name: String ) = DirectoryDependency(
+ context.copy(
+ scalaVersion = Some( scalaVersion ),
+ workingDirectory = context.cbtHome / "plugins" / name
+ ),
+ None
+ )
final lazy val googleJavaFormat = plugin( "google-java-format" )
final lazy val proguard = plugin( "proguard" )
final lazy val sbtLayout = plugin( "sbt_layout" )
@@ -11,7 +16,6 @@ class plugins( implicit context: Context ) {
final lazy val scalaJs = plugin( "scalajs" )
final lazy val scalapb = plugin( "scalapb" )
final lazy val scalariform = plugin( "scalariform" )
- final lazy val scalaTest = plugin( "scalatest" )
final lazy val sonatypeRelease = plugin( "sonatype-release" )
final lazy val uberJar = plugin( "uber-jar" )
final lazy val wartremover = plugin( "wartremover" )
diff --git a/stage2/plugins/GenerateBuildInfo.scala b/stage2/plugins/GenerateBuildInfo.scala
new file mode 100644
index 0000000..f9c2aff
--- /dev/null
+++ b/stage2/plugins/GenerateBuildInfo.scala
@@ -0,0 +1,29 @@
+package cbt
+import java.io.File
+trait GenerateBuildInfo extends BaseBuild{
+ override def compile = { buildInfo.apply; super.compile }
+ def buildInfo = GenerateBuildInfo.apply( lib ).config(
+ s"""
+ def scalaVersion = "$scalaVersion"
+""",
+ None,
+ "BuildInfo",
+ projectDirectory / "src_generated"
+ )
+}
+object GenerateBuildInfo{
+ case class apply( lib: Lib ){
+ case class config( body: String, `package`: Option[String], className: String, file: File ){
+ def apply = {
+ lib.writeIfChanged(
+ file / className ++ ".scala",
+ s"""// generated file${`package`.map("\npackage "++_++"").getOrElse("")}
+object $className{
+ $body
+}
+"""
+ )
+ }
+ }
+ }
+}
diff --git a/plugins/scalatest/ScalaTest.scala b/stage2/plugins/ScalaTest.scala
index 87ab16d..29a0777 100644
--- a/plugins/scalatest/ScalaTest.scala
+++ b/stage2/plugins/ScalaTest.scala
@@ -1,7 +1,7 @@
package cbt
import java.io.File
-trait ScalaTest extends BaseBuild{
- override def dependencies = super.dependencies :+ libraries.scalatestRunner
+trait ScalaTest extends BaseBuild {
+ override def dependencies = super.dependencies :+ libraries.cbt.scalatestRunner
override def run: ExitCode = {
classLoader.loadClass( "cbt.scalatest.Runner" ).method(
"run", classOf[Array[File]], classOf[ClassLoader]
diff --git a/stage2/ports.scala b/stage2/ports.scala
new file mode 100644
index 0000000..460a255
--- /dev/null
+++ b/stage2/ports.scala
@@ -0,0 +1,12 @@
+package cbt
+class ports( context: Context, scalaVersion: String ) {
+ private def dep( name: String ) = DirectoryDependency(
+ context.copy(
+ scalaVersion = Some( scalaVersion ),
+ workingDirectory = context.cbtHome / "ports" / name
+ ),
+ None
+ )
+ def mima = dep( "migration-manager" )
+ def scalariform = dep( "scalariform" )
+}
diff --git a/test/test.scala b/test/test.scala
index f942375..0208637 100644
--- a/test/test.scala
+++ b/test/test.scala
@@ -254,7 +254,6 @@ object Main{
compile("../plugins/scalafmt")
compile("../plugins/scalajs")
compile("../plugins/scalariform")
- compile("../plugins/scalatest")
compile("../plugins/wartremover")
compile("../plugins/uber-jar")
compile("../plugins/scalafix-compiler-plugin")