Install of pkg fuse-ntfs fails because of undefined symbol in pkg!?!

Konstantin Belousov kostikbel at gmail.com
Thu Feb 9 17:06:28 UTC 2017


On Thu, Feb 09, 2017 at 04:42:45PM +0000, Matthew Seaman wrote:
> Why do you think it is not being enforced?  Forwards compatibility means
> that during the lifetime of a major branch you can only *add* symbols to
> the system shared libraries, not remove them nor modify any existing
> symbols.  The project has held to that for many years -- not breaking
> ABI forwards compatibility is a really big deal amongst developers.

We try hard to not break ABI backward compatibility between branches
as well, at least for user code (see below). In particular, versioned
libraries in base must be fully backward compatible between branches.
Whole set of the base C runtime libraries is versioned, i.e.
rtld/libc/libthr/libm. libc++ is versioned as well.

For non-versioned libraries, our promise is that on ABI breakage of
any kind, the library version (the libXXX.so.N, the N part) is bumped
so backward compatibility can be provided in some form by installing
previous version of the library. This is done, besides other means, by
misc/compatX ports.

The explanation above is of course, simplified, and somewhat incorrect.
To make it correct would require amount of work which is apparently too
much for single person to do and still be sane.  You can see it that
the project' ABI promise is not formalized even on wiki.

Place were ABI is very badly broken regularly is the management interfaces.
For instance, you are almost guaranteed that ifconfig(8) from a major
branch works only with the kernels on the same branch, and even then,
you must have the binary built with headers from very close kernel
version.  Same for cam(4).

Formalizing these exceptions is the hard part of writing the
ABI guarantee document.


More information about the freebsd-ports mailing list