Control: tags -1 + patch upstream fixed-upstream

Hi,

The current issue is due to the removal of the Python 2 compatibility macros in 
version 4.5.0 of SWIG. [1] According to the SWIG authors, these macros were 
retained in the generated code (pyhead.swg) solely for user typemaps. All 
typemap using these macros are updated to call the Python 3 C API directly. .

I submitted a patch to fix the problem as a merge request on Salsa [2]. 
Unfortunately, once the changes for the NMU'ed version 23.08-5.1 have been 
integrated into the repository, this commit will not merge cleanly into the 
dgit/sid default branch.

Please note that PyArmNN support was dropped upstream (commit dd630033 [3]), as 
of December 13, 2024. This change is included in version 25.02 [4], so 
upgrading the package to the latest released upstream version (26.07) should 
also fix the issue.

Best,

Rafael

[1] https://github.com/swig/swig/commit/79f7a2b7cb7ddc256eba09c8770133148025171d
[2] https://salsa.debian.org/deeplearning-team/armnn/-/merge_requests/3
[3] 
https://github.com/ARM-software/armnn/commit/dd63003310dcb0b9d7af606a0f2161eeabf6308a
[4] https://github.com/ARM-software/armnn/releases/tag/v25.02
Description: Build with swig 4.5.0
 Without this patch, the package FTBFS with swig 4.5.0. This is due to
 the removal of the Python 2 compatibility macros in version 4.5.0. [1]
 According to the SWIG authors, these macros were retained in the
 generated code (pyhead.swg) solely for user typemaps. All typemap
 using these macros are updated to call the Python 3 C API
 directly.
 .
 [1] https://github.com/swig/swig/commit/79f7a2b7cb7ddc256eba09c8770133148025171d
Author: Rafael Laboissière <[email protected]>
Bug-Debian: https:/bugs.debian.org/1145848
Forwarded: not-needed
Last-Update: 2026-08-30
        
--- nlopt-2.7.1.orig/src/swig/numpy.i
+++ nlopt-2.7.1/src/swig/numpy.i
@@ -77,8 +77,8 @@
     if (py_obj == NULL          ) return "C NULL value";
     if (py_obj == Py_None       ) return "Python None" ;
     if (PyCallable_Check(py_obj)) return "callable"    ;
-    if (PyString_Check(  py_obj)) return "string"      ;
-    if (PyInt_Check(     py_obj)) return "int"         ;
+    if (PyBytes_Check(  py_obj)) return "string"      ;
+    if (PyLong_Check(     py_obj)) return "int"         ;
     if (PyFloat_Check(   py_obj)) return "float"       ;
     if (PyDict_Check(    py_obj)) return "dict"        ;
     if (PyList_Check(    py_obj)) return "list"        ;
@@ -1942,7 +1942,7 @@
   (PyObject* array = NULL)
 {
   npy_intp dims[1];
-  if (!PyInt_Check($input))
+  if (!PyLong_Check($input))
   {
     const char* typestring = pytype_string($input);
     PyErr_Format(PyExc_TypeError,
@@ -1950,7 +1950,7 @@
                  typestring);
     SWIG_fail;
   }
-  $2 = (DIM_TYPE) PyInt_AsLong($input);
+  $2 = (DIM_TYPE) PyLong_AsLong($input);
   dims[0] = (npy_intp) $2;
   array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
   if (!array) SWIG_fail;
@@ -1970,7 +1970,7 @@
   (PyObject* array = NULL)
 {
   npy_intp dims[1];
-  if (!PyInt_Check($input))
+  if (!PyLong_Check($input))
   {
     const char* typestring = pytype_string($input);
     PyErr_Format(PyExc_TypeError,
@@ -1978,7 +1978,7 @@
                  typestring);
     SWIG_fail;
   }
-  $1 = (DIM_TYPE) PyInt_AsLong($input);
+  $1 = (DIM_TYPE) PyLong_AsLong($input);
   dims[0] = (npy_intp) $1;
   array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
   if (!array) SWIG_fail;

Reply via email to