public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: games-strategy/ufoai/files/, games-strategy/ufoai/
@ 2024-09-28 19:04 James Le Cuirot
  0 siblings, 0 replies; only message in thread
From: James Le Cuirot @ 2024-09-28 19:04 UTC (permalink / raw
  To: gentoo-commits

commit:     d18bfe48f2199be56983e1cd22d90fa4d9a94500
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 28 18:58:58 2024 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sat Sep 28 19:03:30 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d18bfe48

games-strategy/ufoai: Patch to use MXML 4, EAPI 8

Closes: https://bugs.gentoo.org/930524
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 .../ufoai/files/ufoai-2.5.0_p20180603-mxml3.patch  |  29 ---
 .../ufoai/files/ufoai-2.5.0_p20180603-mxml4.patch  | 210 +++++++++++++++++++++
 ...3-r2.ebuild => ufoai-2.5.0_p20180603-r3.ebuild} |   6 +-
 3 files changed, 213 insertions(+), 32 deletions(-)

diff --git a/games-strategy/ufoai/files/ufoai-2.5.0_p20180603-mxml3.patch b/games-strategy/ufoai/files/ufoai-2.5.0_p20180603-mxml3.patch
deleted file mode 100644
index 256b43e94b2c..000000000000
--- a/games-strategy/ufoai/files/ufoai-2.5.0_p20180603-mxml3.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 163073ab9527cdaa33d77a713b8e46ff462a2b5c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tam=C3=A1s=20Feh=C3=A9rv=C3=A1ri?=
- <geever@users.sourceforge.net>
-Date: Sat, 3 Aug 2019 15:21:05 +0200
-Subject: [PATCH] * {{Bug|5739}} MiniXML (mxml) 3.x compatibility
-
----
- src/common/xml.cpp | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/common/xml.cpp b/src/common/xml.cpp
-index 7aeceb3a29..5a66ccc887 100644
---- a/src/common/xml.cpp
-+++ b/src/common/xml.cpp
-@@ -509,8 +509,13 @@ static mxml_type_t mxml_ufo_type_cb (xmlNode_t* node)
- 	/* You can lookup attributes and/or use the
- 	 * element name, hierarchy, etc... */
- 	const char* type = mxmlElementGetAttr(node, "type");
--	if (type == nullptr)
-+	if (type == nullptr) {
-+#ifdef MXML_MAJOR_VERSION
-+		type = mxmlGetElement(node);
-+#else
- 		type = node->value.element.name;
-+#endif
-+	}
- 
- 	if (Q_streq(type, "int"))
- 		return MXML_INTEGER;

