mirror of
https://github.com/enso-org/enso.git
synced 2024-12-01 23:12:27 +03:00
Fat Jar distribution (#271)
This commit is contained in:
parent
7f242e2327
commit
cc389fd8e6
1
.gitignore
vendored
1
.gitignore
vendored
@ -84,6 +84,7 @@ bench-report.xml
|
|||||||
##############
|
##############
|
||||||
|
|
||||||
/enso
|
/enso
|
||||||
|
/enso.jar
|
||||||
|
|
||||||
#########
|
#########
|
||||||
## IDE ##
|
## IDE ##
|
||||||
|
@ -133,6 +133,21 @@ shell will execute the appropriate thing. Furthermore we have `testOnly` and
|
|||||||
`benchOnly` that accept a glob pattern that delineates some subset of the tests
|
`benchOnly` that accept a glob pattern that delineates some subset of the tests
|
||||||
or benchmarks to run (e.g. `testOnly *FunctionArguments*`).
|
or benchmarks to run (e.g. `testOnly *FunctionArguments*`).
|
||||||
|
|
||||||
|
#### Building the Interpreter CLI Fat Jar
|
||||||
|
In order to build a fat jar with the CLI component, run the `assembly` task
|
||||||
|
inside the `interpreter` subproject:
|
||||||
|
```
|
||||||
|
sbt "interpreter/assembly"
|
||||||
|
```
|
||||||
|
This will produce an executable `enso.jar` fat jar in the repository root.
|
||||||
|
It's self contained, with its only dependencies being available inside
|
||||||
|
a vanilla GraalVM distribution. To run it, use:
|
||||||
|
```
|
||||||
|
JAVA_HOME=<PATH_TO_GRAAL_HOME> ./enso.jar <CLI_ARGS>
|
||||||
|
```
|
||||||
|
If you decide not to use the default launcher script, make sure to pass
|
||||||
|
the `-XX:-UseJVMCIClassLoader` option to the `java` command.
|
||||||
|
|
||||||
#### Passing Debug Options
|
#### Passing Debug Options
|
||||||
GraalVM provides some useful debugging options, including the ability to output
|
GraalVM provides some useful debugging options, including the ability to output
|
||||||
the compilation graph during JIT optimisation, and the ASM generated by the JIT.
|
the compilation graph during JIT optimisation, and the ASM generated by the JIT.
|
||||||
|
41
build.sbt
41
build.sbt
@ -2,6 +2,7 @@ import sbt.Keys.scalacOptions
|
|||||||
import scala.sys.process._
|
import scala.sys.process._
|
||||||
import org.enso.build.BenchTasks._
|
import org.enso.build.BenchTasks._
|
||||||
import org.enso.build.WithDebugCommand
|
import org.enso.build.WithDebugCommand
|
||||||
|
import sbtassembly.AssemblyPlugin.defaultUniversalScript
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//// Global Configuration ////
|
//// Global Configuration ////
|
||||||
@ -211,31 +212,47 @@ lazy val pkg = (project in file("Pkg"))
|
|||||||
)
|
)
|
||||||
|
|
||||||
val truffleRunOptions = Seq(
|
val truffleRunOptions = Seq(
|
||||||
|
"-Dgraal.TruffleIterativePartialEscape=true",
|
||||||
|
"-XX:-UseJVMCIClassLoader",
|
||||||
|
"-Dgraal.TruffleBackgroundCompilation=false"
|
||||||
|
)
|
||||||
|
|
||||||
|
val truffleRunOptionsSettings = Seq(
|
||||||
fork := true,
|
fork := true,
|
||||||
javaOptions += s"-Dgraal.TruffleIterativePartialEscape=true",
|
javaOptions ++= truffleRunOptions
|
||||||
javaOptions += s"-XX:-UseJVMCIClassLoader",
|
|
||||||
javaOptions += s"-Dgraal.TruffleBackgroundCompilation=false"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
lazy val interpreter = (project in file("Interpreter"))
|
lazy val interpreter = (project in file("Interpreter"))
|
||||||
.settings(
|
.settings(
|
||||||
mainClass in (Compile, run) := Some("org.enso.interpreter.Main"),
|
mainClass in (Compile, run) := Some("org.enso.interpreter.Main"),
|
||||||
|
mainClass in assembly := (Compile / run / mainClass).value,
|
||||||
|
assemblyJarName in assembly := "enso.jar",
|
||||||
|
test in assembly := {},
|
||||||
|
assemblyOutputPath in assembly := file("enso.jar"),
|
||||||
|
assemblyOption in assembly := (assemblyOption in assembly).value.copy(
|
||||||
|
prependShellScript = Some(
|
||||||
|
defaultUniversalScript(
|
||||||
|
shebang = false,
|
||||||
|
javaOpts = truffleRunOptions
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
version := "0.1",
|
version := "0.1",
|
||||||
commands += WithDebugCommand.withDebug,
|
commands += WithDebugCommand.withDebug,
|
||||||
inConfig(Compile)(truffleRunOptions),
|
inConfig(Compile)(truffleRunOptionsSettings),
|
||||||
inConfig(Test)(truffleRunOptions),
|
inConfig(Test)(truffleRunOptionsSettings),
|
||||||
parallelExecution in Test := false,
|
parallelExecution in Test := false,
|
||||||
logBuffered in Test := false,
|
logBuffered in Test := false,
|
||||||
libraryDependencies ++= jmh ++ Seq(
|
libraryDependencies ++= jmh ++ Seq(
|
||||||
"com.chuusai" %% "shapeless" % "2.3.3",
|
"com.chuusai" %% "shapeless" % "2.3.3",
|
||||||
"org.apache.commons" % "commons-lang3" % "3.9",
|
"org.apache.commons" % "commons-lang3" % "3.9",
|
||||||
"org.apache.tika" % "tika-core" % "1.21",
|
"org.apache.tika" % "tika-core" % "1.21",
|
||||||
"org.graalvm.sdk" % "graal-sdk" % graalVersion,
|
"org.graalvm.sdk" % "graal-sdk" % graalVersion % "provided",
|
||||||
"org.graalvm.sdk" % "polyglot-tck" % graalVersion,
|
"org.graalvm.sdk" % "polyglot-tck" % graalVersion % "provided",
|
||||||
"org.graalvm.truffle" % "truffle-api" % graalVersion,
|
"org.graalvm.truffle" % "truffle-api" % graalVersion % "provided",
|
||||||
"org.graalvm.truffle" % "truffle-dsl-processor" % graalVersion,
|
"org.graalvm.truffle" % "truffle-dsl-processor" % graalVersion % "provided",
|
||||||
"org.graalvm.truffle" % "truffle-tck" % graalVersion,
|
"org.graalvm.truffle" % "truffle-tck" % graalVersion % "provided",
|
||||||
"org.graalvm.truffle" % "truffle-tck-common" % graalVersion,
|
"org.graalvm.truffle" % "truffle-tck-common" % graalVersion % "provided",
|
||||||
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4",
|
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4",
|
||||||
"org.scalacheck" %% "scalacheck" % "1.14.0" % Test,
|
"org.scalacheck" %% "scalacheck" % "1.14.0" % Test,
|
||||||
"org.scalactic" %% "scalactic" % "3.0.8" % Test,
|
"org.scalactic" %% "scalactic" % "3.0.8" % Test,
|
||||||
@ -274,7 +291,7 @@ lazy val interpreter = (project in file("Interpreter"))
|
|||||||
.settings(
|
.settings(
|
||||||
logBuffered := false,
|
logBuffered := false,
|
||||||
inConfig(Benchmark)(Defaults.testSettings),
|
inConfig(Benchmark)(Defaults.testSettings),
|
||||||
inConfig(Benchmark)(truffleRunOptions),
|
inConfig(Benchmark)(truffleRunOptionsSettings),
|
||||||
bench := (test in Benchmark).tag(Exclusive).value,
|
bench := (test in Benchmark).tag(Exclusive).value,
|
||||||
benchOnly := Def.inputTaskDyn {
|
benchOnly := Def.inputTaskDyn {
|
||||||
import complete.Parsers.spaceDelimited
|
import complete.Parsers.spaceDelimited
|
||||||
|
@ -1 +1 @@
|
|||||||
|
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10")
|
Loading…
Reference in New Issue
Block a user