On Thu, 17. Jan 16:44 Scott Howard <showard...@gmail.com> wrote: > If your library belongs to a package that doesn't believe in sane > SONAME version numbering, but instead releases based on version > numbers that have nothing to do with binary compatibility, it is > sometimes best to use the -release LDFLAG:
Hi Scott and Vincent, thank you for your feedback. At the moment i see two alternatives (three if a static library is not a taboo) I'm using CMAKE as build system because it is better supported by upstream. I can achieve something similar to the autotools -release LDFLAG with SET_TARGET_PROPERTIES( BulletCollision PROPERTIES VERSION 2 SOVERSION 2.8.1 ) although you can find the following lines in upstream's CMakelists.txt files: SET_TARGET_PROPERTIES(BulletCollision PROPERTIES VERSION ${BULLET_VERSION}) SET_TARGET_PROPERTIES(BulletCollision PROPERTIES SOVERSION ${BULLET_VERSION}) So apparently upstream intends to use the release version as SONAME for the library. The background to this is, Bullet is a physics library. Every new release the physics can slightly change which can result in unexpected ingame behaviour of certain objects thus games are normally tuned for a specific bullet release. Perhaps this might be different in the case of Blender or Panda3D (not yet packaged). With the above CMAKE construct i can produce libraries like /usr/lib/<Triplet>/libbulletcollision.so -> libbulletcollision.so.0 /usr/lib/<Triplet>/libbulletcollision.so.2 -> libbulletcollision.so.2.8.1 but i have to patch all CMakelists.txt files. (I don't know if there is an easier solution within debian/rules.) So in theory it is possible to create a sane versioning scheme but this is completely unsupported by upstream and will most likely result in broken games because we cannot assess what effects a new version of Bullet will have on ingame physics. As Vincent has already said, the Release Team won't like the thought to make a transition every time a new Bullet version is released. But is this really so bad? I mean, there are only a few packages which would depend on Bullet like Blender, perhaps Supertuxkart and probably FreeOrion. So if i understand the choices correctly, only bumping the SONAME is a sane solution. Provided the aforementioned assumption is true, is there really a difference between libbulletcollision-2.81 -> libbulletcollision-2.81.so.0.0.0 libbulletcollision2.81 -> libbulletcollision.so.2.81 ? In the end the name of the package has to change, correct? I will also talk to the Multimedia Team who maintains Blender at the moment, perhaps they know best what kind of library they need and which approach is successful in the end. Thanks for reading this far Regards, Markus
signature.asc
Description: Digital signature