games-strategy/widelands: fix build with gcc-15 and asio-1.34

Using -std=gnu17 to have just a litte less to backport
until next version.

Closes: https://bugs.gentoo.org/938230
Closes: https://bugs.gentoo.org/955174
Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
This commit is contained in:
Ionen Wolkens
2025-05-01 06:46:34 -04:00
parent ce8adefaa0
commit b0a1df87fb
3 changed files with 152 additions and 2 deletions

View File

@@ -0,0 +1,127 @@
https://bugs.gentoo.org/955174
https://github.com/widelands/widelands/pull/6665
--- a/src/network/bufferedconnection.cc
+++ b/src/network/bufferedconnection.cc
@@ -143,8 +143,8 @@
// Stop the thread
- io_service_.stop();
- // Not sure if that is required, wait up to one second for the io_service to stop
- for (int i = 0; i < 1000 && !io_service_.stopped(); i++) {
+ io_context_.stop();
+ // Not sure if that is required, wait up to one second for the io_context to stop
+ for (int i = 0; i < 1000 && !io_context_.stopped(); i++) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
- assert(io_service_.stopped());
+ assert(io_context_.stopped());
if (asio_thread_.joinable()) {
@@ -336,3 +336,3 @@
BufferedConnection::BufferedConnection(const NetAddress& host)
- : socket_(io_service_), currently_sending_(false) {
+ : socket_(io_context_), currently_sending_(false) {
@@ -355,3 +355,3 @@
verb_log_info("[BufferedConnection] Starting networking thread\n");
- io_service_.run();
+ io_context_.run();
verb_log_info("[BufferedConnection] Stopping networking thread\n");
@@ -366,3 +366,3 @@
-BufferedConnection::BufferedConnection() : socket_(io_service_) {
+BufferedConnection::BufferedConnection() : socket_(io_context_) {
}
@@ -381,3 +381,3 @@
verb_log_info("[BufferedConnection] Starting networking thread");
- io_service_.run();
+ io_context_.run();
verb_log_info("[BufferedConnection] Stopping networking thread");
--- a/src/network/bufferedconnection.h
+++ b/src/network/bufferedconnection.h
@@ -314,4 +314,4 @@
- /// An io_service needed by asio. Primarily needed for asynchronous operations.
- asio::io_service io_service_;
+ /// An io_context needed by asio. Primarily needed for asynchronous operations.
+ asio::io_context io_context_;
--- a/src/network/nethost.cc
+++ b/src/network/nethost.cc
@@ -69,7 +69,7 @@
// Stop the thread
- io_service_.stop();
- for (int i = 0; i < 1000 && !io_service_.stopped(); i++) {
+ io_context_.stop();
+ for (int i = 0; i < 1000 && !io_context_.stopped(); i++) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
- assert(io_service_.stopped());
+ assert(io_context_.stopped());
if (asio_thread_.joinable()) {
@@ -185,3 +185,3 @@
-NetHost::NetHost(const uint16_t port) : acceptor_v4_(io_service_), acceptor_v6_(io_service_) {
+NetHost::NetHost(const uint16_t port) : acceptor_v4_(io_context_), acceptor_v6_(io_context_) {
@@ -200,3 +200,3 @@
verb_log_info("[NetHost] Starting networking thread");
- io_service_.run();
+ io_context_.run();
verb_log_info("[NetHost] Stopping networking thread");
@@ -216,3 +216,3 @@
acceptor->bind(endpoint);
- acceptor->listen(asio::socket_base::max_connections);
+ acceptor->listen(asio::socket_base::max_listen_connections);
return true;
--- a/src/network/nethost.h
+++ b/src/network/nethost.h
@@ -103,4 +103,4 @@
NetHostInterface::ConnectionId next_id_{1};
- /// An io_service needed by asio. Primary needed for async operations.
- asio::io_service io_service_;
+ /// An io_context needed by asio. Primary needed for async operations.
+ asio::io_context io_context_;
/// The acceptor we get IPv4 connection requests to.
--- a/src/network/network.cc
+++ b/src/network/network.cc
@@ -32,7 +32,7 @@
try {
- asio::io_service io_service;
- asio::ip::tcp::resolver resolver(io_service);
- asio::ip::tcp::resolver::query query(protocol, hostname, as_string(port));
- asio::ip::tcp::resolver::iterator iter = resolver.resolve(query);
- if (iter == asio::ip::tcp::resolver::iterator()) {
+ asio::io_context io_context;
+ asio::ip::tcp::resolver resolver(io_context);
+ asio::ip::tcp::resolver::results_type iter =
+ resolver.resolve(protocol, hostname, as_string(port));
+ if (iter.empty()) {
// Resolution failed
@@ -42,3 +42,3 @@
}
- addr->ip = iter->endpoint().address();
+ addr->ip = iter.begin()->endpoint().address();
addr->port = port;
@@ -66,3 +66,3 @@
std::error_code ec;
- asio::ip::address new_addr = asio::ip::address::from_string(ip, ec);
+ asio::ip::address new_addr = asio::ip::make_address(ip, ec);
if (ec) {
--- a/src/network/network_lan_promotion.cc
+++ b/src/network/network_lan_promotion.cc
@@ -77,3 +77,3 @@
*/
-LanBase::LanBase(uint16_t port) : socket_v4(io_service), socket_v6(io_service) {
+LanBase::LanBase(uint16_t port) : socket_v4(io_context), socket_v6(io_context) {
@@ -252,3 +252,3 @@
std::error_code ec;
- asio::ip::udp::endpoint destination(asio::ip::address::from_string(address), port);
+ asio::ip::udp::endpoint destination(asio::ip::make_address(address), port);
socket.send_to(asio::buffer(buf, len), destination, 0, ec);
--- a/src/network/network_lan_promotion.h
+++ b/src/network/network_lan_promotion.h
@@ -135,3 +135,3 @@
/// No idea what this does. I think it is only really used when asynchronous operations are done.
- asio::io_service io_service;
+ asio::io_context io_context;
/// The socket for IPv4.

View File

@@ -0,0 +1,16 @@
https://bugs.gentoo.org/938230
https://github.com/widelands/widelands/pull/6522
--- a/src/base/format/abstract_node.h
+++ b/src/base/format/abstract_node.h
@@ -21,2 +21,4 @@
+#include <cstdint>
+
namespace format_impl {
--- a/src/logic/map_objects/tribes/training_attribute.h
+++ b/src/logic/map_objects/tribes/training_attribute.h
@@ -21,2 +21,4 @@
+#include <cstdint>
+
namespace Widelands {

View File

@@ -1,10 +1,10 @@
# Copyright 1999-2024 Gentoo Authors
# 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 python-any-r1 xdg
inherit cmake flag-o-matic python-any-r1 xdg
if [[ ${PV} == 9999 ]]; then
inherit git-r3
@@ -46,7 +46,14 @@ BDEPEND="
sys-devel/gettext
"
PATCHES=(
"${FILESDIR}"/${P}-asio1.34.patch
"${FILESDIR}"/${P}-cstdint.patch
)
src_configure() {
append-cflags -std=gnu17
local mycmakeargs=(
-DWL_INSTALL_BASEDIR="${EPREFIX}"/usr/share/doc/${PF}
-DWL_INSTALL_BINDIR="${EPREFIX}"/usr/bin