Darwin Version

Clemens Lang cal at macports.org
Fri Oct 2 08:01:57 PDT 2015


----- On 2 Oct, 2015, at 15:33, Bachsau web at bachsau.name wrote:

> Maybe. Seems like I'm just not getting what is technically causing these
> problems. When libraries change, and it breaks a particular application, why
> can't I recompile just that? And why would the build of a newly installed port
> fail, just because there are other ports installed that were compiled against
> older system libraries?

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++)
  - Apple no longer shipping a certain library
This can leave you with binaries or libraries that no longer work. If a build
system now picks up one of these broken binaries or libraries (that does happen,
especially with missing architectures from universal binaries or missing
libraries), your binary will crash during the build or the build will fail to
link against a library. This will make your rebuild fail.

Of course, anything that is needed for a build should be in the list of
dependencies of a port, and should thus get rebuilt before the port in question,
avoiding the problem. Reality is different, however: build systems like cmake
and autotools look for optional dependencies all over the place and try to use
them if found, even if they are not in the list of dependencies, which leads to
these problems.

In theory, we have a solution for this problem: trace mode hides anything from
a port's build system that doesn't come with the system and is not in the list
of dependencies, so *in theory* we could replace migration with
  sudo port -t upgrade outdated,
and in fact, I successfully tested this during the last OS upgrade. With the
upgrade to El Capitan, though, Apple's System Integrity Protection actually
breaks trace mode (Yay!), so this not an option, leading us to recommend the
migration procedure.

So yes, careful thought has been given to the problem at hand, I agree it's
annoying, but given the way Apple handles things, there are currently no other

Clemens Lang

More information about the macports-users mailing list