Package: libstdc++-6-dev
Version: 6.3.0-1
Severity: important
User: helm...@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 via email to