From 2c8b55967f946435a4b553c745c8d99620a85ea1 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Fri, 27 Jul 2018 01:37:31 +0200 Subject: 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. --- scalalib/src/mill/scalalib/JavaModule.scala | 11 +++++++++-- scalalib/src/mill/scalalib/Lib.scala | 6 ------ scalalib/src/mill/scalalib/ScalaModule.scala | 4 ++-- scalalib/src/mill/scalalib/ScalaWorkerApi.scala | 2 +- scalalib/src/mill/scalalib/Versions.scala | 6 ++++++ 5 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 scalalib/src/mill/scalalib/Versions.scala (limited to 'scalalib/src') 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" +} -- cgit v1.2.3