On Thu, 21 Mar 2024 14:54:15 GMT, Magnus Ihse Bursie <[email protected]> wrote:
>> Severin Gehwolf has updated the pull request incrementally with one
>> additional commit since the last revision:
>>
>> Move CreateLinkableRuntimePlugin to build folder
>>
>> Keep runtime link supporting classes in package
>> jdk.tools.jlink.internal.runtimelink
>
> make/Images.gmk line 124:
>
>> 122:
>> 123: ifeq ($(JLINK_PRODUCE_RUNTIME_LINK_JDK), true)
>> 124:
>
> Please avoid newlines after if statements.
>
> Suggestion:
OK.
> make/Images.gmk line 131:
>
>> 129: # in FixPath call in order to avoid needing to use strip.
>> 130: RL_JIMAGE_PATH_ARG := $(call
>> FixPath,$(JDK_LINK_OUTPUT_DIR)/lib/modules)
>> 131: RL_MOD_PATH_ARG := $(call FixPath,$(IMAGES_OUTPUTDIR)/jmods)
>
> I'd much rather prefer to use strip and have proper space after commas. This
> is the approach taken elsewhere in the build system.
>
> Suggestion:
>
> RL_JIMAGE_PATH_ARG := $(strip $(call FixPath,
> $(JDK_LINK_OUTPUT_DIR)/lib/modules))
> RL_MOD_PATH_ARG := $(strip $(call FixPath, $(IMAGES_OUTPUTDIR)/jmods))
Thanks! This will also likely change. I'm thinking of just generating the diff
file and putting it into `lib/` of the JDK image. That avoids needing to call
this build-time only jlink plugin and this `FixPath` magic.
> make/Images.gmk line 145:
>
>> 143: $(eval $(call SetupJavaCompilation, BUILD_JDK_RUNLINK_CLASSES, \
>> 144: COMPILER := buildjdk, \
>> 145: DISABLED_WARNINGS := try, \
>
> Why do we get warnings in the java code?
That's not needed anymore. There are some `try` warnings in the `JmodsReader`
and `JimageDiffGenerator` classes which used to get compiled with this. It'll
probably change again...
> make/Images.gmk line 171:
>
>> 169:
>> 170: JLINK_JDK_TARGETS += $(jlink_runtime_jdk)
>> 171:
>
> Please avoid newlines before endif statements.
>
> Suggestion:
OK. Will fix.
> First question, do this class really need to be in a separate module? (I'm
> afraid the answer is "yes" but I need to ask it anyway).
Yes, because it uses the `Plugin` ServiceLoader extension using the boot
ModuleLayer. But it's going to be a moot point because this'll get reworked due
to concerns raised by @mlchung (having the plugin pipeline running when
producing a linkable runtime jimage).
> src/jdk.jlink/share/classes/jdk/tools/jlink/internal/runtimelink/JimageDiffGenerator.java
> line 36:
>
>> 34:
>> 35: /**
>> 36: * Used by the build-only jlink plugin CreateLinkableRuntimePlugin.
>
> Why does this file not live next to the jlink plugin then? Does it have to be
> part of the jdk.jlink module?
The idea was to have the "supporting" classes inside jdk.jlink to keep
code-bases in sync. But the actual invocation of them should be in the build
code. This will likely change again.
> src/jdk.jlink/share/classes/jdk/tools/jlink/internal/runtimelink/JimageDiffGenerator.java
> line 40:
>
>> 38: public class JimageDiffGenerator {
>> 39:
>> 40: private static final boolean DEBUG = false;
>
> This seems like left-over debug code. If this should go into product code I
> suggest you either remove it, or alternatively make it possible to change at
> runtime, if the debug functionality will be needed.
OK.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1534137541
PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1534141577
PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1534148956
PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1534137294
PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1534136264
PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1534154082
PR Review Comment: https://git.openjdk.org/jdk/pull/14787#discussion_r1534151066