[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#476284: bullet package name/numbering



On Thu, 17. Jan 16:44 Scott Howard <showard314@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

Attachment: signature.asc
Description: Digital signature


Reply to: