>> Hi,
>>
>> I have a Portfile for a library (called CPL) that was linked against Cfitsio 
>> from a week ago. Cfitsio was updated very recently. What I expect is that 
>> during the installation of CPL, MacPorts is able to figure out that Cfitsio 
>> changed and that CPL needs to be rebuilt. However, during the "Scanning 
>> binaries for linking errors" stage it indicates "No broken files found". Why 
>> would the MacPorts mechanism not be working?
>>
>> The relevant parts from "otool -L /opt/local/lib/libcfitsio.dylib":
>>         /opt/local/lib/libcfitsio.dylib (compatibility version 6.0.0, 
>> current version 6.3.44)
>> and from "otool -L /opt/local/lib/libcplcore.dylib":
>>         /opt/local/lib/libcplcore.26.dylib (compatibility version 28.0.0, 
>> current version 28.0.0)
>>         /opt/local/lib/libcfitsio.dylib (compatibility version 5.0.0, 
>> current version 5.3.41)
>>
>> Surely MacPorts should see that what libcplcore.dylib was linked against is 
>> no longer compatible with the installed libcfitsio.dylib? or am I not 
>> understanding how compatibility version is working on MacOS?
>
> An increased compatibility version means that symbols have been added. A
> program thus can't run with an older compatibility version of a library
> than it was built against, but it can run with a newer one.
>
> If symbols are removed or their semantics change, the library major
> version needs to change. This is part of the install_name, e.g. "26" in
> the case of libcplcore. If libcfitsio is not changing its install_name
> when its ABI changes incompatibly, that's a problem.

So then there is a bug from what I understand, or cfitsio in MacPorts is being 
built incorrectly. Compare file names for the newer Cfitsio:
  /opt/local/lib/libcfitsio.6.3.44.dylib
  /opt/local/lib/libcfitsio.6.dylib -> libcfitsio.6.3.44.dylib (symlink)
and the older Cfitsio:
  /opt/local/lib/libcfitsio.5.3.41.dylib
  /opt/local/lib/libcfitsio.5.dylib -> libcfitsio.5.3.41.dylib (symlink)

Reply via email to