[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: