[Pkg-samba-maint] Bug#791224: Bug#791224: openchange: library transition may be needed when GCC 5 is the default
Steve Langasek
vorlon at debian.org
Tue Jul 7 01:10:32 UTC 2015
Control: tags -1 confirmed
On Fri, Jul 03, 2015 at 01:13:14PM +0000, Matthias Klose wrote:
> Package: src:openchange
> Version: 2.2-7
> Severity: important
> Tags: sid stretch
> User: debian-gcc at lists.debian.org
> Usertags: libstdc++-cxx11
> Background [1]: libstdc++6 introduces a new ABI to conform to the
> C++11 standard, but keeps the old ABI to not break existing binaries.
> Packages which are built with g++-5 from experimental (not the one
> from testing/unstable) are using the new ABI. Libraries built from
> this source package export some of the new __cxx11 or B5cxx11 symbols,
> and dropping other symbols. If these symbols are part of the API of
> the library, then this rebuild with g++-5 will trigger a transition
> for the library.
> What is needed:
> - Rebuild the library using g++/g++-5 from experimental. Note that
> most likely all C++ libraries within the build dependencies need
> a rebuild too. You can find the log for a rebuild in
> https://people.debian.org/~doko/logs/gcc5-20150701/
> Search for "BEGIN GCC CXX11" in the log.
Here, for reference, is the list of cxx11-related symbols reported in the
build log (sed -n -e'/BEGIN GCC CXX11/,/END GCC CXX11/p' /tmp/openchange_2.2-7_unstable_gcc5.log |
c++filt):
===== BEGIN GCC CXX11 symbols libmapipp0 /usr/lib/x86_64-linux-gnu/libmapipp.so.2.2 =====
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4.21 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4.21 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append(char const*, unsigned long)
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4.21 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4.21 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::swap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4.21 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long)
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4.21 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)
0000000000009620 g DF .text 000000000000033f Base libmapipp::session::login(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&)
0000000000006920 w DF .text 000000000000018b Base libmapipp::mapi_exception::mapi_exception(MAPISTATUS, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
0000000000009270 g DF .text 00000000000000a4 Base libmapipp::profile_database::get_default_profile_path[abi:cxx11]()
0000000000009960 g DF .text 0000000000000362 Base libmapipp::session::session(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
0000000000009320 g DF .text 0000000000000236 Base libmapipp::profile_database::profile_database(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
0000000000006920 w DF .text 000000000000018b Base libmapipp::mapi_exception::mapi_exception(MAPISTATUS, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
0000000000009320 g DF .text 0000000000000236 Base libmapipp::profile_database::profile_database(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
0000000000009230 g DF .text 0000000000000033 Base libmapipp::profile_database::create_profile_store(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&)
0000000000009960 g DF .text 0000000000000362 Base libmapipp::session::session(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
0000000000009090 g DF .text 0000000000000144 Base libmapipp::profile_database::get_default_profile_name[abi:cxx11]()
===== END GCC CXX11 symbols libmapipp0 /usr/lib/x86_64-linux-gnu/libmapipp.so.2.2 =====
> - Decide if the symbols matching __cxx11 or B5cxx11 are part of the
> library API, and are used by the reverse dependencies of the
> library.
These are clearly part of the library API.
$ sudo apt-get install libmapipp-dev
$ grep 'login[[:space:]]*(' /usr/include/libmapi++/*
/usr/include/libmapi++/session.h: void login(const std::string& profile_name = "", const std::string& password = "") throw(mapi_exception);
/usr/include/libmapi++/session.h: * Calling this method only makes sense if login() has been called with
$
<snip>
> - If there are no reverse dependencies, it should be the package
> maintainers decision if a transition is needed. However this might
> break software which is not in the Debian archive, and built
> against these packages.
There are no reverse-dependencies of this package in the archive except for
libmapipp-dev, from the same source.
Jelmer, do you see any reason to do a shared lib package name transition for
this ABI change, as opposed to just making it a straight rebuild? If you
think there are third-party packages depending on libmapipp, I can prepare
the patch for this issue.
Thanks,
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
slangasek at ubuntu.com vorlon at debian.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-samba-maint/attachments/20150706/815c51bb/attachment.sig>
More information about the Pkg-samba-maint
mailing list