[Ipe-discuss] Re: Building Ipe: shared libs without version
Otfried Cheong
otfried at ipe.airpost.net
Mon Dec 7 03:20:10 CET 2009
Steve M. Robbins wrote:
> Shared libraries must be versioned to avoid breaking library-using
> code (e.g. an ipelet) when the library changes. See [1] for a
> tutorial and more details.
>
> Ipe 6.x built libraries with a SONAME of libipe.so.1. Version 7.0.9
> doesn't use a SONAME at all. What SONAME should we be using, Otfried?
Ipe 6 used SONAME libipe.so.1 because that is the default in qmake, and
since nobody every complained, it remained that way.
I do not guarantee binary compatibility between different releases of
Ipe, so in principle the SONAME for all libraries should have the full
release suffix (currently 7.0.9).
The other question is whether it is necessary to include the release
number in the libraries' file names. (As I understand it, this is a
different issue: the SONAME is only meant to indicate information about
binary compatibility - which library version can be substituted by newer
versions.)
If we include 7.0.9 in the file name, then we get three extra symbolic
links (e.g. libipe.so, libipe.so.7, libipe.so.7.0), which seems overly
complicated. Currently, I don't see a need to do this. The ipelet
example is not valid, as ipelets need to match the current Ipe version
anyway - they have to be recompiled for every new release of Ipe. So I
don't see anybody having different versions of libipe on their system.
On the other hand, it's theoretically possible that there will be other
software linking to libipe, and then versioning would be necessary.
Another question is whether libipe.so should actually be libipe7.so -
that would solve issues where people get mixups because Ipe tries to
link against an old libipe from Ipe 6. Qt does this (the current
libraries are QtCore4, QtGui4, etc.). On the other hand, it's
reasonable to have Qt 3 and Qt 4 on the system, while I do not really
want people to keep having Ipe 6 and Ipe 7 on their systems for a long
time (there is zero support for Ipe 6). And using two different kinds
of versioning would be confusing as well.
What do you think?
Otfried
More information about the Ipe-discuss
mailing list