[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

givaro: changed API without SONAME bump



notfound 678769 1.1.6~rc0-4.2
reassign 678769 src:givaro
affects 678769 linbox
affects 678769 fflas-ffpack
retitle 678769 givaro: changed ABI without SONAME bump
found 678769 3.7.0-2
thanks

Justification: Policy 8.1

"Every time the shared library ABI changes in a way that may break
binaries linked against older versions of the shared library, the
SONAME of the library and the corresponding name for the binary package
containing the runtime shared library should change. Normally, this
means the SONAME should change any time an interface is removed from
the shared library or the signature of an interface (the number of
parameters or the types of parameters that it takes, for example) is
changed. This practice is vital to allowing clean upgrades from older
versions of the package and clean transitions between the old ABI and
new ABI without having to upgrade every affected package simultaneously."

The sequence was as follows:

0: givaro 3.2.13 was uploaded on 2012-05-29, the same day that linbox
was NMU'd by doko for a gcc-4.7 FTBFS in linbox. Everything was fine at
this point.

1: On 2012-06-10 - close to the known start of the release freeze for
Wheezy - givaro 3.7.0-1 was uploaded, followed by 3.7.0-2 on
2012-06-21. AFAICT the release team were not asked about either upload,
there was no request to binNMU linbox (it would have failed, had this
been done).

2: givaro migrates into testing on 2012-07-02, despite #678769 being
filed by Lucas on 24 Jun 2012 against linbox because the linbox
maintainer didn't respond to the RC bug or try to work out what was
wrong.

3: givaro doesn't use versioned symbols, so none of this was noticed by
the givaro maintainer. (If a libgivaro0.symbols file was in use in
3.2.13, 3.7.0 would have failed to build for the givaro maintainer,
complaining about missing symbols which *should* have given the hint
that the givaro API had changed).

givaro 3.7.0 has the following diffstat for just one of the public
header files, givinteger.h:

 givinteger.h |  501 ++++++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 361 insertions(+), 140 deletions(-)

This consists, mainly, of moving all of the Class IntegerDom public
declarations inside a new namespace (Givaro::). Namespacing public
functions and classes has the effect of *removing* the symbols as
defined in 3.2.13 and *adding* all the same symbols back again with the
namespace included as part of the symbol. This is an incompatible API
change and requires source code changes in any reverse dependencies
which include the affected header file. In this case, linbox.
Therefore, givaro should have migrated to libgivaro1 at which point the
givaro maintainer would have had to contact the release team for
approval of a new transition which, at the time it was done, would
likely have been denied.

Instead, Debian testing now has a version of givaro which breaks reverse
dependencies, a version of linbox which requires numerous source code
changes to build against the new givaro (my patch so far includes 12
separate changes in the linbox source code and I've only processed the
first few instances) and a version of fflas-ffpack which needs a
rebuild against whatever version of givaro we end up with, or removal
if that is the decision regarding fixing the givaro mess. 

My proposal to the release team to fix this mess is that all three
packages (givaro, fflas-ffpack and linbox) are removed from testing as
each maintainer has failed to spot the problem or prevent the breakage.
No other packages would be affected by these removals. fflas-ffpack has
the same maintainer as givaro.

The reassignment of this bug does not affect the removal as the givaro
maintainer should already have noticed that this bug existed and linbox
needs substantial source code changes to work with the new givaro API.
It does not seem likely to me that the necessary changes will be made
given the lack of response to the original RC bug against linbox.

-- 


Neil Williams
=============
http://www.linux.codehelp.co.uk/

Attachment: pgp9WkkCZ6LnC.pgp
Description: PGP signature


Reply to: