aewallin / openvoronoi

2D voronoi diagram for point and line-segment sites using incremental topology-oriented algorithm. C++ with python bindings. Licensed under LGPL2.1.
http://www.anderswallin.net/cam/
GNU Lesser General Public License v2.1
202 stars 69 forks source link

Error in building "open_voronoi_py" #54

Open huberemanuel opened 1 year ago

huberemanuel commented 1 year ago

I have the following error on my local machine (Ubuntu 22.04) and by forking and triggering the workflow.

Error:

Run cmake --build /home/runner/work/openvoronoi/openvoronoi/build --config Release
[  2%] Building CXX object CMakeFiles/libopenvoronoi.dir/voronoidiagram.cpp.o
[  4%] Building CXX object CMakeFiles/libopenvoronoi.dir/vertex.cpp.o
[  7%] Building CXX object CMakeFiles/libopenvoronoi.dir/edge.cpp.o
[  9%] Building CXX object CMakeFiles/libopenvoronoi.dir/checker.cpp.o
[ [1](https://github.com/huberemanuel/openvoronoi/actions/runs/4390203857/jobs/7688482103#step:7:1)1%] Building CXX object CMakeFiles/libopenvoronoi.dir/common/point.cpp.o
[ 14%] Building CXX object CMakeFiles/libopenvoronoi.dir/vertex_positioner.cpp.o
[ 1[6](https://github.com/huberemanuel/openvoronoi/actions/runs/4390203857/jobs/7688482103#step:7:7)%] Building CXX object CMakeFiles/libopenvoronoi.dir/common/numeric.cpp.o
[ 19%] Building CXX object CMakeFiles/libopenvoronoi.dir/medial_axis_pocket.cpp.o
[ 21%] Building CXX object CMakeFiles/libopenvoronoi.dir/medial_axis_walk.cpp.o
[ 23%] Building CXX object CMakeFiles/libopenvoronoi.dir/offset.cpp.o
[ 26%] Linking CXX shared library libopenvoronoi.so
[ 26%] Built target libopenvoronoi
[ 28%] Building CXX object CMakeFiles/openvoronoi_static.dir/voronoidiagram.cpp.o
[ 30%] Building CXX object CMakeFiles/openvoronoi_static.dir/vertex.cpp.o
[ 33%] Building CXX object CMakeFiles/openvoronoi_static.dir/edge.cpp.o
[ 35%] Building CXX object CMakeFiles/openvoronoi_static.dir/checker.cpp.o
[ 38%] Building CXX object CMakeFiles/openvoronoi_static.dir/common/point.cpp.o
[ 40%] Building CXX object CMakeFiles/openvoronoi_static.dir/vertex_positioner.cpp.o
[ 42%] Building CXX object CMakeFiles/openvoronoi_static.dir/common/numeric.cpp.o
[ 45%] Building CXX object CMakeFiles/openvoronoi_static.dir/medial_axis_pocket.cpp.o
[ 4[7](https://github.com/huberemanuel/openvoronoi/actions/runs/4390203857/jobs/7688482103#step:7:8)%] Building CXX object CMakeFiles/openvoronoi_static.dir/medial_axis_walk.cpp.o
[ 50%] Building CXX object CMakeFiles/openvoronoi_static.dir/offset.cpp.o
[ 52%] Linking CXX static library libopenvoronoi_static.a
[ 52%] Built target openvoronoi_static
[ 54%] Building CXX object CMakeFiles/openvoronoi.dir/py/open_voronoi_py.cpp.o
In file included from /usr/include/boost/smart_ptr/detail/sp_thread_sleep.hpp:22,
                 from /usr/include/boost/smart_ptr/detail/yield_k.hpp:23,
                 from /usr/include/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp:14,
                 from /usr/include/boost/smart_ptr/detail/spinlock.hpp:42,
                 from /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp:25,
                 from /usr/include/boost/smart_ptr/shared_ptr.hpp:29,
                 from /usr/include/boost/shared_ptr.hpp:17,
                 from /usr/include/boost/python/converter/shared_ptr_to_python.hpp:12,
                 from /usr/include/boost/python/converter/arg_to_python.hpp:15,
                 from /usr/include/boost/python/call.hpp:15,
                 from /usr/include/boost/python/object_core.hpp:14,
                 from /usr/include/boost/python/args.hpp:22,
                 from /usr/include/boost/python.hpp:11,
                 from /home/runner/work/openvoronoi/openvoronoi/src/py/open_voronoi_py.cpp:21:
/usr/include/boost/bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.’
   36 | BOOST_PRAGMA_MESSAGE(
      | ^~~~~~~~~~~~~~~~~~~~
/usr/include/boost/detail/iterator.hpp:13:1: note: ‘#pragma message: This header is deprecated. Use <iterator> instead.’
   13 | BOOST_HEADER_DEPRECATED("<iterator>")
      | ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/set:60,
                 from /home/runner/work/openvoronoi/openvoronoi/src/voronoidiagram.hpp:23,
                 from /home/runner/work/openvoronoi/openvoronoi/src/py/voronoidiagram_py.hpp:23,
                 from /home/runner/work/openvoronoi/openvoronoi/src/py/open_voronoi_py.cpp:23:
/usr/include/c++/11/bits/stl_tree.h: In instantiation of ‘static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = ovd::OffsetLoop; _Val = ovd::OffsetLoop; _KeyOfValue = std::_Identity<ovd::OffsetLoop>; _Compare = ovd::OffsetLoopCompare; _Alloc = std::allocator<ovd::OffsetLoop>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<ovd::OffsetLoop>*]’:
/usr/include/c++/11/bits/stl_tree.h:2102:44:   required from ‘std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_equal_pos(const key_type&) [with _Key = ovd::OffsetLoop; _Val = ovd::OffsetLoop; _KeyOfValue = std::_Identity<ovd::OffsetLoop>; _Compare = ovd::OffsetLoopCompare; _Alloc = std::allocator<ovd::OffsetLoop>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = ovd::OffsetLoop]’
/usr/include/c++/11/bits/stl_tree.h:2151:4:   required from ‘std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_equal(_Arg&&) [with _Arg = const ovd::OffsetLoop&; _Key = ovd::OffsetLoop; _Val = ovd::OffsetLoop; _KeyOfValue = std::_Identity<ovd::OffsetLoop>; _Compare = ovd::OffsetLoopCompare; _Alloc = std::allocator<ovd::OffsetLoop>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator = std::_Rb_tree<ovd::OffsetLoop, ovd::OffsetLoop, std::_Identity<ovd::OffsetLoop>, ovd::OffsetLoopCompare, std::allocator<ovd::OffsetLoop> >::iterator]’
/usr/include/c++/11/bits/stl_multiset.h:503:36:   required from ‘std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = ovd::OffsetLoop; _Compare = ovd::OffsetLoopCompare; _Alloc = std::allocator<ovd::OffsetLoop>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<ovd::OffsetLoop, ovd::OffsetLoop, std::_Identity<ovd::OffsetLoop>, ovd::OffsetLoopCompare, std::allocator<ovd::OffsetLoop> >::const_iterator; std::multiset<_Key, _Compare, _Alloc>::value_type = ovd::OffsetLoop]’
/home/runner/work/openvoronoi/openvoronoi/src/offset_sorter.hpp:124:41:   required from here
/usr/include/c++/11/bits/stl_tree.h:770:15: error: static assertion failed: comparison object must be invocable as const
  770 |               is_invocable_v<const _Compare&, const _Key&, const _Key&>,
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/stl_tree.h:770:15: note: ‘std::is_invocable_v<const ovd::OffsetLoopCompare&, const ovd::OffsetLoop&, const ovd::OffsetLoop&>’ evaluates to false
gmake[2]: *** [CMakeFiles/openvoronoi.dir/build.make:76: CMakeFiles/openvoronoi.dir/py/open_voronoi_py.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:43[8](https://github.com/huberemanuel/openvoronoi/actions/runs/4390203857/jobs/7688482103#step:7:9): CMakeFiles/openvoronoi.dir/all] Error 2
gmake: *** [Makefile:[16](https://github.com/huberemanuel/openvoronoi/actions/runs/4390203857/jobs/7688482103#step:7:17)6: all] Error 2
Error: Process completed with exit code 2.
meerfrau commented 1 year ago

Me too:

./openvoronoi/src/offset_sorter.hpp:124:41:   required from here
/usr/include/c++/12.2.1/bits/stl_tree.h:770:15: error: static assertion failed: comparison object must be invocable as const
  770 |               is_invocable_v<const _Compare&, const _Key&, const _Key&>,
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12.2.1/bits/stl_tree.h:770:15: note: 'std::is_invocable_v<const ovd::OffsetLoopCompare&, const ovd::OffsetLoop&, const ovd::OffsetLoop&>' evaluates to false
voneiden commented 1 year ago

From C++17 onwards this

https://github.com/aewallin/openvoronoi/blob/1af15b8bde45c0d52d8ad5531e9d7fc7af10efe2/src/offset_sorter.hpp#L81 probably needs to be

    bool operator() (OffsetLoop l1, OffsetLoop l2) const {