[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 

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?


More information about the Ipe-discuss mailing list