Skip to content

Commit 523229d

Browse files
committed
Deprecate --graalvm-java-version (it's unnecessary with graalvm-community being the default)
1 parent 7ac3875 commit 523229d

File tree

6 files changed

+31
-19
lines changed

6 files changed

+31
-19
lines changed

modules/cli/src/main/scala/scala/cli/commands/package0/Package.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ object Package extends ScalaCommand[PackageOptions] with BuildCommandHelpers {
6767
override def sharedOptions(options: PackageOptions): Option[SharedOptions] = Some(options.shared)
6868
override def scalaSpecificationLevel = SpecificationLevel.RESTRICTED
6969
override def buildOptions(options: PackageOptions): Option[BuildOptions] =
70-
Some(options.baseBuildOptions.orExit(options.shared.logger))
70+
Some(options.baseBuildOptions(options.shared.logger).orExit(options.shared.logger))
7171
override def runCommand(options: PackageOptions, args: RemainingArgs, logger: Logger): Unit = {
7272
val inputs = options.shared.inputs(args.remaining).orExit(logger)
7373
CurrentParams.workspaceOpt = Some(inputs.workspace)
@@ -166,7 +166,8 @@ object Package extends ScalaCommand[PackageOptions] with BuildCommandHelpers {
166166
}
167167

168168
def finalBuildOptions(options: PackageOptions): BuildOptions = {
169-
val initialOptions = options.finalBuildOptions.orExit(options.shared.logger)
169+
val initialOptions =
170+
options.finalBuildOptions(options.shared.logger).orExit(options.shared.logger)
170171
val finalBuildOptions = initialOptions.copy(scalaOptions =
171172
initialOptions.scalaOptions.copy(defaultScalaVersion = Some(defaultScalaVersion))
172173
)

modules/cli/src/main/scala/scala/cli/commands/package0/PackageOptions.scala

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import scala.build.compiler.{ScalaCompilerMaker, SimpleScalaCompilerMaker}
99
import scala.build.errors.{BuildException, CompositeBuildException, ModuleFormatError}
1010
import scala.build.options.*
1111
import scala.build.options.packaging.*
12-
import scala.build.{BuildThreads, Positioned}
12+
import scala.build.{BuildThreads, Logger, Positioned}
1313
import scala.cli.commands.package0.PackageOptions
1414
import scala.cli.commands.shared.*
1515
import scala.cli.commands.tags
@@ -177,7 +177,7 @@ final case class PackageOptions(
177177
.sequence
178178
.left.map(CompositeBuildException(_))
179179

180-
def baseBuildOptions: Either[BuildException, BuildOptions] = either {
180+
def baseBuildOptions(logger: Logger): Either[BuildException, BuildOptions] = either {
181181
val baseOptions = value(shared.buildOptions())
182182
baseOptions.copy(
183183
mainClass = mainClass.mainClass.filter(_.nonEmpty),
@@ -222,13 +222,25 @@ final case class PackageOptions(
222222
cmd = packager.dockerCmd,
223223
isDockerEnabled = Some(docker)
224224
),
225-
nativeImageOptions = NativeImageOptions(
226-
graalvmJvmId = packager.graalvmJvmId.map(_.trim).filter(_.nonEmpty),
227-
graalvmJavaVersion = packager.graalvmJavaVersion.filter(_ > 0),
228-
graalvmVersion = packager.graalvmVersion.map(_.trim).filter(_.nonEmpty),
229-
graalvmArgs =
230-
packager.graalvmArgs.map(_.trim).filter(_.nonEmpty).map(Positioned.commandLine)
231-
),
225+
nativeImageOptions = {
226+
val graalVmVersion = packager.graalvmVersion.map(_.trim).filter(_.nonEmpty)
227+
val graalVmJavaVersion = packager.graalvmJvmId.map(_.trim)
228+
for {
229+
vmVersion <- graalVmVersion
230+
javaVersion <- graalVmJavaVersion
231+
if !vmVersion.startsWith(javaVersion)
232+
} logger.message(
233+
s"""GraalVM Java major version ($javaVersion) does not match GraalVM version ($vmVersion).
234+
|GraalVM version should start with the Java major version to be used.""".stripMargin
235+
)
236+
NativeImageOptions(
237+
graalvmJvmId = packager.graalvmJvmId.map(_.trim).filter(_.nonEmpty),
238+
graalvmJavaVersion = packager.graalvmJavaVersion.filter(_ > 0),
239+
graalvmVersion = graalVmVersion,
240+
graalvmArgs =
241+
packager.graalvmArgs.map(_.trim).filter(_.nonEmpty).map(Positioned.commandLine)
242+
)
243+
},
232244
useDefaultScaladocOptions = defaultScaladocOptions
233245
),
234246
addRunnerDependencyOpt = Some(false)
@@ -241,8 +253,8 @@ final case class PackageOptions(
241253
)
242254
}
243255

244-
def finalBuildOptions: Either[BuildException, BuildOptions] = either {
245-
val baseOptions = value(baseBuildOptions)
256+
def finalBuildOptions(logger: Logger): Either[BuildException, BuildOptions] = either {
257+
val baseOptions = value(baseBuildOptions(logger))
246258
baseOptions.copy(
247259
notForBloopOptions = baseOptions.notForBloopOptions.copy(
248260
packageOptions = baseOptions.notForBloopOptions.packageOptions.copy(

modules/cli/src/main/scala/scala/cli/commands/package0/PackagerOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ final case class PackagerOptions(
144144
@ValueDescription("java-major-version")
145145
@Tag(tags.restricted)
146146
@Tag(tags.inShortHelp)
147+
@Tag(tags.deprecated("graalvmJavaVersion"))
147148
graalvmJavaVersion: Option[Int] = None,
148149
@Group(HelpGroup.NativeImage.toString)
149150
@HelpMessage(s"GraalVM version to use to build GraalVM native images (${Constants.defaultGraalVMVersion} by default)")

modules/options/src/main/scala/scala/build/options/packaging/NativeImageOptions.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@ final case class NativeImageOptions(
1212
) {
1313
lazy val jvmId: String =
1414
graalvmJvmId.getOrElse {
15-
val javaVersion = graalvmJavaVersion.getOrElse(Constants.defaultGraalVMJavaVersion)
16-
val version = graalvmVersion.getOrElse(Constants.defaultGraalVMVersion)
17-
s"graalvm-java$javaVersion:$version"
15+
val version = graalvmVersion.getOrElse(Constants.defaultGraalVMVersion)
16+
s"graalvm-community:$version"
1817
}
1918
}
2019

website/docs/commands/package.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,7 @@ Note that Scala CLI automatically downloads and unpacks a GraalVM distribution
286286
using the [JVM management capabilities of coursier](https://get-coursier.io/docs/cli-java).
287287

288288
Several options can be passed to adjust the GraalVM version used by Scala CLI:
289-
- `--graalvm-jvm-id` accepts a JVM identifier, such as `graalvm-java17:22.0.0` or `graalvm-java17:21` (short versions accepted).
290-
- `--graalvm-java-version` makes it possible to specify only a target Java version, such as `11` or `17` (note that only specific Java versions may be supported by the default GraalVM version that Scala CLI picks)
289+
- `--graalvm-jvm-id` accepts a JVM identifier, such as `graalvm-community:17.0.9` or `graalvm-java17:23.0.2`.
291290
- `--graalvm-version` makes it possible to specify only a GraalVM version, such as `22.0.0` or `21` (short versions accepted)
292291
- `--graalvm-args` makes it possible to pass args to GraalVM version
293292

website/docs/reference/cli-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,7 @@ GraalVM Java major version to use to build GraalVM native images (17 by default)
978978

979979
### `--graalvm-version`
980980

981-
GraalVM version to use to build GraalVM native images (22.3.1 by default)
981+
GraalVM version to use to build GraalVM native images (17.0.9 by default)
982982

983983
### `--graalvm-jvm-id`
984984

0 commit comments

Comments
 (0)