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