Source: tbb Version: 2017~U7-6 Severity: serious Tags: patch Control: affects -1 src:slic3r-prusa
The latest slic3r-prusa upload FTBFS on armel: https://buildd.debian.org/status/logs.php?pkg=slic3r-prusa&arch=armel ... In file included from /usr/include/tbb/tbb_stddef.h:95:0, from /usr/include/tbb/tbb_machine.h:117, from /usr/include/tbb/atomic.h:32, from /<<BUILDDIR>>/slic3r-prusa-1.37.1+dfsg2/xs/src/slic3r/GUI/../../libslic3r/Print.hpp:19, from /<<BUILDDIR>>/slic3r-prusa-1.37.1+dfsg2/xs/src/slic3r/GUI/3DScene.cpp:9: /usr/include/tbb/tbb_config.h:450:10: error: #error Current runtime does not support std::exception_ptr. Set TBB_USE_CAPTURED_EXCEPTION and make sure that your code is ready to catch tbb::captured_exception. #error Current runtime does not support std::exception_ptr. Set TBB_USE_CAPTURED_EXCEPTION and make sure that your code is ready to catch tbb::captured_exception. ^~~~~ This error is no longer correct with gcc >= 7, fix attached. The severity might seem inflated, but this needs an RC bug affecting slic3r-prusa somewhere.
Description: __TBB_EXCEPTION_PTR_PRESENT fix for armel exception_ptr in GCC >= 7 no longer requires atomic instructions. Author: Adrian Bunk <b...@debian.org> --- tbb-2017~U7.orig/include/tbb/tbb_config.h +++ tbb-2017~U7/include/tbb/tbb_config.h @@ -226,8 +226,9 @@ #define __TBB_IMPLICIT_MOVE_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40600) /** __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 here is a substitution for _GLIBCXX_ATOMIC_BUILTINS_4, which is a prerequisite for exception_ptr but cannot be used in this file because it is defined in a header, not by the compiler. - If the compiler has no atomic intrinsics, the C++ library should not expect those as well. **/ - #define __TBB_EXCEPTION_PTR_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40404 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + GCC >= 7 has exception_ptr even without atomic instructions: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735#c11 **/ + #define __TBB_EXCEPTION_PTR_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40404 && (__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 || (__TBB_GCC_VERSION >= 70000))) #define __TBB_STATIC_ASSERT_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40300) #define __TBB_CPP11_TUPLE_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40300) #define __TBB_INITIALIZER_LISTS_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40400)