From 4a94cdd4a424beea3a44d9a7c728356e9a98a2b7 Mon Sep 17 00:00:00 2001 From: patrick-schultz Date: Tue, 17 Dec 2024 11:16:26 -0500 Subject: [PATCH] ir gen mvp --- hail/build.mill | 24 ++++++++++++++++++++---- hail/modules/ir-gen/src/Main.scala | 12 ++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 hail/modules/ir-gen/src/Main.scala diff --git a/hail/build.mill b/hail/build.mill index 9afdd012661c..d4804d43f0fa 100644 --- a/hail/build.mill +++ b/hail/build.mill @@ -73,7 +73,7 @@ object Deps { } } -trait HailScalaModule extends SbtModule with ScalafmtModule with ScalafixModule { outer => +trait HailScalaModule extends ScalafmtModule with ScalafixModule { outer => override def scalaVersion: T[String] = build.env.scalaVersion() override def javacOptions: T[Seq[String]] = Seq( @@ -107,7 +107,7 @@ trait HailScalaModule extends SbtModule with ScalafmtModule with ScalafixModule override def bspCompileClasspath: T[Agg[UnresolvedPath]] = super.bspCompileClasspath() ++ resources().map(p => UnresolvedPath.ResolvedPath(p.path)) - trait HailTests extends SbtTests with TestNg with ScalafmtModule with ScalafixModule { + trait HailTests extends ScalaTests with TestNg with ScalafmtModule with ScalafixModule { override def forkArgs: T[Seq[String]] = Seq("-Xss4m", "-Xmx4096M") override def ivyDeps: T[Agg[Dep]] = @@ -125,7 +125,7 @@ trait HailScalaModule extends SbtModule with ScalafmtModule with ScalafixModule } } -object `package` extends RootModule with HailScalaModule { outer => +object `package` extends RootModule with HailScalaModule with SbtModule { outer => override def millSourcePath: Path = super.millSourcePath / "modules" @@ -179,6 +179,10 @@ object `package` extends RootModule with HailScalaModule { outer => buildInfo(), ) + override def generatedSources: T[Seq[PathRef]] = Task { + Seq(`ir-gen`.generate()) + } + override def unmanagedClasspath: T[Agg[PathRef]] = Agg(shadedazure.assembly()) @@ -250,6 +254,18 @@ object `package` extends RootModule with HailScalaModule { outer => PathRef(T.dest) } + object `ir-gen` extends HailScalaModule { + def ivyDeps = Agg( + ivy"com.lihaoyi::mainargs:0.6.2", + ivy"com.lihaoyi::os-lib:0.10.7", + ) + + def generate: T[PathRef] = Task { + runForkedTask(finalMainClass, Task.Anon { Args("--path", T.dest) })() + PathRef(T.dest) + } + } + object memory extends JavaModule { // with CrossValue { override def zincIncrementalCompilation: T[Boolean] = false @@ -267,7 +283,7 @@ object `package` extends RootModule with HailScalaModule { outer => } } - object test extends HailTests { + object test extends HailTests with SbtTests { override def resources: T[Seq[PathRef]] = outer.resources() ++ super.resources() override def assemblyRules: Seq[Rule] = outer.assemblyRules ++ Seq( diff --git a/hail/modules/ir-gen/src/Main.scala b/hail/modules/ir-gen/src/Main.scala new file mode 100644 index 000000000000..1054e6dd21b4 --- /dev/null +++ b/hail/modules/ir-gen/src/Main.scala @@ -0,0 +1,12 @@ +import mainargs.{ParserForMethods, main} +//import os.pwd + +object Main { + @main + def main(path: String) = { + println(s"Writing IR source files to $path, from ${os.resource / "IR.scala.template"}") + println(s"Pwd: ${os.pwd}") + } + + def main(args: Array[String]): Unit = ParserForMethods(this).runOrExit(args) +}