[libcmml-dev] Symbol versioning in libcmml (and probably the rest of the annodex suite)

Jamie Wilkinson jaq at spacepants.org
Mon Apr 3 12:25:15 EST 2006


Hey all,

I've just been reading the Debian Library Packaging Guide (due to the SONAME
bump in libcmml, I've never had to handle a SONAME change before, and I want
to make sure I get it right) and found the section on symbol versioning;
curious, I checked out how libcmml did it because I remembered seeing a
version script in the source.

http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html ,
Chapter 15, part 2.

The impression I get here is that the version information should be derived
from the SONAME, i.e. "libcmml1" would be a fine version for symbols in the
library; however Version_script in libcmml/src has no reference to the
SONAME in it, all symbols are versioned with the same string "libcmml.so".
AFAICT, this means that versioning is essentially useless because two
versions of the library will still have the same symbol versions.

I recommend changing this, then, to add the first element of the SONAME in
the version script:  modify configure.ac to pull out the first field of
SHARED_VERSION_INFO (field separator ':') and expand a new variable
SHARED_VERSION_INFO_MAJOR or something similary, then use that in the
version script.

I suspect that the other annodex libraries do a similar thing, so copied to
the main annodex list in case you'd like to do the same there.



More information about the libcmml-dev mailing list