[Qgis-developer] Request of statement about qgis libraries.

Francesco P. Lovergine frankie at debian.org
Fri Mar 27 05:17:49 EDT 2009


On Thu, Mar 26, 2009 at 11:06:24PM +0200, Tim Sutton wrote:
> standard repos. See below for responses:
> 
> Francesco P. Lovergine wrote:
> > Hi folks
> > 
> > On the basis of a brief discussion about Qgis 1.0.x libraries this is 
> > the current point of view by Debian packagers about the status of 
> > Qgis SONAMEs.
> > 
> > Currently 1.0.1 uses 
> > 
> > Core library:
> > 
> >   SONAME               libqgis_core.so.1.0
> > 
> > Non-core that depends on core:
> > 
> >   SONAME               libqgis_gui.so.1.0
> >   SONAME               libqgispython.so.1.0
> > 
> > Plugins that depends on core/non-core:
> > 
> >   SONAME               libcoordinatecaptureplugin.so
> >   SONAME               libcopyrightlabelplugin.so
> >   SONAME               libdelimitedtextplugin.so
> >   SONAME               libdelimitedtextprovider.so
> >   SONAME               libdxf2shpconverterplugin.so
> >   SONAME               libgeorefplugin.so
> >   SONAME               libgpsimporterplugin.so
> >   SONAME               libgpxprovider.so
> >   SONAME               libgridmakerplugin.so
> >   SONAME               libinterpolationplugin.so
> >   SONAME               libmemoryprovider.so
> >   SONAME               libnortharrowplugin.so
> >   SONAME               libogrconverterplugin.so
> >   SONAME               libogrprovider.so
> >   SONAME               libpostgresprovider.so
> >   SONAME               libquickprintplugin.so
> >   SONAME               libscalebarplugin.so
> >   SONAME               libspitplugin.so
> >   SONAME               libwfsplugin.so
> >   SONAME               libwfsprovider.so
> >   SONAME               libwmsprovider.so
> > 
> > Now, someone said that API for 1.x is frozen, but ABI could change at every
> > release, i.e. 1.1 would break 1.0 ABI compatibility (is that confirmed?). 
> 
> Yes that is correct. Our stable branch will undergo maintenance for at
> least the next year with bug fix only releases producing 1.0.x versions.
> 
> The 1.x releases will be marked as unstable always and will not be
> recommended for users wishing to emphasise stability consistency (e.g.
> in enterprises where support needs to be offered).
> 
> The API of 1.x releases are expected to remain backwards compatible for
> the foreseeable future but as we head towards version 2.0 we could
> expect that API may undergo changes too.
> 
> I think it is safe to assume that in all cases we cannot guarantee ABI
> compatibility since even a small bug fix that requires adding a new
> class member or changing the static designation of a member variable
> could break ABI compatibility.
> 

So for the future I would expect something like

SONAME               libqgis_core.so.1.0.1

for all core libs. Note that, if people distributed svn-taken
pre-releases, at least at package level you should add 'Provides:
qgis-interface-1.0.1-N' to avoid breakages. All third-parties depending
packages should depend on that. I'm going to modify d-gis provided tree
in order to show that. The N level should be upgraded for each new
snapshot. This would allow for instance distributing a third parties
source and binary plugin depending on qgis-interface-1.0.1-0. I hope
this is clear enough.

> > 
> > That justifies the use of a 1.0 versioning of SONAMEs, but implies that 
> > debian/control uses the wrong name for libqgis*, which should be libqgis1.0 
> > currently instead and libqgis1.1 for Qgis 1.1.x. 
> 
> > It is due to avoid problems with selective upgrades and third-parties 
> > plugins (it is considered a serious bug FYI, because violates Debian Policy).
> > 
> > If ABI could change for each patchlevel, 1.x.y should be used in SONAMEs,
> > and package names should change as consequence. So what's definitively 
> > required is fixing a roadmap for API/ABI changes, and following it,
> > in order to allow distributors doing their work and avoid problems
> > to other developers and users.
> 
> Ok we can work to change this to use the 1.x.y versioning scheme - I
> dont see any problem conceptually with that - others like Juergen could
> probably offer better insight as to whether this presents us with any
> technical issues.
> 
> 
> > 
> > Same considerations apply to Python interface per se, IF both 
> > API and/or ABI changes could be expected independently on the C++ interfaces
> > (e.g. if python interfaces changed more rapidly).
> > In that case python related packages should declare their interface level,
> > to avoid dangerous mixing with compiled objects. At least currently it is
> > NOT expected on the basis of current package style. But is this true?
> 
> Martin could probably comment better than I here but I would expect the
> python libs to closely track the API of core an gui. That said bug fixes
> could always break thinks. Having python libs link to an explicit
> library could help to prevent issues like this:
> 
> https://trac.osgeo.org/qgis/ticket/1548 (other issues aside).
> 

You can rely on the (= ${binary:Version}) dependency for that in the
qgis package. What is needed is depending on qgis-interface-X.Y.Z
at release time for other packaged plugins (or -N in case
of snapshots). This is not currently the case, but it could be
possible in the future, that's the reason for the Provides: item.

> > 
> > Those are currently the major blockers to even _think_ of having Qgis in 
> > Debian again. A well-defined policy need to be stated and followed.
> > 
> 
> Thanks for the input - we will continue trying to get our project debian
> compliant into the future.
> 
> Regards
> 

-- 
Francesco P. Lovergine


More information about the Qgis-developer mailing list