RFR: JDK-6604021: RMIC is defaulting to BOOT jdk version, needs to be rmic.jar

Martin Buchholz martinrb at google.com
Tue Oct 15 15:17:35 UTC 2013


Add this doc somewhere:

Any java code executed during a JDK build to build other parts of the JDK
must be executed by the bootstrap JDK (probably with -Xbootclasspath/p: )
and for this purpose must be built with -target PREVIOUS for bootstrapping
purposes, which requires restricting to language level and api of previous
JDK.


On Tue, Oct 15, 2013 at 8:09 AM, Erik Joelsson <erik.joelsson at oracle.com>wrote:

>
> On 2013-10-15 16:40, Alan Bateman wrote:
>
>> On 15/10/2013 15:30, Erik Joelsson wrote:
>>
>>> Currently the RMI stubs in the jdk are built with the newly built rmic
>>> binary at the end of the build. This patch changes that and instead builds
>>> a bootstrap version of the rmic classes, much like bootstrap javac in
>>> langtools, which runs on the bootjdk, but generates classes for the new
>>> jdk. The new solution is more friendly to cross compilation.
>>>
>>> A few notes on the patch:
>>>
>>> * In src/share/classes/sun/tools/**tree/Node.java, I had to change a
>>> call to a jdk8 only constructor in java.lang.InternalError.
>>> * The packages included when compiling rmic were just picked by
>>> extending for each missing class until the compilation succeeded. If
>>> someone knows of a crucial package or class that needs to be included,
>>> please say so.
>>> * I renamed a parameter to SetupJavaCompilation. I do not consider the
>>> parameter a hack anymore, but a necessary option for this case.
>>> * In RMICompilation, the dependency file is now a real touch file
>>> instead of a virtual one. This was needed for proper dependencies in
>>> GenerateClasses.gmk.
>>> * All of corba is compiled twice since I have no idea which parts would
>>> actually be needed. This doesn't add much build time since it can be run
>>> effectively in parallel with the rest of the corba build.
>>> * I put the compilation of bootstrap rmic in GenerateClasses.gmk
>>> directly instead of Tools.gmk. This was to not add much compile time, since
>>> Tools.gmk is included and therefore parsed a lot.
>>>
>>> Bug: https://bugs.openjdk.java.net/**browse/JDK-6604021<https://bugs.openjdk.java.net/browse/JDK-6604021>
>>> Webrev: http://cr.openjdk.java.net/~**erikj/6604021/webrev.01/<http://cr.openjdk.java.net/~erikj/6604021/webrev.01/>
>>>
>>> /Erik
>>>
>> It's great to see a solution coming for this, it was always been
>> troublesome to run the newly built rmic.
>>
>> So what are the implications of this? I assume it means that we need to
>> be careful in sun.rmi.rmic, sun.tools.{asm,java,javac,**tree,util} and
>> restrict API usage to what is available in the boot JDK - is that right?
>>
>>  That would be my conclusion at least.
>
> /Erik
>
>
>



More information about the build-dev mailing list