You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add graalvmJvmId param to the Packaging class in scala.build.preprocessing.directives.
Add relevant @DirectiveExamples and @DirectiveUsage.
Add test at scala.build.tests.PackagingUsingDirectiveTests validating that graalvmJvmId gets passed to nativeImageOptions.
Checklist
tested the solution locally and it works
ran the code formatter (scala-cli fmt .)
ran scalafix (./mill -i __.fix)
ran reference docs auto-generation (./mill -i 'generate-reference-doc[]'.run)
How much have your relied on LLM-based tools in this contribution?
I relied moderately on GitHub Copilot. Since I am not a regular developer, it was hard for me to manually browse the codebase, until I ask the Copilot chat for help locating where directives were defined. Making the code change was easy without copilot help because the case class Packaging code was pretty readable and self-explanatory. Then I had to ask Copilot where to add tests, and finished the tests with Copilot-autocomplete.
How was the solution tested?
I created a project with the following directives:
(sans the graalvm-jvm-id arg) and it compiled, showing version GraalVM CE 25.0.2+10.1 during compilation. If I repeat this with the scala-cli installed on my system, I get GraalVM CE 17.0.9+9.1 instead, which confirms that the built launcher exhibits desired behavior.
Hi @Gedochao I'm wondering if graalvmVersion and graalvmJavaVersion should also be directives? It seems just a matter of passing the parameters to the Packaging case class. I am torn because on the one hand, it would be consistent -- all the graalvm* args would also be directives, but on the other hand, I think it may clutter the docs too much. Just graalvmJvmId suffices for my own needs, but I wanna get outside opinions. What do you think?
Hi @Gedochao I'm wondering if graalvmVersion and graalvmJavaVersion should also be directives? It seems just a matter of passing the parameters to the Packaging case class. I am torn because on the one hand, it would be consistent -- all the graalvm* args would also be directives, but on the other hand, I think it may clutter the docs too much. Just graalvmJvmId suffices for my own needs, but I wanna get outside opinions. What do you think?
Feel free to add them. Them not being already there seems like an omission (just like graalvmJvmId).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #4222
Add
graalvmJvmIdparam to thePackagingclass inscala.build.preprocessing.directives.Add relevant
@DirectiveExamplesand@DirectiveUsage.Add test at
scala.build.tests.PackagingUsingDirectiveTestsvalidating thatgraalvmJvmIdgets passed tonativeImageOptions.Checklist
scala-cli fmt .)scalafix(./mill -i __.fix)./mill -i 'generate-reference-doc[]'.run)How much have your relied on LLM-based tools in this contribution?
I relied moderately on GitHub Copilot. Since I am not a regular developer, it was hard for me to manually browse the codebase, until I ask the Copilot chat for help locating where directives were defined. Making the code change was easy without copilot help because the
case class Packagingcode was pretty readable and self-explanatory. Then I had to ask Copilot where to add tests, and finished the tests with Copilot-autocomplete.How was the solution tested?
I created a project with the following directives:
... and ran with the built binary
(sans the
graalvm-jvm-idarg) and it compiled, showing versionGraalVM CE 25.0.2+10.1during compilation. If I repeat this with thescala-cliinstalled on my system, I getGraalVM CE 17.0.9+9.1instead, which confirms that the builtlauncherexhibits desired behavior.Additional notes