Darwin Version

Ryan Schmidt ryandesign at macports.org
Fri Oct 2 07:33:15 PDT 2015

On Oct 2, 2015, at 8:13 AM, Bachsau wrote:
> Am 01.10.2015 um 16:08 schrieb Rainer Müller:
>> It may appear to be still working right now, but there is no guarantee
>> that it will work at all. Even if it seems to be working now, later
>> updates will cause problems. For example updates will link to a
>> different set of new system libraries.
>> Although cumbersome, the migration procedure ensures that everything
>> keeps working after upgrading to a new OS X release.
> What a crap is this? I've been using Arch Linux before and never needed to recompile any third party software, just because system packages where updated. Software that needs to be reinstalled / recompiled on every little operating system upgrade is bad software.

A few things:

The migration steps only need to be followed on major OS upgrades, i.e. when the second number in the version number changes, e.g. OS X 10.10 Yosemite upgraded to 10.11 El Capitan. It is not needed for "every little operating system upgrade"; security updates and minor version number upgrades usually cause no problems for MacPorts.

We're trying to make MacPorts into a system that just works, and that means that when we discover common situations where MacPorts fails to work, we try to modify MacPorts so that users are less likely to encounter them. One of the common problems we discovered was when MacPorts is built on one version of OS X and used on another version of OS X. So now we prevent that, via the error message that caused you to begin this thread.

The way that MacPorts is built is similar to a lot of other unix software: first, a configuration program is run that determines how things are done on your OS. Then, the program is compiled, using that configuration. Then the program is installed. If you then later upgrade to a different major version of OS, the determinations made at configure time may no longer be true, so the program that was built may no longer work on your new OS. I can think of two cases when this has happened to MacPorts in the past. MacPorts uses OS X's curl library. I think it was in OS X 10.4 that Apple shipped a newer version of the curl library, and no longer shipped the older version that MacPorts used when it was built on OS X 10.3 or earlier. Therefore users upgrading from 10.3 to 10.4 could no longer use MacPorts, because it tried to load a library that no longer existed. Another case occurred in OS X 10.9, when Apple stopped including the /usr/bin/gnutar program in OS X. MacPorts checks for a tar program at configure time, so MacPorts built on 10.8 or earlier would use /usr/bin/gnutar, but after upgrading to 10.9, that no longer exists, so MacPorts would fail to extract anything. The solution to both issues is to re-run the MacPorts configure-build-install process, or run selfupdate which does that for you, or download our pre-compiled installer package for your OS X version. These types of problems are the reason why MacPorts now checks whether the runtime OS X version matches the build-time OS X version, and refers you to the migration page if not.

The preceding examples concerned MacPorts itself, but since a lot of other unix software (the type of software that we distribute in MacPorts) builds itself in a similar way, this type of problem could easily be encountered in the ports we distribute as well. In addition, new versions of OS X offer new features. Some software may check for those features at build time and enable them if found. By using software built on an older OS X, you might therefore be missing out on some features. These are the kinds of reasons why MacPorts will check whether the runtime version of OS X matches the version of OS X that was in use when the port was installed, and considers the port outdated (i.e. a candidate to be rebuilt) if not.

When I said we want to make a system that just works, that also includes us wanting to reduce the amount of time we spend on technical support. So you are free to do what you like with MacPorts, and if you don't follow the migration instructions when we say you have to, it may work, but if it doesn't, and you ask us for help, we will not provide support for that configuration.

More information about the macports-users mailing list