[gdal-dev] libtool numbering policy
Bas Couwenberg
sebastic at xs4all.nl
Tue Jun 14 03:13:49 PDT 2016
On 2016-06-14 11:29, Even Rouault wrote:
> A ticket ( https://trac.osgeo.org/gdal/ticket/6542 ) has been raised
> about
> libtool SONAME having not changed between GDAL 2.0.X and GDAL 2.1.0 due
> to
> incrementing both LIBGDAL_CURRENT and LIBGDAL_AGE .
> This was raised also in https://trac.osgeo.org/gdal/ticket/4543
>
> Our, more or less implicit, policy up to now was to take just into
> account the
> C ABI, and not the C++ one. Any opinion if we should change it to take
> into
> account the C++ ABI as well ?
>
> If doing that, I can see
> - pros: new policy would match the expectations of the C++ API users
> - cons: C API users would see soname changes that don't affect them,
> requiring
> recompilation/relinking
As long as the C & C++ APIs are provided by a single library, it makes
sense to base the libtool versioning on the C++ API since that changes
most often.
In Debian we mark the libgdal C++ symbols and add a dependency on the
version specific virtual ABI package provided by the libgdal20 package
to all packages that use any of the C++ symbols. Most reverse
dependencies of GDAL use (some) C++ symbols, requiring a rebuild of
these packages for every new release of GDAL uploaded to Debian. Only
the gmt, imposm, mapcache, mapserver, ncl, osmium, postgis, xastir,
grass & pyosmium packages don't use any C++ symbols (10 out of 37).
It would be great if the other reverse dependencies would limited
themselves to the C API, but that seems an unrealistic desire. GEOS
reverse dependencies don't manage that either, although most GEOS rdeps
use the C API with a few that (also) require the C++ API.
> Another approach would be to have a libgdal_c.so with C ABI only and
> libgdal.so with the rest, ala GEOS, but it is not obvious that the cost
> to
> restructure the GDAL code to implement that, and to existing external
> code to
> adapt for this change, would be worth the advantages.
It is a cleaner approach, but because it's so invasive I would postpone
that change to GDAL 3.0 making it of no use in the short term.
I'm generally in favour of this option as the proper long term solution.
It will simplify the packaging by removing the need for the virtual ABI
package.
Kind Regards,
Bas
More information about the gdal-dev
mailing list