games/spring: unbreak with boost 1.66
PR: 224124 Obtained from: upstream Approved by: portmgr blanket
This commit is contained in:
parent
3e0b78e13f
commit
03c244cc3d
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=463538
@ -14,8 +14,6 @@ COMMENT= Project aiming to create a new and versatile RTS Engine
|
||||
|
||||
LICENSE= GPLv2
|
||||
|
||||
BROKEN= fails to build with boost 1.66, see bug 224124
|
||||
|
||||
LIB_DEPENDS= libfreetype.so:print/freetype2 \
|
||||
libboost_thread.so:devel/boost-libs \
|
||||
libIL.so:graphics/devil \
|
||||
|
184
games/spring/files/patch-boost-1.66
Normal file
184
games/spring/files/patch-boost-1.66
Normal file
@ -0,0 +1,184 @@
|
||||
https://github.com/spring/spring/commit/a61970779994
|
||||
https://github.com/spring/spring/commit/f2f84f38e04a
|
||||
https://github.com/spring/spring/commit/318c003c7273
|
||||
https://github.com/spring/spring/commit/5048e2a3446c
|
||||
|
||||
--- rts/Net/AutohostInterface.cpp.orig 2014-10-07 20:09:51 UTC
|
||||
+++ rts/Net/AutohostInterface.cpp
|
||||
@@ -116,68 +116,60 @@ std::string AutohostInterface::TryBindSocket(
|
||||
const std::string& remoteIP, int remotePort,
|
||||
const std::string& localIP, int localPort)
|
||||
{
|
||||
- std::string errorMsg = "";
|
||||
+ std::string errorMsg;
|
||||
|
||||
ip::address localAddr;
|
||||
ip::address remoteAddr;
|
||||
boost::system::error_code err;
|
||||
+
|
||||
try {
|
||||
socket.open(ip::udp::v6(), err); // test IP v6 support
|
||||
+
|
||||
const bool supportsIPv6 = !err;
|
||||
|
||||
remoteAddr = netcode::WrapIP(remoteIP, &err);
|
||||
- if (err) {
|
||||
+
|
||||
+ if (err)
|
||||
throw std::runtime_error("Failed to parse address " + remoteIP + ": " + err.message());
|
||||
- }
|
||||
|
||||
- if (!supportsIPv6 && remoteAddr.is_v6()) {
|
||||
+ if (!supportsIPv6 && remoteAddr.is_v6())
|
||||
throw std::runtime_error("IP v6 not supported, can not use address " + remoteAddr.to_string());
|
||||
- }
|
||||
|
||||
if (localIP.empty()) {
|
||||
// use the "any" address as local "from"
|
||||
if (remoteAddr.is_v6()) {
|
||||
localAddr = ip::address_v6::any();
|
||||
} else {
|
||||
- if (supportsIPv6) {
|
||||
- socket.close();
|
||||
- }
|
||||
+ socket.close();
|
||||
socket.open(ip::udp::v4());
|
||||
+
|
||||
localAddr = ip::address_v4::any();
|
||||
}
|
||||
} else {
|
||||
localAddr = netcode::WrapIP(localIP, &err);
|
||||
- if (err) {
|
||||
+
|
||||
+ if (err)
|
||||
throw std::runtime_error("Failed to parse local IP " + localIP + ": " + err.message());
|
||||
- }
|
||||
- if (localAddr.is_v6() != remoteAddr.is_v6()) {
|
||||
+
|
||||
+ if (localAddr.is_v6() != remoteAddr.is_v6())
|
||||
throw std::runtime_error("Local IP " + localAddr.to_string() + " and remote IP " + remoteAddr.to_string() + " are IP v4/v6 mixed");
|
||||
- }
|
||||
}
|
||||
|
||||
socket.bind(ip::udp::endpoint(localAddr, localPort));
|
||||
-
|
||||
- boost::asio::socket_base::non_blocking_io command(true);
|
||||
- socket.io_control(command);
|
||||
-
|
||||
- // A similar, slighly less verbose message is already in GameServer
|
||||
- //LOG("Connecting (UDP) to IP (v%i) %s Port %i",
|
||||
- // (remoteAddr.is_v6() ? 6 : 4), remoteAddr.c_str(), remotePort);
|
||||
+ socket.non_blocking(true);
|
||||
socket.connect(ip::udp::endpoint(remoteAddr, remotePort));
|
||||
- } catch (const std::runtime_error& ex) { // includes also boost::system::system_error, as it inherits from runtime_error
|
||||
+ } catch (const std::runtime_error& ex) {
|
||||
+ // also includes asio::system_error, inherits from runtime_error
|
||||
socket.close();
|
||||
errorMsg = ex.what();
|
||||
- if (errorMsg.empty()) {
|
||||
+
|
||||
+ if (errorMsg.empty())
|
||||
errorMsg = "Unknown problem";
|
||||
- }
|
||||
}
|
||||
|
||||
return errorMsg;
|
||||
}
|
||||
|
||||
-AutohostInterface::~AutohostInterface()
|
||||
-{
|
||||
-}
|
||||
|
||||
void AutohostInterface::SendStart()
|
||||
{
|
||||
--- rts/Net/AutohostInterface.h.orig 2014-10-07 20:09:51 UTC
|
||||
+++ rts/Net/AutohostInterface.h
|
||||
@@ -28,7 +28,7 @@ class AutohostInterface (public)
|
||||
*/
|
||||
AutohostInterface(const std::string& remoteIP, int remotePort,
|
||||
const std::string& localIP = "", int localPort = 0);
|
||||
- virtual ~AutohostInterface();
|
||||
+ virtual ~AutohostInterface() {}
|
||||
|
||||
bool IsInitialized() const { return initialized; }
|
||||
|
||||
--- rts/System/FileSystem/Archives/SevenZipArchive.cpp.orig 2014-10-07 20:09:51 UTC
|
||||
+++ rts/System/FileSystem/Archives/SevenZipArchive.cpp
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "SevenZipArchive.h"
|
||||
|
||||
#include <algorithm>
|
||||
-#include <boost/system/error_code.hpp>
|
||||
#include <stdexcept>
|
||||
#include <string.h> //memcpy
|
||||
|
||||
@@ -86,7 +85,7 @@ IArchive* CSevenZipArchiveFactory::DoCreateArchive(con
|
||||
return new CSevenZipArchive(filePath);
|
||||
}
|
||||
|
||||
-const char* CSevenZipArchive::GetErrorStr(int err)
|
||||
+static inline const char* GetErrorStr(int err)
|
||||
{
|
||||
switch(err) {
|
||||
case SZ_OK:
|
||||
@@ -108,6 +107,27 @@ const char* CSevenZipArchive::GetErrorStr(int err)
|
||||
}
|
||||
|
||||
|
||||
+static inline std::string GetSystemErrorStr(WRes wres)
|
||||
+{
|
||||
+#ifdef USE_WINDOWS_FILE
|
||||
+ LPSTR messageBuffer = nullptr;
|
||||
+ size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
+ NULL, wres, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
|
||||
+
|
||||
+ std::string errorstr(messageBuffer, size);
|
||||
+
|
||||
+ //Free the buffer.
|
||||
+ LocalFree(messageBuffer);
|
||||
+#else
|
||||
+ std::string errorstr(strerror(wres));
|
||||
+#endif
|
||||
+
|
||||
+ return errorstr;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
CSevenZipArchive::CSevenZipArchive(const std::string& name):
|
||||
CBufferedArchive(name, false),
|
||||
blockIndex(0xFFFFFFFF),
|
||||
@@ -126,9 +146,8 @@ CSevenZipArchive::CSevenZipArchive(const std::string&
|
||||
|
||||
WRes wres = InFile_Open(&archiveStream.file, name.c_str());
|
||||
if (wres) {
|
||||
- boost::system::error_code e(wres, boost::system::get_system_category());
|
||||
LOG_L(L_ERROR, "Error opening \"%s\": %s (%i)",
|
||||
- name.c_str(), e.message().c_str(), e.value());
|
||||
+ name.c_str(), GetSystemErrorStr(wres).c_str(), (int) wres);
|
||||
return;
|
||||
}
|
||||
|
||||
--- rts/System/FileSystem/Archives/SevenZipArchive.h.orig 2014-10-07 20:09:51 UTC
|
||||
+++ rts/System/FileSystem/Archives/SevenZipArchive.h
|
||||
@@ -95,7 +95,6 @@ class CSevenZipArchive : public CBufferedArchive (priv
|
||||
int packedSize;
|
||||
};
|
||||
int GetFileName(const CSzArEx* db, int i);
|
||||
- const char* GetErrorStr(int res);
|
||||
|
||||
std::vector<FileData> fileData;
|
||||
UInt16 *tempBuf;
|
||||
--- rts/System/Net/UDPListener.cpp.orig 2014-10-07 20:09:51.000000000 +0000
|
||||
+++ rts/System/Net/UDPListener.cpp
|
||||
@@ -34,8 +34,7 @@ UDPListener::UDPListener(int port, const std::string&
|
||||
const std::string err = TryBindSocket(port, &socket, ip);
|
||||
|
||||
if (err.empty()) {
|
||||
- boost::asio::socket_base::non_blocking_io socketCommand(true);
|
||||
- socket->io_control(socketCommand);
|
||||
+ socket->non_blocking(true);
|
||||
|
||||
mySocket = socket;
|
||||
SetAcceptingConnections(true);
|
Loading…
Reference in New Issue
Block a user