summaryrefslogtreecommitdiff
path: root/scalajslib
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-13 13:00:21 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-13 14:37:24 -0800
commit57501fca3b6c2c64d32744e6d534b9de3a6674f6 (patch)
tree912a22fb405c971f4a4b75d737a35e522d6a420e /scalajslib
parent91102940a0bcdd7efc1d13e43510c4a0e406ead2 (diff)
downloadmill-57501fca3b6c2c64d32744e6d534b9de3a6674f6.tar.gz
mill-57501fca3b6c2c64d32744e6d534b9de3a6674f6.tar.bz2
mill-57501fca3b6c2c64d32744e6d534b9de3a6674f6.zip
Migrate most classpath-related code onto `Loose.OSet` abstraction, to enforce deduplication
Diffstat (limited to 'scalajslib')
-rw-r--r--scalajslib/src/main/scala/mill/scalajslib/Lib.scala8
-rw-r--r--scalajslib/src/main/scala/mill/scalajslib/ScalaJSModule.scala17
2 files changed, 16 insertions, 9 deletions
diff --git a/scalajslib/src/main/scala/mill/scalajslib/Lib.scala b/scalajslib/src/main/scala/mill/scalajslib/Lib.scala
index 3de37962..744bb262 100644
--- a/scalajslib/src/main/scala/mill/scalajslib/Lib.scala
+++ b/scalajslib/src/main/scala/mill/scalajslib/Lib.scala
@@ -7,7 +7,7 @@ import java.net.URLClassLoader
import ammonite.ops.{Path, mkdir, rm, _}
import mill.eval.PathRef
import mill.scalalib.Dep
-import mill.util.Ctx
+import mill.util.{Ctx, Loose}
import scala.collection.breakOut
import scala.language.reflectiveCalls
@@ -21,7 +21,7 @@ object Lib {
def scalaJSLinkerIvyDep(scalaJSVersion: String): Dep =
Dep("com.lihaoyi", s"mill-jsbridge_${scalaJSVersion.replace('.', '_')}", "0.1-SNAPSHOT")
- def scalaJSLinkerBridge(classPath: Seq[Path]): ScalaJSLinkerBridge = {
+ def scalaJSLinkerBridge(classPath: Loose.OSet[Path]): ScalaJSLinkerBridge = {
val classloaderSig = classPath.map(p => p.toString().hashCode + p.mtime.toMillis).sum
LinkerBridge.scalaInstanceCache match {
case Some((`classloaderSig`, linker)) => linker
@@ -44,7 +44,7 @@ object Lib {
def link(main: Option[String],
inputPaths: Seq[Path],
- libraries: Seq[Path],
+ libraries: Loose.OSet[Path],
linker: ScalaJSLinkerBridge,
mode: OptimizeMode)
(implicit ctx: Ctx.DestCtx): PathRef = {
@@ -53,7 +53,7 @@ object Lib {
if (inputPaths.nonEmpty) {
mkdir(outputPath / up)
val inputFiles: Vector[File] = inputPaths.map(ls).flatMap(_.filter(_.ext == "sjsir")).map(_.toIO)(breakOut)
- val inputLibraries: Vector[File] = libraries.filter(_.ext == "jar").map(_.toIO)(breakOut)
+ val inputLibraries: Vector[File] = libraries.filter(_.ext == "jar").map(_.toIO).toVector
linker.link(inputFiles, inputLibraries, outputPath.toIO, main, mode)
}
PathRef(outputPath)
diff --git a/scalajslib/src/main/scala/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/main/scala/mill/scalajslib/ScalaJSModule.scala
index ed0a2c85..03c4e216 100644
--- a/scalajslib/src/main/scala/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/main/scala/mill/scalajslib/ScalaJSModule.scala
@@ -7,7 +7,8 @@ import ammonite.ops.Path
import mill.eval.Result.Success
import mill.scalajslib.Lib._
import mill.scalalib.Lib.resolveDependencies
-import mill.scalalib.{Dep, PublishModule, Module, TestModule}
+import mill.scalalib.{Dep, Module, PublishModule, TestModule}
+import mill.util.Loose
trait ScalaJSModule extends scalalib.Module { outer =>
@@ -26,10 +27,16 @@ trait ScalaJSModule extends scalalib.Module { outer =>
def scalaJSBridgeVersion = T{ scalaJSVersion().split('.').dropRight(1).mkString(".") }
- def scalaJSLinkerClasspath: T[Seq[PathRef]] = T{
+ def scalaJSLinkerClasspath: T[Loose.OSet[PathRef]] = T{
val jsBridgeKey = "MILL_SCALAJS_BRIDGE_" + scalaJSBridgeVersion().replace('.', '_')
val jsBridgePath = sys.props(jsBridgeKey)
- if (jsBridgePath != null) Success(jsBridgePath.split(File.pathSeparator).map(f => PathRef(Path(f), quick = true)).toVector)
+ if (jsBridgePath != null) {
+ Success(
+ Loose.OSet.from(
+ jsBridgePath.split(File.pathSeparator).map(f => PathRef(Path(f), quick = true))
+ )
+ )
+ }
else {
val dep = scalaJSLinkerIvyDep(scalaJSBridgeVersion())
resolveDependencies(
@@ -51,9 +58,9 @@ trait ScalaJSModule extends scalalib.Module { outer =>
link(mainClass(), Seq(compile().classes.path), compileDepClasspath().map(_.path), linker, FullOpt)
}
- override def scalacPluginIvyDeps = T{ Seq(Dep.Point("org.scala-js", "scalajs-compiler", scalaJSVersion())) }
+ override def scalacPluginIvyDeps = T{ Loose.OSet(Dep.Point("org.scala-js", "scalajs-compiler", scalaJSVersion())) }
- override def ivyDeps = T{ Seq(Dep("org.scala-js", "scalajs-library", scalaJSVersion())) }
+ override def ivyDeps = T{ Loose.OSet(Dep("org.scala-js", "scalajs-library", scalaJSVersion())) }
// publish artifact with name "mill_sjs0.6.4_2.12" instead of "mill_sjs0.6_2.12"
def crossFullScalaJSVersion: T[Boolean] = false