mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-20 00:21:35 +00:00
games/spring: update 105.0.1 → 106.0.1
- Remove some patches which were upstreamed after the previous update - Simplify passing port version to the build system, it now supports passing through a file - Consolidate most remaining patches into two larger topic chunks for easier handling and upstreaming; ramaining patches will be upstreamed in this go
This commit is contained in:
parent
98f5f7f0f4
commit
58bb6e25da
@ -1,5 +1,5 @@
|
||||
PORTNAME= spring
|
||||
PORTVERSION= 105.0.1
|
||||
PORTVERSION= 106.0.1
|
||||
CATEGORIES= games
|
||||
|
||||
MAINTAINER= amdmi3@FreeBSD.org
|
||||
@ -25,17 +25,17 @@ ONLY_FOR_ARCHS= amd64
|
||||
ONLY_FOR_ARCHS_REASON= relies on x86 floating-point math and amd64 atomic ops
|
||||
|
||||
USE_GITHUB= yes
|
||||
GH_TUPLE= spring:Python:3bb6837:Python/AI/Interfaces/Python \
|
||||
spring:AAI:a15f45c:AAI/AI/Skirmish/AAI \
|
||||
spring:CircuitAI:91fd31e:CircuitAI/AI/Skirmish/CircuitAI \
|
||||
spring:HughAI:1a11f5a:HughAI/AI/Skirmish/HughAI \
|
||||
spring:KAIK:f6bdd3e:KAIK/AI/Skirmish/KAIK \
|
||||
spring:Shard:75339ae:Shard/AI/Skirmish/Shard \
|
||||
spring:SpringMapConvNG:76429b4:SprintMapConvNG/tools/mapcompile \
|
||||
spring:pr-downloader:67423a3:pr_downloader/tools/pr-downloader \
|
||||
spring:pyunitsync:6e1b3fd:pyunitsync/tools/unitsync/python
|
||||
GH_TUPLE= spring:Python:b69a4ea:Python/AI/Interfaces/Python \
|
||||
spring:AAI:fba6d98:AAI/AI/Skirmish/AAI \
|
||||
spring:CircuitAI:307daf7:CircuitAI/AI/Skirmish/CircuitAI \
|
||||
spring:HughAI:2866476:HughAI/AI/Skirmish/HughAI \
|
||||
spring:KAIK:2d9333e:KAIK/AI/Skirmish/KAIK \
|
||||
spring:Shard:c551e5e:Shard/AI/Skirmish/Shard \
|
||||
spring:SpringMapConvNG:0ddd86e:SprintMapConvNG/tools/mapcompile \
|
||||
spring:pr-downloader:68b7dae:pr_downloader/tools/pr-downloader \
|
||||
spring:pyunitsync:8dfe0bc:pyunitsync/tools/unitsync/python
|
||||
|
||||
USES= cmake compiler:c++11-lib desktop-file-utils gl localbase:ldflags \
|
||||
USES= cmake compiler:c++17-lang desktop-file-utils gl localbase:ldflags \
|
||||
openal:al pkgconfig sdl shared-mime-info xorg
|
||||
USE_GL= gl glu glew
|
||||
USE_SDL= sdl2
|
||||
@ -46,8 +46,6 @@ CMAKE_ARGS= -DDATADIR:STRING="share/${PORTNAME}" \
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Git=TRUE \
|
||||
-Wno-dev
|
||||
|
||||
MAKE_ENV= PORTVERSION="${PORTVERSION:R}" # build system expects 2 digit version
|
||||
|
||||
.if defined(WITH_SYNC_DEBUG)
|
||||
CFLAGS= # empty
|
||||
CXXFLAGS= # empty
|
||||
@ -70,7 +68,12 @@ MANPAGES_BUILD_DEPENDS= asciidoc:textproc/asciidoc \
|
||||
${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:textproc/docbook-xsl \
|
||||
bash:shells/bash
|
||||
|
||||
post-extract:
|
||||
# build system expects 2 digit version
|
||||
@${ECHO_CMD} ${PORTVERSION:R} > ${WRKSRC}/VERSION
|
||||
|
||||
post-patch:
|
||||
@${REINPLACE_CMD} -i '' -e 's|LEGACY|OPENGL4|' ${WRKSRC}/doc/manpages/spring.6.txt
|
||||
.if defined(WITH_OPTIONAL_GS4)
|
||||
# allows minimal runtest with older hardware
|
||||
@${REINPLACE_CMD} -e '/GLEW_ARB_geometry_shader4/ s|CHECK_REQ_EXT|CHECK_OPT_EXT|' ${WRKSRC}/rts/Rendering/GlobalRendering.cpp
|
||||
|
@ -1,21 +1,21 @@
|
||||
TIMESTAMP = 1619038665
|
||||
SHA256 (spring-spring-105.0.1_GH0.tar.gz) = 975e74540acd6e2f0a1a4965d222ff79b035e152e35edbab982bee4a76a41b22
|
||||
SIZE (spring-spring-105.0.1_GH0.tar.gz) = 10625978
|
||||
SHA256 (spring-Python-3bb6837_GH0.tar.gz) = 710bb1a7f4835ab4d55a91b95cc7c5f53cfb8a3e2ba528f46d62df4f5a8d632e
|
||||
SIZE (spring-Python-3bb6837_GH0.tar.gz) = 29519
|
||||
SHA256 (spring-AAI-a15f45c_GH0.tar.gz) = 2d3b0922969b28596339f651bd208ce26b9220830cc917f70613368a2a4828ee
|
||||
SIZE (spring-AAI-a15f45c_GH0.tar.gz) = 137400
|
||||
SHA256 (spring-CircuitAI-91fd31e_GH0.tar.gz) = 8d54f79070559cf53bed127421a33ee2d5dc27825364e0ef9008d47e47e91980
|
||||
SIZE (spring-CircuitAI-91fd31e_GH0.tar.gz) = 713006
|
||||
SHA256 (spring-HughAI-1a11f5a_GH0.tar.gz) = 6caaae79f6435ac74b7f6bd4407f89c5e48f30711932655c9ba64321f8056937
|
||||
SIZE (spring-HughAI-1a11f5a_GH0.tar.gz) = 126562
|
||||
SHA256 (spring-KAIK-f6bdd3e_GH0.tar.gz) = 20cf1304c94f18f11cc22597e7b88bc57e7125a79541498d9b3b86faa133e63c
|
||||
SIZE (spring-KAIK-f6bdd3e_GH0.tar.gz) = 97974
|
||||
SHA256 (spring-Shard-75339ae_GH0.tar.gz) = 0dc59dc03cc3d92d30abe8f2570a7aa9ec6f80bbe9e8464baedc8810393e7f32
|
||||
SIZE (spring-Shard-75339ae_GH0.tar.gz) = 358911
|
||||
SHA256 (spring-SpringMapConvNG-76429b4_GH0.tar.gz) = 920a3cc2420feabdd8c8603b407070dfb6b56a65216f0d2e0796e94afa1cb22f
|
||||
SIZE (spring-SpringMapConvNG-76429b4_GH0.tar.gz) = 21488
|
||||
SHA256 (spring-pr-downloader-67423a3_GH0.tar.gz) = f12ff0999bac8b0044eb603975b324e2ca0461c6d4c0bb61e2856300ed6edea1
|
||||
SIZE (spring-pr-downloader-67423a3_GH0.tar.gz) = 832323
|
||||
SHA256 (spring-pyunitsync-6e1b3fd_GH0.tar.gz) = 3d05a88200337bbac3a8d4a8b92eb4660687fa3948a4aeb87fb07a01b057fa1a
|
||||
SIZE (spring-pyunitsync-6e1b3fd_GH0.tar.gz) = 131119
|
||||
TIMESTAMP = 1647541925
|
||||
SHA256 (spring-spring-106.0.1_GH0.tar.gz) = 2097642f8f5d77a5e61ecfea9159e835c4a78085b8ddf4ecaee1891589a98d37
|
||||
SIZE (spring-spring-106.0.1_GH0.tar.gz) = 9950280
|
||||
SHA256 (spring-Python-b69a4ea_GH0.tar.gz) = e6e0afd2b42c2ec66d0ce1bb5fbfeedc1d5d21646004c4bbf38997f1b64bd7cb
|
||||
SIZE (spring-Python-b69a4ea_GH0.tar.gz) = 29499
|
||||
SHA256 (spring-AAI-fba6d98_GH0.tar.gz) = 091d2d8ff43fb383e0584b74e7b692aec355715e29dd4d9c6e63b4fb237a5c89
|
||||
SIZE (spring-AAI-fba6d98_GH0.tar.gz) = 148147
|
||||
SHA256 (spring-CircuitAI-307daf7_GH0.tar.gz) = 23189c84cd8966dae042edc9cfcb860bfc23d1250f0d84470dceef9a604a1da8
|
||||
SIZE (spring-CircuitAI-307daf7_GH0.tar.gz) = 1455519
|
||||
SHA256 (spring-HughAI-2866476_GH0.tar.gz) = d0535163fec89d9db8c4e74a6b0cd1eb78f364130a0a936718bb77ecdb7a754e
|
||||
SIZE (spring-HughAI-2866476_GH0.tar.gz) = 126578
|
||||
SHA256 (spring-KAIK-2d9333e_GH0.tar.gz) = 64a82bd9fedaaf0b7b8802ed71f5b53f833d583f54dddb3ffd539ec767daf7b9
|
||||
SIZE (spring-KAIK-2d9333e_GH0.tar.gz) = 97982
|
||||
SHA256 (spring-Shard-c551e5e_GH0.tar.gz) = 3c0328a33332c3b8fe9152f2ebf839eee8cebcbd4326fe6745afc327c8114f4d
|
||||
SIZE (spring-Shard-c551e5e_GH0.tar.gz) = 358900
|
||||
SHA256 (spring-SpringMapConvNG-0ddd86e_GH0.tar.gz) = c9840de87cd37cab8bc2e2fc15cad3b177369a0dc8da41c7b8d4513d6355ca31
|
||||
SIZE (spring-SpringMapConvNG-0ddd86e_GH0.tar.gz) = 21487
|
||||
SHA256 (spring-pr-downloader-68b7dae_GH0.tar.gz) = 4931f0d4d514f7c201f2df85b3696cceb4190309e96edd37891ef6bec14b98b7
|
||||
SIZE (spring-pr-downloader-68b7dae_GH0.tar.gz) = 835836
|
||||
SHA256 (spring-pyunitsync-8dfe0bc_GH0.tar.gz) = a2fc49738d825016fdbe85b72de3542320f5bf8a640e1651cbb3661a682da281
|
||||
SIZE (spring-pyunitsync-8dfe0bc_GH0.tar.gz) = 131086
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- ./AI/Skirmish/CircuitAI/CMakeLists.txt.orig 2021-01-01 16:10:55 UTC
|
||||
+++ ./AI/Skirmish/CircuitAI/CMakeLists.txt
|
||||
@@ -9,7 +9,7 @@ if (WIN32) # spring::condition_variable_any requireme
|
||||
elseif (APPLE)
|
||||
set(additionalSources ${additionalSources} ${CMAKE_SOURCE_DIR}/rts/System/Platform/Mac/Signal.cpp)
|
||||
else ()
|
||||
- set(additionalSources ${additionalSources} ${CMAKE_SOURCE_DIR}/rts/System/Platform/Linux/Futex.cpp)
|
||||
+ #set(additionalSources ${additionalSources} ${CMAKE_SOURCE_DIR}/rts/System/Platform/Linux/Futex.cpp)
|
||||
endif ()
|
||||
set(additionalLibraries ${Cpp_AIWRAPPER_TARGET} CUtils)
|
||||
#set(additionalLibraries ${Cpp_AIWRAPPER_TARGET} CUtils ${SDL2_LIBRARY})
|
@ -1,13 +0,0 @@
|
||||
https://github.com/spring/CircuitAI/pull/17/files
|
||||
|
||||
--- AI/Skirmish/CircuitAI/src/circuit/module/EconomyManager.h.orig 2021-01-01 16:10:55 UTC
|
||||
+++ AI/Skirmish/CircuitAI/src/circuit/module/EconomyManager.h
|
||||
@@ -164,7 +164,7 @@ class CEconomyManager: public IModule { (private)
|
||||
float pull;
|
||||
int mex;
|
||||
float fraction;
|
||||
- inline bool operator< (const SPullMtoS& rhs) { return mex < rhs.mex; }
|
||||
+ inline bool operator< (const SPullMtoS& rhs) const { return mex < rhs.mex; }
|
||||
inline bool operator() (const SPullMtoS& lhs, const int rhs) { return lhs.mex < rhs; }
|
||||
};
|
||||
std::vector<SPullMtoS> mspInfos;
|
@ -1,22 +0,0 @@
|
||||
--- AI/Skirmish/CircuitAI/src/circuit/setup/SetupManager.cpp.orig 2021-01-01 16:10:55 UTC
|
||||
+++ AI/Skirmish/CircuitAI/src/circuit/setup/SetupManager.cpp
|
||||
@@ -26,6 +26,8 @@
|
||||
#include "Info.h"
|
||||
|
||||
#include <regex>
|
||||
+#include <algorithm>
|
||||
+#include <random>
|
||||
|
||||
namespace circuit {
|
||||
|
||||
@@ -183,7 +185,9 @@ void CSetupManager::PickStartPos(CCircuitAI* circuit,
|
||||
c.distDivIncome = center.distance(cl.position) / income;
|
||||
validClusters.push_back(std::make_pair(kv.first, c));
|
||||
}
|
||||
- std::random_shuffle(validClusters.begin(), validClusters.end());
|
||||
+ std::random_device rd;
|
||||
+ std::minstd_rand g(rd());
|
||||
+ std::shuffle(validClusters.begin(), validClusters.end(), g);
|
||||
|
||||
auto cmp = [](const std::pair<int, SCluster>& a, const std::pair<int, SCluster>& b) {
|
||||
if (a.second.count < b.second.count) {
|
@ -1,21 +0,0 @@
|
||||
--- ./AI/Skirmish/CircuitAI/src/circuit/util/math/EncloseCircle.cpp.orig 2021-01-01 16:10:55 UTC
|
||||
+++ ./AI/Skirmish/CircuitAI/src/circuit/util/math/EncloseCircle.cpp
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "util/utils.h"
|
||||
|
||||
#include <algorithm>
|
||||
+#include <random>
|
||||
#include <assert.h>
|
||||
|
||||
namespace circuit {
|
||||
@@ -48,7 +49,9 @@ void CEncloseCircle::MakeCircle(const std::vector<AIFl
|
||||
}
|
||||
// Randomize order
|
||||
// TODO: Read why shuffle??
|
||||
- std::random_shuffle(shuffled.begin(), shuffled.end());
|
||||
+ std::random_device rd;
|
||||
+ std::minstd_rand g(rd());
|
||||
+ std::shuffle(shuffled.begin(), shuffled.end(), g);
|
||||
|
||||
// Progressively add points to circle or recompute circle
|
||||
decltype(shuffled)::iterator it = shuffled.begin();
|
61
games/spring/files/patch-futex
Normal file
61
games/spring/files/patch-futex
Normal file
@ -0,0 +1,61 @@
|
||||
--- ./AI/Skirmish/CircuitAI/CMakeLists.txt.orig 2021-01-01 16:10:55 UTC
|
||||
+++ ./AI/Skirmish/CircuitAI/CMakeLists.txt
|
||||
@@ -9,7 +9,7 @@ if (WIN32) # spring::condition_variable_any requireme
|
||||
elseif (APPLE)
|
||||
set(additionalSources ${additionalSources} ${CMAKE_SOURCE_DIR}/rts/System/Platform/Mac/Signal.cpp)
|
||||
else ()
|
||||
- set(additionalSources ${additionalSources} ${CMAKE_SOURCE_DIR}/rts/System/Platform/Linux/Futex.cpp)
|
||||
+ #set(additionalSources ${additionalSources} ${CMAKE_SOURCE_DIR}/rts/System/Platform/Linux/Futex.cpp)
|
||||
endif ()
|
||||
set(additionalLibraries ${Cpp_AIWRAPPER_TARGET} CUtils)
|
||||
#set(additionalLibraries ${Cpp_AIWRAPPER_TARGET} CUtils ${SDL2_LIBRARY})
|
||||
--- rts/System/CMakeLists.txt.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/System/CMakeLists.txt
|
||||
@@ -140,7 +140,7 @@ set(sources_engine_System_Threading_Mac
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Platform/Mac/Signal.cpp"
|
||||
)
|
||||
set(sources_engine_System_Threading_Linux
|
||||
- "${CMAKE_CURRENT_SOURCE_DIR}/Platform/Linux/Futex.cpp"
|
||||
+ "${CMAKE_CURRENT_SOURCE_DIR}/Platform/Mac/Signal.cpp"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Platform/Linux/ThreadSupport.cpp"
|
||||
)
|
||||
set(sources_engine_System_Threading_Windows
|
||||
--- rts/System/Platform/Linux/Futex.h.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/System/Platform/Linux/Futex.h
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "System/Misc/SpringTime.h"
|
||||
|
||||
|
||||
-
|
||||
+#ifndef __FreeBSD__
|
||||
class spring_futex
|
||||
{
|
||||
private:
|
||||
@@ -32,6 +32,7 @@ class spring_futex (public)
|
||||
protected:
|
||||
native_type mtx;
|
||||
};
|
||||
+#endif
|
||||
|
||||
/*FIXME
|
||||
class recursive_futex
|
||||
--- rts/System/Threading/SpringThreading.h.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/System/Threading/SpringThreading.h
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#if defined(_WIN32)
|
||||
#include "System/Platform/Win/CriticalSection.h"
|
||||
-#elif defined(__APPLE__) || !defined(USE_FUTEX)
|
||||
+#elif defined(__APPLE__) || defined(__FreeBSD__) || !defined(USE_FUTEX)
|
||||
#include "System/Platform/Mac/Signal.h"
|
||||
#elif !defined(__APPLE__) && defined(USE_FUTEX)
|
||||
#include "System/Platform/Linux/Futex.h"
|
||||
@@ -37,7 +37,7 @@ namespace spring {
|
||||
typedef CriticalSection recursive_mutex;
|
||||
typedef win_signal signal;
|
||||
typedef std::condition_variable_any condition_variable;
|
||||
-#elif defined(__APPLE__) || !defined(USE_FUTEX)
|
||||
+#elif defined(__APPLE__) || defined(__FreeBSD__) || !defined(USE_FUTEX)
|
||||
typedef std::mutex mutex;
|
||||
typedef std::recursive_mutex recursive_mutex;
|
||||
typedef mac_signal signal;
|
@ -1,7 +0,0 @@
|
||||
--- rts/Game/CMakeLists.txt.orig 2021-01-01 16:12:22 UTC
|
||||
+++ rts/Game/CMakeLists.txt
|
||||
@@ -1,3 +1,4 @@
|
||||
+set_source_files_properties(GameSetup.cpp PROPERTIES CXX_STANDARD 14)
|
||||
|
||||
# This list was created using this *nix shell command:
|
||||
# > find . -name "*.cpp" | sort
|
@ -1,11 +0,0 @@
|
||||
--- rts/Game/GameSetup.cpp.orig 2021-01-01 16:12:22 UTC
|
||||
+++ rts/Game/GameSetup.cpp
|
||||
@@ -255,7 +255,7 @@ void CGameSetup::LoadStartPositions(bool withoutMap)
|
||||
// Server syncs these later, so we can use unsynced rng
|
||||
CGlobalUnsyncedRNG rng;
|
||||
rng.Seed(HsiehHash(setupText.c_str(), setupText.length(), 1234567));
|
||||
- std::random_shuffle(teamStartNums.begin(), teamStartNums.begin() + teamStartingData.size(), rng);
|
||||
+ std::shuffle(teamStartNums.begin(), teamStartNums.begin() + teamStartingData.size(), rng);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < teamStartingData.size(); ++i)
|
@ -1,12 +0,0 @@
|
||||
https://github.com/spring/spring/pull/556
|
||||
|
||||
--- rts/Lua/LuaMaterial.h.orig 2021-01-01 19:08:25 UTC
|
||||
+++ rts/Lua/LuaMaterial.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <cstring> // strcmp
|
||||
#include <string>
|
||||
#include <vector>
|
||||
+#include <array>
|
||||
|
||||
/*
|
||||
LuaMaterial
|
@ -1,11 +0,0 @@
|
||||
--- rts/Rendering/Env/Decals/DecalsDrawerGL4.cpp.orig 2021-01-01 19:08:25 UTC
|
||||
+++ rts/Rendering/Env/Decals/DecalsDrawerGL4.cpp
|
||||
@@ -338,7 +338,7 @@ void CDecalsDrawerGL4::DetectMaxDecals()
|
||||
decals.resize(maxDecals);
|
||||
freeIds.resize(maxDecals - 1); // idx = 0 is invalid, so -1
|
||||
std::iota(freeIds.begin(), freeIds.end(), 1); // start with 1, 0 is illegal
|
||||
- std::random_shuffle(freeIds.begin(), freeIds.end(), guRNG);
|
||||
+ std::shuffle(freeIds.begin(), freeIds.end(), guRNG);
|
||||
groups.reserve(maxDecalGroups);
|
||||
}
|
||||
|
@ -1,12 +0,0 @@
|
||||
https://github.com/spring/spring/pull/554
|
||||
|
||||
--- rts/Rendering/LineDrawer.h.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/Rendering/LineDrawer.h
|
||||
@@ -4,6 +4,7 @@
|
||||
#define _LINE_DRAWER_H
|
||||
|
||||
#include <vector>
|
||||
+#include <array>
|
||||
|
||||
#include "Game/UI/CursorIcons.h"
|
||||
#include "Rendering/GL/VertexArrayTypes.h"
|
@ -1,7 +0,0 @@
|
||||
--- rts/Sim/CMakeLists.txt.orig 2021-01-01 16:12:22 UTC
|
||||
+++ rts/Sim/CMakeLists.txt
|
||||
@@ -1,3 +1,4 @@
|
||||
+set(CMAKE_CXX_STANDARD 14)
|
||||
|
||||
# This list was created using this *nix shell command:
|
||||
# > find . -name "*.cpp"" | sort
|
@ -1,13 +0,0 @@
|
||||
--- rts/Sim/Misc/SimObjectIDPool.cpp.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/Sim/Misc/SimObjectIDPool.cpp
|
||||
@@ -25,8 +25,8 @@ void SimObjectIDPool::Expand(unsigned int baseID, unsi
|
||||
std::generate(newIDs.begin(), newIDs.begin() + numIDs, [&baseID]() { return (baseID++); });
|
||||
|
||||
// randomize so that Lua widgets can not easily determine counts
|
||||
- std::random_shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
- std::random_shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
+ std::shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
+ std::shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
|
||||
// lambda capture ("[n = baseID]() mutable { return (n++); }") requires std=c++14
|
||||
baseID -= numIDs;
|
@ -1,41 +0,0 @@
|
||||
--- rts/Sim/Projectiles/ProjectileHandler.cpp.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/Sim/Projectiles/ProjectileHandler.cpp
|
||||
@@ -66,6 +66,18 @@ ProjMemPool projMemPool;
|
||||
CProjectileHandler projectileHandler;
|
||||
|
||||
|
||||
+namespace {
|
||||
+ template<class RandomIt, class RandomFunc>
|
||||
+ void random_shuffle(RandomIt first, RandomIt last, RandomFunc&& r)
|
||||
+ {
|
||||
+ typename std::iterator_traits<RandomIt>::difference_type i, n;
|
||||
+ n = last - first;
|
||||
+ for (i = n-1; i > 0; --i) {
|
||||
+ using std::swap;
|
||||
+ swap(first[i], first[r(i+1)]);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
|
||||
void CProjectileHandler::Init()
|
||||
{
|
||||
@@ -106,8 +118,8 @@ void CProjectileHandler::Init()
|
||||
freeProjectileIDs[false].push_back(i);
|
||||
}
|
||||
|
||||
- std::random_shuffle(freeProjectileIDs[ true].begin(), freeProjectileIDs[ true].end(), gsRNG);
|
||||
- std::random_shuffle(freeProjectileIDs[false].begin(), freeProjectileIDs[false].end(), guRNG);
|
||||
+ ::random_shuffle(freeProjectileIDs[ true].begin(), freeProjectileIDs[ true].end(), gsRNG);
|
||||
+ ::random_shuffle(freeProjectileIDs[false].begin(), freeProjectileIDs[false].end(), guRNG);
|
||||
}
|
||||
|
||||
for (int modelType = 0; modelType < MODELTYPE_OTHER; ++modelType) {
|
||||
@@ -395,7 +407,7 @@ void CProjectileHandler::AddProjectile(CProjectile* p)
|
||||
|
||||
// generate (newSize - oldSize) new id's starting from oldSize
|
||||
std::for_each(freeIDs.begin(), freeIDs.end(), [k = oldSize](int& id) mutable { id = k++; });
|
||||
- std::random_shuffle(freeIDs.begin(), freeIDs.end(), rngFunc);
|
||||
+ ::random_shuffle(freeIDs.begin(), freeIDs.end(), rngFunc);
|
||||
}
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- rts/System/CMakeLists.txt.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/System/CMakeLists.txt
|
||||
@@ -140,7 +140,7 @@ set(sources_engine_System_Threading_Mac
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Platform/Mac/Signal.cpp"
|
||||
)
|
||||
set(sources_engine_System_Threading_Linux
|
||||
- "${CMAKE_CURRENT_SOURCE_DIR}/Platform/Linux/Futex.cpp"
|
||||
+ "${CMAKE_CURRENT_SOURCE_DIR}/Platform/Mac/Signal.cpp"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Platform/Linux/ThreadSupport.cpp"
|
||||
)
|
||||
set(sources_engine_System_Threading_Windows
|
@ -1,19 +0,0 @@
|
||||
--- rts/System/Platform/Linux/Futex.h.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/System/Platform/Linux/Futex.h
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "System/Misc/SpringTime.h"
|
||||
|
||||
|
||||
-
|
||||
+#ifndef __FreeBSD__
|
||||
class spring_futex
|
||||
{
|
||||
private:
|
||||
@@ -32,6 +32,7 @@ class spring_futex (public)
|
||||
protected:
|
||||
native_type mtx;
|
||||
};
|
||||
+#endif
|
||||
|
||||
/*FIXME
|
||||
class recursive_futex
|
@ -1,12 +0,0 @@
|
||||
https://github.com/spring/spring/pull/555
|
||||
|
||||
--- rts/System/SpringHashMap.hpp.orig 2021-01-01 16:12:22 UTC
|
||||
+++ rts/System/SpringHashMap.hpp
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <cstdlib>
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
+#include <algorithm>
|
||||
|
||||
#define DCHECK_EQ_F(a, b)
|
||||
#define DCHECK_LT_F(a, b)
|
@ -1,12 +0,0 @@
|
||||
https://github.com/spring/spring/pull/555
|
||||
|
||||
--- rts/System/SpringHashSet.hpp.orig 2021-01-01 16:12:22 UTC
|
||||
+++ rts/System/SpringHashSet.hpp
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <cstdlib> // malloc
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
+#include <algorithm> // fill_n
|
||||
|
||||
#define DCHECK_EQ_F(a, b)
|
||||
#define DCHECK_LT_F(a, b)
|
@ -1,20 +0,0 @@
|
||||
--- rts/System/Threading/SpringThreading.h.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/System/Threading/SpringThreading.h
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#if defined(_WIN32)
|
||||
#include "System/Platform/Win/CriticalSection.h"
|
||||
-#elif defined(__APPLE__) || !defined(USE_FUTEX)
|
||||
+#elif defined(__APPLE__) || defined(__FreeBSD__) || !defined(USE_FUTEX)
|
||||
#include "System/Platform/Mac/Signal.h"
|
||||
#elif !defined(__APPLE__) && defined(USE_FUTEX)
|
||||
#include "System/Platform/Linux/Futex.h"
|
||||
@@ -37,7 +37,7 @@ namespace spring {
|
||||
typedef CriticalSection recursive_mutex;
|
||||
typedef win_signal signal;
|
||||
typedef std::condition_variable_any condition_variable;
|
||||
-#elif defined(__APPLE__) || !defined(USE_FUTEX)
|
||||
+#elif defined(__APPLE__) || defined(__FreeBSD__) || !defined(USE_FUTEX)
|
||||
typedef std::mutex mutex;
|
||||
typedef std::recursive_mutex recursive_mutex;
|
||||
typedef mac_signal signal;
|
@ -1,60 +1,11 @@
|
||||
--- rts/build/cmake/UtilVersion.cmake.orig 2020-12-26 12:45:43 UTC
|
||||
--- rts/build/cmake/UtilVersion.cmake.orig 2022-01-10 23:00:52 UTC
|
||||
+++ rts/build/cmake/UtilVersion.cmake
|
||||
@@ -138,56 +138,7 @@ EndMacro (get_version_from_file)
|
||||
# Sets the following vars:
|
||||
# - ${prefix}_VERSION
|
||||
Macro (fetch_spring_version dir prefix)
|
||||
- # unset the vars
|
||||
- Set(${prefix}_VERSION)
|
||||
- Set(${prefix}_VERSION-NOTFOUND)
|
||||
-
|
||||
- If (EXISTS "${dir}/.git")
|
||||
- # Try to fetch version through git
|
||||
- If (NOT GIT_FOUND)
|
||||
- Message(FATAL_ERROR "Git repository detected, but git executable not found; failed to fetch ${prefix} version.")
|
||||
- EndIf (NOT GIT_FOUND)
|
||||
-
|
||||
- # Fetch git version info
|
||||
- git_util_describe(${prefix}_Describe ${dir} "*")
|
||||
- If (NOT ${prefix}_Describe)
|
||||
- Message(FATAL_ERROR "Failed to fetch git-describe for ${prefix}.")
|
||||
- EndIf (NOT ${prefix}_Describe)
|
||||
- If ("${${prefix}_Describe}" MATCHES "^${VERSION_REGEX_RELEASE}$")
|
||||
- Set(${prefix}_IsRelease TRUE)
|
||||
- Else ("${${prefix}_Describe}" MATCHES "^${VERSION_REGEX_RELEASE}$")
|
||||
- Set(${prefix}_IsRelease FALSE)
|
||||
- EndIf ("${${prefix}_Describe}" MATCHES "^${VERSION_REGEX_RELEASE}$")
|
||||
- If (NOT ${prefix}_IsRelease)
|
||||
- # We always want the long git-describe output on non-releases
|
||||
- # for example: 83.0.1-0-g1234567
|
||||
- git_util_describe(${prefix}_Describe ${dir} "*" --long)
|
||||
- EndIf (NOT ${prefix}_IsRelease)
|
||||
-
|
||||
- Git_Util_Branch(${prefix}_Branch ${dir})
|
||||
- If (${prefix}_IsRelease)
|
||||
- Set(${prefix}_VERSION "${${prefix}_Describe}")
|
||||
- Else (${prefix}_IsRelease)
|
||||
- If (NOT ${prefix}_Branch)
|
||||
- Message(FATAL_ERROR "Failed to fetch the git branch for ${prefix}.")
|
||||
- EndIf (NOT ${prefix}_Branch)
|
||||
- Set(${prefix}_VERSION "${${prefix}_Describe} ${${prefix}_Branch}")
|
||||
- EndIf (${prefix}_IsRelease)
|
||||
- parse_spring_version(${prefix} "${${prefix}_VERSION}")
|
||||
- If ("${${prefix}_Branch}" STREQUAL "master")
|
||||
- If (NOT "${${prefix}_COMMITS}" STREQUAL "" OR NOT "${${prefix}_HASH}" STREQUAL "")
|
||||
- Message(AUTHOR_WARNING "Commit without a version tag found on branch master for ${prefix}; this indicates a tagging/branching/push error.")
|
||||
- EndIf (NOT "${${prefix}_COMMITS}" STREQUAL "" OR NOT "${${prefix}_HASH}" STREQUAL "")
|
||||
- EndIf ("${${prefix}_Branch}" STREQUAL "master")
|
||||
- Else (EXISTS "${dir}/.git")
|
||||
- # Try to fetch version through VERSION file
|
||||
- get_version_from_file(${prefix}_VERSION "${dir}/VERSION")
|
||||
- If (${${prefix}_VERSION-NOTFOUND})
|
||||
- Message(FATAL_ERROR "Failed to fetch ${prefix} version.")
|
||||
- Else (${${prefix}_VERSION-NOTFOUND})
|
||||
- Message(STATUS "${prefix} version fetched from VERSION file: ${${prefix}_VERSION}")
|
||||
- EndIf (${${prefix}_VERSION-NOTFOUND})
|
||||
- EndIf (EXISTS "${dir}/.git")
|
||||
+ Set(${prefix}_VERSION $ENV{PORTVERSION})
|
||||
|
||||
if(DEFINED ENV{CI})
|
||||
Message(STATUS "Build on travis-ci detected, not checking version (git clone --depth=...)")
|
||||
@@ -183,7 +183,7 @@ macro (fetch_spring_version dir prefix)
|
||||
# Try to fetch version through VERSION file
|
||||
get_version_from_file(${prefix}_VERSION "${dir}/VERSION")
|
||||
if (${${prefix}_VERSION-NOTFOUND})
|
||||
- message (FATAL_ERROR "Failed to fetch ${prefix} version.")
|
||||
+ message (FATAL_ERROR "Failed to fetch ${prefix} version from ${dir}/VERSION.")
|
||||
else ()
|
||||
message (STATUS "${prefix} version fetched from VERSION file: ${${prefix}_VERSION}")
|
||||
endif ()
|
||||
|
@ -1,13 +0,0 @@
|
||||
https://github.com/spring/spring/pull/557
|
||||
|
||||
--- rts/builds/dedicated/main.cpp.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/builds/dedicated/main.cpp
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
+#else
|
||||
+#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "Game/GameSetup.h"
|
119
games/spring/files/patch-shuffle
Normal file
119
games/spring/files/patch-shuffle
Normal file
@ -0,0 +1,119 @@
|
||||
--- AI/Skirmish/CircuitAI/src/circuit/setup/SetupManager.cpp.orig 2021-01-01 16:10:55 UTC
|
||||
+++ AI/Skirmish/CircuitAI/src/circuit/setup/SetupManager.cpp
|
||||
@@ -26,6 +26,8 @@
|
||||
#include "Info.h"
|
||||
|
||||
#include <regex>
|
||||
+#include <algorithm>
|
||||
+#include <random>
|
||||
|
||||
namespace circuit {
|
||||
|
||||
@@ -183,7 +185,9 @@ void CSetupManager::PickStartPos(CCircuitAI* circuit,
|
||||
c.distDivIncome = center.distance(cl.position) / income;
|
||||
validClusters.push_back(std::make_pair(kv.first, c));
|
||||
}
|
||||
- std::random_shuffle(validClusters.begin(), validClusters.end());
|
||||
+ std::random_device rd;
|
||||
+ std::minstd_rand g(rd());
|
||||
+ std::shuffle(validClusters.begin(), validClusters.end(), g);
|
||||
|
||||
auto cmp = [](const std::pair<int, SCluster>& a, const std::pair<int, SCluster>& b) {
|
||||
if (a.second.count < b.second.count) {
|
||||
--- ./AI/Skirmish/CircuitAI/src/circuit/util/math/EncloseCircle.cpp.orig 2021-01-01 16:10:55 UTC
|
||||
+++ ./AI/Skirmish/CircuitAI/src/circuit/util/math/EncloseCircle.cpp
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "util/utils.h"
|
||||
|
||||
#include <algorithm>
|
||||
+#include <random>
|
||||
#include <assert.h>
|
||||
|
||||
namespace circuit {
|
||||
@@ -48,7 +49,9 @@ void CEncloseCircle::MakeCircle(const std::vector<AIFl
|
||||
}
|
||||
// Randomize order
|
||||
// TODO: Read why shuffle??
|
||||
- std::random_shuffle(shuffled.begin(), shuffled.end());
|
||||
+ std::random_device rd;
|
||||
+ std::minstd_rand g(rd());
|
||||
+ std::shuffle(shuffled.begin(), shuffled.end(), g);
|
||||
|
||||
// Progressively add points to circle or recompute circle
|
||||
decltype(shuffled)::iterator it = shuffled.begin();
|
||||
--- rts/Game/GameSetup.cpp.orig 2021-01-01 16:12:22 UTC
|
||||
+++ rts/Game/GameSetup.cpp
|
||||
@@ -255,7 +255,7 @@ void CGameSetup::LoadStartPositions(bool withoutMap)
|
||||
// Server syncs these later, so we can use unsynced rng
|
||||
CGlobalUnsyncedRNG rng;
|
||||
rng.Seed(HsiehHash(setupText.c_str(), setupText.length(), 1234567));
|
||||
- std::random_shuffle(teamStartNums.begin(), teamStartNums.begin() + teamStartingData.size(), rng);
|
||||
+ std::shuffle(teamStartNums.begin(), teamStartNums.begin() + teamStartingData.size(), rng);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < teamStartingData.size(); ++i)
|
||||
--- rts/Rendering/Env/Decals/DecalsDrawerGL4.cpp.orig 2021-01-01 19:08:25 UTC
|
||||
+++ rts/Rendering/Env/Decals/DecalsDrawerGL4.cpp
|
||||
@@ -338,7 +338,7 @@ void CDecalsDrawerGL4::DetectMaxDecals()
|
||||
decals.resize(maxDecals);
|
||||
freeIds.resize(maxDecals - 1); // idx = 0 is invalid, so -1
|
||||
std::iota(freeIds.begin(), freeIds.end(), 1); // start with 1, 0 is illegal
|
||||
- std::random_shuffle(freeIds.begin(), freeIds.end(), guRNG);
|
||||
+ std::shuffle(freeIds.begin(), freeIds.end(), guRNG);
|
||||
groups.reserve(maxDecalGroups);
|
||||
}
|
||||
|
||||
--- rts/Sim/Misc/SimObjectIDPool.cpp.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/Sim/Misc/SimObjectIDPool.cpp
|
||||
@@ -25,8 +25,8 @@ void SimObjectIDPool::Expand(unsigned int baseID, unsi
|
||||
std::generate(newIDs.begin(), newIDs.begin() + numIDs, [&baseID]() { return (baseID++); });
|
||||
|
||||
// randomize so that Lua widgets can not easily determine counts
|
||||
- std::random_shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
- std::random_shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
+ std::shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
+ std::shuffle(newIDs.begin(), newIDs.begin() + numIDs, gsRNG);
|
||||
|
||||
// lambda capture ("[n = baseID]() mutable { return (n++); }") requires std=c++14
|
||||
baseID -= numIDs;
|
||||
--- rts/Sim/Projectiles/ProjectileHandler.cpp.orig 2020-12-26 12:45:43 UTC
|
||||
+++ rts/Sim/Projectiles/ProjectileHandler.cpp
|
||||
@@ -66,6 +66,18 @@ ProjMemPool projMemPool;
|
||||
CProjectileHandler projectileHandler;
|
||||
|
||||
|
||||
+namespace {
|
||||
+ template<class RandomIt, class RandomFunc>
|
||||
+ void random_shuffle(RandomIt first, RandomIt last, RandomFunc&& r)
|
||||
+ {
|
||||
+ typename std::iterator_traits<RandomIt>::difference_type i, n;
|
||||
+ n = last - first;
|
||||
+ for (i = n-1; i > 0; --i) {
|
||||
+ using std::swap;
|
||||
+ swap(first[i], first[r(i+1)]);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
|
||||
void CProjectileHandler::Init()
|
||||
{
|
||||
@@ -106,8 +118,8 @@ void CProjectileHandler::Init()
|
||||
freeProjectileIDs[false].push_back(i);
|
||||
}
|
||||
|
||||
- std::random_shuffle(freeProjectileIDs[ true].begin(), freeProjectileIDs[ true].end(), gsRNG);
|
||||
- std::random_shuffle(freeProjectileIDs[false].begin(), freeProjectileIDs[false].end(), guRNG);
|
||||
+ ::random_shuffle(freeProjectileIDs[ true].begin(), freeProjectileIDs[ true].end(), gsRNG);
|
||||
+ ::random_shuffle(freeProjectileIDs[false].begin(), freeProjectileIDs[false].end(), guRNG);
|
||||
}
|
||||
|
||||
for (int modelType = 0; modelType < MODELTYPE_OTHER; ++modelType) {
|
||||
@@ -395,7 +407,7 @@ void CProjectileHandler::AddProjectile(CProjectile* p)
|
||||
|
||||
// generate (newSize - oldSize) new id's starting from oldSize
|
||||
std::for_each(freeIDs.begin(), freeIDs.end(), [k = oldSize](int& id) mutable { id = k++; });
|
||||
- std::random_shuffle(freeIDs.begin(), freeIDs.end(), rngFunc);
|
||||
+ ::random_shuffle(freeIDs.begin(), freeIDs.end(), rngFunc);
|
||||
}
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- tools/mapcompile/src/mapdecompile.cpp.orig 2020-12-19 22:58:47 UTC
|
||||
+++ tools/mapcompile/src/mapdecompile.cpp
|
||||
@@ -1,7 +1,7 @@
|
||||
/* This file is part of SpringMapConvNG (GPL v2 or later), see the LICENSE file */
|
||||
|
||||
#include "SMFMap.h"
|
||||
-#include <IL/il.h>
|
||||
+#include <il.h>
|
||||
#include <iostream>
|
||||
#include <string.h>
|
||||
|
@ -1,12 +0,0 @@
|
||||
https://github.com/spring/pr-downloader/pull/140
|
||||
|
||||
--- tools/pr-downloader/src/Downloader/Rapid/Sdp.cpp.orig 2020-12-20 17:04:22 UTC
|
||||
+++ tools/pr-downloader/src/Downloader/Rapid/Sdp.cpp
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <stdio.h>
|
||||
#include <curl/curl.h>
|
||||
#include <stdlib.h>
|
||||
+#include <errno.h>
|
||||
|
||||
#include "Sdp.h"
|
||||
#include "RapidDownloader.h"
|
@ -1,12 +0,0 @@
|
||||
https://github.com/spring/pr-downloader/pull/141
|
||||
|
||||
--- tools/pr-downloader/src/FileSystem/FileSystem.cpp.orig 2020-12-20 17:04:22 UTC
|
||||
+++ tools/pr-downloader/src/FileSystem/FileSystem.cpp
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
#include <stdlib.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
@ -8,7 +8,7 @@ lib/libunitsync.so
|
||||
share/applications/spring.desktop
|
||||
%%MANPAGES%%share/man/man6/spring-dedicated.6.gz
|
||||
%%MANPAGES%%share/man/man6/spring-headless.6.gz
|
||||
%%MANPAGES%%share/man/man6/spring-legacy.6.gz
|
||||
%%MANPAGES%%share/man/man6/spring-opengl4.6.gz
|
||||
%%MANPAGES%%share/man/man6/spring.6.gz
|
||||
share/mime/packages/spring.xml
|
||||
share/pixmaps/application-x-spring-demo.png
|
||||
|
Loading…
Reference in New Issue
Block a user