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

Alan Bateman Alan.Bateman at oracle.com
Tue Oct 15 14:40:12 UTC 2013


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?

-Alan.



More information about the build-dev mailing list