[Debian-med-packaging] Bug#864188: libbpp-core2v5: symbols removed without soname bump

Vincent Danjean vdanjean.ml at free.fr
Tue Jun 6 19:14:48 UTC 2017


Le 06/06/2017 à 12:47, Julien Yann Dutheil a écrit :
> Dear Adrian,
> 
> These functions are now inline in the corresponding .h files, but their
> interfaces have not changed as far as I know. Does making a function
> inline break the interface??

  It is the difference between the API and the ABI. The API
(interface for the programmer) did not change. But the ABI
(binary interface) changed.
  Both (API and ABI) are related but not tightly coupled.

  The API has a backward incompatibility when sources that
compiled with the previous API do not compile any more with
the new API (this is not the case here).
  The ABI has a backward incompatibility when a program/lib
compiled against an old library will not work with the new
library. This is the case here: a (previously compiled) program
can try to use symbols that are not present anymore in the
new library. Recompiling the program would workaround the
problem (as the API did not change and the new compiled program
will not try to use the symbols anymore) but the correct fix is
to bump the soname so that the user knows without looking for
bugs if the program and the library are compatible.

  Regards,
    Vincent

> J.
> 
> ---------- Forwarded message ----------
> From: *Adrian Bunk* <bunk at debian.org <mailto:bunk at debian.org>>
> Date: Tue, Jun 6, 2017 at 11:48 AM
> Subject: Re: Bug#864188: libbpp-core2v5: symbols removed without soname bump
> To: Julien Yann Dutheil <dutheil at evolbio.mpg.de <mailto:dutheil at evolbio.mpg.de>>
> Cc: Andreas Tille <tille at debian.org <mailto:tille at debian.org>>, 864188 at bugs.debian.org <mailto:864188 at bugs.debian.org>, GINDRAUD FRANCOIS <francois.gindraud at univ-lyon1.fr <mailto:francois.gindraud at univ-lyon1.fr>>
> 
> 
> On Tue, Jun 06, 2017 at 11:35:57AM +0200, Julien Yann Dutheil wrote:
>> Dear Andreas, Adrian,
>>...
>> - This error actually revealed an interface breakdown (essentially due to
>> our upgrade to c++11), and your suggestion is to reflect this change by
>> increasing the interface number (which would result in a change in package
>> name, such as libbpp-core2 -> libbpp-core3), am I correct?
> 
> This ABI breakage is unrelated to the C++ version used.
> 
> RandomTools::lnGamma() was removed from src/Bpp/Numeric/Random/RandomTools.cpp
> TextTools::startsWith() was removed from src/Bpp/Text/TextTools.cpp
> ApplicationTools::parameterExists() was removed from src/Bpp/App/ApplicationTools.cpp
> ...
> 
> Removing any such function breaks the ABI in an incompatible way,
> and therefore requires a soname bump.
> 
>> Best,
>>
>> Julien.
> 
> cu
> Adrian
> 
>> On Mon, Jun 5, 2017 at 9:50 AM, Andreas Tille <tille at debian.org <mailto:tille at debian.org>> wrote:
>>
>> > Hi Julien,
>> >
>> > while I made a mistake to upload libbpp-core to unstable rather than
>> > experimental as it was planed this has probably lead to spot a bug
>> > earlier.  The problem is that the soversion needs to be bumped due to
>> > the ABI change.
>> >
>> >    $ objdump -p ./libbpp-core.so.2.0.4   | sed -n 's/^.*SONAME *//p'
>> >    libbpp-core.so.2
>> >
>> > I think you should bump the SOVERSION to reflect that change.
>> >
>> > Kind regards
>> >
>> >      Andreas.
>> >
>> > On Mon, Jun 05, 2017 at 02:42:58AM +0300, Adrian Bunk wrote:
>> > > Package: libbpp-core2v5
>> > > Version: 2.3.0-1~exp1
>> > > Severity: serious
>> > > Control: affects -1 libbpp-seq9v5 src:libbpp-phyl
>> > >
>> > > 2.3.0-1~exp1 in unstable (sic) removes symbols without changing soname,
>> > > causing the following FTBFS in libbpp-phyl:
>> > >
>> > > https://tests.reproducible-builds.org/debian/rb-pkg/ <https://tests.reproducible-builds.org/debian/rb-pkg/>
>> > unstable/amd64/libbpp-phyl.html
>> > >
>> > > ...
>> > > [ 93%] Linking CXX executable test_bowker
>> > > cd /build/1st/libbpp-phyl-2.2.0/obj-x86_64-linux-gnu/test &&
>> > /usr/bin/cmake -E cmake_link_script CMakeFiles/test_bowker.dir/link.txt
>> > --verbose=1
>> > > /usr/bin/c++   -Wall -Wshadow -Weffc++ -Wconversion  -Wl,-z,relro
>> > CMakeFiles/test_bowker.dir/test_bowker.cpp.o  -o test_bowker -rdynamic
>> > -lbpp-seq -lbpp-core -L../src -lbpp-phyl
>> > > /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libbpp-seq.so:
>> > undefined reference to `bpp::RandomTools::lnGamma(double)'
>> > > /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libbpp-seq.so:
>> > undefined reference to `bpp::TextTools::startsWith(
>> > std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> > const&, std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> > const&)'
>> > > /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libbpp-seq.so:
>> > undefined reference to `bpp::ApplicationTools::
>> > parameterExists(std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> >,
>> > std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> > const,
>> > std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> > > > >&)'
>> > > /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libbpp-seq.so:
>> > undefined reference to `bpp::ApplicationTools::getStringParameter(std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> > const&,
>> > std::map<std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> >, std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> >,
>> > std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> > const,
>> > std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> > > > >&, std::__cxx11::basic_string<char,
>> > std::char_traits<char>, std::allocator<char> > const&,
>> > std::__cxx11::basic_string<char, std::char_traits<char>,
>> > std::allocator<char> > const&, bool, int)'
>> > > collect2: error: ld returned 1 exit status
>> > > test/CMakeFiles/test_bowker.dir/build.make:99: recipe for target
>> > 'test/test_bowker' failed
>> > > make[3]: *** [test/test_bowker] Error 1
>> >
>> > --
>> > http://fam-tille.de
>> >
>>
>>
>>
>> --
>> Julien Y. Dutheil, Ph-D
>> 0 (+49) 4522 763 298 <tel:%28%2B49%29%204522%20763%20298>
>>
>> § Max Planck Institute for Evolutionary Biology
>> Molecular Systems Evolution
>> Department of Evolutionary Genetics
>> Plön -- GERMANY
>>
>> § Institute of Evolutionary Sciences - Montpellier
>> University of Montpellier 2 -- FRANCE
> 
> 
> 
> 
> -- 
> Julien Y. Dutheil, Ph-D
> 0 (+49) 4522 763 298
> 
> § Max Planck Institute for Evolutionary Biology
> Molecular Systems Evolution
> Department of Evolutionary Genetics
> Plön -- GERMANY
> 
> § Institute of Evolutionary Sciences - Montpellier
> University of Montpellier 2 -- FRANCE
> 
> 
> _______________________________________________
> Debian-med-packaging mailing list
> Debian-med-packaging at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-packaging
> 




More information about the Debian-med-packaging mailing list