[fdo-internals] FDO 3.7 beta2 timeframe

Greg Boone greg.boone at autodesk.com
Sat Jun 9 07:18:33 PDT 2012

 >> and all libraries referencing FDO or other libraries should be updated to FDO-${FDO_VERSION}.

Interesting ideas, but changing the resulting FDO library names for the 3.7 release is not very practical at this point in the cycle. If we do this, this should be done in the trunk, for the future 3.8 release. 


-----Original Message-----
From: fdo-internals-bounces at lists.osgeo.org [mailto:fdo-internals-bounces at lists.osgeo.org] On Behalf Of Johan Van de Wauw
Sent: Friday, June 08, 2012 10:09 PM
To: FDO Internals Mail List
Subject: Re: [fdo-internals] FDO 3.7 beta2 timeframe

On Fri, Jun 8, 2012 at 3:05 PM, Jackie Ng <jumpinjackie at gmail.com> wrote:
> Just a thing about the cmake builds.

>  a) The CMake build produces binaries with different so names (eg.
> libFDO.so.3.7.0 instead of libFDO-3.7.0.so)
>  b) Doing symlink tricks (eg. Symlink libFDO-3.7.0.so to 
> libFDO.so.3.7.0) doesn't work either as MapGuide will crash out trying 
> to load these symlinked so files, though this may not even be a 
> working solution (noob-ism showing here)

Just using symlinks will also cause problems outside mapguide. The sonumber is part of the soname is part of a library, and it is the name in the library that the linker will record. See eg objdump -p libFDO-3.7.0.so
In the dynamic section you will find "  SONAME               libFDO.so.3"
This is what the linker will take when you link to that library (in fact above this line you will see how libFDO links to other libs in the same way). So that file should exist.

In fact what you want is not a library without a SOVERSION, but one with a release number included in the library name. In automake/libtool this is easy to accomplish using -release ( http://www.gnu.org/software/libtool/manual/html_node/Release-numbers.html#Release-numbers

AFAIK no such mechanism exists for cmake but it easy to do the same thing, it requires 2 steps
1) remove the set_target_properties where the SOVERSION is set (it is a bad SOVERSION anyway, soversions should be able to change independently from version numbers)
2) replace the target_link_library name with one which includes the version number, and change references accordingly.
An example patch is attached. similar patches are needed for every library, and all libraries referencing FDO or other libraries should be updated to FDO-${FDO_VERSION}.


More information about the fdo-internals mailing list