Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Mar 2008 23:48:39 -0400 (EDT)
From:      Daniel Eischen <deischen@freebsd.org>
To:        Kurt Miller <kurt@intricatesoftware.com>
Cc:        Scott Mitchell <scott+lists.freebsd@fishballoon.org>, freebsd-java@freebsd.org
Subject:   Re: jdk16 build failure on 7.0R/i386
Message-ID:  <Pine.GSO.4.64.0803132336140.5829@sea.ntplx.net>
In-Reply-To: <47D5FAEF.3080900@intricatesoftware.com>
References:  <20080309220029.GB93340@llama.fishballoon.org> <200803100932.37017.lists@intricatesoftware.com> <20080310231803.GC22200@tuatara.fishballoon.org> <200803102130.02371.kurt@intricatesoftware.com> <Pine.GSO.4.64.0803102142200.18214@sea.ntplx.net> <47D5FAEF.3080900@intricatesoftware.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.0803132336140.5829>