RFR: 8345185: Update jpackage to not include service bindings by default [v4]
Alexey Semenyuk
asemenyuk at openjdk.org
Tue Jan 7 16:40:54 UTC 2025
On Tue, 7 Jan 2025 14:05:19 GMT, Severin Gehwolf <sgehwolf at openjdk.org> wrote:
>> Please review these changes to jpackage in light of [JEP 493](https://openjdk.org/jeps/493). When this feature is enabled, then some of the `jpackage` tests fail. The failures fall into the following categories:
>>
>> - `ALL-DEFAULT` notion from `jpackage` which includes all modules that export an API, which includes `jdk.jlink`, which is prevented from being included when linking from the run-time image (see the [JEP 493](https://openjdk.org/jeps/493) restrictions). The proposal is to change module resolution from `Configuration.resolveAndBind()` to `Configuration.resolve()`. I.e. don't perform service binding which is in line what [JEP 392](https://openjdk.org/jeps/392) and [JEP 343](https://openjdk.org/jeps/343) claim. That is, this patch brings the implementation aligned to what it says on the JEPs
>> - `ALL-MODULE-PATH` changes: `BasicTest.java` verifies the `--add-modules` argument to `jpackage`. Using `ALL-MODULE-PATH` for JDK modules won't be supported for JEP 493-enabled builds. So I've changed this test to skip the test using `ALL-MODULE-PATH` when we have such an enabled build. Other tests, such as `RuntimeImageTest.java` and `RuntimeImageSymbolicLinksTest.java` tests verify something else not related to `ALL-MODULE-PATH` or `--add-modules`. It seems more appropriate to use the smaller set of modules to use for the runtime JDK image.
>> - `JLinkOptionsTest.java`: That test verifies options passed to `jlink` via the `ToolProvider` API. For some reason, it uses `--bind-services` extensively and that - in turn - and, when not limited with the `--limit-modules` option as well, will include `jdk.jlink` in the resulting image, again running afoul the JEP 493 restriction of not allowing `jdk.jlink` for now. I propose to use suitable options including `--limit-modules` which would then no longer include `jdk.jlink` in the runtime image and the link from a run-time image works as well. These changes depend on [JDK-8345573](https://bugs.openjdk.org/browse/JDK-8345573) for it to work fully.
>>
>> Testing:
>> - [x] GHA
>> - [x] running tests in `test/jdk/tools/jpackage` on a JEP 493 enabled JDK. As far as I could see the failures that I was seeing weren't any more related to JEP 493 (some RPM requirements showing up that it didn't expect to).
>>
>> Thoughts? Opinions?
>
> Severin Gehwolf has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 11 commits:
>
> - Adjust BasicTest for ALL-MODULE-PATH and JDK-8345259
> - Merge branch 'master' into jdk-8345185-jpackage-all-default-fix
> - Merge branch 'master' into jdk-8345185-jpackage-all-default-fix
> - Use TKit.trace()
> - Refactor BasicTest.java according to review
> - Don't resolve service bindings by default
> - Revert "Handle ALL-DEFAULT in jpackage tool"
>
> This reverts commit ca506f85f67f495cd29e8f9ff1a7004c9888aaaf.
> - Merge branch 'master' into jdk-8345185-jpackage-all-default-fix
> - Adjust JLinkOptionsTest.java after JEP 493
> - Fix tests for JEP 493 enabled JDKs
> - ... and 1 more: https://git.openjdk.org/jdk/compare/3f7052ed...478427f5
Looks good
-------------
Marked as reviewed by asemenyuk (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/22644#pullrequestreview-2534884601
More information about the core-libs-dev
mailing list