On Mon, 9 Dec 2024 18:00:31 GMT, Alexey Semenyuk <asemen...@openjdk.org> wrote:
> > The proposal is to not include jdk.jlink and jdk.jpackage by default on a > > JDK build with JEP 493 enabled > > jpackage can use external runtime through `--runtime-image` cli option and > not invoke jlink. > > Would you consider adding an error message to jpackage if it detects jlink > tool is not available as an alternative to not including jdk.jpackage module > in `ALL-DEFAULT`? Seems like a more generic solution. The `jlink` tool *is* available. Currently, one restriction imposed when JEP 493 got done was to not allow `jdk.jlink` in an *output* image. Technically it could be part, but it's just not allowed (yet) by policy. Some examples: $ ls ./build/linux-x86_64-server-release/images/jdk/jmods ls: cannot access './build/linux-x86_64-server-release/images/jdk/jmods': No such file or directory $ ./build/linux-x86_64-server-release/images/jdk/bin/jlink --help | tail -n2 Capabilities: Linking from run-time image enabled $ ./build/linux-x86_64-server-release/images/jdk/bin/jlink --add-modules java.base --output ./build/java.base.img --verbose Linking based on the current run-time image java.base jrt:/java.base (run-time image) Providers: java.base provides java.nio.file.spi.FileSystemProvider used by java.base $ ./build/java.base.img/bin/java --list-modules java.base@25-internal $ ./build/linux-x86_64-server-release/images/jdk/bin/jlink --add-modules jdk.jlink --output ./build/jdk.jlink.img --verbose Error: This JDK does not contain packaged modules and cannot be used to create another image with the jdk.jlink module So the problem is that `ALL-DEFAULT` includes `jdk.jlink`, because of the ToolProvider API, I think. The question is how useful do users see the need to have `jdk.jlink` part when they *don't* use the `--runtime-image` option and `jpackage`. Not using `--runtime-image` seems a common use case and the few that need `jdk.jlink` can produce one using the JMODs and use the `--runtime-image` option. What do you think? > test/jdk/tools/jpackage/share/BasicTest.java line 323: > >> 321: return; >> 322: } >> 323: } > > The better alternative would be to use `@ParameterSupplier` annotation > instead of the list of `@Parameter` to dynamically configure the input for > testAddModules() test case. You can use > https://github.com/openjdk/jdk/blob/master/test/jdk/tools/jpackage/share/ErrorTest.java > or > https://github.com/openjdk/jdk/blob/cc628a133e471e7edf07831ff386f0eaf57e9bff/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/AnnotationsTest.java#L97 > as an example. OK, thank you. ------------- PR Comment: https://git.openjdk.org/jdk/pull/22644#issuecomment-2528986634 PR Review Comment: https://git.openjdk.org/jdk/pull/22644#discussion_r1876468664