From cb15b7b2638edb3fe4046dd531059730dbbc7dba Mon Sep 17 00:00:00 2001 From: Alexis Ballier Date: Wed, 28 Aug 2019 14:17:22 +0200 Subject: dev-ros/libmavconn: fix build with boost 1.70 Package-Manager: Portage-2.3.73, Repoman-2.3.17 Signed-off-by: Alexis Ballier --- dev-ros/libmavconn/files/boost170.patch | 98 ++++++++++++++++++++++++++ dev-ros/libmavconn/libmavconn-0.19.0-r1.ebuild | 7 +- 2 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 dev-ros/libmavconn/files/boost170.patch (limited to 'dev-ros/libmavconn') diff --git a/dev-ros/libmavconn/files/boost170.patch b/dev-ros/libmavconn/files/boost170.patch new file mode 100644 index 000000000000..357025d90af5 --- /dev/null +++ b/dev-ros/libmavconn/files/boost170.patch @@ -0,0 +1,98 @@ +Index: libmavconn/src/tcp.cpp +=================================================================== +--- libmavconn.orig/src/tcp.cpp ++++ libmavconn/src/tcp.cpp +@@ -41,13 +41,19 @@ static bool resolve_address_tcp(io_servi + error_code ec; + + tcp::resolver::query query(host, ""); +- std::for_each(resolver.resolve(query, ec), tcp::resolver::iterator(), +- [&](const tcp::endpoint & q_ep) { +- ep = q_ep; +- ep.port(port); +- result = true; +- CONSOLE_BRIDGE_logDebug(PFXd "host %s resolved as %s", chan, host.c_str(), to_string_ss(ep).c_str()); +- }); ++ ++ auto fn = [&](const tcp::endpoint & q_ep) { ++ ep = q_ep; ++ ep.port(port); ++ result = true; ++ CONSOLE_BRIDGE_logDebug(PFXd "host %s resolved as %s", chan, host.c_str(), to_string_ss(ep).c_str()); ++ }; ++ ++#if BOOST_ASIO_VERSION >= 101200 ++ for (auto q_ep : resolver.resolve(query, ec)) fn(q_ep); ++#else ++ std::for_each(resolver.resolve(query, ec), tcp::resolver::iterator(), fn); ++#endif + + if (ec) { + CONSOLE_BRIDGE_logWarn(PFXd "resolve error: %s", chan, ec.message().c_str()); +@@ -112,7 +118,7 @@ void MAVConnTCPClient::client_connected( + server_channel, conn_id, to_string_ss(server_ep).c_str()); + + // start recv +- socket.get_io_service().post(std::bind(&MAVConnTCPClient::do_recv, shared_from_this())); ++ static_cast(socket.get_executor().context()).post(std::bind(&MAVConnTCPClient::do_recv, shared_from_this())); + } + + MAVConnTCPClient::~MAVConnTCPClient() +@@ -152,7 +158,7 @@ void MAVConnTCPClient::send_bytes(const + + tx_q.emplace_back(bytes, length); + } +- socket.get_io_service().post(std::bind(&MAVConnTCPClient::do_send, shared_from_this(), true)); ++ static_cast(socket.get_executor().context()).post(std::bind(&MAVConnTCPClient::do_send, shared_from_this(), true)); + } + + void MAVConnTCPClient::send_message(const mavlink_message_t *message) +@@ -174,7 +180,7 @@ void MAVConnTCPClient::send_message(cons + + tx_q.emplace_back(message); + } +- socket.get_io_service().post(std::bind(&MAVConnTCPClient::do_send, shared_from_this(), true)); ++ static_cast(socket.get_executor().context()).post(std::bind(&MAVConnTCPClient::do_send, shared_from_this(), true)); + } + + void MAVConnTCPClient::send_message(const mavlink::Message &message) +@@ -194,7 +200,7 @@ void MAVConnTCPClient::send_message(cons + + tx_q.emplace_back(message, get_status_p(), sys_id, comp_id); + } +- socket.get_io_service().post(std::bind(&MAVConnTCPClient::do_send, shared_from_this(), true)); ++ static_cast(socket.get_executor().context()).post(std::bind(&MAVConnTCPClient::do_send, shared_from_this(), true)); + } + + void MAVConnTCPClient::do_recv() +Index: libmavconn/src/udp.cpp +=================================================================== +--- libmavconn.orig/src/udp.cpp ++++ libmavconn/src/udp.cpp +@@ -41,13 +41,19 @@ static bool resolve_address_udp(io_servi + error_code ec; + + udp::resolver::query query(host, ""); +- std::for_each(resolver.resolve(query, ec), udp::resolver::iterator(), +- [&](const udp::endpoint & q_ep) { +- ep = q_ep; +- ep.port(port); +- result = true; +- CONSOLE_BRIDGE_logDebug(PFXd "host %s resolved as %s", chan, host.c_str(), to_string_ss(ep).c_str()); +- }); ++ ++ auto fn = [&](const udp::endpoint & q_ep) { ++ ep = q_ep; ++ ep.port(port); ++ result = true; ++ CONSOLE_BRIDGE_logDebug(PFXd "host %s resolved as %s", chan, host.c_str(), to_string_ss(ep).c_str()); ++ }; ++ ++#if BOOST_ASIO_VERSION >= 101200 ++ for (auto q_ep : resolver.resolve(query, ec)) fn(q_ep); ++#else ++ std::for_each(resolver.resolve(query, ec), udp::resolver::iterator(), fn); ++#endif + + if (ec) { + CONSOLE_BRIDGE_logWarn(PFXd "resolve error: %s", chan, ec.message().c_str()); diff --git a/dev-ros/libmavconn/libmavconn-0.19.0-r1.ebuild b/dev-ros/libmavconn/libmavconn-0.19.0-r1.ebuild index dddbbe6be4df..d42a92fd0e64 100644 --- a/dev-ros/libmavconn/libmavconn-0.19.0-r1.ebuild +++ b/dev-ros/libmavconn/libmavconn-0.19.0-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2017 Gentoo Foundation +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=5 @@ -19,4 +19,7 @@ RDEPEND=" dev-libs/console_bridge:= " DEPEND="${RDEPEND}" -PATCHES=( "${FILESDIR}/logging.patch" ) +PATCHES=( + "${FILESDIR}/logging.patch" + "${FILESDIR}/boost170.patch" +) -- cgit v1.2.3-65-gdbad