Skip to content

OSRM build fails on GCC 10.2.1 #6302

@Zverik

Description

@Zverik

Building the OSRM in Debian Bullseye (the latest stable one) fails with the "use of deleted function" error. You can see it with the Dockerfile in this repo. Same with Ubuntu 22.04. But OSRM builds with Ubuntu 20.04 — although it uses much more memory for processing data for some reason.

Bisected it to #6279.

#9 78.05 /src/third_party/libosmium/include/osmium/osm/entity.hpp: In instantiation of 'TSubitem& osmium::detail::subitem_of_type(TIter, const TIter&) [with TSubitem = const osmium::TagList; TIter = osmium::memory::CollectionIterator<const osmium::memory::Item>]':
#9 78.05 /src/third_party/libosmium/include/osmium/osm/object.hpp:333:83:   required from here
#9 78.05 /src/third_party/libosmium/include/osmium/osm/entity.hpp:54:29: error: use of deleted function 'osmium::memory::Collection<osmium::Tag, osmium::item_type::tag_list>::Collection(osmium::memory::Collection<osmium::Tag, osmium::item_type::tag_list>&&)'
#9 78.05    54 |             static TSubitem subitem{};
#9 78.05       |                             ^~~~~~~
#9 78.05 In file included from /src/third_party/libosmium/include/osmium/osm/relation.hpp:36,
#9 78.05                  from /src/include/extractor/extraction_relation.hpp:6,
#9 78.05                  from /src/src/extractor/extractor.cpp:8:
#9 78.05 /src/third_party/libosmium/include/osmium/memory/collection.hpp:117:15: note: 'osmium::memory::Collection<osmium::Tag, osmium::item_type::tag_list>::Collection(osmium::memory::Collection<osmium::Tag, osmium::item_type::tag_list>&&)' is implicitly deleted because the default definition would be ill-formed:
#9 78.05   117 |         class Collection : public Item {
#9 78.05       |               ^~~~~~~~~~
#9 78.05 /src/third_party/libosmium/include/osmium/memory/collection.hpp:117:15: error: use of deleted function 'osmium::memory::Item::Item(osmium::memory::Item&&)'
#9 78.05 In file included from /src/third_party/libosmium/include/osmium/memory/buffer.hpp:36,
#9 78.05                  from /src/include/extractor/scripting_environment.hpp:9,
#9 78.05                  from /src/include/extractor/graph_compressor.hpp:4,
#9 78.05                  from /src/include/extractor/extractor.hpp:34,
#9 78.05                  from /src/src/extractor/extractor.cpp:1:
#9 78.05 /src/third_party/libosmium/include/osmium/memory/item.hpp:146:13: note: declared here
#9 78.05   146 |             Item(Item&&) = delete;
#9 78.05       |             ^~~~
#9 78.05 In file included from /src/third_party/libosmium/include/osmium/memory/buffer.hpp:38,
#9 78.05                  from /src/include/extractor/scripting_environment.hpp:9,
#9 78.05                  from /src/include/extractor/graph_compressor.hpp:4,
#9 78.05                  from /src/include/extractor/extractor.hpp:34,
#9 78.05                  from /src/src/extractor/extractor.cpp:1:
#9 78.05 /src/third_party/libosmium/include/osmium/osm/entity.hpp: In instantiation of 'TSubitem& osmium::detail::subitem_of_type(TIter, const TIter&) [with TSubitem = osmium::RelationMemberList; TIter = osmium::memory::CollectionIterator<osmium::memory::Item>]':
#9 78.05 /src/third_party/libosmium/include/osmium/osm/relation.hpp:188:86:   required from here
#9 78.05 /src/third_party/libosmium/include/osmium/osm/entity.hpp:54:29: error: use of deleted function 'osmium::memory::Collection<osmium::RelationMember, osmium::item_type::relation_member_list>::Collection(osmium::memory::Collection<osmium::RelationMember, osmium::item_type::relation_member_list>&&)'
#9 78.05    54 |             static TSubitem subitem{};
#9 78.05       |                             ^~~~~~~
#9 78.05 In file included from /src/third_party/libosmium/include/osmium/osm/relation.hpp:36,
#9 78.05                  from /src/include/extractor/extraction_relation.hpp:6,
#9 78.05                  from /src/src/extractor/extractor.cpp:8:
#9 78.05 /src/third_party/libosmium/include/osmium/memory/collection.hpp:117:15: note: 'osmium::memory::Collection<osmium::RelationMember, osmium::item_type::relation_member_list>::Collection(osmium::memory::Collection<osmium::RelationMember, osmium::item_type::relation_member_list>&&)' is implicitly deleted because the default definition would be ill-formed:
#9 78.05   117 |         class Collection : public Item {
#9 78.05       |               ^~~~~~~~~~

Looks like it's caused by this gcc bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98642

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