Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build fails with mmap_allocator.cpp:227:42: error: ‘using allocator_t = class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’ {aka ‘class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’} has no member named ‘destroy’ and subsequent errors (GCC 14.2.1, boost 1.86.0.) #786

Open
dreirund opened this issue Dec 8, 2024 · 3 comments

Comments

@dreirund
Copy link

dreirund commented Dec 8, 2024

Ahoj,

I am trying to build release version 3.0.0 of this project using this recipe on Artix GNU/Linux (rolling release).

GCC version is 14.2.1, boost version is 1.86.0.

Build fails for me with mmap_allocator.cpp:227:42: error: ‘using allocator_t = class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’ {aka ‘class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’} has no member named ‘destroy’ and subsequent errors (see below).

Build is carried out as follows:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -Wno-dev
cmake --build build -j1

And the terminal output of this is:

-- Dynamically linking with Boost
-- Found rapidjson header files in /usr/include
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /var/cache/makepkg/build/tilemaker/src/build
[  2%] Building CXX object CMakeFiles/tilemaker.dir/src/attribute_store.cpp.o
[  5%] Building CXX object CMakeFiles/tilemaker.dir/src/coordinates.cpp.o
[  7%] Building CXX object CMakeFiles/tilemaker.dir/src/coordinates_geom.cpp.o
[ 10%] Building C object CMakeFiles/tilemaker.dir/src/external/streamvbyte_decode.c.o
[ 13%] Building C object CMakeFiles/tilemaker.dir/src/external/streamvbyte_encode.c.o
[ 15%] Building C object CMakeFiles/tilemaker.dir/src/external/streamvbyte_zigzag.c.o
[ 18%] Building CXX object CMakeFiles/tilemaker.dir/src/geojson_processor.cpp.o
[ 21%] Building CXX object CMakeFiles/tilemaker.dir/src/geom.cpp.o
In file included from /usr/include/boost/geometry/core/config.hpp:17,
                 from /usr/include/boost/geometry/strategy/cartesian/side_by_triangle.hpp:27,
                 from /usr/include/boost/geometry/strategies/strategies.hpp:141,
                 from /usr/include/boost/geometry/geometry.hpp:57,
                 from /usr/include/boost/geometry.hpp:17,
                 from /var/cache/makepkg/build/tilemaker/src/tilemaker-3.0.0/include/geom.h:14,
                 from /var/cache/makepkg/build/tilemaker/src/tilemaker-3.0.0/src/geom.cpp:2:
/usr/include/boost/function_output_iterator.hpp:14:1: note: ‘#pragma message: This header is deprecated. Use <boost/iterator/function_output_iterator.hpp> instead.’
   14 | BOOST_HEADER_DEPRECATED("<boost/iterator/function_output_iterator.hpp>")
      | ^~~~~~~~~~~~~~~~~~~~~~~
[ 23%] Building CXX object CMakeFiles/tilemaker.dir/src/helpers.cpp.o
[ 26%] Building CXX object CMakeFiles/tilemaker.dir/src/mbtiles.cpp.o
[ 28%] Building CXX object CMakeFiles/tilemaker.dir/src/mmap_allocator.cpp.o
/var/cache/makepkg/build/tilemaker/src/tilemaker-3.0.0/src/mmap_allocator.cpp: In static member function ‘static void void_mmap_allocator::destroy(void*)’:
/var/cache/makepkg/build/tilemaker/src/tilemaker-3.0.0/src/mmap_allocator.cpp:227:42: error: ‘using allocator_t = class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’ {aka ‘class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’} has no member named ‘destroy’
  227 |                         return allocator.destroy(reinterpret_cast<uint8_t *>(p));
      |                                          ^~~~~~~
/var/cache/makepkg/build/tilemaker/src/tilemaker-3.0.0/src/mmap_allocator.cpp:235:35: error: ‘using allocator_t = class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’ {aka ‘class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’} has no member named ‘destroy’
  235 |                         allocator.destroy(reinterpret_cast<uint8_t *>(p));
      |                                   ^~~~~~~
/var/cache/makepkg/build/tilemaker/src/tilemaker-3.0.0/src/mmap_allocator.cpp:245:35: error: ‘using allocator_t = class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’ {aka ‘class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’} has no member named ‘destroy’
  245 |                         allocator.destroy(reinterpret_cast<uint8_t *>(p));
      |                                   ^~~~~~~
/var/cache/makepkg/build/tilemaker/src/tilemaker-3.0.0/src/mmap_allocator.cpp:254:35: error: ‘using allocator_t = class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’ {aka ‘class boost::interprocess::allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family>, boost::interprocess::iset_index> >’} has no member named ‘destroy’
  254 |                         allocator.destroy(reinterpret_cast<uint8_t *>(p));
      |                                   ^~~~~~~
make[2]: *** [CMakeFiles/tilemaker.dir/build.make:219: CMakeFiles/tilemaker.dir/src/mmap_allocator.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:90: CMakeFiles/tilemaker.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Regards!

@cldellow
Copy link
Contributor

Version 3.0.0 no longer builds with modern boost -- you'll need at least this commit: 6509f0c

I would recommend building from master, though.

@dreirund
Copy link
Author

Version 3.0.0 no longer builds with modern boost -- you'll need at least this commit: 6509f0c

What about making a new release then, which is compatible with up to date boost?

@systemed
Copy link
Owner

Yes, when I get a spare minute!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants