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