[Pkg-crosswire-devel] API/ABI compatibility, and choice of SONAME for libsword

Jonathan Marsden jmarsden at fastmail.fm
Sat Jan 24 17:33:22 GMT 2009


Daniel Glassey wrote:

>> "The upstream authors have the liberty of choosing two major methods for
>> versioning using libtool. -version-info, and -release. -release is used
>> for unstable libraries that change ABI on every new release. However,
>> such unstable library package usually don't belong in Debian, because it
>> will require a rebuild in every dependent package against the new
>> library package."

> which is this case is, practically speaking, irrelevant. All the
> packages to be rebuilt are to be maintained within this group. It does
> mean that the new sword lib can't be uploaded to non-experimental
> until all the frontends can build on it, then sword gets uploaded and
> autobuilt, then the frontends get uploaded. That is the way it has
> been so far.

All it takes is for one new application to come along that uses
libsword... and since it *is* a library, IMO our packaging needs to
treat it as *being* a library, and so allow for others deciding to use it.

> I can't see it being a problem as it has been ok the last 8 years
> uploading new libswordx packages. The worst I can see happening is
> that the name is rejected and we have to go back to libsword7 ...

> I have no objection to the package name be libsword-1.5.11 and SONAME
> being libsword-1.5.11.so as long as there is no way it can break upgrades.

I'd rather do what the guide says and stick with libsword7 next, but I
suspect either way will work at a technical level, so as long as you are
right about it being OK to put the whole 1.5.11 version into the package
name, I think we could do it.

> As is says in the Debian Library Packaging guide: 'It is quite
> important that Debian does not lose binary compatibility with other
> distributions, so changing the SONAME specifically for Debian is
> generally a bad idea. Discuss and convince the upstream to use a saner
> method for determining the SONAMEs.'
> 
> I hadn't thought of that before, so yes, we do need agreement with
> what works upstream and what works within Debian/Ubuntu.

Since in reality Debian/Ubuntu are the only distributions that I know of
currently officially packaging this code, and since they have a lengthy
history (back to 1999, I think!) of using -version-info and a sequence
of small integers the last of which is 6, (rather than -release
$(VERSION) ), I see no reason to break from tradition here.  Maybe, once
we have this all done for Debian and Ubuntu, someone among us will get
brave and attempt to get equivalent RPM packages into Fedora and
OpenSuSe and Mandriva or something... but then they are following the
lead we are setting here... there is no *current* issue with binary
compatibility with packages in other distributions.

We have other work to do, and only a few weeks to do it... so my
suggestion is to leave this the way it has been in Debian for years, and
use libsword7 as the name and -version-info 7 in the build script,
*unless* we can have the dialogue with the upstream deveopers that the
Library Packaging Guide recommends, *and* such dialogue is likely to get
us a rapid and positive result.

Jonathan




More information about the Pkg-crosswire-devel mailing list