Subject: [bug#77986] [PATCH 1/2] gnu: python-zeroc-ice-3.6: Fix build with [email-masked].

From: Nicolas Graves <[email-masked]>
Date: Tue, 22 Apr 2025 14:04:03 +0200

* gnu/packages/python-xyz.scm (python-zeroc-ice-3.6)
  [source]: Add patch.
* gnu/packages/patches/python-zeroc-ice-3.6.5-python-3.11-support.patch:
  Add patch.
---
 ...-zeroc-ice-3.6.5-python-3.11-support.patch | 33 +++++++++++++++++++
 gnu/packages/python-xyz.scm                   |  5 ++-
 2 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/python-zeroc-ice-3.6.5-python-3.11-support.patch

diff --git a/gnu/packages/patches/python-zeroc-ice-3.6.5-python-3.11-support.patch b/gnu/packages/patches/python-zeroc-ice-3.6.5-python-3.11-support.patch
new file mode 100644
index 00000000000..17cae7297c0
--- /dev/null
+++ b/gnu/packages/patches/python-zeroc-ice-3.6.5-python-3.11-support.patch
@@ -0,0 +1,33 @@
+Only in zeroc-ice-3.6.5: setup.py.orig
+diff --color -ur zeroc-ice-3.6.5.orig/src/Slice.cpp zeroc-ice-3.6.5/src/Slice.cpp
+--- zeroc-ice-3.6.5.orig/src/Slice.cpp	2019-07-31 21:49:38.000000000 +0200
++++ zeroc-ice-3.6.5/src/Slice.cpp	2023-10-12 10:52:07.029069937 +0200
+@@ -17,12 +17,6 @@
+ #include <Slice/Util.h>
+ #include <IceUtil/Options.h>
+ 
+-//
+-// Python headers needed for PyEval_EvalCode.
+-//
+-#include <compile.h>
+-#include <eval.h>
+-
+ using namespace std;
+ using namespace IcePy;
+ using namespace Slice;
+diff --color -ur zeroc-ice-3.6.5.orig/src/Util.cpp zeroc-ice-3.6.5/src/Util.cpp
+--- zeroc-ice-3.6.5.orig/src/Util.cpp	2019-07-31 21:49:38.000000000 +0200
++++ zeroc-ice-3.6.5/src/Util.cpp	2023-10-12 10:49:15.033366926 +0200
+@@ -214,7 +214,12 @@
+     //
+     // Get name of current function.
+     //
++    // Use PyEval_GetFrame with Pyhthon >= 3.11
++#if PY_VERSION_HEX >= 0x030B0000
++    PyFrameObject *f = PyEval_GetFrame();
++#else
+     PyFrameObject *f = PyThreadState_GET()->frame;
++#endif
+     PyObjectHandle code = PyObject_GetAttrString(reinterpret_cast<PyObject*>(f), STRCAST("f_code"));
+     assert(code.get());
+     PyObjectHandle func = PyObject_GetAttrString(code.get(), STRCAST("co_name"));
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ef66d071677..1fbd1730b01 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -40633,7 +40633,10 @@ (define-public python-zeroc-ice-3.6
               (uri (pypi-uri "zeroc-ice" version))
               (sha256
                (base32
-                "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2"))))))
+                "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2"))
+              (patches
+               (search-patches
+                "python-zeroc-ice-3.6.5-python-3.11-support.patch"))))))
 
 (define-public python-whenever
   (package
-- 
2.49.0