<div dir="ltr"><div><div>Thanks a lot for your answers. I understand. We will increase the interface number. Is it ok to move the release tag on the git repository or is it better to make a new (distinct) one?<br><br></div>I apologize for the "dummy" questions.<br><br></div>Julien.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 6, 2017 at 9:14 PM, Vincent Danjean <span dir="ltr"><<a href="mailto:vdanjean.ml@free.fr" target="_blank">vdanjean.ml@free.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Le 06/06/2017 à 12:47, Julien Yann Dutheil a écrit :<br>
> Dear Adrian,<br>
><br>
> These functions are now inline in the corresponding .h files, but their<br>
> interfaces have not changed as far as I know. Does making a function<br>
> inline break the interface??<br>
<br>
</span> It is the difference between the API and the ABI. The API<br>
(interface for the programmer) did not change. But the ABI<br>
(binary interface) changed.<br>
Both (API and ABI) are related but not tightly coupled.<br>
<br>
The API has a backward incompatibility when sources that<br>
compiled with the previous API do not compile any more with<br>
the new API (this is not the case here).<br>
The ABI has a backward incompatibility when a program/lib<br>
compiled against an old library will not work with the new<br>
library. This is the case here: a (previously compiled) program<br>
can try to use symbols that are not present anymore in the<br>
new library. Recompiling the program would workaround the<br>
problem (as the API did not change and the new compiled program<br>
will not try to use the symbols anymore) but the correct fix is<br>
to bump the soname so that the user knows without looking for<br>
bugs if the program and the library are compatible.<br>
<br>
Regards,<br>
Vincent<br>
<span class=""><br>
> J.<br>
><br>
> ---------- Forwarded message ----------<br>
</span><span class="">> From: *Adrian Bunk* <<a href="mailto:bunk@debian.org">bunk@debian.org</a> <mailto:<a href="mailto:bunk@debian.org">bunk@debian.org</a>>><br>
> Date: Tue, Jun 6, 2017 at 11:48 AM<br>
> Subject: Re: Bug#864188: libbpp-core2v5: symbols removed without soname bump<br>
</span><span class="">> To: Julien Yann Dutheil <<a href="mailto:dutheil@evolbio.mpg.de">dutheil@evolbio.mpg.de</a> <mailto:<a href="mailto:dutheil@evolbio.mpg.de">dutheil@evolbio.mpg.de</a><wbr>>><br>
> Cc: Andreas Tille <<a href="mailto:tille@debian.org">tille@debian.org</a> <mailto:<a href="mailto:tille@debian.org">tille@debian.org</a>>>, <a href="mailto:864188@bugs.debian.org">864188@bugs.debian.org</a> <mailto:<a href="mailto:864188@bugs.debian.org">864188@bugs.debian.org</a><wbr>>, GINDRAUD FRANCOIS <<a href="mailto:francois.gindraud@univ-lyon1.fr">francois.gindraud@univ-lyon1.<wbr>fr</a> <mailto:<a href="mailto:francois.gindraud@univ-lyon1.fr">francois.gindraud@<wbr>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>
>> - 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>
> 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>
> Adrian<br>
><br>
</span><span class="">>> On Mon, Jun 5, 2017 at 9:50 AM, Andreas Tille <<a href="mailto:tille@debian.org">tille@debian.org</a> <mailto:<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>
</span>>> > > <a href="https://tests.reproducible-builds.org/debian/rb-pkg/" rel="noreferrer" target="_blank">https://tests.reproducible-<wbr>builds.org/debian/rb-pkg/</a> <<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>
<div><div class="h5">>> > 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>
>> > 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>
</div></div>>> 0 <a href="tel:%28%2B49%29%204522%20763%20298" value="+494522763298">(+49) 4522 763 298</a> <tel:%28%2B49%29%204522%20763%<wbr>20298><br>
<span class="">>><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>
><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>
><br>
</span>> ______________________________<wbr>_________________<br>
> Debian-med-packaging mailing list<br>
> <a href="mailto:Debian-med-packaging@lists.alioth.debian.org">Debian-med-packaging@lists.<wbr>alioth.debian.org</a><br>
> <a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-packaging" rel="noreferrer" target="_blank">http://lists.alioth.debian.<wbr>org/cgi-bin/mailman/listinfo/<wbr>debian-med-packaging</a><br>
><br>
<br>
</blockquote></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>