jdk16 build failure on 7.0R/i386

Daniel Eischen deischen at freebsd.org
Fri Mar 14 03:48:53 UTC 2008


On Mon, 10 Mar 2008, Kurt Miller wrote:

> Daniel Eischen wrote:
>
>> On Mon, 10 Mar 2008, Kurt Miller wrote:
>>
>>> Weird. It seems like gcc(1)/ld(1) has changed the way -pthread is
>>> handled. In 6.X
>>> and below it will record a NEEDED entry for libpthread even if the
>>> executable
>>> doesn't reference any pthread symbols. I suspect that in 7.X if the
>>> executable
>>> doesn't reference any pthread symbols it wont record the NEEDED entry.
>>
>> No, for binaries it works the same way on 7.x as 6.x.
>>
>> $ gcc -o k k.c -pthread
>> $ ldd k
>> k:
>>         libthr.so.3 => /lib/libthr.so.3 (0x2807c000)
>>         libc.so.7 => /lib/libc.so.7 (0x2808f000)
>>
>> I believe that -pthread does now act differently in 7.0+ when used
>> to build shared libraries.  Prior to 7.0, using -pthread to build
>> shared libraries would not record a dependency on libpthread,
>> whereas in 7.0+ it will record a dependency.
>>
>> Other than that, the only change in 7.0 is that libthr is now the
>> default instead of libkse (nee libpthread).
>>
>
> Hi Daniel,
>
> Hmm, well I'm perplexed then. I can't see why
> work/control/build/bsd-i586/bin/java isn't recording the NEEDED on
> libthr.so. Perhaps the -Wl,-soname=lib.so argument or the double
> -pthread is the culprit. Can you experiment on 7.0 to see if they are
> involved at all?

I was able to get jdk16 built on 7.0.  Previously (unsuccessfully),
I was trying to use jdk-1.5.0.11p5,1 to build jdk16.  When that
didn't work, I installed jdk-1.5.0.13p7_4,1 from a package that
I had built on another box.  So using jdk-1.5.0.13p7_4,1, I was
able to build jdk-1.6.0.3p4.  I also used the same package
(jdk-1.5.0.13p7_4,1) to update jdk15 to the latest patchset
(jdk-1.5.0.14p8,1).  So now the latest patchset of both jdk15
and jdk16 have been built using jdk-1.5.0.13p7_4,1.  I have
not tried to rebuild either jdk15 or jdk16 using either of
the up-to-date jdks.

BTW, this was all done manually (cd /usr/ports/java/jdk1X;
make; make install).  portupgrade wanted to install compat6x
and diablo for no apparent reason, when there was already
a perfectly good native jdk installed.

BTW2, the build of jdk16 was a lot faster than that of jdk15,
which surprised me.

-- 
DE


More information about the freebsd-java mailing list