ports/pkg incompatibility, os/libc api changes

Konstantin Belousov kostikbel at gmail.com
Fri Nov 6 15:32:09 UTC 2015


On Fri, Nov 06, 2015 at 10:34:27AM +0100, Norbert Koch wrote:
> Hello.
> 
> I am observing this on a system running FreeBSD 9.1:
> 
> If I build fontconfig from ports all is ok.
> 
> If I do pkg install fontconfig it does not work.
> 
> The reason is that fontconfig calls fcntl()
> with the parameter F_DUPFD_CLOEXEC. This has
> been introduced afaics since FreeBSD 9.2.
> 
> So, I obviously should update to 9.3 and all would be ok,
> but, due to different reasons, this is not a solution for me.
> 
> My question is:
> 
> Is it, according to FreeBSD policies,
> acceptable to change the os (or libc) api without
> changing FreeBSD's major version number?
Yes.

> 
> If yes, is there some documentation about potential
> problems like the one I found?
There is no formal statement about the guarantees the project provides,
but the essence is that the compatibility is backward (and not forward,
as you found).  In other words, we guarantee that a binary compiled and
worked on the previous version of the system, works on the newer version,
but not in reverse.  More, with the utilization of the symbol versioning,
binaries which only depend on the base C runtime, should be transportable
to the greater major versions as well.

The big exception is the binaries which utilize management interfaces,
e.g. there is no chance that ifconfig(8) would work on a different
version.

Your problem is due to the fontconfig binary was compiled on newer system
and then tried to run on older.

> Shouldn't pkg reject to install an incompatible package?


More information about the freebsd-ports mailing list