Various reasons (C++ mangling, mostly) have compelled us to finally
implement some stuff we've wanted for some time: fine control
over shared library versions.
Simply put, there are basic reasons (like C++ compiler changes) which
mean that the ports tree should have control over shared library numbers.
We've also known for a long time that people in the free software world
do not play it safe in general: they do not bump shared library numbers
each time they should (this often comes from a misguided idea among linux
people that binary compatibility is a must, so they try really hard to
make things work without ever breaking binary compatibility, but sometimes
they break it anyways, and they do not bump versions and they lose).
We have taken the opposite approach: we prefer to bump libraries each time
we think things are not safe. The end user will see lots of shared library
versions accumulate on his system. So what ? since all dependencies are
now registered, he (or she) can now remove .libs-* packages that reference
stuff that isn't used anywhere.
So, I just committed the basic framework that allows this to happen, and
you will see in the following days most ports being converted to give us
control over those libraries. There will be a few bugs, that will get
Once enough examples are committed, we expect the average porter will
understand what's involved.
This basic framework may need further tweaks to cope with common issues.
Since this is a fairly open project, I apologize for not involving the
general community in that discussion (too much to do, too little time),
but at least, now, you know. ;-)