jdk-repo-only-build broken in openjdk6 (original) (raw)

Martin Buchholz martinrb at google.com
Mon Apr 6 14:21:40 PDT 2009


Hi build experts,

I tried building just the openjdk6 jdk repo in (more or less) the usual way using 'cd jdk/make && make...'

This works in openjdk7 but fails in openjdk6 (and has failed for quite a while)


Recursively making smartcardio all @ Sun Apr 5 16:04:57 PDT 2009 ... make[3]: Entering directory `/usr/local/google/home/martin/ws/openjdk6/jdk/make/sun/security/smartcardio' /bin/mkdir -p ../../../../build/linux-i586/tmp/sun/sun.security.smartcardio/j2pcsc/obj_g rm -f ../../../../build/linux-i586/tmp/sun/sun.security.smartcardio/j2pcsc/obj_g/.class.headers.i586

Running javah:

/usr/local/google/SLASH_JAVA/re/openjdk/6/promoted/latest/binaries/linux-i586/bin/javah -bootclasspath ../../../../build/linux-i586/classes -d ../../../../build/linux-i586/tmp/sun/sun.security.smartcardio/j2pcsc/CClassHeaders/
sun.security.smartcardio.PCSC sun.security.smartcardio.PlatformPCSC error: cannot access sun.security.smartcardio.PCSC class file for sun.security.smartcardio.PCSC not found javadoc: error - Class sun.security.smartcardio.PCSC not found. error: cannot access sun.security.smartcardio.PlatformPCSC class file for sun.security.smartcardio.PlatformPCSC not found javadoc: error - Class sun.security.smartcardio.PlatformPCSC not found. Error: No classes were specified on the command line. Try -help. make[3]: *** [../../../../build/linux-i586/tmp/sun/sun.security.smartcardio/j2pcsc/obj_g/.class.headers.i586] Error 15 make[3]: Leaving directory /usr/local/google/home/martin/ws/openjdk6/jdk/make/sun/security/smartcardio' make[2]: *** [all] Error 1 make[2]: Leaving directory /usr/local/google/home/martin/ws/openjdk6/jdk/make/sun/security' make[1]: *** [all] Error 1 make[1]: Leaving directory `/usr/local/google/home/martin/ws/openjdk6/jdk/make/sun' make: *** [all] Error 1 Command /usr/bin/nice /usr/bin/linux32 make SHELL=/bin/bash VARIANT=DBG sanity all docs images failed: rc=2

It's not obvious why a full control build doesn't encounter this issue. After much frustrating debugging, I found that it's due to the control build passing an absolute JDK_TOPDIR to the jdk repo sub-build.

So I have a fine workaround. Define JDK_TOPDIR to the absolute path of the jdk directory. I still don't know where in the makefiles is a dependency on JDK_TOPDIR not being relative. The smartcardio Makefile appears to be blameless. This would be a P2 bug to fix, were it not for the fact that openjdk6 does not see a lot of development.

Here's a snippet of perl I use in my build script:

{

Work around bug in openjdk6, that requires an absolute JDK_TOPDIR

use Cwd 'getcwd'; my $dir = getcwd(); while ($dir ne '') { sub isJdkDir($) { -r "$_[0]/make/common/Program.gmk" } last if isJdkDir "$dir/jdk"; if (isJdkDir $dir) { ENVJDKTOPDIR=ENV{JDK_TOPDIR} = ENVJDKTOPDIR=dir; print "JDK_TOPDIR=$dir\n" if $verbose; last; } dir= s /[/]∗dir =~ s~/[^/]*dir= s /[/]~~; } }

Hope this helps.

Martin



More information about the jdk6-dev mailing list