summaryrefslogtreecommitdiff
path: root/scalalib
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2018-07-27 01:37:31 +0200
committerLi Haoyi <haoyi.sg@gmail.com>2018-07-27 07:37:31 +0800
commit2c8b55967f946435a4b553c745c8d99620a85ea1 (patch)
treef6d564f14ad12ce746723e11a15b5a29c5245159 /scalalib
parent436e5e21f526a8e9758bd11c8b9b221253d50663 (diff)
downloadmill-2c8b55967f946435a4b553c745c8d99620a85ea1.tar.gz
mill-2c8b55967f946435a4b553c745c8d99620a85ea1.tar.bz2
mill-2c8b55967f946435a4b553c745c8d99620a85ea1.zip
Upgrade Zinc and fix over-compilation (#390)
* Remove dead code * Upgrade zinc to 1.1.7, avoid hardcoding the version * Fix over-compilation with Zinc `upstreamCompileOutput` needs to contain the CompileOutput of all recursive dependencies, otherwise Zinc gets confused when a classfile from one of these recursive dependency is used, resulting in over-compilation. No tests because I don't know how to write one, but this can be observed manually: 1. mill scalajslib.compile 2. Add an empty line to ScalaModule.scala 3. mill scalajslib.compile Before this commit, the last compilation ended up compiling one file in scalalib (as expected), then every file in scalajslib. After this commit, nothing in scalajslib is recompiled, as expected.
Diffstat (limited to 'scalalib')
-rw-r--r--scalalib/src/mill/scalalib/JavaModule.scala11
-rw-r--r--scalalib/src/mill/scalalib/Lib.scala6
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala4
-rw-r--r--scalalib/src/mill/scalalib/ScalaWorkerApi.scala2
-rw-r--r--scalalib/src/mill/scalalib/Versions.scala6
5 files changed, 18 insertions, 11 deletions
diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala
index 87dfb1b9..eae1f09e 100644
--- a/scalalib/src/mill/scalalib/JavaModule.scala
+++ b/scalalib/src/mill/scalalib/JavaModule.scala
@@ -55,12 +55,19 @@ trait JavaModule extends mill.Module with TaskModule { outer =>
def javacOptions = T{ Seq.empty[String] }
+ /** The direct dependencies of this module */
def moduleDeps = Seq.empty[JavaModule]
+ /** The direct and indirect dependencies of this module */
+ def recursiveModuleDeps: Seq[JavaModule] = {
+ moduleDeps.flatMap(_.transitiveModuleDeps).distinct
+ }
+ /** Like `recursiveModuleDeps` but also include the module itself */
def transitiveModuleDeps: Seq[JavaModule] = {
- Seq(this) ++ moduleDeps.flatMap(_.transitiveModuleDeps).distinct
+ Seq(this) ++ recursiveModuleDeps
}
+
def unmanagedClasspath = T{ Agg.empty[PathRef] }
@@ -69,7 +76,7 @@ trait JavaModule extends mill.Module with TaskModule { outer =>
}
def upstreamCompileOutput = T{
- Task.traverse(moduleDeps)(_.compile)
+ Task.traverse(recursiveModuleDeps)(_.compile)
}
def transitiveLocalClasspath: T[Agg[PathRef]] = T{
diff --git a/scalalib/src/mill/scalalib/Lib.scala b/scalalib/src/mill/scalalib/Lib.scala
index f1683768..b69409a6 100644
--- a/scalalib/src/mill/scalalib/Lib.scala
+++ b/scalalib/src/mill/scalalib/Lib.scala
@@ -149,12 +149,6 @@ object Lib{
def scalaRuntimeIvyDeps(scalaVersion: String) = Agg[Dep](
ivy"org.scala-lang:scala-library:$scalaVersion".forceVersion()
)
- def compilerBridgeIvyDep(scalaVersion: String) =
- Dep.Point(
- coursier.Dependency(coursier.Module("com.lihaoyi", "mill-bridge"), "0.1", transitive = false),
- cross = false,
- force = false
- )
def listClassFiles(base: Path): Iterator[String] = {
if (base.isDir) ls.rec(base).toIterator.filter(_.ext == "class").map(_.relativeTo(base).toString)
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala
index 3ce84088..3cea7fab 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/mill/scalalib/ScalaModule.scala
@@ -80,9 +80,9 @@ trait ScalaModule extends JavaModule { outer =>
resolveDependencies(
repositories,
Lib.depToDependency(_, scalaVersion0, platformSuffix()),
- Seq(ivy"org.scala-sbt::compiler-bridge:1.1.0"),
+ Seq(ivy"org.scala-sbt::compiler-bridge:${Versions.zinc}"),
sources = true
- ).map(_.find(_.path.last == s"compiler-bridge_${scalaBinaryVersion0}-1.1.0-sources.jar").map(_.path).get)
+ ).map(_.find(_.path.last == s"compiler-bridge_${scalaBinaryVersion0}-${Versions.zinc}-sources.jar").map(_.path).get)
}
def scalacPluginClasspath: T[Agg[PathRef]] = T {
diff --git a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
index 3d1a195a..52dea3e8 100644
--- a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
+++ b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
@@ -51,7 +51,7 @@ trait ScalaWorkerModule extends mill.Module{
resolveDependencies(
repositories,
Lib.depToDependency(_, "2.12.4", ""),
- Seq(ivy"org.scala-sbt:compiler-interface:1.1.0")
+ Seq(ivy"org.scala-sbt:compiler-interface:${Versions.zinc}")
)
}
diff --git a/scalalib/src/mill/scalalib/Versions.scala b/scalalib/src/mill/scalalib/Versions.scala
new file mode 100644
index 00000000..6c1c385f
--- /dev/null
+++ b/scalalib/src/mill/scalalib/Versions.scala
@@ -0,0 +1,6 @@
+package mill.scalalib
+
+object Versions {
+ // Keep synchronized with zinc dependency in scalalib.worker in build.sc
+ val zinc = "1.1.7"
+}