Skip to content

Build error of symengine.py when SymEngine's LLVMDoubleVisitor is enabled. #483

@bjodah

Description

@bjodah

I experienced this error first locally, and I have now reproduced it in our CI:

Relevant part of log https://github.com/bjodah/symengine.py/actions/runs/9315200175/job/25640872589
running build
running build_ext
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at /home/runner/our_usr/lib/cmake/symengine/SymEngineConfig.cmake:34 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.
Call Stack (most recent call first):
  CMakeLists.txt:16 (find_package)


-- Performing Test HAVE_FFI_CALL
-- Performing Test HAVE_FFI_CALL - Success
-- Found FFI: /home/runner/our_usr/lib/libffi.so
-- Performing Test Terminfo_LINKABLE
-- Performing Test Terminfo_LINKABLE - Success
                 from /home/runner/our_usr/include/boost/multiprecision/number.hpp:12,
                 from /home/runner/our_usr/include/boost/multiprecision/cpp_int.hpp:19,
                 from /home/runner/our_usr/include/symengine/mp_class.h:12,
                 from /home/runner/work/symengine.py/symengine.py/dist-extract/symengine-0.11.0/symengine/lib/symengine_wrapper.cpp:1275:
/home/runner/our_usr/include/boost/math/tools/config.hpp:23:6: warning: #warning "The minimum language standard to use Boost.Math will be C++14 starting in July 2023 (Boost 1.82 release)" [-Wcpp]
   23 | #    warning "The minimum language standard to use Boost.Math will be C++14 starting in July 2023 (Boost 1.82 release)"
      |      ^~~~~~~
In file included from /usr/include/c++/11/vector:66,
                 from /home/runner/work/symengine.py/symengine.py/dist-extract/symengine-0.11.0/symengine/lib/symengine_wrapper.cpp:1271:
/usr/include/c++/11/bits/stl_uninitialized.h: In instantiation of ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<SymEngine::LLVMDoubleVisitor*>; _ForwardIterator = SymEngine::LLVMDoubleVisitor*]’:
/usr/include/c++/11/bits/stl_uninitialized.h:333:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::move_iterator<SymEngine::LLVMDoubleVisitor*>; _ForwardIterator = SymEngine::LLVMDoubleVisitor*; _Tp = SymEngine::LLVMDoubleVisitor]’
/usr/include/c++/11/bits/stl_uninitialized.h:355:2:   required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = SymEngine::LLVMDoubleVisitor*; _ForwardIterator = SymEngine::LLVMDoubleVisitor*; _Allocator = std::allocator<SymEngine::LLVMDoubleVisitor>]’
/usr/include/c++/11/bits/vector.tcc:659:48:   required from ‘void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = SymEngine::LLVMDoubleVisitor; _Alloc = std::allocator<SymEngine::LLVMDoubleVisitor>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
/usr/include/c++/11/bits/stl_vector.h:940:4:   required from ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = SymEngine::LLVMDoubleVisitor; _Alloc = std::allocator<SymEngine::LLVMDoubleVisitor>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
/home/runner/work/symengine.py/symengine.py/dist-extract/symengine-0.11.0/symengine/lib/symengine_wrapper.cpp:185448:39:   required from here
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: error: static assertion failed: result type must be constructible from value type of input range
  138 |       static_assert(is_constructible<_ValueType2, decltype(*__first)>::value,
      |                                                                        ^~~~~
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/usr/include/c++/11/bits/stl_uninitialized.h: In instantiation of ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<SymEngine::LLVMFloatVisitor*>; _ForwardIterator = SymEngine::LLVMFloatVisitor*]’:
/usr/include/c++/11/bits/stl_uninitialized.h:333:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::move_iterator<SymEngine::LLVMFloatVisitor*>; _ForwardIterator = SymEngine::LLVMFloatVisitor*; _Tp = SymEngine::LLVMFloatVisitor]’
/usr/include/c++/11/bits/stl_uninitialized.h:355:2:   required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = SymEngine::LLVMFloatVisitor*; _ForwardIterator = SymEngine::LLVMFloatVisitor*; _Allocator = std::allocator<SymEngine::LLVMFloatVisitor>]’
/usr/include/c++/11/bits/vector.tcc:659:48:   required from ‘void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = SymEngine::LLVMFloatVisitor; _Alloc = std::allocator<SymEngine::LLVMFloatVisitor>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
/usr/include/c++/11/bits/stl_vector.h:940:4:   required from ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = SymEngine::LLVMFloatVisitor; _Alloc = std::allocator<SymEngine::LLVMFloatVisitor>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
/home/runner/work/symengine.py/symengine.py/dist-extract/symengine-0.11.0/symengine/lib/symengine_wrapper.cpp:187586:39:   required from here
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: error: static assertion failed: result type must be constructible from value type of input range
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/usr/include/c++/11/bits/stl_uninitialized.h: In instantiation of ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<SymEngine::LLVMLongDoubleVisitor*>; _ForwardIterator = SymEngine::LLVMLongDoubleVisitor*]’:
/usr/include/c++/11/bits/stl_uninitialized.h:333:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::move_iterator<SymEngine::LLVMLongDoubleVisitor*>; _ForwardIterator = SymEngine::LLVMLongDoubleVisitor*; _Tp = SymEngine::LLVMLongDoubleVisitor]’
/usr/include/c++/11/bits/stl_uninitialized.h:355:2:   required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = SymEngine::LLVMLongDoubleVisitor*; _ForwardIterator = SymEngine::LLVMLongDoubleVisitor*; _Allocator = std::allocator<SymEngine::LLVMLongDoubleVisitor>]’
/usr/include/c++/11/bits/vector.tcc:659:48:   required from ‘void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = SymEngine::LLVMLongDoubleVisitor; _Alloc = std::allocator<SymEngine::LLVMLongDoubleVisitor>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
/usr/include/c++/11/bits/stl_vector.h:940:4:   required from ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = SymEngine::LLVMLongDoubleVisitor; _Alloc = std::allocator<SymEngine::LLVMLongDoubleVisitor>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
/home/runner/work/symengine.py/symengine.py/dist-extract/symengine-0.11.0/symengine/lib/symengine_wrapper.cpp:188783:39:   required from here
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: error: static assertion failed: result type must be constructible from value type of input range
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
gmake[2]: *** [symengine/lib/CMakeFiles/symengine_wrapper.dir/build.make:94: symengine/lib/CMakeFiles/symengine_wrapper.dir/symengine_wrapper.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:194: symengine/lib/CMakeFiles/symengine_wrapper.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
error: error building project

I'm trying to narrow down what might have changed, I'm leaning towards cython generating a bad symengine_wrapper.cpp (the above attached full log shows that it uses cython-3.0.10):

log.txt

I'll report back when I've tried different versions of cython.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions