From e7823dbe8c32482ef02c53e688433fdc4a453aea Mon Sep 17 00:00:00 2001 From: Simon South Date: Thu, 4 Jan 2024 15:33:55 -0500 Subject: gnu: fifengine: Fix runtime error when using Python 3.9 or newer. * gnu/packages/patches/fifengine-python-3.9-compat.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/games.scm (fifengine)[source]: Apply it. Change-Id: I61001d6b87db00c71f1e2e6ca3bac8581e941451 Signed-off-by: Liliana Marie Prikler --- gnu/local.mk | 1 + gnu/packages/games.scm | 3 +- .../patches/fifengine-python-3.9-compat.patch | 81 ++++++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/fifengine-python-3.9-compat.patch diff --git a/gnu/local.mk b/gnu/local.mk index f1bdfc73e9..aff1977dbb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1175,6 +1175,7 @@ dist_patch_DATA = \ %D%/packages/patches/ffmpeg-jami-remove-mjpeg-log.patch \ %D%/packages/patches/ffmpeg-jami-screen-sharing-x11-fix.patch \ %D%/packages/patches/fifengine-boost-compat.patch \ + %D%/packages/patches/fifengine-python-3.9-compat.patch \ %D%/packages/patches/fifengine-swig-compat.patch \ %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \ %D%/packages/patches/fifo-map-remove-catch.hpp.patch \ diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index cd20c64dc4..f0f9061717 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -4118,7 +4118,8 @@ (define-public fifengine "fifengine/tar.gz/" version)) (file-name (string-append name "-" version ".tar.gz")) (patches (search-patches "fifengine-swig-compat.patch" - "fifengine-boost-compat.patch")) + "fifengine-boost-compat.patch" + "fifengine-python-3.9-compat.patch")) (sha256 (base32 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8")))) diff --git a/gnu/packages/patches/fifengine-python-3.9-compat.patch b/gnu/packages/patches/fifengine-python-3.9-compat.patch new file mode 100644 index 0000000000..2def4681cd --- /dev/null +++ b/gnu/packages/patches/fifengine-python-3.9-compat.patch @@ -0,0 +1,81 @@ +Fix runtime error when using Python 3.9 or newer. + +Taken from upstream: +https://github.com/fifengine/fifengine/commit/cf295fd98a8fba080f6305c27be56d10ab7ce94d + +diff --git a/engine/python/fife/extensions/serializers/simplexml.py b/engine/python/fife/extensions/serializers/simplexml.py +index c4e10f4f8..d05567936 100644 +--- a/engine/python/fife/extensions/serializers/simplexml.py ++++ b/engine/python/fife/extensions/serializers/simplexml.py +@@ -200,7 +200,7 @@ def get(self, module, name, defaultValue=None): + #get the module tree: for example find tree under module FIFE + moduleTree = self._getModuleTree(module) + element = None +- for e in moduleTree.getchildren(): ++ for e in moduleTree: + if e.tag == "Setting" and e.get("name", "") == name: + element = e + break +@@ -275,7 +275,7 @@ def set(self, module, name, value, extra_attrs={}): + e_type = "str" + value = str(value) + +- for e in moduleTree.getchildren(): ++ for e in moduleTree: + if e.tag != "Setting": continue + if e.get("name", "") == name: + e.text = value +@@ -305,7 +305,7 @@ def remove(self, module, name): + + moduleTree = self._getModuleTree(module) + +- for e in moduleTree.getchildren(): ++ for e in moduleTree: + if e.tag != "Setting": continue + if e.get("name", "") == name: + moduleTree.remove(e) +@@ -321,7 +321,7 @@ def getModuleNameList(self): + self._initialized = True + + moduleNames = [] +- for c in self._root_element.getchildren(): ++ for c in self._root_element: + if c.tag == "Module": + name = c.get("name","") + if not isinstance(name, basestring): +@@ -344,7 +344,7 @@ def getAllSettings(self, module): + + # now from the tree read every value, and put the necessary values + # to the list +- for e in moduleTree.getchildren(): ++ for e in moduleTree: + if e.tag == "Setting": + name = e.get("name", "") + +@@ -383,7 +383,7 @@ def _validateTree(self): + + Raises an InvalidFormat exception if there is a format error. + """ +- for c in self._root_element.getchildren(): ++ for c in self._root_element: + if c.tag != "Module": + raise InvalidFormat("Invalid tag in " + self._file + \ + ". Expected Module, got: " + c.tag) +@@ -391,7 +391,7 @@ def _validateTree(self): + raise InvalidFormat("Invalid tag in " + self._file + \ + ". Module name is empty.") + else: +- for e in c.getchildren(): ++ for e in c: + if e.tag != "Setting": + raise InvalidFormat("Invalid tag in " + self._file + \ + " in module: " + c.tag + \ +@@ -414,7 +414,7 @@ def _getModuleTree(self, module): + raise AttributeError("Settings:_getModuleTree: Invalid type for " + "module argument.") + +- for c in self._root_element.getchildren(): ++ for c in self._root_element: + if c.tag == "Module" and c.get("name", "") == module: + return c + -- cgit v1.2.3