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