On Tue, Mar 10, 2009 at 06:30:19PM -0400, Roberto C. Sánchez wrote:
> [My apologies in advance for the cross-posting.]
> 
> On Tue, Mar 10, 2009 at 10:42:36AM +0100, Daniel Wallin wrote:
> > Roberto C. Sánchez wrote:
> > >>
> > > So, I've been trying to build the Debian package with the latest from
> > > the 0.8 branch on github.  It seems like the SONAME thing is not
> > > completely resolved.  I am seeing this after building:
> > > 
> > > robe...@miami:~/src/luabind-upstream$ objdump -p 
> > > ./bin/gcc-4.3.2/debug/libluabindd.so.0.8.0 |grep SONAME
> > >   SONAME      libluabindd.so.0.8.0
> > 
> > Yes, that's the expected result, isn't it? The reasoning was that it's
> > too difficult to have ABI-compatibility, so we just use the complete
> > version number as the SONAME. "bjam install" will create the unversioned
> > symlink.
> > 
> 
> I am curious as to what people generally think of how the libluabind
> SONAME will be going forward.  I know that certain packages (like
> libssl) have the complete version in the SONAME, but I can't imagine
> that this is a really good idea.  Is this a showstopper for having
> libluabind in Debian, or just for a stable release?  Is this
> discouraged, but otherwise permissible?
> 

I have done some further digging and found a blog post [0] that explains
the issues with templated C++ code and ABI.  What it boils down to is
that if templates are used in a library, it really cannot have an ABI.
I also found a bug report [1] against gecode that was closed with a
similar explanation.  The solution implemented by the libgecode
maintainer in Debian was to increment the SONAME for each release.

That said, I think that the "best" solution is to have a different
SONAME for each release, based on the use of template code.  Since it is
currently being set as the library's release version, that is probably
the way to go.

Additionally, I guess it is important for me (as the person packaging
the .deb) to know what the planned release frequency is going to be.
The reason is that each SONAME change will result in a new package being
created and in a library transition (should libluabind gain any reverse
dependencies).  Each time that happens, the package will have to pass
NEW processing.

Regards,

-Roberto

[0] http://julipedia.blogspot.com/2005/10/c-templates-and-abi.html
[1] http://www.gecode.org/bugzilla/show_bug.cgi?id=24

-- 
Roberto C. Sánchez
http://people.connexer.com/~roberto
http://www.connexer.com

Attachment: signature.asc
Description: Digital signature

Reply via email to