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

Adrian Bunk bunk at debian.org
Tue Jun 6 11:02:04 UTC 2017


Dear Julien,

making a function inline does not break the API - compiling software 
against the library still works as before.

But making a function inline does break the ABI requiring a soname bump,
since it breaks software that was compiled against an older version of
the library.

Adrian


On Tue, Jun 06, 2017 at 12:47:38PM +0200, Julien Yann Dutheil wrote:
> 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??
> 
> J.
> 
> ---------- Forwarded message ----------
> From: Adrian Bunk <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>
> Cc: Andreas Tille <tille at debian.org>, 864188 at bugs.debian.org, GINDRAUD
> FRANCOIS <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> 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/
> > > 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
> >
> > § 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



More information about the Debian-med-packaging mailing list