On Wed, 11 Dec 2024 16:02:29 GMT, Severin Gehwolf <sgehw...@openjdk.org> wrote:

>> Please review this fix for JEP 493 enabled JDKs related to the 
>> `--limit-modules` option. The existing jlink `bindservices` tests cover this 
>> issue. Previously they didn't run on a JEP 493 enabled JDK, since `jmods` 
>> folder is missing for them.
>> 
>> The gist of the issue is that multiple `ModuleFinder`s were at play. In 
>> particular, when linking from the run-time image a finder is being set up 
>> based solely on the module-path. Which in that case only contains the 
>> application modules (not the JDK dependencies). So if the `--limit-modules` 
>> clause included any JDK modules that the app needs as a dependency the 
>> finder would fail because the module specified in the `--limit-modules` 
>> clause didn't exist in the finder's look-up space.
>> 
>> [A similar case 
>> happens](https://bugs.openjdk.org/browse/JDK-8345573?focusedId=14729247&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14729247)
>>  for a regular JDK build where `ALL-MODULE-PATH` is being used together with 
>> `--limit-modules`. In that case, the `FindException` is being thrown when 
>> the `root` set of modules are attempted to get assembled.
>> 
>> The fix that I'm proposing here is two fold:
>> 
>> 1. Distinguish whether or not we ought to resolve the JDK modules from the 
>> run-time image or not.
>> 2. Based on that information set up the finders as appropriate and use the 
>> same finders when assembling the module root set.
>> 
>> I think this makes for a cleaner implementation and also fixes the 
>> `--limit-modules` issue when linking from the run-time image as any finder 
>> that is being limited has already been properly set up to include 
>> dependencies (if need be).
>> 
>> Testing:
>> 
>> - [x]  GHA
>> - [x] jlink tests in `test/jdk/tools/jlink` on a regular JDK build and on a 
>> build with `--enable-linkable-runtime`. Both test runs show all tests 
>> passing.
>> 
>> Thoughts?
>
> Severin Gehwolf has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Mandy's feedback

The updated version now inlines `limitFinder()` since the old 
`newModuleFinder()` method collapses to calling `limitFinder()` plus null/empty 
checks without the version check which is now done outside this method.

Thanks for the review, btw.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/22609#issuecomment-2537109936
PR Comment: https://git.openjdk.org/jdk/pull/22609#issuecomment-2537114078

Reply via email to