jdk-repo-only-build broken in openjdk6
Tim Bell
Tim.Bell at Sun.COM
Mon Apr 6 21:33:02 UTC 2009
Hi Martin:
> 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
> ------------------------------------------------------------
This fingerprint matches 6668260/6668018
Bug ID: 6668260 build in openjdk/jdk/make fails if openjdk/build exists
Bug ID: 6668018 Incremental/partial OpenJDK builds from jdk/make
subdirectories do not always work
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6668260
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6668018
Did you previously do a control build at the top level? If so, another
workaround is to rename that output directory. In your case, that would be:
mv /usr/local/google/home/martin/ws/openjdk6/build \
/usr/local/google/home/martin/ws/openjdk6/build.ignore
HTH - Tim
> 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) {
> $ENV{JDK_TOPDIR} = $dir;
> print "JDK_TOPDIR=$dir\n" if $verbose;
> last;
> }
> $dir =~ s~/[^/]*$~~;
> }
> }
>
> Hope this helps.
>
> Martin
More information about the build-dev
mailing list