On Fri, 2017-10-27 at 11:55 +0200, Roger Oberholtzer wrote:
I am going to follow up on the ABI version number stuff in proj. I do know that is how this works. I am a software developer. I am checking with the proj people to see how they are tracking the ABI compatibility. For as long as I have used proj, I do not recall seeing this number reported. Since I link against -lproj, my Makefiles just reference the current development RPM that is installed.
This is all correct... -lproj references to libproj.so and it is the -devel package providing this. In turn, it is a symlink on the libproj.so.12 (current version); as long as your API is safe, anything linking -lproj will automatically link libproj.so.12 (on a runtime system, you don't need libproj.so - when you inspect your target binaries, they all use libproj.so.12)
I didn't mention that there is also a libproj0 on OBS. I don't think that is ABI version 0. Maybe it is before proj defined ABI version numbers...
IT starts counting at 0; so that is indeed just 'the starting point'
Perhaps one should use a label like ABIversion in the spec file. Then it is more obvious that this is where the number is from. There is no guarantee that everyone setting this number is doing so for the same reason.
A lot of spec files use %define sover 0; but it does not change anything practiclaly speaking. there is also rpmlint checking that the number picked matches what the library claims it to be. Those numbers are really not picked by random by packagers. Cheers, Dominique