RFR: JDK-6604021: RMIC is defaulting to BOOT jdk version, needs to be rmic.jar
Erik Joelsson
erik.joelsson at oracle.com
Tue Oct 15 15:09:36 UTC 2013
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
>> Webrev: 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