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

ODE and ABI stability



Hi,

First let me introduce myself, I'm a Linux enthusiast and a Fedora developer.

As Fedora developer I'm the creator and maintainer of the Fedora ode packages (since ode-0.6)

Today I started on updating ode in Fedora to 0.10, as with each release I started with comparing the public headers to check for ABI changes, to my disappointment this is the first ode release that breaks the ABI with older releases. In some places without a good reason (such as adding values to an enumerate and not adding them at the end).

In other places (adding additional members to structs) I assume with good reason. I wonder did the API also change, or should programs which worked with 0.9 still work fine with 0.10.0 ?

###

Much to my disappointment the ChangeLog reads:

* Disabled building shared library by default with autotools. ODE
  shouldn't be installed as a system library.

This is IMHO not acceptable. This _directly_ contradicts most Linux distributions on libraries, we don't want to have a zillion (compiled) copies of libraries in our package repository instead we want one shared library, so that we've one place to issue bugfixes, updates, etc.

Note that atleast Fedora, but probably also other distributions (I'm pretty certain Debian and thus Ubuntu too) will keep compiling ode as a shared library, even if that means that all dependend packages need to be rebuild each upstream release.

Thus I would also like to ask you to reconsider the current use of the libtool -release option when linking, instead of libode-0.10.0.so I would like to see a normal versioned so like libode.so.4 where the last number get bumped each time the ABI changed, so it would have stayed the same for ode-0.6 till ode-0.9 and be bumped from 0.9 - 0.10. This would then be combined with being carefull about ABI breakage where not necessary. I'm not asking you to never change the ABI, just to avoid it when not needed.


###

While looking around for some more info I found the following page on the wiki:
http://opende.sourceforge.net/mediawiki-1.6.10/index.php/Products_that_use_ODE

I noticed that non of the packages in Fedora which use ode are listed here, so you might want to expand this page with the following programs:
crystalspace
maniadrive (raydium)
stormbaancoureur
xmoto
machineball

(For more info on each use google, if that doesn't help ask me).


###

While preparing Fedora packages I noticed that you try to detect if the compilation target has a performance counter (pentium=yes) but instead you detect fi the compilation host has such a performance counter, the attached patch fixes this.


Thanks & Regards,

Hans
diff -up ode-0.10.0/configure.in~ ode-0.10.0/configure.in
--- ode-0.10.0/configure.in~	2008-07-02 11:41:50.000000000 +0200
+++ ode-0.10.0/configure.in	2008-07-02 11:41:50.000000000 +0200
@@ -60,7 +60,7 @@ dnl this may NOT be the machine on which
 dnl so allow users to compile programs for their target machine.
 pentium=no
 cpu64=no
-case "$host_cpu" in
+case "$target_cpu" in
   i586 | i686 | i786 )
         pentium=yes
         AC_DEFINE(PENTIUM,1,[compiling for a pentium on a gcc-based platform?])
diff -up ode-0.10.0/configure~ ode-0.10.0/configure
--- ode-0.10.0/configure~	2008-07-02 11:41:48.000000000 +0200
+++ ode-0.10.0/configure	2008-07-02 11:41:48.000000000 +0200
@@ -20857,7 +20857,7 @@ echo "${ECHO_T}$enable_demos" >&6; }
 
 pentium=no
 cpu64=no
-case "$host_cpu" in
+case "$target_cpu" in
   i586 | i686 | i786 )
         pentium=yes
 

Reply to: