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 <b...@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 <duth...@evolbio.mpg.de> > Cc: Andreas Tille <ti...@debian.org>, 864...@bugs.debian.org, GINDRAUD > FRANCOIS <francois.gindr...@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 <ti...@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