From e22b860877591b25ca1a62eb341450011b8342a7 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Wed, 22 Aug 2018 21:21:15 +0800 Subject: standardize naming of ScalaWorker/Api/Impl --- .../mill/scalanativelib/ScalaNativeBridge.scala | 77 ---------------------- .../mill/scalanativelib/ScalaNativeModule.scala | 2 +- .../mill/scalanativelib/ScalaNativeWorkerApi.scala | 77 ++++++++++++++++++++++ 3 files changed, 78 insertions(+), 78 deletions(-) delete mode 100644 scalanativelib/src/mill/scalanativelib/ScalaNativeBridge.scala create mode 100644 scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala (limited to 'scalanativelib/src') diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeBridge.scala b/scalanativelib/src/mill/scalanativelib/ScalaNativeBridge.scala deleted file mode 100644 index a7777fad..00000000 --- a/scalanativelib/src/mill/scalanativelib/ScalaNativeBridge.scala +++ /dev/null @@ -1,77 +0,0 @@ -package mill.scalanativelib - -import java.io.File -import java.net.URLClassLoader - -import ammonite.ops.Path -import mill.define.{Discover, Worker} -import mill.{Agg, T} -import sbt.testing.Framework - - -class ScalaNativeWorker { - private var scalaInstanceCache = Option.empty[(Long, ScalaNativeBridge)] - - def bridge(toolsClasspath: Agg[Path]): ScalaNativeBridge = { - val classloaderSig = toolsClasspath.map(p => p.toString().hashCode + p.mtime.toMillis).sum - scalaInstanceCache match { - case Some((sig, bridge)) if sig == classloaderSig => bridge - case _ => - val cl = new URLClassLoader( - toolsClasspath.map(_.toIO.toURI.toURL).toArray, - getClass.getClassLoader - ) - try { - val bridge = cl - .loadClass("mill.scalanativelib.bridge.ScalaNativeBridge") - .getDeclaredConstructor() - .newInstance() - .asInstanceOf[ScalaNativeBridge] - scalaInstanceCache = Some((classloaderSig, bridge)) - bridge - } - catch { - case e: Exception => - e.printStackTrace() - throw e - } - } - } -} - - -// result wrapper to preserve some type safety -case class NativeConfig(config: Any) - -trait ScalaNativeBridge { - def discoverClang: Path - def discoverClangPP: Path - def discoverTarget(clang: Path, workDir: Path): String - def discoverCompileOptions: Seq[String] - def discoverLinkingOptions: Seq[String] - - def config(nativeLibJar: Path, - mainClass: String, - classpath: Seq[Path], - nativeWorkdir: Path, - nativeClang: Path, - nativeClangPP: Path, - nativeTarget: String, - nativeCompileOptions: Seq[String], - nativeLinkingOptions: Seq[String], - nativeGC: String, - nativeLinkStubs: Boolean, - releaseMode: ReleaseMode, - logLevel: NativeLogLevel): NativeConfig - - def defaultGarbageCollector: String - def nativeLink(nativeConfig: NativeConfig, outPath: Path): Path - - def newScalaNativeFrameWork(framework: Framework, id: Int, testBinary: File, - logLevel: NativeLogLevel, envVars: Map[String, String]): Framework -} - -object ScalaNativeBridge extends mill.define.ExternalModule { - def scalaNativeBridge: Worker[ScalaNativeWorker] = T.worker { new ScalaNativeWorker() } - lazy val millDiscover = Discover[this.type] -} diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala index 2ede1e4c..b275e6e3 100644 --- a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala +++ b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala @@ -65,7 +65,7 @@ trait ScalaNativeModule extends ScalaModule { outer => scalaNativeBinaryVersion() } - def bridge = T.task{ ScalaNativeBridge.scalaNativeBridge().bridge(bridgeFullClassPath()) } + def bridge = T.task{ ScalaNativeWorkerApi.scalaNativeBridge().bridge(bridgeFullClassPath()) } def scalaNativeBridgeClasspath = T { val snBridgeKey = "MILL_SCALANATIVE_BRIDGE_" + scalaNativeBinaryVersion().replace('.', '_').replace('-', '_') diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala b/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala new file mode 100644 index 00000000..9489d7e4 --- /dev/null +++ b/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala @@ -0,0 +1,77 @@ +package mill.scalanativelib + +import java.io.File +import java.net.URLClassLoader + +import ammonite.ops.Path +import mill.define.{Discover, Worker} +import mill.{Agg, T} +import sbt.testing.Framework + + +class ScalaNativeWorker { + private var scalaInstanceCache = Option.empty[(Long, ScalaNativeWorkerApi)] + + def bridge(toolsClasspath: Agg[Path]): ScalaNativeWorkerApi = { + val classloaderSig = toolsClasspath.map(p => p.toString().hashCode + p.mtime.toMillis).sum + scalaInstanceCache match { + case Some((sig, bridge)) if sig == classloaderSig => bridge + case _ => + val cl = new URLClassLoader( + toolsClasspath.map(_.toIO.toURI.toURL).toArray, + getClass.getClassLoader + ) + try { + val bridge = cl + .loadClass("mill.scalanativelib.bridge.ScalaNativeBridge") + .getDeclaredConstructor() + .newInstance() + .asInstanceOf[ScalaNativeWorkerApi] + scalaInstanceCache = Some((classloaderSig, bridge)) + bridge + } + catch { + case e: Exception => + e.printStackTrace() + throw e + } + } + } +} + + +// result wrapper to preserve some type safety +case class NativeConfig(config: Any) + +trait ScalaNativeWorkerApi { + def discoverClang: Path + def discoverClangPP: Path + def discoverTarget(clang: Path, workDir: Path): String + def discoverCompileOptions: Seq[String] + def discoverLinkingOptions: Seq[String] + + def config(nativeLibJar: Path, + mainClass: String, + classpath: Seq[Path], + nativeWorkdir: Path, + nativeClang: Path, + nativeClangPP: Path, + nativeTarget: String, + nativeCompileOptions: Seq[String], + nativeLinkingOptions: Seq[String], + nativeGC: String, + nativeLinkStubs: Boolean, + releaseMode: ReleaseMode, + logLevel: NativeLogLevel): NativeConfig + + def defaultGarbageCollector: String + def nativeLink(nativeConfig: NativeConfig, outPath: Path): Path + + def newScalaNativeFrameWork(framework: Framework, id: Int, testBinary: File, + logLevel: NativeLogLevel, envVars: Map[String, String]): Framework +} + +object ScalaNativeWorkerApi extends mill.define.ExternalModule { + def scalaNativeBridge: Worker[ScalaNativeWorker] = T.worker { new ScalaNativeWorker() } + lazy val millDiscover = Discover[this.type] +} -- cgit v1.2.3