G-Node / nix

Neuroscience information exchange format

Home Page:https://readthedocs.org/projects/nixio/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Adopt libtool-like versioning

gicmo opened this issue · comments

If we want to include nixio into distribution repositories (e.g. issue #715) we need to be more careful about ABI breaks, which is a lot of fun to get right for C++. See KDE's policies.
Currently we version our binaries with our semver, which is not ideal. I propose we use libtool like versioning and update rules.

See also the GNOME docs on versioning.

Thinking about it, I guess we should also have nixio.pc be renamed to nixio-1.0.pc, since we are otherwise in a good place to have multiple, non-ABI compatible versions of nix parallel installable.

I have re-read the whole idea about libtool versioning and it is mostly aimed at making multiple library versions of same software installable, which is something that these days is not supported without any additional precautions due to packages managers. The usual way around this is to have an explicit suffix everywhere. Common examples are glib/Gtk.
What we do need to do is to incease VERSION_ABI (which then gets translated into to the so version, i.e. libnixio.so.VERSION_ABI), every time we break ABI.