On Mon, Apr 6, 2009 at 14:33, Tim Bell <tim.b...@sun.com> wrote: > Hi Martin: > > 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?
Ah yes indeed - good clue! 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 I think my JDK_TOPDIR workaround is another clue, that should be added to the bug report. Since it appears that this bug is also in openjdk7, I would make it a P2, just because of the extreme frustration developers are likely to encounter. The Makefiles could simply make JDK_TOPDIR absolute, but that has the problem that FullPath is defined in a Makefile included using a path that uses JDK_TOPDIR. Martin > > 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 > >