[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