diff --git a/games-strategy/ufoai/files/ufoai-2.5.0_p20180603-mxml4.patch b/games-strategy/ufoai/files/ufoai-2.5.0_p20180603-mxml4.patch
new file mode 100644
index 000000000000..c45a3682b776
--- /dev/null
+++ b/games-strategy/ufoai/files/ufoai-2.5.0_p20180603-mxml4.patch
@@ -0,0 +1,210 @@
+diff --git a/build/default.mk b/build/default.mk
+index 38ecea4627..f598425394 100644
+--- a/build/default.mk
++++ b/build/default.mk
+@@ -232,8 +232,8 @@ VORBIS_CFLAGS            ?= $(call PKG_CFLAGS,vorbis)
+ VORBIS_LIBS              ?= $(call PKG_LIBS,vorbis)
+ OGG_CFLAGS               ?= $(call PKG_CFLAGS,ogg)
+ OGG_LIBS                 ?= $(call PKG_LIBS,ogg)
+-MXML_CFLAGS              ?= $(call PKG_CFLAGS,mxml)
+-MXML_LIBS                ?= $(call PKG_LIBS,mxml)
++MXML_CFLAGS              ?= $(call PKG_CFLAGS,mxml4)
++MXML_LIBS                ?= $(call PKG_LIBS,mxml4)
+ PICOMODEL_CFLAGS         ?= $(call PKG_CFLAGS,picomodel)
+ PICOMODEL_LIBS           ?= $(call PKG_LIBS,picomodel)
+ INTL_LIBS                ?=
+@@ -248,16 +248,16 @@ endif
+ MUMBLE_LIBS              ?=
+ MUMBLE_SRCS               = libs/mumble/libmumblelink.c
+ MUMBLE_CFLAGS             = -Isrc/libs/mumble
+-ifndef HAVE_MXML_MXML_H
++ifndef HAVE_MXML4_MXML_H
+ MXML_SRCS                 = libs/mxml/mxml-attr.c \
+-                            libs/mxml/mxml-entity.c \
+                             libs/mxml/mxml-file.c \
++                            libs/mxml/mxml-get.c \
+                             libs/mxml/mxml-index.c \
+                             libs/mxml/mxml-node.c \
++                            libs/mxml/mxml-options.c \
+                             libs/mxml/mxml-private.c \
+                             libs/mxml/mxml-search.c \
+-                            libs/mxml/mxml-set.c \
+-                            libs/mxml/mxml-string.c
++                            libs/mxml/mxml-set.c
+ MXML_CFLAGS               = -Isrc/libs/mxml
+ MXML_LIBS                 =
+ ifeq ($(findstring $(TARGET_OS), mingw32 mingw64),)
+diff --git a/configure b/configure
+index e1dc2610be..fed7a5247b 100755
+--- a/configure
++++ b/configure
+@@ -205,7 +205,7 @@ check_headers() {
+ 	check_header "zlib.h" "zlib"
+ 	check_header "png.h" "libpng"
+ 	check_header "CUnit/Basic.h"
+-	check_header "mxml.h" "mxml"
++	check_header "mxml.h" "mxml4"
+ 	check_header "SDL.h" "sdl"
+ 	check_header "SDL_mixer.h" "SDL_mixer"
+ 	check_header "SDL_ttf.h" "SDL_ttf"
+diff --git a/src/client/cgame/campaign/cp_save.cpp b/src/client/cgame/campaign/cp_save.cpp
+index 70b3887e45..2824977891 100644
+--- a/src/client/cgame/campaign/cp_save.cpp
++++ b/src/client/cgame/campaign/cp_save.cpp
+@@ -249,11 +249,11 @@ static bool SAV_GameSave (const char* filename, const char* comment, char** erro
+ {
+ 	xmlNode_t* topNode, *node;
+ 	char savegame[MAX_OSPATH];
++	char* buf;
+ 	int res;
+ 	int requiredBufferLength;
+ 	uLongf bufLen;
+ 	saveFileHeader_t header;
+-	char dummy[2];
+ 	int i;
+ 	dateLong_t date;
+ 	char message[30];
+@@ -308,19 +308,16 @@ static bool SAV_GameSave (const char* filename, const char* comment, char** erro
+ 		date.year, Date_GetMonthName(date.month - 1), date.day);
+ 	Q_strncpyz(header.realDate, timeStampBuffer, sizeof(header.realDate));
+ 
+-	requiredBufferLength = mxmlSaveString(topNode, dummy, 2, MXML_NO_CALLBACK);
+-
+-	header.xmlSize = LittleLong(requiredBufferLength);
+-	byte* const buf = Mem_PoolAllocTypeN(byte, requiredBufferLength + 1, cp_campaignPool);
++	buf = mxmlSaveAllocString(topNode, nullptr);
++	mxmlDelete(topNode);
+ 	if (!buf) {
+-		mxmlDelete(topNode);
+ 		*error = _("Could not allocate enough memory to save this game");
+ 		Com_Printf("Error: Could not allocate enough memory to save this game\n");
+ 		return false;
+ 	}
+-	res = mxmlSaveString(topNode, (char*)buf, requiredBufferLength + 1, MXML_NO_CALLBACK);
+-	mxmlDelete(topNode);
+-	Com_Printf("XML Written to buffer (%d Bytes)\n", res);
++	requiredBufferLength = strlen(buf) + 1;
++	header.xmlSize = LittleLong(requiredBufferLength);
++	Com_Printf("XML Written to buffer (%d Bytes)\n", requiredBufferLength);
+ 
+ 	if (header.compressed)
+ 		bufLen = compressBound(requiredBufferLength);
+@@ -331,8 +328,8 @@ static bool SAV_GameSave (const char* filename, const char* comment, char** erro
+ 	memcpy(fbuf, &header, sizeof(header));
+ 
+ 	if (header.compressed) {
+-		res = compress(fbuf + sizeof(header), &bufLen, buf, requiredBufferLength);
+-		Mem_Free(buf);
++		res = compress(fbuf + sizeof(header), &bufLen, (byte*) buf, requiredBufferLength);
++		free(buf);
+ 
+ 		if (res != Z_OK) {
+ 			Mem_Free(fbuf);
+@@ -342,7 +339,7 @@ static bool SAV_GameSave (const char* filename, const char* comment, char** erro
+ 		}
+ 	} else {
+ 		memcpy(fbuf + sizeof(header), buf, requiredBufferLength);
+-		Mem_Free(buf);
++		free(buf);
+ 	}
+ 
+ 	/* last step - write data */
+diff --git a/src/client/cgame/cl_game_team.cpp b/src/client/cgame/cl_game_team.cpp
+index 94274e74b4..f37c9ad93e 100644
+--- a/src/client/cgame/cl_game_team.cpp
++++ b/src/client/cgame/cl_game_team.cpp
+@@ -223,7 +223,7 @@ static bool GAME_SaveTeam (const char* filename, const char* name)
+ {
+ 	int requiredBufferLength;
+ 	teamSaveFileHeader_t header;
+-	char dummy[2];
++	char* buf;
+ 	int i;
+ 	xmlNode_t* topNode, *node, *snode;
+ 	equipDef_t* ed = GAME_GetEquipmentDefinition();
+@@ -248,26 +248,22 @@ static bool GAME_SaveTeam (const char* filename, const char* name)
+ 			XML_AddIntValue(ssnode, SAVE_TEAM_NUMLOOSE, ed->numItemsLoose[od->idx]);
+ 		}
+ 	}
+-	requiredBufferLength = mxmlSaveString(topNode, dummy, 2, MXML_NO_CALLBACK);
+-	/* required for storing compressed */
+-	header.xmlSize = LittleLong(requiredBufferLength);
+-
+-	byte* const buf = Mem_PoolAllocTypeN(byte, requiredBufferLength + 1, cl_genericPool);
++	buf = mxmlSaveAllocString(topNode, nullptr);
++	mxmlDelete(topNode);
+ 	if (!buf) {
+-		mxmlDelete(topNode);
+ 		Com_Printf("Error: Could not allocate enough memory to save this game\n");
+ 		return false;
+ 	}
+-	mxmlSaveString(topNode, (char*)buf, requiredBufferLength + 1, MXML_NO_CALLBACK);
+-	mxmlDelete(topNode);
++	requiredBufferLength = strlen(buf) + 1;
++	header.xmlSize = LittleLong(requiredBufferLength);
+ 
+-	byte* const fbuf = Mem_PoolAllocTypeN(byte, requiredBufferLength + 1 + sizeof(header), cl_genericPool);
++	byte* const fbuf = Mem_PoolAllocTypeN(byte, requiredBufferLength + sizeof(header), cl_genericPool);
+ 	memcpy(fbuf, &header, sizeof(header));
+-	memcpy(fbuf + sizeof(header), buf, requiredBufferLength + 1);
+-	Mem_Free(buf);
++	memcpy(fbuf + sizeof(header), buf, requiredBufferLength);
++	free(buf);
+ 
+ 	/* last step - write data */
+-	FS_WriteFile(fbuf, requiredBufferLength + 1 + sizeof(header), filename);
++	FS_WriteFile(fbuf, requiredBufferLength + sizeof(header), filename);
+ 	Mem_Free(fbuf);
+ 
+ 	return true;
+diff --git a/src/common/xml.cpp b/src/common/xml.cpp
+index 1629c90a6a..176846c421 100644
+--- a/src/common/xml.cpp
++++ b/src/common/xml.cpp
+@@ -508,33 +508,37 @@ xmlNode_t* XML_GetNode (xmlNode_t* parent, const char* name)
+  */
+ xmlNode_t* XML_GetNextNode (xmlNode_t* current, xmlNode_t* parent, const char* name)
+ {
+-	return mxmlFindElement(current, parent, name, nullptr, nullptr, MXML_NO_DESCEND);
++	return mxmlFindElement(current, parent, name, nullptr, nullptr, MXML_DESCEND_NONE);
+ }
+ 
+ /**
+  * @brief callback function for parsing the node tree
+  */
+-static mxml_type_t mxml_ufo_type_cb (xmlNode_t* node)
++static mxml_type_t mxml_ufo_type_cb (void *cbdata, xmlNode_t* node)
+ {
+ 	/* You can lookup attributes and/or use the
+ 	 * element name, hierarchy, etc... */
+ 	const char* type = mxmlElementGetAttr(node, "type");
+ 	if (type == nullptr)
+-		type = node->value.element.name;
++		type = mxmlGetElement(node);
+ 
+ 	if (!strcmp(type, "int"))
+-		return MXML_INTEGER;
++		return MXML_TYPE_INTEGER;
+ 	else if (!strcmp(type, "opaque"))
+-		return MXML_OPAQUE;
++		return MXML_TYPE_OPAQUE;
+ 	else if (!strcmp(type, "string"))
+-		return MXML_OPAQUE;
++		return MXML_TYPE_OPAQUE;
+ 	else if (!strcmp(type, "double"))
+-		return MXML_REAL;
++		return MXML_TYPE_REAL;
+ 	else
+-		return MXML_TEXT;
++		return MXML_TYPE_TEXT;
+ }
+ 
+ xmlNode_t* XML_Parse (const char* buffer)
+ {
+-	return mxmlLoadString(nullptr, buffer, mxml_ufo_type_cb);
++	mxml_options_t *options = mxmlOptionsNew();
++	mxmlOptionsSetTypeCallback(options, &mxml_ufo_type_cb, nullptr);
++	xmlNode_t *ret = mxmlLoadString(nullptr, nullptr, buffer);
++	mxmlOptionsDelete(options);
++	return ret;
+ }

diff --git a/games-strategy/ufoai/ufoai-2.5.0_p20180603-r2.ebuild b/games-strategy/ufoai/ufoai-2.5.0_p20180603-r3.ebuild
similarity index 98%
rename from games-strategy/ufoai/ufoai-2.5.0_p20180603-r2.ebuild
rename to games-strategy/ufoai/ufoai-2.5.0_p20180603-r3.ebuild
index b87029251055..4a608e33a4d1 100644
--- a/games-strategy/ufoai/ufoai-2.5.0_p20180603-r2.ebuild
+++ b/games-strategy/ufoai/ufoai-2.5.0_p20180603-r3.ebuild
@@ -1,7 +1,7 @@
 # Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=7
+EAPI=8
 
 inherit desktop flag-o-matic toolchain-funcs xdg
 
@@ -30,7 +30,7 @@ IUSE="+client cpu_flags_x86_sse debug server"
 REQUIRED_USE="|| ( client server )"
 
 RDEPEND="
-	dev-libs/mxml:0
+	dev-libs/mxml:4
 	net-misc/curl
 	sys-libs/zlib
 
@@ -61,7 +61,7 @@ DEPEND="
 
 PATCHES=(
 	"${FILESDIR}"/${P}-install.patch
-	"${FILESDIR}"/${P}-mxml3.patch
+	"${FILESDIR}"/${P}-mxml4.patch
 )
 
 src_unpack() {


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2024-09-28 19:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-28 19:04 [gentoo-commits] repo/gentoo:master commit in: games-strategy/ufoai/files/, games-strategy/ufoai/ James Le Cuirot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox