Bug#851273: libstdc++-6-dev: error when installing together with libstdc++-6-dev:armel
Package: libstdc++-6-dev
Version: 6.3.0-1
Severity: important
User: helmutg@debian.org
Usertags: rebootstrap
An attempt at installing libstdc++-6-dev:armel fails:
| # apt-get -y install libstdc++-6-dev libstdc++-6-dev:armel
| ...
| dpkg: error processing archive /tmp/apt-dpkg-install-N1eyfh/12-libstdc++-6-dev_6.3.0-2_armel.deb (--unpack):
| trying to overwrite shared '/usr/include/c++/6/bits/exception_ptr.h', which is different from other instances of package libstdc++-6-dev:armel
| dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
| Errors were encountered while processing:
| /tmp/apt-dpkg-install-N1eyfh/12-libstdc++-6-dev_6.3.0-2_armel.deb
| E: Sub-process /usr/bin/dpkg returned an error code (1)
This breaks cross build Debian packages to armel.
I am attaching a diff between the common files of the amd64 package and
the armel package. Based on that diff, I think that
debian/patches/pr64735.diff is the culprit. The patch is only added on
armel, because it changes symbols (which is bad enough). It was added to
fix #727621.
Given the age of the report and the regression, I think it is too late
for including it and thus ask for reverting it (i.e. reopening #727621)
or finding a solution that doesn't break cross compiling.
Thus I am adding d-arm@l.d.o via X-Debbugs-Cc.
Given that only four files are affected, all of them are headers and
all of them live below /usr/include/c++/6/, a solution could be moving
them to multiarch locations. The offending headers are
bits/exception_ptr.h, bits/nested_exception.h exception and future. This
risks introducing other regressions though.
Another option would be reworking the patch to be applicable for every
architecture but being a noop for everything but armel.
Given the timing, a revert sounds like the best available option to me.
Do any armel porters disagree?
Helmut
--- amd64/usr/include/c++/6/bits/exception_ptr.h
+++ armel/usr/include/c++/6/bits/exception_ptr.h
@@ -36,10 +36,6 @@
#include <bits/c++config.h>
#include <bits/exception_defines.h>
-#if ATOMIC_INT_LOCK_FREE < 2
-# error This platform does not support exception propagation.
-#endif
-
extern "C++" {
namespace std
--- amd64/usr/include/c++/6/bits/nested_exception.h
+++ armel/usr/include/c++/6/bits/nested_exception.h
@@ -39,10 +39,6 @@
#include <bits/c++config.h>
#include <bits/move.h>
-#if ATOMIC_INT_LOCK_FREE < 2
-# error This platform does not support exception propagation.
-#endif
-
extern "C++" {
namespace std
--- amd64/usr/include/c++/6/exception
+++ armel/usr/include/c++/6/exception
@@ -35,7 +35,6 @@
#pragma GCC visibility push(default)
#include <bits/c++config.h>
-#include <bits/atomic_lockfree_defines.h>
extern "C++" {
@@ -166,7 +165,7 @@
#pragma GCC visibility pop
-#if (__cplusplus >= 201103L) && (ATOMIC_INT_LOCK_FREE > 1)
+#if (__cplusplus >= 201103L)
#include <bits/exception_ptr.h>
#include <bits/nested_exception.h>
#endif
--- amd64/usr/include/c++/6/future
+++ armel/usr/include/c++/6/future
@@ -182,8 +182,7 @@
future<__async_result_of<_Fn, _Args...>>
async(_Fn&& __fn, _Args&&... __args);
-#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \
- && (ATOMIC_INT_LOCK_FREE > 1)
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
/// Base class and enclosing scope.
struct __future_base
@@ -1745,7 +1744,6 @@
#endif // _GLIBCXX_ASYNC_ABI_COMPAT
#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
- // && ATOMIC_INT_LOCK_FREE
// @} group futures
_GLIBCXX_END_NAMESPACE_VERSION
Reply to: