Review Request: 8005178: build-infra: Dependency on libfdlibm on mac is broken

Kelly O'Hair kelly.ohair at oracle.com
Fri Dec 21 21:13:00 UTC 2012


Ok.  That helps alot. Thanks.   Looks good.

-kto

On Dec 19, 2012, at 1:16 AM, Erik Joelsson wrote:

> Oh, I will explain it.
> 
> So, on all other platforms, this is the dependency chain (simplified, skipping the actual recipe rules):
> 
> BUILD_LIBFDLIBM:=/path/to/libfdlibm.a
> BUILD_LIBJAVA:=/path/to/libjava.so
> $(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)
> 
> This forces the linking of libjava to happen after libfdlibm is created.
> 
> On mac there was a complication:
> 
> BUILD_LIBFDLIBM:=/path/to/temp/location/for/libfdlibm.a
> /path/to/libfdlibm.a: $(BUILD_LIBFDLIBM)
> $(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)
> 
> The recipe for BUILD_LIBJAVA looks for libfdlibm.a in /path/to/libfdlibm.a and not in the temp location. This results in a race condition where the copy of libfdlibm.a might not have happened before linking of libjava.
> 
> My fix does this:
> 
> BUILD_LIBFDLIBM_MAC:=/path/to/temp/location/for/libfdlibm.a
> BUILD_LIBFDLIBM:=/path/to/libfdlibm.a
> $(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC)
> $(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)
> 
> The difference is that the variable BUILD_LIBFDLIBM now points to the final location of libfdlibm.a on all platforms so the dependency is correct on all platforms.
> 
> There are other ways to solve this of course, but I prefer to minimize differences between platforms if possible.
> 
> /Erik
> 
> On 2012-12-19 02:04, Kelly O'Hair wrote:
>> I'm assuming that the issue is that a static library is an additive thing, AR will add to it, while
>> a shared library is created from scratch each time.
>> 
>> It's possible that another fix is actually in the NativeCompilation.gmk file where the static library
>> is created.
>> 
>> But I'm curious too, hopefully Erik will set us straight in a few hours after he wakes up. ;^)
>> 
>> -kto
>> 
>> On Dec 18, 2012, at 3:38 PM, David Holmes wrote:
>> 
>>> I don't understand the fix. Other than a name change this just seems to be "re-arranging the deckchairs". What is the actual function change ??
>>> 
>>> David
>>> 
>>> On 19/12/2012 1:55 AM, Erik Joelsson wrote:
>>>> Was asked to fix the comment, new webrev:
>>>> 
>>>> http://cr.openjdk.java.net/~erikj/8005178/webrev.jdk.02/
>>>> 
>>>> On 2012-12-18 16:35, Erik Joelsson wrote:
>>>>> This fixes a problem with make dependencies from libjava to libfdlibm
>>>>> which causes intermittent build failures on mac.
>>>>> 
>>>>> http://cr.openjdk.java.net/~erikj/8005178/webrev.jdk.01/




More information about the build-dev mailing list