commit: 5ae2dbf50ac657302b2e6a0ef587d3db69582df4 Author: Thomas Beierlein <tomjbe <AT> gentoo <DOT> org> AuthorDate: Tue May 6 09:17:37 2025 +0000 Commit: Thomas Beierlein <tomjbe <AT> gentoo <DOT> org> CommitDate: Tue May 6 09:17:37 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5ae2dbf5
net-wireless/uhd: drop 4.4.0.0, 4.6.0.0 Signed-off-by: Thomas Beierlein <tomjbe <AT> gentoo.org> net-wireless/uhd/Manifest | 4 - .../uhd/files/uhd-4.6.0.0-boost-1.85-1.patch | 80 -- .../uhd/files/uhd-4.6.0.0-boost-1.85-2.patch | 31 - .../uhd/files/uhd-4.6.0.0-boost-1.87-1.patch | 938 --------------------- .../uhd/files/uhd-4.6.0.0-boost-1.87-2.patch | 27 - net-wireless/uhd/uhd-4.4.0.0.ebuild | 149 ---- net-wireless/uhd/uhd-4.6.0.0.ebuild | 155 ---- 7 files changed, 1384 deletions(-) diff --git a/net-wireless/uhd/Manifest b/net-wireless/uhd/Manifest index 1122dc833d94..94e9ad4863ae 100644 --- a/net-wireless/uhd/Manifest +++ b/net-wireless/uhd/Manifest @@ -1,6 +1,2 @@ -DIST EttusResearch-UHD-4.4.0.0.tar.gz 38210999 BLAKE2B defc2ae91c1422491c0c434f76852c253d84e2bdc43f6768069e23c40803d33aac8f087d51c28037102ab4760c5f3d5e04dc090655ddca26eef3440bf703db61 SHA512 3c9b57dc776e0fadc991ffeede84c2367f7403bfae6fd30a045baf1c9cfb21889310b9a8340a35ea13eea00208bf678cccd7b82e190dfb6b9d61e42bdef3b21a -DIST EttusResearch-UHD-4.6.0.0.tar.gz 41235519 BLAKE2B 4a9c9d0064bf52edd4a4a93ee8602eaa61029b5350728431e4e2e17d9f4a06de21c2598a6ffde0832ecfd5a499344d190ba113f1c5d96ffea0a029186f95de87 SHA512 de9bb10e5109bd860a9b2f61841e3ade55fbbc7d8000f385fcdf1c831585c9d25999d159a7da95e3e3f0b74330c1512265994e9aacf00b1b0891f9ba6db58e30 DIST EttusResearch-UHD-4.8.0.0.tar.gz 41358938 BLAKE2B c69af5aabcd7e02290b4a168f319dc43bb6cb277e235407a5ded8eb617fe957ca1326042a892efa7b688cfae52f3c345e0930a614ff59b25c05e8b202d62e82e SHA512 61e92209e69994b1c5d3a2a88f749ddca612a3fa3c1580c00a9577e25fab5055d7c80571f2843cca3951fc941d1a81566bafc21070fb93cb3e566228c46331e7 -DIST uhd-images_4.4.0.0.tar.xz 127558912 BLAKE2B bb7135241c4e39db2450e0fca8c8c6b0421d76f512dca08e50732ee0a2dbfa5f330df168101607d52b6215aba083cd966027a9da8f14331f6bac17fdd76d766b SHA512 17b364128155bf850ff5ae72eeb8fa52446881d0234254943d27524610f0efc4d5bf5da7be248982fc603101d4f76f5a8019fbecb044d2637a1022cdccde0463 -DIST uhd-images_4.6.0.0.tar.xz 180745328 BLAKE2B f698c68c66e706146cd2163abca10bc2d3660827e2425f395b9096b1ccecdadaf563730912e930e29b6f286dd77a83dc2ab0280e0d55ceb550496de03c208917 SHA512 944a26bea2f11d0df630e14a2a586d07e185e2c9bf40e10ff17cc103a33a8cf32c37b676e15cf55a1c1efd17c82384c7323526aed4b0624fda0b58d39ed487d3 DIST uhd-images_4.8.0.0.tar.xz 180420544 BLAKE2B 5cce16db59c6c78035512e5275ac36b02a5d928104ff77877f8a13a9df64d0bde6c832497675b27a0090debef78ef4c284c48ef3b6169fae3420ca4d87e8209e SHA512 4203e5b7f642d7850e9563ba495a60efe965a64223d9208c780e1400ea755b322125fff53c3f8a3fb010617b57a4da638dc3cf80bf7d95604e20788cc469edb9 diff --git a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.85-1.patch b/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.85-1.patch deleted file mode 100644 index 5861b93b6676..000000000000 --- a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.85-1.patch +++ /dev/null @@ -1,80 +0,0 @@ -https://github.com/EttusResearch/uhd/commit/ea586168c596d13d05d145832519755794649ba0 -https://bugs.gentoo.org/932239#c10 - -From ea586168c596d13d05d145832519755794649ba0 Mon Sep 17 00:00:00 2001 -From: Martin Braun <[email protected]> -Date: Thu, 28 Mar 2024 17:28:57 +0100 -Subject: [PATCH 08/30] lib: Replace deprecated boost::filesystem usage - -Recent versions of Boost were throwing compiler warnings due to usage of -deprecated functions. Our minimum version of Boost (1.65) already -provides the replacements, so this commit simply updates these -deprecated use cases. ---- - host/lib/usrp/mpmd/mpmd_image_loader.cpp | 6 ++---- - host/lib/usrp/x300/x300_image_loader.cpp | 4 ++-- - host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp | 2 +- - 3 files changed, 5 insertions(+), 7 deletions(-) - -diff --git a/host/lib/usrp/mpmd/mpmd_image_loader.cpp b/host/lib/usrp/mpmd/mpmd_image_loader.cpp -index 31b6387ab..ba0f45fad 100644 ---- a/lib/usrp/mpmd/mpmd_image_loader.cpp -+++ b/lib/usrp/mpmd/mpmd_image_loader.cpp -@@ -27,8 +27,6 @@ - #include <cctype> - #include <fstream> - #include <iterator> --#include <sstream> --#include <streambuf> - #include <string> - #include <vector> - -@@ -271,7 +269,7 @@ static uhd::usrp::component_files_t bin_dts_to_component_files( - // DTS component struct - // First, we need to determine the name - const std::string base_name = -- boost::filesystem::change_extension(fpga_path, "").string(); -+ boost::filesystem::path(fpga_path).replace_extension("").string(); - if (base_name == fpga_path) { - const std::string err_msg( - "Can't cut extension from FPGA filename... " + fpga_path); -@@ -340,7 +338,7 @@ static void mpmd_send_fpga_to_device( - UHD_LOG_TRACE("MPMD IMAGE LOADER", "FPGA path: " << fpga_path); - - // If the fpga_path is a lvbitx file, parse it as such -- if (boost::filesystem::extension(fpga_path) == ".lvbitx") { -+ if (boost::filesystem::path(fpga_path).extension() == ".lvbitx") { - all_component_files = lvbitx_to_component_files(fpga_path, delay_reload); - } else { - all_component_files = bin_dts_to_component_files(fpga_path, delay_reload); -diff --git a/host/lib/usrp/x300/x300_image_loader.cpp b/host/lib/usrp/x300/x300_image_loader.cpp -index d7a64d4d0..a84dba420 100644 ---- a/lib/usrp/x300/x300_image_loader.cpp -+++ b/lib/usrp/x300/x300_image_loader.cpp -@@ -138,8 +138,8 @@ static void x300_validate_image(x300_session_t& session) - boost::format("Could not find image at path \"%s\".") % session.filepath)); - } - -- std::string extension = fs::extension(session.filepath); -- session.lvbitx = (extension == ".lvbitx"); -+ const std::string extension = fs::path(session.filepath).extension().string(); -+ session.lvbitx = (extension == ".lvbitx"); - - if (session.lvbitx) { - extract_from_lvbitx(session); -diff --git a/host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp b/host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp -index 930c5d758..4c39790c7 100644 ---- a/lib/usrp_clock/octoclock/octoclock_image_loader.cpp -+++ b/lib/usrp_clock/octoclock/octoclock_image_loader.cpp -@@ -95,7 +95,7 @@ static void octoclock_validate_firmware_image(octoclock_session_t& session) - % session.image_filepath)); - } - -- std::string extension = fs::extension(session.image_filepath); -+ const std::string extension = fs::path(session.image_filepath).extension().string(); - if (extension == ".bin") { - octoclock_read_bin(session); - } else if (extension == ".hex") { --- -2.44.1 - diff --git a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.85-2.patch b/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.85-2.patch deleted file mode 100644 index fab224782ccc..000000000000 --- a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.85-2.patch +++ /dev/null @@ -1,31 +0,0 @@ -https://github.com/EttusResearch/uhd/commit/c4863b9b9f8b639260f7797157e8ac4dd81fef93 -https://bugs.gentoo.org/932239#c11 - -From c4863b9b9f8b639260f7797157e8ac4dd81fef93 Mon Sep 17 00:00:00 2001 -From: Joerg Hofrichter <[email protected]> -Date: Wed, 17 Apr 2024 13:59:19 +0200 -Subject: [PATCH 26/30] fix compilation with boost 1.85.0 - -The header boost/filesystem/convenience.hpp was removed with boost 1.85.0 - -The deprecated extension-related functions were already replaced with -commit ea586168c596d13d05d145832519755794649ba0 ---- - host/lib/usrp/mpmd/mpmd_image_loader.cpp | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/host/lib/usrp/mpmd/mpmd_image_loader.cpp b/host/lib/usrp/mpmd/mpmd_image_loader.cpp -index ba0f45fad..9824bbf4d 100644 ---- a/lib/usrp/mpmd/mpmd_image_loader.cpp -+++ b/lib/usrp/mpmd/mpmd_image_loader.cpp -@@ -21,7 +21,6 @@ - #include <boost/algorithm/string.hpp> - #include <boost/archive/iterators/binary_from_base64.hpp> - #include <boost/archive/iterators/transform_width.hpp> --#include <boost/filesystem/convenience.hpp> - #include <boost/optional.hpp> - #include <boost/property_tree/xml_parser.hpp> - #include <cctype> --- -2.44.1 - diff --git a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.87-1.patch b/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.87-1.patch deleted file mode 100644 index c9f922c22bf0..000000000000 --- a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.87-1.patch +++ /dev/null @@ -1,938 +0,0 @@ -https://github.com/EttusResearch/uhd/commit/adfe953d965e58b5931c1b1968899492c8087cf6 -https://bugs.gentoo.org/946371#c12 - -From adfe953d965e58b5931c1b1968899492c8087cf6 Mon Sep 17 00:00:00 2001 -From: Martin Braun <[email protected]> -Date: Tue, 3 Dec 2024 12:05:50 +0100 -Subject: [PATCH] uhd: Update ASIO usage to modern style, compatible with Boost - 1.87 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Starting with Boost 1.66 and the corresponding ASIO version, there were -some changes introduced based on the C++ Networking TS. This includes -changes like replacing io_service with io_context, deprecating some -functions, etc. Starting with Boost 1.87, the old style is no longer -supported. - -This commit updates all usage of ASIO in a way that makes UHD compatible -with future versions of ASIO. However, this makes UHD no longer -compatible with Boost 1.65 and below. - -Summary of changes: -- Replace asio::io_service with asio::io_context -- Replace asio::io_service::strand with - asio::strand<asio::io_context::executor_type> - - This implies using asio::post() instead of asio::strand::post() -- Replace asio::buffer_cast<T>(buf) with static_cast<T>(buf.data()) -- Update resolve(query) with new API -- Replace references to endpoint_iterator with resolver::results_type -- Replace ip::address::from_string() with ip::make_address() - -Co-authored-by: Jörg Hofrichter <[email protected]> ---- - host/examples/network_relay.cpp | 18 ++++----- - .../uhd/transport/nirio/rpc/rpc_client.hpp | 14 +++---- - .../rpclib/include/rpc/detail/async_writer.h | 12 +++--- - .../include/rpc/detail/server_session.h | 6 +-- - host/lib/deps/rpclib/lib/rpc/client.cc | 24 +++++------ - .../rpclib/lib/rpc/detail/server_session.cc | 23 +++++------ - host/lib/deps/rpclib/lib/rpc/server.cc | 4 +- - .../uhdlib/transport/udp_boost_asio_link.hpp | 2 +- - .../include/uhdlib/transport/udp_common.hpp | 9 ++--- - .../lib/include/uhdlib/utils/eeprom_utils.hpp | 12 +++--- - host/lib/transport/dpdk_simple.cpp | 4 +- - host/lib/transport/if_addrs.cpp | 4 +- - host/lib/transport/nirio/rpc/rpc_client.cpp | 24 +++++------ - host/lib/transport/udp_boost_asio_link.cpp | 2 +- - host/lib/transport/udp_simple.cpp | 19 ++++----- - host/lib/transport/udp_wsa_zero_copy.cpp | 8 ++-- - host/lib/transport/udp_zero_copy.cpp | 4 +- - host/lib/usrp/cores/xport_adapter_ctrl.cpp | 9 ++--- - host/lib/usrp/usrp1/mb_eeprom.cpp | 1 + - host/lib/usrp/usrp2/io_impl.cpp | 12 +++--- - host/lib/usrp/usrp2/mb_eeprom.cpp | 9 ++--- - host/lib/usrp/x300/x300_mb_eeprom.cpp | 32 ++++++++++----- - .../usrp_clock/octoclock/octoclock_eeprom.cpp | 6 +-- - host/tests/eeprom_utils_test.cpp | 40 +++++++++++++++---- - 24 files changed, 164 insertions(+), 134 deletions(-) - [email protected] -Modified default capture elements for session.cc according to -https://github.com/EttusResearch/uhd/commit/2dc7b3e572830c71d49ee0648eef445e7f3abfd6 - -diff --git a//examples/network_relay.cpp b//examples/network_relay.cpp -index 9105844523..2387f3b2ab 100644 ---- a//examples/network_relay.cpp -+++ b//examples/network_relay.cpp -@@ -78,21 +78,21 @@ class udp_relay_type - : _port(port) - { - { -- asio::ip::udp::resolver resolver(_io_service); -- asio::ip::udp::resolver::query query(asio::ip::udp::v4(), server_addr, port); -- asio::ip::udp::endpoint endpoint = *resolver.resolve(query); -+ asio::ip::udp::resolver resolver(_io_context); -+ asio::ip::udp::endpoint endpoint = -+ *resolver.resolve(asio::ip::udp::v4(), server_addr, port).begin(); - - _server_socket = std::shared_ptr<asio::ip::udp::socket>( -- new asio::ip::udp::socket(_io_service, endpoint)); -+ new asio::ip::udp::socket(_io_context, endpoint)); - resize_buffs(_server_socket, server_rx_size, server_tx_size); - } - { -- asio::ip::udp::resolver resolver(_io_service); -- asio::ip::udp::resolver::query query(asio::ip::udp::v4(), client_addr, port); -- asio::ip::udp::endpoint endpoint = *resolver.resolve(query); -+ asio::ip::udp::resolver resolver(_io_context); -+ asio::ip::udp::endpoint endpoint = -+ *resolver.resolve(asio::ip::udp::v4(), client_addr, port).begin(); - - _client_socket = std::shared_ptr<asio::ip::udp::socket>( -- new asio::ip::udp::socket(_io_service)); -+ new asio::ip::udp::socket(_io_context)); - _client_socket->open(asio::ip::udp::v4()); - _client_socket->connect(endpoint); - resize_buffs(_client_socket, client_rx_size, client_tx_size); -@@ -173,7 +173,7 @@ class udp_relay_type - - const std::string _port; - boost::thread_group _thread_group; -- asio::io_service _io_service; -+ asio::io_context _io_context; - asio::ip::udp::endpoint _endpoint; - std::mutex _endpoint_mutex; - socket_type _server_socket, _client_socket; -diff --git a//include/uhd/transport/nirio/rpc/rpc_client.hpp b//include/uhd/transport/nirio/rpc/rpc_client.hpp -index 844e36c763..98f1e2860d 100644 ---- a//include/uhd/transport/nirio/rpc/rpc_client.hpp -+++ b//include/uhd/transport/nirio/rpc/rpc_client.hpp -@@ -56,20 +56,20 @@ class rpc_client : private uhd::noncopyable - const boost::system::error_code& err, size_t transferred, size_t expected); - void _wait_for_next_response_header(); - -- inline void _stop_io_service() -+ inline void _stop_io_context() - { -- if (_io_service_thread.get()) { -+ if (_io_context_thread.get()) { - UHD_LOG_DEBUG("NIRIO", "rpc_client stopping..."); -- _io_service.stop(); -- _io_service_thread->join(); -- _io_service_thread.reset(); -+ _io_context.stop(); -+ _io_context_thread->join(); -+ _io_context_thread.reset(); - UHD_LOG_DEBUG("NIRIO", "rpc_client stopped."); - } - } - - // Services -- boost::asio::io_service _io_service; -- std::unique_ptr<boost::thread> _io_service_thread; -+ boost::asio::io_context _io_context; -+ std::unique_ptr<boost::thread> _io_context_thread; - boost::asio::ip::tcp::socket _socket; - // Handshake info - hshake_args_t _hshake_args_client; -diff --git a//lib/deps/rpclib/include/rpc/detail/async_writer.h b//lib/deps/rpclib/include/rpc/detail/async_writer.h -index 1e17f1292a..2b97361c86 100644 ---- a//lib/deps/rpclib/include/rpc/detail/async_writer.h -+++ b//lib/deps/rpclib/include/rpc/detail/async_writer.h -@@ -19,9 +19,9 @@ namespace detail { - //! \brief Common logic for classes that have a write queue with async writing. - class async_writer : public std::enable_shared_from_this<async_writer> { - public: -- async_writer(boost::asio::io_service *io, -+ async_writer(boost::asio::io_context* io, - boost::asio::ip::tcp::socket socket) -- : socket_(std::move(socket)), write_strand_(*io), exit_(false) {} -+ : socket_(std::move(socket)), write_strand_(io->get_executor()), exit_(false) {} - - void do_write() { - if (exit_) { -@@ -31,9 +31,9 @@ class async_writer : public std::enable_shared_from_this<async_writer> { - auto &item = write_queue_.front(); - // the data in item remains valid until the handler is called - // since it will still be in the queue physically until then. -- boost::asio::async_write( -- socket_, boost::asio::buffer(item.data(), item.size()), -- write_strand_.wrap( -+ boost::asio::async_write(socket_, -+ boost::asio::buffer(item.data(), item.size()), -+ boost::asio::bind_executor(write_strand_, - [this, self](boost::system::error_code ec, std::size_t transferred) { - (void)transferred; - if (!ec) { -@@ -69,7 +69,7 @@ class async_writer : public std::enable_shared_from_this<async_writer> { - - protected: - boost::asio::ip::tcp::socket socket_; -- boost::asio::io_service::strand write_strand_; -+ boost::asio::strand<boost::asio::io_context::executor_type> write_strand_; - std::atomic_bool exit_{false}; - bool exited_ = false; - std::mutex m_exit_; -diff --git a//lib/deps/rpclib/include/rpc/detail/server_session.h b//lib/deps/rpclib/include/rpc/detail/server_session.h -index 754c0879cd..474e4b589b 100644 ---- a//lib/deps/rpclib/include/rpc/detail/server_session.h -+++ b//lib/deps/rpclib/include/rpc/detail/server_session.h -@@ -22,7 +22,7 @@ namespace detail { - - class server_session : public async_writer { - public: -- server_session(server *srv, boost::asio::io_service *io, -+ server_session(server* srv, boost::asio::io_context* io, - boost::asio::ip::tcp::socket socket, - std::shared_ptr<dispatcher> disp, bool suppress_exceptions); - void start(); -@@ -34,8 +34,8 @@ class server_session : public async_writer { - - private: - server* parent_; -- boost::asio::io_service *io_; -- boost::asio::io_service::strand read_strand_; -+ boost::asio::io_context* io_; -+ boost::asio::strand<boost::asio::io_context::executor_type> read_strand_; - std::shared_ptr<dispatcher> disp_; - RPCLIB_MSGPACK::unpacker pac_; - RPCLIB_MSGPACK::sbuffer output_buf_; -diff --git a//lib/deps/rpclib/lib/rpc/client.cc b//lib/deps/rpclib/lib/rpc/client.cc -index ed4a8e329f..b3d8579832 100644 ---- a//lib/deps/rpclib/lib/rpc/client.cc -+++ b//lib/deps/rpclib/lib/rpc/client.cc -@@ -38,7 +38,7 @@ struct client::impl { - impl(client *parent, std::string const &addr, uint16_t port) - : parent_(parent), - io_(), -- strand_(io_), -+ strand_(io_.get_executor()), - call_idx_(0), - addr_(addr), - port_(port), -@@ -50,11 +50,11 @@ struct client::impl { - pac_.reserve_buffer(default_buffer_size); - } - -- void do_connect(tcp::resolver::iterator endpoint_iterator) { -+ void do_connect(const tcp::resolver::results_type& endpoints) { - LOG_INFO("Initiating connection."); - boost::asio::async_connect( -- writer_->socket_, endpoint_iterator, -- [this](boost::system::error_code ec, tcp::resolver::iterator) { -+ writer_->socket_, endpoints, -+ [this](boost::system::error_code ec, tcp::endpoint) { - std::unique_lock<std::mutex> lock(mut_connection_finished_); - if (!ec) { - LOG_INFO("Client connected to {}:{}", addr_, port_); -@@ -101,7 +101,7 @@ struct client::impl { - std::get<1>(current_call) - .set_exception(std::current_exception()); - } -- strand_.post( -+ boost::asio::post(strand_, - [this, id]() { ongoing_calls_.erase(id); }); - } - -@@ -144,8 +144,8 @@ struct client::impl { - std::pair<std::string, std::promise<RPCLIB_MSGPACK::object_handle>>; - - client *parent_; -- boost::asio::io_service io_; -- boost::asio::io_service::strand strand_; -+ boost::asio::io_context io_; -+ boost::asio::strand<boost::asio::io_context::executor_type> strand_; - std::atomic<int> call_idx_; /// The index of the last call made - std::unordered_map<uint32_t, call_t> ongoing_calls_; - std::string addr_; -@@ -164,9 +164,9 @@ struct client::impl { - client::client(std::string const &addr, uint16_t port) - : pimpl(new client::impl(this, addr, port)) { - tcp::resolver resolver(pimpl->io_); -- auto endpoint_it = -- resolver.resolve({pimpl->addr_, std::to_string(pimpl->port_)}); -- pimpl->do_connect(endpoint_it); -+ auto endpoints = -+ resolver.resolve(pimpl->addr_, std::to_string(pimpl->port_)); -+ pimpl->do_connect(endpoints); - std::thread io_thread([this]() { - RPCLIB_CREATE_LOG_CHANNEL(client) - name_thread("client"); -@@ -190,7 +190,7 @@ int client::get_next_call_idx() { - void client::post(std::shared_ptr<RPCLIB_MSGPACK::sbuffer> buffer, int idx, - std::string const &func_name, - std::shared_ptr<rsp_promise> p) { -- pimpl->strand_.post([=]() { -+ boost::asio::post(pimpl->strand_, [buffer, idx, func_name, p, this]() { - pimpl->ongoing_calls_.insert( - std::make_pair(idx, std::make_pair(func_name, std::move(*p)))); - pimpl->write(std::move(*buffer)); -@@ -198,7 +198,7 @@ void client::post(std::shared_ptr<RPCLIB_MSGPACK::sbuffer> buffer, int idx, - } - - void client::post(RPCLIB_MSGPACK::sbuffer *buffer) { -- pimpl->strand_.post([=]() { -+ boost::asio::post(pimpl->strand_, [buffer, this]() { - pimpl->write(std::move(*buffer)); - delete buffer; - }); -diff --git a//lib/deps/rpclib/lib/rpc/detail/server_session.cc b//lib/deps/rpclib/lib/rpc/detail/server_session.cc -index d3e13c89fa..1468a62e5a 100644 ---- a//lib/deps/rpclib/lib/rpc/detail/server_session.cc -+++ b//lib/deps/rpclib/lib/rpc/detail/server_session.cc -@@ -22,14 +22,14 @@ namespace detail { - - static constexpr std::size_t default_buffer_size = rpc::constants::DEFAULT_BUFFER_SIZE; - --server_session::server_session(server *srv, boost::asio::io_service *io, -+server_session::server_session(server *srv, boost::asio::io_context *io, - boost::asio::ip::tcp::socket socket, - std::shared_ptr<dispatcher> disp, - bool suppress_exceptions) - : async_writer(io, std::move(socket)), - parent_(srv), - io_(io), -- read_strand_(*io), -+ read_strand_(io->get_executor()), - disp_(disp), - pac_(), - suppress_exceptions_(suppress_exceptions) { -@@ -42,7 +42,7 @@ void server_session::start() { do_read(); } - void server_session::close() { - LOG_INFO("Closing session."); - exit_ = true; -- write_strand_.post([this]() { -+ boost::asio::post(write_strand_, [this]() { - try { - socket_.close(); - } catch (const boost::system::system_error&) { -@@ -54,12 +54,11 @@ void server_session::close() { - void server_session::do_read() { - auto self(shared_from_this()); - constexpr std::size_t max_read_bytes = default_buffer_size; -- socket_.async_read_some( -- boost::asio::buffer(pac_.buffer(), default_buffer_size), -+ socket_.async_read_some(boost::asio::buffer(pac_.buffer(), default_buffer_size), - // I don't think max_read_bytes needs to be captured explicitly - // (since it's constexpr), but MSVC insists. -- read_strand_.wrap([this, self, max_read_bytes](boost::system::error_code ec, -- std::size_t length) { -+ boost::asio::bind_executor(read_strand_, [this, self, max_read_bytes](boost::system::error_code ec, -+ std::size_t length) { - if (!ec) { - pac_.buffer_consumed(length); - RPCLIB_MSGPACK::unpacked result; -@@ -69,7 +68,7 @@ void server_session::do_read() { - - // any worker thread can take this call - auto z = std::shared_ptr<RPCLIB_MSGPACK::zone>(result.zone().release()); -- io_->post([ -+ boost::asio::post(io_->get_executor(), [ - this, msg, z - ]() { - this_handler().clear(); -@@ -102,10 +101,10 @@ void server_session::do_read() { - if (!resp.is_empty()) { - #ifdef _MSC_VER - // doesn't compile otherwise. -- write_strand_.post( -+ boost::asio::post(write_strand_, - [=]() { write(resp.get_data()); }); - #else -- write_strand_.post( -+ boost::asio::post(write_strand_, - [this, resp, z]() { write(resp.get_data()); }); - #endif - } -@@ -114,14 +113,14 @@ void server_session::do_read() { - LOG_WARN("Session exit requested from a handler."); - // posting through the strand so this comes after - // the previous write -- write_strand_.post([this]() { exit_ = true; }); -+ boost::asio::post(write_strand_, [this]() { exit_ = true; }); - } - - if (this_server().stopping_) { - LOG_WARN("Server exit requested from a handler."); - // posting through the strand so this comes after - // the previous write -- write_strand_.post( -+ boost::asio::post(write_strand_, - [this]() { parent_->close_sessions(); }); - } - }); -diff --git a//lib/deps/rpclib/lib/rpc/server.cc b//lib/deps/rpclib/lib/rpc/server.cc -index 4facb93a85..d0638cb8fc 100644 ---- a//lib/deps/rpclib/lib/rpc/server.cc -+++ b//lib/deps/rpclib/lib/rpc/server.cc -@@ -25,7 +25,7 @@ struct server::impl { - : parent_(parent), - io_(), - acceptor_(io_, -- tcp::endpoint(ip::address::from_string(address), port)), -+ tcp::endpoint(ip::make_address(address), port)), - socket_(io_), - suppress_exceptions_(false) {} - -@@ -66,7 +66,7 @@ struct server::impl { - } - - server *parent_; -- io_service io_; -+ io_context io_; - ip::tcp::acceptor acceptor_; - ip::tcp::socket socket_; - rpc::detail::thread_group loop_workers_; -diff --git a//lib/include/uhdlib/transport/udp_boost_asio_link.hpp b//lib/include/uhdlib/transport/udp_boost_asio_link.hpp -index 8944aa9991..80b585af73 100644 ---- a//lib/include/uhdlib/transport/udp_boost_asio_link.hpp -+++ b//lib/include/uhdlib/transport/udp_boost_asio_link.hpp -@@ -146,7 +146,7 @@ class udp_boost_asio_link : public recv_link_base<udp_boost_asio_link>, - std::vector<udp_boost_asio_frame_buff> _recv_buffs; - std::vector<udp_boost_asio_frame_buff> _send_buffs; - -- boost::asio::io_service _io_service; -+ boost::asio::io_context _io_context; - std::shared_ptr<boost::asio::ip::udp::socket> _socket; - int _sock_fd; - adapter_id_t _adapter_id; -diff --git a//lib/include/uhdlib/transport/udp_common.hpp b//lib/include/uhdlib/transport/udp_common.hpp -index 96146a7017..b4b0ec309f 100644 ---- a//lib/include/uhdlib/transport/udp_common.hpp -+++ b//lib/include/uhdlib/transport/udp_common.hpp -@@ -81,17 +81,16 @@ UHD_INLINE bool wait_for_recv_ready(int sock_fd, int32_t timeout_ms) - } - - UHD_INLINE socket_sptr open_udp_socket( -- const std::string& addr, const std::string& port, boost::asio::io_service& io_service) -+ const std::string& addr, const std::string& port, boost::asio::io_context& io_context) - { - using udp = boost::asio::ip::udp; - - // resolve the address -- udp::resolver resolver(io_service); -- udp::resolver::query query(udp::v4(), addr, port); -- udp::endpoint receiver_endpoint = *resolver.resolve(query); -+ udp::resolver resolver(io_context); -+ udp::endpoint receiver_endpoint = *resolver.resolve(udp::v4(), addr, port).begin(); - - // create, open, and connect the socket -- socket_sptr socket = socket_sptr(new udp::socket(io_service)); -+ socket_sptr socket = socket_sptr(new udp::socket(io_context)); - socket->open(udp::v4()); - socket->connect(receiver_endpoint); - -diff --git a//lib/include/uhdlib/utils/eeprom_utils.hpp b//lib/include/uhdlib/utils/eeprom_utils.hpp -index d3be4c03c4..ea05136738 100644 ---- a//lib/include/uhdlib/utils/eeprom_utils.hpp -+++ b//lib/include/uhdlib/utils/eeprom_utils.hpp -@@ -10,7 +10,6 @@ - #include <uhd/types/dict.hpp> - #include <uhd/types/mac_addr.hpp> - #include <uhd/utils/log.hpp> --#include <boost/asio/ip/address_v4.hpp> - #include <string> - #include <vector> - -@@ -29,7 +28,7 @@ std::string uint16_bytes_to_string(const uhd::byte_vector_t& bytes); - * see if the resulting contents will contain duplicates. Useful error - * messages are logged describing any duplicates. - * -- * <field_type> must provide to_string() and from_string() functions -+ * <field_type> must provide from_string() functions - * - * \param error_label Label to put on error messages - * \param new_eeprom New EEPROM contents -@@ -38,12 +37,13 @@ std::string uint16_bytes_to_string(const uhd::byte_vector_t& bytes); - * \param keys Keys to examine for duplicate values - * \return true if duplicates are found, false if not - */ --template <typename field_type> -+template <typename str_normalizer_type> - bool check_for_duplicates(const std::string& error_label, - const uhd::dict<std::string, std::string>& new_eeprom, - const uhd::dict<std::string, std::string>& curr_eeprom, - const std::string& category, -- const std::vector<std::string>& keys) -+ const std::vector<std::string>& keys, -+ str_normalizer_type&& str_normalizer) - { - bool has_duplicates = false; - for (size_t i = 0; i < keys.size(); i++) { -@@ -54,7 +54,7 @@ bool check_for_duplicates(const std::string& error_label, - continue; - } - -- auto value = field_type::from_string(new_eeprom[key]).to_string(); -+ auto value = str_normalizer(new_eeprom[key]); - - // Check other values in new_eeprom for duplicate - // Starting at key index i+1 so the same duplicate is not found twice -@@ -63,7 +63,7 @@ bool check_for_duplicates(const std::string& error_label, - if (not new_eeprom.has_key(other_key)) { - continue; - } -- auto other_value = field_type::from_string(new_eeprom[other_key]).to_string(); -+ auto other_value = str_normalizer(new_eeprom[other_key]); - if (value == other_value) { - // Value is a duplicate of another supplied value - UHD_LOG_ERROR(error_label, -diff --git a//lib/transport/dpdk_simple.cpp b//lib/transport/dpdk_simple.cpp -index e258ddb2f8..f2787ba8c8 100644 ---- a//lib/transport/dpdk_simple.cpp -+++ b//lib/transport/dpdk_simple.cpp -@@ -96,7 +96,7 @@ class dpdk_simple_impl : public dpdk_simple - // Extract buff and sanity check - const size_t nbytes = boost::asio::buffer_size(user_buff); - UHD_ASSERT_THROW(nbytes <= _link->get_send_frame_size()) -- const uint8_t* user_data = boost::asio::buffer_cast<const uint8_t*>(user_buff); -+ const uint8_t* user_data = static_cast<const uint8_t*>(user_buff.data()); - - // Get send buff - auto buff = _send_io->get_send_buff(SEND_TIMEOUT_MS); -@@ -120,7 +120,7 @@ class dpdk_simple_impl : public dpdk_simple - size_t recv(const boost::asio::mutable_buffer& user_buff, double timeout) override - { - size_t user_buff_size = boost::asio::buffer_size(user_buff); -- uint8_t* user_data = boost::asio::buffer_cast<uint8_t*>(user_buff); -+ uint8_t* user_data = static_cast<uint8_t*>(user_buff.data()); - - auto buff = _recv_io->get_recv_buff(static_cast<int32_t>(timeout * 1e3)); - if (!buff) { -diff --git a//lib/transport/if_addrs.cpp b//lib/transport/if_addrs.cpp -index a1cb6909f0..4c43c95d57 100644 ---- a//lib/transport/if_addrs.cpp -+++ b//lib/transport/if_addrs.cpp -@@ -50,8 +50,8 @@ std::vector<uhd::transport::if_addrs_t> uhd::transport::get_if_addrs(void) - == boost::asio::ip::address_v4(0)) { - // manually calculate broadcast address - // https://svn.boost.org/trac/boost/ticket/5198 -- const uint32_t addr = sockaddr_to_ip_addr(iter->ifa_addr).to_ulong(); -- const uint32_t mask = sockaddr_to_ip_addr(iter->ifa_netmask).to_ulong(); -+ const uint32_t addr = sockaddr_to_ip_addr(iter->ifa_addr).to_uint(); -+ const uint32_t mask = sockaddr_to_ip_addr(iter->ifa_netmask).to_uint(); - const uint32_t bcast = (addr & mask) | ~mask; - if_addr.bcast = boost::asio::ip::address_v4(bcast).to_string(); - } -diff --git a//lib/transport/nirio/rpc/rpc_client.cpp b//lib/transport/nirio/rpc/rpc_client.cpp -index 16dd5aa823..aaa9753ee9 100644 ---- a//lib/transport/nirio/rpc/rpc_client.cpp -+++ b//lib/transport/nirio/rpc/rpc_client.cpp -@@ -27,7 +27,7 @@ rpc_client::rpc_client(const std::string& server, - const std::string& port, - uint32_t process_id, - uint32_t host_id) -- : _socket(_io_service), _hshake_args_server() -+ : _socket(_io_context), _hshake_args_server() - { - // Fill in handshake info - _hshake_args_client.version = CURRENT_VERSION; -@@ -38,16 +38,14 @@ rpc_client::rpc_client(const std::string& server, - - try { - // Synchronous resolve + connect -- tcp::resolver resolver(_io_service); -- // Create flags object with all special flags disabled. Especially the following: -+ tcp::resolver resolver(_io_context); -+ // All special flags disabled. Especially the following: - //- address_configured: Only return addresses if a non-loopback address is - // configured for the system. - //- numeric_host: No name resolution should be attempted for host - //- numeric_service: No name resolution should be attempted for service -- tcp::resolver::query::flags query_flags(tcp::resolver::query::passive); -- tcp::resolver::query query(tcp::v4(), server, port, query_flags); -- tcp::resolver::iterator iterator = resolver.resolve(query); -- boost::asio::connect(_socket, iterator); -+ auto endpoints = resolver.resolve(server, port, tcp::resolver::passive); -+ boost::asio::connect(_socket, endpoints); - - UHD_LOGGER_TRACE("NIRIO") << "rpc_client connected to server."; - -@@ -73,10 +71,10 @@ rpc_client::rpc_client(const std::string& server, - UHD_LOGGER_TRACE("NIRIO") << "rpc_client bound to server."; - _wait_for_next_response_header(); - -- // Spawn a thread for the io_service callback handler. This thread will -+ // Spawn a thread for the io_context callback handler. This thread will - // run until rpc_client is destroyed. -- _io_service_thread.reset(new boost::thread( -- boost::bind(&boost::asio::io_service::run, &_io_service))); -+ _io_context_thread.reset(new boost::thread( -+ boost::bind(&boost::asio::io_context::run, &_io_context))); - } else { - UHD_LOGGER_DEBUG("NIRIO") << "rpc_client handshake failed."; - _exec_err.assign(boost::asio::error::connection_refused, -@@ -100,7 +98,7 @@ rpc_client::rpc_client(const std::string& server, - - rpc_client::~rpc_client() - { -- _stop_io_service(); -+ _stop_io_context(); - } - - const boost::system::error_code& rpc_client::call(func_id_t func_id, -@@ -110,7 +108,7 @@ const boost::system::error_code& rpc_client::call(func_id_t func_id, - { - std::unique_lock<std::mutex> lock(_mutex); - -- if (_io_service_thread.get()) { -+ if (_io_context_thread.get()) { - _request.header.func_id = func_id; - in_args.store(_request.data); - _request.header.func_args_size = uhd::narrow_cast<uint32_t>(_request.data.size()); -@@ -147,7 +145,7 @@ const boost::system::error_code& rpc_client::call(func_id_t func_id, - UHD_LOGGER_DEBUG("NIRIO") << "rpc_client connection dropped."; - _exec_err.assign(boost::asio::error::connection_aborted, - boost::asio::error::get_system_category()); -- _stop_io_service(); -+ _stop_io_context(); - } - - // Verify that we are talking to the correct endpoint -diff --git a//lib/transport/udp_boost_asio_link.cpp b//lib/transport/udp_boost_asio_link.cpp -index f91bad09e1..b6a6b550c1 100644 ---- a//lib/transport/udp_boost_asio_link.cpp -+++ b//lib/transport/udp_boost_asio_link.cpp -@@ -37,7 +37,7 @@ udp_boost_asio_link::udp_boost_asio_link( - } - - // create, open, and connect the socket -- _socket = open_udp_socket(addr, port, _io_service); -+ _socket = open_udp_socket(addr, port, _io_context); - _sock_fd = _socket->native_handle(); - - auto info = udp_boost_asio_adapter_info(*_socket); -diff --git a//lib/transport/udp_simple.cpp b//lib/transport/udp_simple.cpp -index c83e72d03b..2d031f2b00 100644 ---- a//lib/transport/udp_simple.cpp -+++ b//lib/transport/udp_simple.cpp -@@ -8,7 +8,6 @@ - #include <uhd/transport/udp_simple.hpp> - #include <uhd/utils/log.hpp> - #include <uhdlib/transport/udp_common.hpp> --#include <boost/format.hpp> - - using namespace uhd::transport; - namespace asio = boost::asio; -@@ -23,17 +22,19 @@ class udp_simple_impl : public udp_simple - const std::string& addr, const std::string& port, bool bcast, bool connect) - : _connected(connect) - { -- UHD_LOGGER_TRACE("UDP") -- << boost::format("Creating udp transport for %s %s") % addr % port; -+ UHD_LOG_TRACE("UDP", "Creating udp transport for " << addr << " " << port); - - // resolve the address -- asio::ip::udp::resolver resolver(_io_service); -- asio::ip::udp::resolver::query query( -- asio::ip::udp::v4(), addr, port, asio::ip::resolver_query_base::all_matching); -- _send_endpoint = *resolver.resolve(query); -+ asio::ip::udp::resolver resolver(_io_context); -+ _send_endpoint = *resolver -+ .resolve(asio::ip::udp::v4(), -+ addr, -+ port, -+ asio::ip::resolver_query_base::all_matching) -+ .begin(); - - // create and open the socket -- _socket = socket_sptr(new asio::ip::udp::socket(_io_service)); -+ _socket = socket_sptr(new asio::ip::udp::socket(_io_context)); - _socket->open(asio::ip::udp::v4()); - - // allow broadcasting -@@ -72,7 +73,7 @@ class udp_simple_impl : public udp_simple - - private: - bool _connected; -- asio::io_service _io_service; -+ asio::io_context _io_context; - socket_sptr _socket; - asio::ip::udp::endpoint _send_endpoint; - asio::ip::udp::endpoint _recv_endpoint; -diff --git a//lib/transport/udp_wsa_zero_copy.cpp b//lib/transport/udp_wsa_zero_copy.cpp -index 55773296fe..f189396361 100644 ---- a//lib/transport/udp_wsa_zero_copy.cpp -+++ b//lib/transport/udp_wsa_zero_copy.cpp -@@ -216,10 +216,10 @@ class udp_zero_copy_wsa_impl : public udp_zero_copy - UHD_ASSERT_THROW(_num_send_frames <= WSA_MAXIMUM_WAIT_EVENTS); - - // resolve the address -- asio::io_service io_service; -- asio::ip::udp::resolver resolver(io_service); -- asio::ip::udp::resolver::query query(asio::ip::udp::v4(), addr, port); -- asio::ip::udp::endpoint receiver_endpoint = *resolver.resolve(query); -+ asio::io_context io_context; -+ asio::ip::udp::resolver resolver(io_context); -+ asio::ip::udp::endpoint receiver_endpoint = -+ *resolver.resolve(asio::ip::udp::v4(), addr, port).begin(); - - // create the socket - _sock_fd = -diff --git a//lib/transport/udp_zero_copy.cpp b//lib/transport/udp_zero_copy.cpp -index be527be5cb..1a43f9d6be 100644 ---- a//lib/transport/udp_zero_copy.cpp -+++ b//lib/transport/udp_zero_copy.cpp -@@ -161,7 +161,7 @@ class udp_zero_copy_asio_impl : public udp_zero_copy - check_registry_for_fast_send_threshold(this->get_send_frame_size()); - #endif /*CHECK_REG_SEND_THRESH*/ - -- _socket = open_udp_socket(addr, port, _io_service); -+ _socket = open_udp_socket(addr, port, _io_context); - _sock_fd = _socket->native_handle(); - - UHD_LOGGER_TRACE("UDP") << boost::format("Local UDP socket endpoint: %s:%s") -@@ -252,7 +252,7 @@ class udp_zero_copy_asio_impl : public udp_zero_copy - size_t _next_recv_buff_index, _next_send_buff_index; - - // asio guts -> socket and service -- asio::io_service _io_service; -+ asio::io_context _io_context; - socket_sptr _socket; - int _sock_fd; - }; -diff --git a//lib/usrp/cores/xport_adapter_ctrl.cpp b//lib/usrp/cores/xport_adapter_ctrl.cpp -index 224f51ba22..9b3556ad3a 100644 ---- a//lib/usrp/cores/xport_adapter_ctrl.cpp -+++ b//lib/usrp/cores/xport_adapter_ctrl.cpp -@@ -28,13 +28,12 @@ std::pair<uint32_t, uint32_t> cast_ipv4_and_port( - const std::string& ipv4, const std::string& port) - { - using namespace boost::asio; -- io_service io_service; -- ip::udp::resolver resolver(io_service); -+ io_context io_context; -+ ip::udp::resolver resolver(io_context); - try { -- ip::udp::resolver::query query(ip::udp::v4(), ipv4, port); -- ip::udp::endpoint endpoint = *resolver.resolve(query); -+ ip::udp::endpoint endpoint = *(resolver.resolve(ipv4, port).begin()); - return { -- uint32_t(endpoint.address().to_v4().to_ulong()), uint32_t(endpoint.port())}; -+ uint32_t(endpoint.address().to_v4().to_uint()), uint32_t(endpoint.port())}; - } catch (const std::exception&) { - throw uhd::value_error("Invalid UDP address: " + ipv4 + ":" + port); - } -diff --git a//lib/usrp/usrp1/mb_eeprom.cpp b//lib/usrp/usrp1/mb_eeprom.cpp -index 756a103953..e5648dd34d 100644 ---- a//lib/usrp/usrp1/mb_eeprom.cpp -+++ b//lib/usrp/usrp1/mb_eeprom.cpp -@@ -8,6 +8,7 @@ - #include <uhd/types/byte_vector.hpp> - #include <uhd/usrp/mboard_eeprom.hpp> - #include <uhdlib/utils/eeprom_utils.hpp> -+#include <boost/asio.hpp> - - namespace { - const uint8_t USRP1_EEPROM_ADDR = 0x50; -diff --git a//lib/usrp/usrp2/io_impl.cpp b//lib/usrp/usrp2/io_impl.cpp -index c58787e3e5..48ab7b5f0e 100644 ---- a//lib/usrp/usrp2/io_impl.cpp -+++ b//lib/usrp/usrp2/io_impl.cpp -@@ -415,12 +415,12 @@ void usrp2_impl::program_stream_dest( - "IPv4 Address: %s, UDP Port: %s") - % args.args["addr"] % args.args["port"]; - -- asio::io_service io_service; -- asio::ip::udp::resolver resolver(io_service); -- asio::ip::udp::resolver::query query( -- asio::ip::udp::v4(), args.args["addr"], args.args["port"]); -- asio::ip::udp::endpoint endpoint = *resolver.resolve(query); -- stream_ctrl.ip_addr = uhd::htonx(uint32_t(endpoint.address().to_v4().to_ulong())); -+ asio::io_context io_context; -+ asio::ip::udp::resolver resolver(io_context); -+ asio::ip::udp::endpoint endpoint = -+ *resolver.resolve(asio::ip::udp::v4(), args.args["addr"], args.args["port"]) -+ .begin(); -+ stream_ctrl.ip_addr = uhd::htonx(uint32_t(endpoint.address().to_v4().to_uint())); - stream_ctrl.udp_port = uhd::htonx(uint32_t(endpoint.port())); - - for (size_t i = 0; i < 3; i++) { -diff --git a//lib/usrp/usrp2/mb_eeprom.cpp b//lib/usrp/usrp2/mb_eeprom.cpp -index 7bfe6159d0..2b01c0bf40 100644 ---- a//lib/usrp/usrp2/mb_eeprom.cpp -+++ b//lib/usrp/usrp2/mb_eeprom.cpp -@@ -141,8 +141,7 @@ void usrp2_impl::set_mb_eeprom(const std::string& mb, const mboard_eeprom_t& mb_ - - if (mb_eeprom.has_key("ip-addr")) { - byte_vector_t ip_addr_bytes(4); -- byte_copy( -- boost::asio::ip::address_v4::from_string(mb_eeprom["ip-addr"]).to_bytes(), -+ byte_copy(boost::asio::ip::make_address_v4(mb_eeprom["ip-addr"]).to_bytes(), - ip_addr_bytes); - iface->write_eeprom( - N200_EEPROM_ADDR, offsetof(n200_eeprom_map, ip_addr), ip_addr_bytes); -@@ -150,8 +149,7 @@ void usrp2_impl::set_mb_eeprom(const std::string& mb, const mboard_eeprom_t& mb_ - - if (mb_eeprom.has_key("subnet")) { - byte_vector_t ip_addr_bytes(4); -- byte_copy( -- boost::asio::ip::address_v4::from_string(mb_eeprom["subnet"]).to_bytes(), -+ byte_copy(boost::asio::ip::make_address_v4(mb_eeprom["subnet"]).to_bytes(), - ip_addr_bytes); - iface->write_eeprom( - N200_EEPROM_ADDR, offsetof(n200_eeprom_map, subnet), ip_addr_bytes); -@@ -159,8 +157,7 @@ void usrp2_impl::set_mb_eeprom(const std::string& mb, const mboard_eeprom_t& mb_ - - if (mb_eeprom.has_key("gateway")) { - byte_vector_t ip_addr_bytes(4); -- byte_copy( -- boost::asio::ip::address_v4::from_string(mb_eeprom["gateway"]).to_bytes(), -+ byte_copy(boost::asio::ip::make_address_v4(mb_eeprom["gateway"]).to_bytes(), - ip_addr_bytes); - iface->write_eeprom( - N200_EEPROM_ADDR, offsetof(n200_eeprom_map, gateway), ip_addr_bytes); -diff --git a//lib/usrp/x300/x300_mb_eeprom.cpp b//lib/usrp/x300/x300_mb_eeprom.cpp -index e0e6072aa1..273ad2b1ed 100644 ---- a//lib/usrp/x300/x300_mb_eeprom.cpp -+++ b//lib/usrp/x300/x300_mb_eeprom.cpp -@@ -9,6 +9,7 @@ - #include <uhd/types/serial.hpp> - #include <uhd/usrp/mboard_eeprom.hpp> - #include <uhdlib/utils/eeprom_utils.hpp> -+#include <boost/asio.hpp> - - namespace { - const uint8_t X300_EEPROM_ADDR = 0x50; -@@ -122,10 +123,22 @@ void uhd::usrp::x300::set_mb_eeprom( - "ip-addr0", "ip-addr1", "ip-addr2", "ip-addr3"}; - - // make sure there are no duplicate values -- if (check_for_duplicates<uhd::mac_addr_t>( -- "X300", mb_eeprom, curr_eeprom, "MAC address", mac_keys) -- or check_for_duplicates<boost::asio::ip::address_v4>( -- "X300", mb_eeprom, curr_eeprom, "IP address", ip_keys)) { -+ if (check_for_duplicates("X300", -+ mb_eeprom, -+ curr_eeprom, -+ "MAC address", -+ mac_keys, -+ [](const std::string& str) { -+ return mac_addr_t::from_string(str).to_string(); -+ }) -+ or check_for_duplicates("X300", -+ mb_eeprom, -+ curr_eeprom, -+ "IP address", -+ ip_keys, -+ [](const std::string& str) { -+ return boost::asio::ip::make_address(str).to_string(); -+ })) { - throw uhd::value_error( - "Duplicate values not permitted - write to EEPROM aborted"); - } -@@ -161,8 +174,7 @@ void uhd::usrp::x300::set_mb_eeprom( - // store the ip addresses - byte_vector_t ip_addr_bytes(4); - if (mb_eeprom.has_key("gateway")) { -- byte_copy( -- boost::asio::ip::address_v4::from_string(mb_eeprom["gateway"]).to_bytes(), -+ byte_copy(boost::asio::ip::make_address_v4(mb_eeprom["gateway"]).to_bytes(), - ip_addr_bytes); - iface->write_eeprom( - X300_EEPROM_ADDR, offsetof(x300_eeprom_map, gateway), ip_addr_bytes); -@@ -170,8 +182,8 @@ void uhd::usrp::x300::set_mb_eeprom( - for (size_t i = 0; i < 4; i++) { - const std::string n(1, char(i) + '0'); - if (mb_eeprom.has_key("ip-addr" + n)) { -- byte_copy(boost::asio::ip::address_v4::from_string(mb_eeprom["ip-addr" + n]) -- .to_bytes(), -+ byte_copy( -+ boost::asio::ip::make_address_v4(mb_eeprom["ip-addr" + n]).to_bytes(), - ip_addr_bytes); - iface->write_eeprom(X300_EEPROM_ADDR, - offsetof(x300_eeprom_map, ip_addr) + (i * 4), -@@ -179,8 +191,8 @@ void uhd::usrp::x300::set_mb_eeprom( - } - - if (mb_eeprom.has_key("subnet" + n)) { -- byte_copy(boost::asio::ip::address_v4::from_string(mb_eeprom["subnet" + n]) -- .to_bytes(), -+ byte_copy( -+ boost::asio::ip::make_address_v4(mb_eeprom["subnet" + n]).to_bytes(), - ip_addr_bytes); - iface->write_eeprom(X300_EEPROM_ADDR, - offsetof(x300_eeprom_map, subnet) + (i * 4), -diff --git a//lib/usrp_clock/octoclock/octoclock_eeprom.cpp b//lib/usrp_clock/octoclock/octoclock_eeprom.cpp -index 9023c6607a..adddb23f3e 100644 ---- a//lib/usrp_clock/octoclock/octoclock_eeprom.cpp -+++ b//lib/usrp_clock/octoclock/octoclock_eeprom.cpp -@@ -99,7 +99,7 @@ void octoclock_eeprom_t::_store() const - // IP address - if ((*this).has_key("ip-addr")) { - ip_v4::bytes_type ip_addr_bytes = -- ip_v4::from_string((*this)["ip-addr"]).to_bytes(); -+ boost::asio::ip::make_address_v4((*this)["ip-addr"]).to_bytes(); - memcpy(&eeprom_out->ip_addr, &ip_addr_bytes, 4); - eeprom_out->ip_addr = uhd::htonx<uint32_t>(eeprom_out->ip_addr); - } -@@ -107,7 +107,7 @@ void octoclock_eeprom_t::_store() const - // Default router - if ((*this).has_key("gateway")) { - ip_v4::bytes_type dr_addr_bytes = -- ip_v4::from_string((*this)["gateway"]).to_bytes(); -+ boost::asio::ip::make_address_v4((*this)["gateway"]).to_bytes(); - memcpy(&eeprom_out->dr_addr, &dr_addr_bytes, 4); - eeprom_out->dr_addr = uhd::htonx<uint32_t>(eeprom_out->dr_addr); - } -@@ -115,7 +115,7 @@ void octoclock_eeprom_t::_store() const - // Netmask - if ((*this).has_key("netmask")) { - ip_v4::bytes_type netmask_bytes = -- ip_v4::from_string((*this)["netmask"]).to_bytes(); -+ boost::asio::ip::make_address_v4((*this)["netmask"]).to_bytes(); - memcpy(&eeprom_out->netmask, &netmask_bytes, 4); - eeprom_out->netmask = uhd::htonx<uint32_t>(eeprom_out->netmask); - } -diff --git a//tests/eeprom_utils_test.cpp b//tests/eeprom_utils_test.cpp -index 728b4b8b67..57d107a177 100644 ---- a//tests/eeprom_utils_test.cpp -+++ b//tests/eeprom_utils_test.cpp -@@ -44,13 +44,37 @@ BOOST_AUTO_TEST_CASE(test_eeprom_duplicate_check) - map_list_of("0", "b")("1", "B"); - const std::vector<std::string> keys = {"0", "1", "2"}; - -- BOOST_CHECK_EQUAL(check_for_duplicates<upper_case_char>( -- "TEST", new_eeprom_no_dups, curr_eeprom, "Test Value", keys), -+ BOOST_CHECK_EQUAL(check_for_duplicates("TEST", -+ new_eeprom_no_dups, -+ curr_eeprom, -+ "Test Value", -+ keys, -+ [](const std::string& str) { -+ return upper_case_char::from_string(str).to_string(); -+ }), - false); -- BOOST_CHECK(check_for_duplicates<upper_case_char>( -- "TEST", new_eeprom_dups_in_curr, curr_eeprom, "Test Value", keys)); -- BOOST_CHECK(check_for_duplicates<upper_case_char>( -- "TEST", new_eeprom_dups_in_new, curr_eeprom, "Test Value", keys)); -- BOOST_CHECK(check_for_duplicates<upper_case_char>( -- "TEST", new_eeprom_dups_in_both, curr_eeprom, "Test Value", keys)); -+ BOOST_CHECK(check_for_duplicates("TEST", -+ new_eeprom_dups_in_curr, -+ curr_eeprom, -+ "Test Value", -+ keys, -+ [](const std::string& str) { -+ return upper_case_char::from_string(str).to_string(); -+ })); -+ BOOST_CHECK(check_for_duplicates("TEST", -+ new_eeprom_dups_in_new, -+ curr_eeprom, -+ "Test Value", -+ keys, -+ [](const std::string& str) { -+ return upper_case_char::from_string(str).to_string(); -+ })); -+ BOOST_CHECK(check_for_duplicates("TEST", -+ new_eeprom_dups_in_both, -+ curr_eeprom, -+ "Test Value", -+ keys, -+ [](const std::string& str) { -+ return upper_case_char::from_string(str).to_string(); -+ })); - } diff --git a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.87-2.patch b/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.87-2.patch deleted file mode 100644 index d8d3085a2c14..000000000000 --- a/net-wireless/uhd/files/uhd-4.6.0.0-boost-1.87-2.patch +++ /dev/null @@ -1,27 +0,0 @@ -https://github.com/EttusResearch/uhd/commit/e75629c3cfb4d0a654648f775e65e79375cf4f13 -https://bugs.gentoo.org/946371#c12 - -From e75629c3cfb4d0a654648f775e65e79375cf4f13 Mon Sep 17 00:00:00 2001 -From: Martin Braun <[email protected]> -Date: Thu, 5 Dec 2024 20:34:15 +0100 -Subject: [PATCH] lib: Fix boost::detail::atomic_count header - -This fixes a deprecation warning. ---- - host/include/uhd/transport/zero_copy.hpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/uhd/transport/zero_copy.hpp b/include/uhd/transport/zero_copy.hpp -index 5f954e24e4..2f15e8c4c7 100644 ---- a/include/uhd/transport/zero_copy.hpp -+++ b/include/uhd/transport/zero_copy.hpp -@@ -9,8 +9,8 @@ - - #include <uhd/config.hpp> - #include <uhd/utils/noncopyable.hpp> --#include <boost/detail/atomic_count.hpp> - #include <boost/intrusive_ptr.hpp> -+#include <boost/smart_ptr/detail/atomic_count.hpp> - #include <boost/utility.hpp> - #include <memory> - diff --git a/net-wireless/uhd/uhd-4.4.0.0.ebuild b/net-wireless/uhd/uhd-4.4.0.0.ebuild deleted file mode 100644 index e84fcfca773b..000000000000 --- a/net-wireless/uhd/uhd-4.4.0.0.ebuild +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{9..12} ) - -inherit cmake gnome2-utils python-single-r1 udev - -DESCRIPTION="Universal Software Radio Peripheral (USRP) Hardware Driver" -HOMEPAGE="https://kb.ettus.com" - -SRC_URI="https://github.com/EttusResearch/uhd/archive/v${PV}.tar.gz -> EttusResearch-UHD-${PV}.tar.gz \ - https://github.com/EttusResearch/uhd/releases/download/v${PV}/uhd-images_${PV}.tar.xz" -#https://github.com/EttusResearch/UHD-Mirror/tags -#http://files.ettus.com/binaries/images/ - -LICENSE="GPL-3" -SLOT="0/$(ver_cut 1-3)" -KEYWORDS="~amd64 ~arm ~riscv ~x86" -IUSE="+b100 +b200 doc cpu_flags_arm_neon cpu_flags_x86_ssse3 e300 examples +mpmd octoclock test +usb +usrp1 +usrp2 +utils +x300" -RESTRICT="!test? ( test )" -REQUIRED_USE="${PYTHON_REQUIRED_USE} - b100? ( usb ) - b200? ( usb ) - usrp1? ( usb ) - usrp2? ( usb ) - || ( b100 b200 e300 mpmd usrp1 usrp2 x300 )" - -RDEPEND="${PYTHON_DEPS} - e300? ( virtual/udev ) - usb? ( virtual/libusb:1 ) - dev-libs/boost:= - sys-libs/ncurses:0= - $(python_gen_cond_dep ' - dev-python/numpy[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - ') -" -DEPEND="${RDEPEND}" -#zip and gzip are directly used by the build system -BDEPEND=" - doc? ( app-text/doxygen ) - $(python_gen_cond_dep ' - dev-python/mako[${PYTHON_USEDEP}] - ') - app-arch/unzip - app-arch/gzip -" - -S="${WORKDIR}/${P}/host" - -src_unpack() { - default - mv "uhd-images_${PV}" images || die -} - -src_prepare() { - cmake_src_prepare - - gnome2_environment_reset #534582 -} - -src_configure() { - #https://gitlab.kitware.com/cmake/cmake/-/issues/23236 - #https://github.com/EttusResearch/uhd/pull/560 - local mycmakeargs=( - -DCURSES_NEED_NCURSES=ON - -DENABLE_LIBUHD=ON - -DENABLE_C_API=ON - -DENABLE_MAN_PAGES=ON - -DENABLE_MAN_PAGE_COMPRESSION=OFF - -DENABLE_EXAMPLES="$(usex examples)" - -DENABLE_TESTS="$(usex test)" - -DENABLE_USB="$(usex usb)" - -DENABLE_UTILS="$(usex utils)" - -DENABLE_MANUAL="$(usex doc)" - -DENABLE_DOXYGEN="$(usex doc)" - -DENABLE_B100="$(usex b100)" - -DENABLE_B200="$(usex b200)" - -DENABLE_E300="$(usex e300)" - -DENABLE_USRP1="$(usex usrp1)" - -DENABLE_USRP2="$(usex usrp2)" - -DENABLE_X300="$(usex x300)" - -DENABLE_MPMD="$(usex mpmd)" - -DENABLE_OCTOCLOCK="$(usex octoclock)" - -DENABLE_SSSE3="$(usex cpu_flags_x86_ssse3)" - -DNEON_SIMD_ENABLE="$(usex cpu_flags_arm_neon)" - -DPYTHON_EXECUTABLE="${PYTHON}" - -DPKG_DOC_DIR="${EPREFIX}/usr/share/doc/${PF}" - -DUHD_VERSION="${PV}" - ) - cmake_src_configure -} - -src_install() { - cmake_src_install - python_optimize - if use utils; then - python_fix_shebang "${ED}"/usr/$(get_libdir)/${PN}/utils/ - if [[ "${PV}" != "9999" ]]; then - rm -r "${ED}/usr/bin/uhd_images_downloader" || die - fi - fi - # do not install test files (bug #857492) - if use test; then - rm "${ED}/usr/lib64/${PN}/tests" -R || die - fi - - udev_dorules "${S}/utils/uhd-usrp.rules" - - rm -r "${WORKDIR}/images/winusb_driver" || die - if ! use b100; then - rm "${WORKDIR}"/images/usrp_b100* || die - fi - if ! use b200; then - rm "${WORKDIR}"/images/usrp_b2[01]* || die - fi - if ! use e300; then - rm "${WORKDIR}"/images/usrp_e3* || die - fi - if ! use mpmd; then - rm "${WORKDIR}"/images/usrp_n310* || die - fi - if ! use octoclock; then - rm "${WORKDIR}"/images/octoclock* || die - fi - if ! use usrp1; then - rm "${WORKDIR}"/images/usrp1* || die - fi - if ! use usrp2; then - rm "${WORKDIR}"/images/usrp2* || die - rm "${WORKDIR}"/images/usrp_n2[01]* || die - rm -r "${WORKDIR}"/images/bit || die - fi - if ! use x300; then - rm "${WORKDIR}/"images/usrp_x3* || die - fi - insinto /usr/share/${PN} - doins -r "${WORKDIR}/images" -} - -pkg_postinst() { - udev_reload -} - -pkg_postrm() { - udev_reload -} diff --git a/net-wireless/uhd/uhd-4.6.0.0.ebuild b/net-wireless/uhd/uhd-4.6.0.0.ebuild deleted file mode 100644 index 398b3f102e81..000000000000 --- a/net-wireless/uhd/uhd-4.6.0.0.ebuild +++ /dev/null @@ -1,155 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..13} ) - -inherit cmake gnome2-utils python-single-r1 udev - -DESCRIPTION="Universal Software Radio Peripheral (USRP) Hardware Driver" -HOMEPAGE="https://kb.ettus.com" - -SRC_URI="https://github.com/EttusResearch/uhd/archive/v${PV}.tar.gz -> EttusResearch-UHD-${PV}.tar.gz \ - https://github.com/EttusResearch/uhd/releases/download/v${PV}/uhd-images_${PV}.tar.xz" -#https://github.com/EttusResearch/UHD-Mirror/tags -#http://files.ettus.com/binaries/images/ - -LICENSE="GPL-3" -SLOT="0/$(ver_cut 1-3)" -KEYWORDS="amd64 ~arm ~riscv ~x86" -IUSE="+b100 +b200 doc cpu_flags_arm_neon cpu_flags_x86_ssse3 e300 examples +mpmd octoclock test +usb +usrp1 +usrp2 +utils +x300" -RESTRICT="!test? ( test )" -REQUIRED_USE="${PYTHON_REQUIRED_USE} - b100? ( usb ) - b200? ( usb ) - usrp1? ( usb ) - usrp2? ( usb ) - || ( b100 b200 e300 mpmd usrp1 usrp2 x300 )" - -RDEPEND="${PYTHON_DEPS} - e300? ( virtual/udev ) - usb? ( virtual/libusb:1 ) - dev-libs/boost:= - sys-libs/ncurses:0= - $(python_gen_cond_dep ' - dev-python/numpy[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - ') -" -DEPEND="${RDEPEND}" -#zip and gzip are directly used by the build system -BDEPEND=" - doc? ( app-text/doxygen ) - $(python_gen_cond_dep ' - dev-python/mako[${PYTHON_USEDEP}] - ') - app-arch/unzip - app-arch/gzip -" - -S="${WORKDIR}/${P}/host" - -PATCHES=( - "${FILESDIR}"/uhd-4.6.0.0-boost-1.85-1.patch - "${FILESDIR}"/uhd-4.6.0.0-boost-1.85-2.patch - "${FILESDIR}"/uhd-4.6.0.0-boost-1.87-1.patch - "${FILESDIR}"/uhd-4.6.0.0-boost-1.87-2.patch -) - -src_unpack() { - default - mv "uhd-images_${PV}" images || die -} - -src_prepare() { - cmake_src_prepare - - gnome2_environment_reset #534582 -} - -src_configure() { - #https://gitlab.kitware.com/cmake/cmake/-/issues/23236 - #https://github.com/EttusResearch/uhd/pull/560 - local mycmakeargs=( - -DENABLE_LIBUHD=ON - -DENABLE_C_API=ON - -DENABLE_MAN_PAGES=ON - -DENABLE_MAN_PAGE_COMPRESSION=OFF - -DENABLE_EXAMPLES="$(usex examples)" - -DENABLE_TESTS="$(usex test)" - -DENABLE_USB="$(usex usb)" - -DENABLE_UTILS="$(usex utils)" - -DENABLE_MANUAL="$(usex doc)" - -DENABLE_DOXYGEN="$(usex doc)" - -DENABLE_B100="$(usex b100)" - -DENABLE_B200="$(usex b200)" - -DENABLE_E300="$(usex e300)" - -DENABLE_USRP1="$(usex usrp1)" - -DENABLE_USRP2="$(usex usrp2)" - -DENABLE_X300="$(usex x300)" - -DENABLE_MPMD="$(usex mpmd)" - -DENABLE_OCTOCLOCK="$(usex octoclock)" - -DENABLE_SSSE3="$(usex cpu_flags_x86_ssse3)" - -DNEON_SIMD_ENABLE="$(usex cpu_flags_arm_neon)" - -DPYTHON_EXECUTABLE="${PYTHON}" - -DPKG_DOC_DIR="${EPREFIX}/usr/share/doc/${PF}" - -DUHD_VERSION="${PV}" - ) - cmake_src_configure -} - -src_install() { - cmake_src_install - python_optimize - if use utils; then - python_fix_shebang "${ED}"/usr/$(get_libdir)/${PN}/utils/ - if [[ "${PV}" != "9999" ]]; then - rm -r "${ED}/usr/bin/uhd_images_downloader" || die - fi - fi - # do not install test files (bug #857492) - if use test; then - rm "${ED}/usr/lib64/${PN}/tests" -R || die - fi - - udev_dorules "${S}/utils/uhd-usrp.rules" - - rm -r "${WORKDIR}/images/winusb_driver" || die - if ! use b100; then - rm "${WORKDIR}"/images/usrp_b100* || die - fi - if ! use b200; then - rm "${WORKDIR}"/images/usrp_b2[01]* || die - fi - if ! use e300; then - rm "${WORKDIR}"/images/usrp_e3* || die - fi - if ! use mpmd; then - rm "${WORKDIR}"/images/usrp_n310* || die - fi - if ! use octoclock; then - rm "${WORKDIR}"/images/octoclock* || die - fi - if ! use usrp1; then - rm "${WORKDIR}"/images/usrp1* || die - fi - if ! use usrp2; then - rm "${WORKDIR}"/images/usrp2* || die - rm "${WORKDIR}"/images/usrp_n2[01]* || die - rm -r "${WORKDIR}"/images/bit || die - fi - if ! use x300; then - rm "${WORKDIR}/"images/usrp_x3* || die - fi - insinto /usr/share/${PN} - doins -r "${WORKDIR}/images" -} - -pkg_postinst() { - udev_reload -} - -pkg_postrm() { - udev_reload -}
