RFR: 8311302: Implement JEP 493: Linking Run-Time Images without JMODs [v40]

Severin Gehwolf sgehwolf at openjdk.org
Tue Oct 29 18:08:27 UTC 2024


On Fri, 25 Oct 2024 18:51:09 GMT, Mandy Chung <mchung at openjdk.org> wrote:

>> Severin Gehwolf has updated the pull request incrementally with five additional commits since the last revision:
>> 
>>  - Better handle patched modules
>>    
>>    Also add a test which ensures that module patching (if present), will
>>    get an appropriate error message.
>>  - Add /othervm to some langtools tier1 tests
>>    
>>    Those tests are using module patches from JTREG. Since the run-time
>>    image based link uses ModuleFinder.ofSystem(), which will see the extra
>>    classes comming from the module patch. Then the size look-up using the
>>    JRT FS provider fails, since that only looks in the module image
>>    (lib/modules) and NOT also in the patch. Thus, we get a
>>    NoSuchFileException and the link fails.
>>    
>>    Run the tests with othervm so that the JTREG patch'ed module isn't
>>    visible to the test.
>>  - Fix tests for builds with --enable-linable-runtime
>>    
>>    Those builds don't include the packaged modules, `jmods` directory.
>>    However, some tests assume that they're there. Add appropriate requires
>>    tag.
>>  - Fix provider verification when some JMODs are present
>>    
>>    In some configurations, e.g. when java.base is missing from the packaged
>>    modules, but another JDK module is present as JMOD that is linked into
>>    an image, then provider verification can fail. Thus, the run-time image
>>    link fails. Verify that this doesn't happen.
>>    
>>    The fix is to return Platform.runtime() for run-time image based links
>>    as well. Otherwise this code would return the wrong result.
>>  - Show run-time image based capability in help
>>    
>>    Also add a test for it when it's turned on and off.
>
> src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImageFileCreator.java line 111:
> 
>> 109:      * @throws IOException
>> 110:      */
>> 111:     public static ExecutableImage create(Set<Archive> archives,
> 
> I think these `create(Set<Archive>, ImagePluginStack)` and `create(Set<Archive>, ByteOrder)` methods are unused.   Can just remove them.

Yes, I'll remove. They were pre-existing so didn't want to remove them without consensus.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1821322526


More information about the core-libs-dev mailing list