Problems building OpenJDK7 with InvokeDynamic on OSX

John Rose John.Rose at Sun.COM
Thu Dec 4 12:26:53 PST 2008


On Dec 4, 2008, at 12:35 AM, Ben Evans wrote:

> Apologies if this is not the right place to ask (or if there are  
> basic docs somewhere which I have failed to find on my own).
>
> I've been following the build instructions at:
>
> http://wikis.sun.com/display/mlvm/Building
>
> and trying to build with b33 of OpenJDK7, from the bsd port, to  
> then build via:
>
> http://landonf.bikemonkey.org/code/java/SoyLatte_Meets_OpenJDK. 
> 20080819.html
>
> (I have successfully built a vanilla OpenJDK7 and aside from some  
> known problems with the test suite, seem to have it self-hosting).

I currently develop mlvm on Solaris over VMWare on my MacBook (OSX  
10.4 though).  I'm excited to see you working on OSX builds.  The bad  
news is, you are the pioneer.

I've given you full write permissions on the mlvm wiki, in case you  
want to share your experiences more fully.

> Unfortunately, the patches for invokedynamic do not seem to apply  
> against my bsd src tree.

The patches in the mlvm repositories are based against whatever  
recent JDK version somebody (me, in practice) has refreshed them  
against.

The .hg/patches/series file advertises (by convention) which build  
each patch applies to.

In the mlvm/hotspot repo, the patches are refreshed to b38 but in  
practice they should work against neighboring builds, including b40.   
The patches in mlvm/jdk are refreshed to b34, which is close enough  
to b38.  See:
   http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/series
   http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/series

Your $guards variable probably says b40 (based on the reading  
of .hgtags by make/current-release.sh).  Change it to mention all the  
builds the patches expect, both b34 and b38.  This amounts to a  
manual override that says "yes, I know this base is not exactly what  
the patches want, and I'll take responsibility for the  
consequences".  You might have patch mismatches to fix and/or build  
problems.

One big change:  You'll have to manually delete anonk.patch from the  
patches/hotspot/series if you are building against a JDK that has  
anonk in it.  (I pushed that recently out of the patch repo.)

If you want more direct access to the guard state, just do this:
    head patches/*/guards

Patches are controlled by a flat text file you can vi or emacs.

If you would like to refresh the patches to b40, please send me meta- 
patchs (hg diff -R patches/{hotspot,jdk}).  There's a little bit of  
paperwork:  You'll need to sign the SCA (https://sca.dev.java.net/)  
and it would help to have your java.net handle (evansben?).

I'll probably do the next mlvm push in a week or two.  (I'm doing a  
round of spec work which will sooner or later show up in the RI.)

> Eg, after applying the patches via:
>
> CatBasket:sources boxcat$ sh patches/make/each-patch-repo.sh hg  
> qselect --reapply $guards
>
> the only matches I have are:
>
> CatBasket:jdk boxcat$ grep -rin methodhandle . | grep -v patches
> ./src/share/classes/com/sun/jndi/toolkit/corba/CorbaUtils.java: 
> 87:                    initMethodHandles();
> ./src/share/classes/com/sun/jndi/toolkit/corba/CorbaUtils.java: 
> 215:    private static void initMethodHandles() throws  
> ClassNotFoundException {
> CatBasket:jdk boxcat$ pwd
> /Users/boxcat/projects/jdk7-b33/sources/jdk
> CatBasket:jdk boxcat$

Try this command to see which guards are enabled:
   sh patches/make/each-patch-repo.sh hg qguard
   head patches/*/guards  # quick & dirty form

Try this command to see which patches are (therefore) enabled:
   sh patches/make/each-patch-repo.sh hg qseries

Let me know which of these comments helps, if any do.

Best wishes,
-- John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/mlvm-dev/attachments/20081204/b436b0ef/attachment.html 


More information about the mlvm-dev mailing list