Skip to content

Build failure with asio-1.14.0 #921

@belegdol

Description

@belegdol

OpenSceneGraph does not build against standalone asio-1.14.0, as reported by gentoo:
https://bugs.gentoo.org/698866

/var/tmp/portage/dev-games/openscenegraph-3.5.5/work/OpenSceneGraph-3.5.5/src/osgPlugins/RestHttpDevice/connection.cpp: In member function ‘void http::server::connection::start()’:
/var/tmp/portage/dev-games/openscenegraph-3.5.5/work/OpenSceneGraph-3.5.5/src/osgPlugins/RestHttpDevice/connection.cpp:43:29: error: ‘error’ is not a member of ‘asio::placeholders’; did you mean ‘asio::error’?
   43 |         asio::placeholders::error,
      |                             ^~~~~
In file included from /usr/include/asio/detail/impl/posix_mutex.ipp:24,

I was able to reproduce the issue and the fix is to add -DASIO_ENABLE_BOOST to CXXFLAGS. The reason is most likely this commit:

chriskohlhoff/asio@265e75c

Unfortunately, this is not enough to complete the build. With the extra flag the following error is encountered:

/builddir/build/BUILD/OpenSceneGraph-OpenSceneGraph-3.4.1/src/osgPlugins/RestHttpDevice/server.cpp: In constructor 'http::server::server::server(const string&, const string&, const string&, std::size_t)':
/builddir/build/BUILD/OpenSceneGraph-OpenSceneGraph-3.4.1/src/osgPlugins/RestHttpDevice/server.cpp:26:46: error: 'asio::ip::tcp::acceptor' {aka 'class asio::basic_socket_acceptor<asio::ip::tcp>'} has no member named 'get_io_service'
   26 |   asio::ip::tcp::resolver resolver(acceptor_.get_io_service());
      |                                              ^~~~~~~~~~~~~~

This is due to removal of get_io_service:

https://www.boost.org/doc/libs/1_70_0/doc/html/boost_asio/history.html

I do not know how to fix the latter issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions