Darwin Version

Joshua Root jmr at macports.org
Sat Oct 3 08:37:05 PDT 2015


Jeremy Huddleston Sequoia <jeremyhu at apple.com> wrote:
>> On Oct 2, 2015, at 08:01, Clemens Lang <cal at macports.org> wrote:
>> There are changes that can be done by Apple with OS upgrades that will render
>> your currently installed libraries useless. Examples for changes that are of
>> this nature are:
>>  - Apple changing CPU architecture
>>  - Apple changing the ABI of a library you link against (e.g. when moving
>>    to C++11 using libc++)
> 
> We haven't changed the ABI.
> 
> We've added a new C++ runtime (libc++), but still continue to ship the older libstdc++ runtime for binary compatibility.

You are technically correct of course, but making the distinction may be
muddying the waters. Binary compatibility only applies where an
executable and the libraries it uses are all built for the same target.

Yes, if you upgrade the OS, all your installed ports will generally work
fine--to start with. But if we didn't require a rebuild for ports that
were built for a different OS version, something like this would happen:

X 1.0 uses libstdc++ and links with libY 1.0 which also uses libstdc++
User updates OS to a version where the compiler defaults to libc++
libY is updated to 1.1 and is now using libc++
X is now broken.

- Josh


More information about the macports-users mailing list