On 21/09/15 11:04, Michael Tautschnig wrote:
> The information above doesn't seem very consistent with the present situation:
> unstable has gcc-5 >= 5.2.1-13 since 2015-07-30. Ever since, there wasn't
> actually a newer version uploaded to experimental.

The information on that wiki page was written before the upload to
unstable. I am not the libstdc++ maintainer or a C++ expert, so I don't
feel comfortable replacing its text and potentially spreading
misinformation. However, this transition has been going on for nearly 2
months (see debian-devel-announce, debian-devel, debian-release, etc.
for details) so the way to do it is fairly well-understood by now.

ppl didn't get a bug filed in previous rounds of mass-bug-filing,
probably because it failed to build from source when Matthias did the
archive-rebuilds (either because it needed source changes, or because
one of its build-dependencies needed a transition first).

I've only recently resumed mass-bug-filing; everyone who has been
helping with this transition seems to have become somewhat burned-out
after the first month or so, so opening the last few bugs has taken a
while. I don't like this transition any more than you do, and it was not
my idea, but I'm helping it to finish so we can have our distribution back.

> Now looking at ppl, it has been uploaded with arch:all packages only on
> 2015-08-26, and looking at, e.g., the amd64 build log the "Toolchain package
> versions" does confirm: g++-5_5.2.1-15

Yes. This means that it silently changed its ABI with that upload,
because unfortunately that's what happens when an existing C++ library
that uses lists or strings is built with g++-5.

Older versions, such as the one in jessie, were named libppl13 and had
the g++-4 ABI; newer versions are named libppl13 and have the g++-5 ABI,
which is not compatible in some areas (mainly strings and lists).

> Hence I'm not quite sure what might be going on here?!

The goal, as usual in Debian, is that it is impossible to install a
broken combination of packages. At the moment, libppl13 from unstable,
together with one of its reverse dependencies from stable, is a broken
combination: the reverse-dependency will be looking for a mangled
function name that involves std::list, whereas libppl13 from unstable
only defines a mangled function name that involves std::__cxx11::list.

The way we are achieving that is to rename the binary package (to
libppl13v5), with a Conflicts/Replaces on the old name. Old binary
packages depend on libppl13 and expect the old ABI; new binary packages
depend on libppl13v5 and expect the new ABI; and apt will ensure that
you either have an "all old" or "all new" system, and not some broken
partial upgrade.

    S

Reply via email to