RFR: JDK-8189094: Change required boot jdk to JDK 9

Erik Joelsson erik.joelsson at oracle.com
Wed Oct 18 08:18:33 UTC 2017


Hello,


On 2017-10-17 19:54, mandy chung wrote:
> On 10/17/17 10:44 AM, Jan Lahoda wrote:
>> The problematic part is TransitiveDependencies, right?
>>
>> Might be easier to replace:
>> JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
>> with:
>> JavaCompiler compiler = JavacTool.create();
>>
>> (import com.sun.tools.javac.api.JavacTool;)
>>
>> That should avoid the ServiceLoader lookup.
>>
>
I can try this instead of patching ToolProvider.
> Worth trying this and  I think this needs --limit-modules to hide 
> jdk.compiler and other interim modules.
Yes, --limit-modules is definitely needed and already used.
>
> Does this build tool just depend on javac?  Does it need all system 
> modules to be observable?
>
I'm currently running it with the same arguments as when I run interim 
javac and it works:

--limit-modules 
java.base,jdk.zipfs,java.compiler.interim,jdk.compiler.interim,jdk.jdeps.interim,jdk.javadoc.interim 

--add-modules 
java.compiler.interim,jdk.compiler.interim,jdk.jdeps.interim,jdk.javadoc.interim 

--module-path 
/localhome/hg/jdk10-boot9/build/linux-x64/buildtools/interim_modules
--add-exports java.base/sun.reflect.annotation=jdk.compiler.interim
--add-exports java.base/jdk.internal.util.jar=jdk.jdeps.interim
--add-exports java.base/jdk.internal.misc=jdk.jdeps.interim

Some of these may be unnecessary for this specific tool, but it is 
certainly simpler from my point of view to just use the same set of 
arguments instead of maintaining another set.

/Erik
> Mandy
>
>> Jan
>>
>> On 17.10.2017 19:04, mandy chung wrote:
>>> It'd be simpler if we could avoid patching ToolProvider.   The ctsym
>>> generator is a build tool.  Jan and Jon may have suggestion if the 
>>> build
>>> tool can find the compiler from the interim module instead and use
>>> --limit-modules to java.base?
>>>
>>> Mandy
>>>
>>> On 10/17/17 8:55 AM, Erik Joelsson wrote:
>>>>
>>>> The ctsym generator in Gendata-jdk.compiler.gmk looks up the tool
>>>> using the ToolProvider. That part of the change was just a reaction to
>>>> ctsym generation failing.
>>>>
>>>> /Erik
>>>>
>>>>
>>>> On 2017-10-17 17:47, mandy chung wrote:
>>>>> Hi Erik,
>>>>>
>>>>> On 10/16/17 6:12 AM, Erik Joelsson wrote:
>>>>>>
>>>>>> To generate the new modules, I copy the module-info.java files to a
>>>>>> new gensrc dir and sed replace the module names. I also generate a
>>>>>> new ToolProvider.java so that the default tools are taken from the
>>>>>> interim modules.
>>>>>>
>>>>>> :
>>>>>>
>>>>>> Webrev: http://cr.openjdk.java.net/~erikj/8189094/webrev.01
>>>>>
>>>>> 65 java.compiler_EXTRA_FILES :=
>>>>> $(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java 
>>>>>
>>>>>
>>>>> 66 TARGETS += $(java.compiler_EXTRA_FILES)
>>>>>
>>>>>
>>>>> What issue did you run into without patching ToolProvider? I have
>>>>> assumed
>>>>> the build always launches javac/javadoc main class and not using
>>>>> ToolProvider.
>>>>>
>>>>> 580 JAVAC_MAIN_CLASS = -m 
>>>>> jdk.compiler.interim/com.sun.tools.javac.Main
>>>>> 581 JAVADOC_MAIN_CLASS = -m
>>>>> jdk.javadoc.interim/jdk.javadoc.internal.tool.Main Mandy
>>>>
>>>
>




More information about the build-dev mailing list