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:

- [ ]  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?

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

Commit messages:
 - Another fix for the incomplete jmods in default mod-path case
 - More test changes
 - 8345573: Module dependencies not resolved from run-time image when 
--limit-module is being used

Changes: https://git.openjdk.org/jdk/pull/22609/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22609&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8345573
  Stats: 176 lines in 5 files changed: 55 ins; 44 del; 77 mod
  Patch: https://git.openjdk.org/jdk/pull/22609.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22609/head:pull/22609

PR: https://git.openjdk.org/jdk/pull/22609

Reply via email to