jdk-repo-only-build broken in openjdk6

Martin Buchholz martinrb at google.com
Mon Apr 6 21:55:03 UTC 2009


On Mon, Apr 6, 2009 at 14:33, Tim Bell <Tim.Bell at 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
>
>



More information about the build-dev mailing list