summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2024-04-01 07:44:09 +0100
committerSam James <sam@gentoo.org>2024-04-01 07:45:52 +0100
commit4e42097df80ddaf3eb5ca2906bc2c8625785f6ba (patch)
tree9cea31e032c1f1609789bbe71208673163c2218b /games-strategy/0ad
parentapp-admin/consul: add 1.18.1 (diff)
downloadgentoo-4e42097df80ddaf3eb5ca2906bc2c8625785f6ba.tar.gz
gentoo-4e42097df80ddaf3eb5ca2906bc2c8625785f6ba.tar.bz2
gentoo-4e42097df80ddaf3eb5ca2906bc2c8625785f6ba.zip
games-strategy/0ad: fix build w/ libxml2-2.12
Closes: https://bugs.gentoo.org/924387 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'games-strategy/0ad')
-rw-r--r--games-strategy/0ad/0ad-0.0.26_alpha-r1.ebuild4
-rw-r--r--games-strategy/0ad/files/0ad-0.0.26_alpha-libxml2-2.12.patch274
2 files changed, 277 insertions, 1 deletions
diff --git a/games-strategy/0ad/0ad-0.0.26_alpha-r1.ebuild b/games-strategy/0ad/0ad-0.0.26_alpha-r1.ebuild
index 750458800c15..14311b6b04fe 100644
--- a/games-strategy/0ad/0ad-0.0.26_alpha-r1.ebuild
+++ b/games-strategy/0ad/0ad-0.0.26_alpha-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2014-2023 Gentoo Authors
+# Copyright 2014-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -99,6 +99,8 @@ PATCHES=(
"${FILESDIR}"/${PN}-0.0.25b_alpha-fix-setuptools.patch
# https://code.wildfiregames.com/D4997
"${FILESDIR}"/${P}-add-missing-cstdint-include.patch
+ # https://code.wildfiregames.com/D5219
+ "${FILESDIR}"/${P}-libxml2-2.12.patch
)
pkg_setup() {
diff --git a/games-strategy/0ad/files/0ad-0.0.26_alpha-libxml2-2.12.patch b/games-strategy/0ad/files/0ad-0.0.26_alpha-libxml2-2.12.patch
new file mode 100644
index 000000000000..08ee1a11fdb2
--- /dev/null
+++ b/games-strategy/0ad/files/0ad-0.0.26_alpha-libxml2-2.12.patch
@@ -0,0 +1,274 @@
+https://bugs.gentoo.org/924387
+https://code.wildfiregames.com/D5219
+
+Index: ps/trunk/libraries/source/fcollada/src/FCollada/FUtils/FUXmlDocument.cpp
+===================================================================
+--- ps/libraries/source/fcollada/src/FCollada/FUtils/FUXmlDocument.cpp
++++ ps/libraries/source/fcollada/src/FCollada/FUtils/FUXmlDocument.cpp
+@@ -2,7 +2,7 @@
+ Copyright (C) 2005-2007 Feeling Software Inc.
+ Portions of the code are:
+ Copyright (C) 2005-2007 Sony Computer Entertainment America
+-
++
+ MIT License: http://www.opensource.org/licenses/mit-license.php
+ */
+
+@@ -13,10 +13,12 @@
+ #include "FUFile.h"
+ #include "FCDocument/FCDocument.h"
+
++#include <libxml/parser.h>
++
+ #define MAX_FILE_SIZE 10240000
+ //
+ // FUXmlDocument
+-//
++//
+
+ FUXmlDocument::FUXmlDocument(FUFileManager* manager, const fchar* _filename, bool _isParsing)
+ : isParsing(_isParsing), filename(_filename)
+Index: ps/libraries/source/fcollada/src/FColladaPlugins/FArchiveXML/FArchiveXML.cpp
+===================================================================
+--- ps/libraries/source/fcollada/src/FColladaPlugins/FArchiveXML/FArchiveXML.cpp
++++ ps/libraries/source/fcollada/src/FColladaPlugins/FArchiveXML/FArchiveXML.cpp
+@@ -2,7 +2,7 @@
+ Copyright (C) 2005-2007 Feeling Software Inc.
+ Portions of the code are:
+ Copyright (C) 2005-2007 Sony Computer Entertainment America
+-
++
+ MIT License: http://www.opensource.org/licenses/mit-license.php
+ */
+
+@@ -77,6 +77,7 @@
+ #include "FCDocument/FCDVersion.h"
+ #include "FUtils/FUXmlDocument.h"
+
++#include <libxml/xmlIO.h>
+
+ //
+ // Constants
+@@ -442,7 +443,7 @@
+ }
+
+ if (status) FUError::Error(FUError::DEBUG_LEVEL, FUError::DEBUG_LOAD_SUCCESSFUL);
+- return status;
++ return status;
+ }
+
+ bool FArchiveXML::ExportFile(FCDocument* fcdocument, const fchar* filePath)
+@@ -515,13 +516,13 @@
+ xmlOutputBufferPtr buf = xmlAllocOutputBuffer(NULL);
+ xmlNodeDumpOutput(buf, rootNode->doc, rootNode, 0, 0, NULL);
+
+-#ifdef LIBXML2_NEW_BUFFER
+- outData.resize(xmlOutputBufferGetSize(buf) * sizeof(xmlChar));
+- memcpy(outData.begin(), xmlOutputBufferGetContent(buf), outData.size());
+-#else
+- outData.resize(buf->buffer->use * sizeof(xmlChar));
+- memcpy(outData.begin(), buf->buffer->content, outData.size());
+-#endif
++#ifdef LIBXML2_NEW_BUFFER
++ outData.resize(xmlOutputBufferGetSize(buf) * sizeof(xmlChar));
++ memcpy(outData.begin(), xmlOutputBufferGetContent(buf), outData.size());
++#else
++ outData.resize(buf->buffer->use * sizeof(xmlChar));
++ memcpy(outData.begin(), buf->buffer->content, outData.size());
++#endif
+
+ xmlOutputBufferClose(buf);
+ daeDocument.ReleaseXmlData();
+@@ -591,7 +592,7 @@
+ else if (IsEquivalent(child->name, DAE_LIBRARY_PMATERIAL_ELEMENT)) n.order = PHYSICS_MATERIAL;
+ else if (IsEquivalent(child->name, DAE_LIBRARY_PMODEL_ELEMENT)) n.order = PHYSICS_MODEL;
+ else if (IsEquivalent(child->name, DAE_LIBRARY_PSCENE_ELEMENT)) n.order = PHYSICS_SCENE;
+- else if (IsEquivalent(child->name, DAE_ASSET_ELEMENT))
++ else if (IsEquivalent(child->name, DAE_ASSET_ELEMENT))
+ {
+ // Read in the asset information
+ status &= (FArchiveXML::LoadAsset(theDocument->GetAsset(), child));
+@@ -679,9 +680,9 @@
+ case IMAGE: status &= (FArchiveXML::LoadImageLibrary(theDocument->GetImageLibrary(), n.node)); break;
+ case LIGHT: status &= (FArchiveXML::LoadLightLibrary(theDocument->GetLightLibrary(), n.node)); break;
+ case MATERIAL: status &= (FArchiveXML::LoadMaterialLibrary(theDocument->GetMaterialLibrary(), n.node)); break;
+- case PHYSICS_MODEL:
++ case PHYSICS_MODEL:
+ {
+- status &= (FArchiveXML::LoadPhysicsModelLibrary(theDocument->GetPhysicsModelLibrary(), n.node));
++ status &= (FArchiveXML::LoadPhysicsModelLibrary(theDocument->GetPhysicsModelLibrary(), n.node));
+ size_t physicsModelCount = theDocument->GetPhysicsModelLibrary()->GetEntityCount();
+ for (size_t physicsModelCounter = 0; physicsModelCounter < physicsModelCount; physicsModelCounter++)
+ {
+@@ -790,7 +791,7 @@
+ {
+ // [staylor] Why is this done here? Shouldn't it be in FCDExternalReferenceManager?
+ // If it is, change it, either way delete the FUAssert (thanks)
+- //FUAssert(false == true, ;);
++ // FUAssert(false == true, ;);
+ FArchiveXML::RegisterLoadedDocument(theDocument);
+ //FCDExternalReferenceManager::RegisterLoadedDocument(theDocument);
+ }
+@@ -891,14 +892,14 @@
+ // Export the emitter library
+ xmlNode* libraryNode = AddChild(typedTechniqueNode, DAE_LIBRARY_EMITTER_ELEMENT);
+
+- if (!theDocument->GetEmitterLibrary()->GetTransientFlag())
++ if (!theDocument->GetEmitterLibrary()->GetTransientFlag())
+ FArchiveXML::WriteLibrary(theDocument->GetEmitterLibrary(), libraryNode);
+ }
+
+ // Write out the animations
+ if (animationLibraryNode != NULL)
+ {
+- if (!theDocument->GetAnimationLibrary()->GetTransientFlag())
++ if (!theDocument->GetAnimationLibrary()->GetTransientFlag())
+ FArchiveXML::WriteLibrary(theDocument->GetAnimationLibrary(), animationLibraryNode);
+ }
+
+@@ -978,7 +979,7 @@
+ {
+ return FArchiveXML::WriteSwitch(object, &objectType->GetParent(), node);
+ }
+- else
++ else
+ {
+ FUBreak;
+ return NULL;
+@@ -986,7 +987,7 @@
+ }
+
+ bool FArchiveXML::LoadAnimationLibrary(FCDObject* object, xmlNode* node)
+-{
++{
+ return FArchiveXML::LoadLibrary<FCDAnimation>(object, node);
+ }
+
+@@ -996,17 +997,17 @@
+ }
+
+ bool FArchiveXML::LoadCameraLibrary(FCDObject* object, xmlNode* node)
+-{
++{
+ return FArchiveXML::LoadLibrary<FCDCamera>(object, node);
+ }
+
+ bool FArchiveXML::LoadControllerLibrary(FCDObject* object, xmlNode* node)
+-{
++{
+ return FArchiveXML::LoadLibrary<FCDController>(object, node);
+ }
+
+ bool FArchiveXML::LoadEffectLibrary(FCDObject* object, xmlNode* node)
+-{
++{
+ return FArchiveXML::LoadLibrary<FCDEffect>(object, node);
+ }
+
+@@ -1016,7 +1017,7 @@
+ }
+
+ bool FArchiveXML::LoadForceFieldLibrary(FCDObject* object, xmlNode* node)
+-{
++{
+ return FArchiveXML::LoadLibrary<FCDForceField>(object, node);
+ }
+
+Index: ps/source/collada/CommonConvert.cpp
+===================================================================
+--- ps/source/collada/CommonConvert.cpp
++++ ps/source/collada/CommonConvert.cpp
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2018 Wildfire Games.
++/* Copyright (C) 2023 Wildfire Games.
+ * This file is part of 0 A.D.
+ *
+ * 0 A.D. is free software: you can redistribute it and/or modify
+@@ -28,8 +28,9 @@
+ #include "FUtils/FUDaeSyntax.h"
+ #include "FUtils/FUFileManager.h"
+
+-#include <cassert>
+ #include <algorithm>
++#include <cassert>
++#include <libxml/xmlerror.h>
+
+ void require_(int line, bool value, const char* type, const char* message)
+ {
+Index: ps/source/collada/XMLFix.cpp
+===================================================================
+--- ps/source/collada/XMLFix.cpp
++++ ps/source/collada/XMLFix.cpp
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2009 Wildfire Games.
++/* Copyright (C) 2023 Wildfire Games.
+ * This file is part of 0 A.D.
+ *
+ * 0 A.D. is free software: you can redistribute it and/or modify
+@@ -23,6 +23,8 @@
+
+ #include "FUtils/FUXmlParser.h"
+
++#include <libxml/parser.h>
++
+ /*
+
+ Things that are fixed here:
+Index: ps/source/ps/XML/RelaxNG.cpp
+===================================================================
+--- ps/source/ps/XML/RelaxNG.cpp
++++ ps/source/ps/XML/RelaxNG.cpp
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2021 Wildfire Games.
++/* Copyright (C) 2023 Wildfire Games.
+ * This file is part of 0 A.D.
+ *
+ * 0 A.D. is free software: you can redistribute it and/or modify
+@@ -25,9 +25,11 @@
+ #include "ps/CStr.h"
+ #include "ps/Filesystem.h"
+
++#include <libxml/parser.h>
+ #include <libxml/relaxng.h>
+ #include <map>
+ #include <mutex>
++#include <type_traits>
+
+ TIMER_ADD_CLIENT(xml_validation);
+
+@@ -46,7 +48,8 @@
+ g_SchemaCache.clear();
+ }
+
+-static void relaxNGErrorHandler(void* UNUSED(userData), xmlErrorPtr error)
++static void relaxNGErrorHandler(void* UNUSED(userData),
++ std::conditional_t<LIBXML_VERSION >= 21200, const xmlError, xmlError>* error)
+ {
+ // Strip a trailing newline
+ std::string message = error->message;
+Index: ps/source/ps/XML/Xeromyces.cpp
+===================================================================
+--- ps/source/ps/XML/Xeromyces.cpp
++++ ps/source/ps/XML/Xeromyces.cpp
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2021 Wildfire Games.
++/* Copyright (C) 2023 Wildfire Games.
+ * This file is part of 0 A.D.
+ *
+ * 0 A.D. is free software: you can redistribute it and/or modify
+@@ -33,12 +33,14 @@
+ #include "Xeromyces.h"
+
+ #include <libxml/parser.h>
++#include <type_traits>
+
+ static std::mutex g_ValidatorCacheLock;
+ static std::map<const std::string, RelaxNGValidator> g_ValidatorCache;
+ static bool g_XeromycesStarted = false;
+
+-static void errorHandler(void* UNUSED(userData), xmlErrorPtr error)
++static void errorHandler(void* UNUSED(userData),
++ std::conditional_t<LIBXML_VERSION >= 21200, const xmlError, xmlError>* error)
+ {
+ // Strip a trailing newline
+ std::string message = error->message;