Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Mar 2018 22:40:56 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r463538 - in head/games/spring: . files
Message-ID:  <201803032240.w23MeuDM001324@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Sat Mar  3 22:40:56 2018
New Revision: 463538
URL: https://svnweb.freebsd.org/changeset/ports/463538

Log:
  games/spring: unbreak with boost 1.66
  
  PR:		224124
  Obtained from:	upstream
  Approved by:	portmgr blanket

Added:
  head/games/spring/files/patch-boost-1.66   (contents, props changed)
Modified:
  head/games/spring/Makefile   (contents, props changed)

Modified: head/games/spring/Makefile
==============================================================================
--- head/games/spring/Makefile	Sat Mar  3 22:40:28 2018	(r463537)
+++ head/games/spring/Makefile	Sat Mar  3 22:40:56 2018	(r463538)
@@ -14,8 +14,6 @@ COMMENT=	Project aiming to create a new and versatile 
 
 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 \

Added: head/games/spring/files/patch-boost-1.66
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/spring/files/patch-boost-1.66	Sat Mar  3 22:40:56 2018	(r463538)
@@ -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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803032240.w23MeuDM001324>