public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/apbs] rawhide: Replace removed Python 2 C API macros for SWIG 4.5.0 compatibility
@ 2026-08-02 14:19 Jitka Plesnikova
  0 siblings, 0 replies; only message in thread
From: Jitka Plesnikova @ 2026-08-02 14:19 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/apbs
Branch : rawhide
Commit : 785bdbcfee293dc5a12a3942466a31b278c0c577
Author : Jitka Plesnikova <jplesnik@redhat.com>
Date   : 2026-07-28T15:18:38+02:00
Stats  : +446/-1 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/apbs/c/785bdbcfee293dc5a12a3942466a31b278c0c577?branch=rawhide

Log:
Replace removed Python 2 C API macros for SWIG 4.5.0 compatibility

---
diff --git a/apbs-swig45.patch b/apbs-swig45.patch
new file mode 100644
index 0000000..0baefe7
--- /dev/null
+++ b/apbs-swig45.patch
@@ -0,0 +1,437 @@
+diff -up apbs-3.0.0/tools/python/apbslib.c.swig45 apbs-3.0.0/tools/python/apbslib.c
+--- apbs-3.0.0/tools/python/apbslib.c.swig45	2026-07-27 16:32:02.374414239 +0200
++++ apbs-3.0.0/tools/python/apbslib.c	2026-07-27 17:22:47.809005222 +0200
+@@ -722,7 +722,7 @@ PyString_FromFormat(const char *fmt, ...
+   va_start(ap, fmt);
+   res = vsnprintf(buf, sizeof(buf), fmt, ap);
+   va_end(ap);
+-  return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf);
++  return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyUnicode_FromString(buf);
+ }
+ #endif
+ 
+@@ -754,7 +754,7 @@ PyString_FromFormat(const char *fmt, ...
+ /* A crude PyString_AsStringAndSize implementation for old Pythons */
+ #if PY_VERSION_HEX < 0x02010000
+ # ifndef PyString_AsStringAndSize
+-#  define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;}
++#  define PyString_AsStringAndSize(obj, s, len) {*s = PyBytes_AsString(obj); *len = *s ? strlen(*s) : 0;}
+ # endif
+ #endif
+ 
+@@ -846,7 +846,7 @@ SWIG_Python_AddErrorMsg(const char* mesg
+     PyObject *old_str = PyObject_Str(value);
+     PyErr_Clear();
+     Py_XINCREF(type);
+-    PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
++    PyErr_Format(type, "%s %s", PyBytes_AsString(old_str), mesg);
+     Py_DECREF(old_str);
+     Py_DECREF(value);
+   } else {
+@@ -1237,7 +1237,7 @@ PySwigClientData_New(PyObject* obj)
+     data->klass = obj;
+     Py_INCREF(data->klass);
+     /* the newraw method and newargs arguments used to create a new raw instance */
+-    if (PyClass_Check(obj)) {
++    if (PyObject_IsInstance(obj)) {
+       data->newraw = 0;
+       data->newargs = obj;
+       Py_INCREF(obj);
+@@ -1310,9 +1310,9 @@ PySwigObject_format(const char* fmt, PyS
+   PyObject *args = PyTuple_New(1);
+   if (args) {
+     if (PyTuple_SetItem(args, 0, PySwigObject_long(v)) == 0) {
+-      PyObject *ofmt = PyString_FromString(fmt);
++      PyObject *ofmt = PyUnicode_FromString(fmt);
+       if (ofmt) {
+-	res = PyString_Format(ofmt,args);
++	res = PyUnicode_Format(ofmt,args);
+ 	Py_DECREF(ofmt);
+       }
+       Py_DECREF(args);
+@@ -1342,7 +1342,7 @@ PySwigObject_repr(PySwigObject *v, PyObj
+ {
+   const char *name = SWIG_TypePrettyName(v->ty);
+   PyObject *hex = PySwigObject_hex(v);    
+-  PyObject *repr = PyString_FromFormat("<Swig Object of type '%s' at 0x%s>", name, PyString_AsString(hex));
++  PyObject *repr = PyString_FromFormat("<Swig Object of type '%s' at 0x%s>", name, PyBytes_AsString(hex));
+   Py_DECREF(hex);
+   if (v->next) {
+ #ifdef METH_NOARGS
+@@ -1364,7 +1364,7 @@ PySwigObject_print(PySwigObject *v, FILE
+   PyObject *repr = PySwigObject_repr(v, NULL);
+ #endif
+   if (repr) {
+-    fputs(PyString_AsString(repr), fp);
++    fputs(PyBytes_AsString(repr), fp);
+     Py_DECREF(repr);
+     return 0; 
+   } else {
+@@ -1377,7 +1377,7 @@ PySwigObject_str(PySwigObject *v)
+ {
+   char result[SWIG_BUFFER_SIZE];
+   return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
+-    PyString_FromString(result) : 0;
++    PyUnicode_FromString(result) : 0;
+ }
+ 
+ SWIGRUNTIME int
+@@ -1725,7 +1725,7 @@ PySwigPacked_str(PySwigPacked *v)
+   if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
+     return PyString_FromFormat("%s%s", result, v->ty->name);
+   } else {
+-    return PyString_FromString(v->ty->name);
++    return PyUnicode_FromString(v->ty->name);
+   }  
+ }
+ 
+@@ -1871,7 +1871,7 @@ PySwigPacked_UnpackData(PyObject *obj, v
+ SWIGRUNTIMEINLINE PyObject *
+ _SWIG_This(void)
+ {
+-  return PyString_FromString("this");
++  return PyUnicode_FromString("this");
+ }
+ 
+ SWIGRUNTIME PyObject *
+@@ -2308,7 +2308,7 @@ SWIGRUNTIME swig_type_info *
+ SWIG_Python_TypeQuery(const char *type)
+ {
+   PyObject *cache = SWIG_Python_TypeCache();
+-  PyObject *key = PyString_FromString(type); 
++  PyObject *key = PyUnicode_FromString(type); 
+   PyObject *obj = PyDict_GetItem(cache, key);
+   swig_type_info *descriptor;
+   if (obj) {
+@@ -2346,9 +2346,9 @@ SWIG_Python_AddErrMesg(const char* mesg,
+       Py_XINCREF(type);
+       PyErr_Clear();
+       if (infront) {
+-	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
++	PyErr_Format(type, "%s %s", mesg, PyBytes_AsString(old_str));
+       } else {
+-	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
++	PyErr_Format(type, "%s %s", PyBytes_AsString(old_str), mesg);
+       }
+       Py_DECREF(old_str);
+     }
+@@ -2397,7 +2397,7 @@ SWIG_Python_TypeError(const char *type,
+       const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+       if (otype) {
+ 	PyObject *str = PyObject_Str(obj);
+-	const char *cstr = str ? PyString_AsString(str) : 0;
++	const char *cstr = str ? PyBytes_AsString(str) : 0;
+ 	if (cstr) {
+ 	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+ 		       type, otype, cstr);
+@@ -2527,8 +2527,8 @@ SWIG_AsVal_double (PyObject *obj, double
+   if (PyFloat_Check(obj)) {
+     if (val) *val = PyFloat_AsDouble(obj);
+     return SWIG_OK;
+-  } else if (PyInt_Check(obj)) {
+-    if (val) *val = PyInt_AsLong(obj);
++  } else if (PyLong_Check(obj)) {
++    if (val) *val = PyLong_AsLong(obj);
+     return SWIG_OK;
+   } else if (PyLong_Check(obj)) {
+     double v = PyLong_AsDouble(obj);
+@@ -2603,8 +2603,8 @@ SWIG_CanCastAsInteger(double *d, double
+ SWIGINTERN int
+ SWIG_AsVal_long (PyObject *obj, long* val)
+ {
+-  if (PyInt_Check(obj)) {
+-    if (val) *val = PyInt_AsLong(obj);
++  if (PyLong_Check(obj)) {
++    if (val) *val = PyLong_AsLong(obj);
+     return SWIG_OK;
+   } else if (PyLong_Check(obj)) {
+     long v = PyLong_AsLong(obj);
+@@ -2618,7 +2618,7 @@ SWIG_AsVal_long (PyObject *obj, long* va
+ #ifdef SWIG_PYTHON_CAST_MODE
+   {
+     int dispatch = 0;
+-    long v = PyInt_AsLong(obj);
++    long v = PyLong_AsLong(obj);
+     if (!PyErr_Occurred()) {
+       if (val) *val = v;
+       return SWIG_AddCast(SWIG_OK);
+@@ -2655,7 +2655,7 @@ SWIG_AsVal_int (PyObject * obj, int *val
+ }
+ 
+ 
+-  #define SWIG_From_long   PyInt_FromLong 
++  #define SWIG_From_long   PyLong_FromLong 
+ 
+ 
+ SWIGINTERNINLINE PyObject *
+@@ -2684,7 +2684,7 @@ SWIG_pchar_descriptor(void)
+ SWIGINTERN int
+ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
+ {
+-  if (PyString_Check(obj)) {
++  if (PyBytes_Check(obj)) {
+     char *cstr; Py_ssize_t len;
+     PyString_AsStringAndSize(obj, &cstr, &len);
+     if (cptr)  {
+@@ -2712,7 +2712,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
+ 	  *alloc = SWIG_OLDOBJ;
+ 	}
+       } else {
+-	*cptr = PyString_AsString(obj);
++	*cptr = PyBytes_AsString(obj);
+       }
+     }
+     if (psize) *psize = len + 1;
+@@ -2876,12 +2876,12 @@ int parseInputFromString(NOsh *nosh, PyO
+     Vio *sock;
+     
+     startVio();
+-    bufsize = PyString_Size(string);
++    bufsize = PyBytes_Size(string);
+ 
+     VASSERT( bufsize <= VMAX_BUFSIZE );
+     sock = Vio_ctor("BUFF","ASC",VNULL,"0","r");
+ 
+-    Vio_bufTake(sock, PyString_AsString(string), bufsize);
++    Vio_bufTake(sock, PyBytes_AsString(string), bufsize);
+ 
+     ret = NOsh_parseInput(nosh, sock); 
+     sock->VIObuffer = VNULL;
+@@ -3039,9 +3039,9 @@ PyObject *getForces(AtomForce **atomForc
+     dbholder = PyList_New(3);
+     ibholder = PyList_New(3);
+     
+-    qf = PyString_FromString("qf");
+-    db = PyString_FromString("db");
+-    ib = PyString_FromString("ib");
++    qf = PyUnicode_FromString("qf");
++    db = PyUnicode_FromString("db");
++    ib = PyUnicode_FromString("ib");
+ 
+     for (i=0;i<Valist_getNumberAtoms(alist);i++){
+         for (j=0;j<3;j++){
+@@ -7931,18 +7931,18 @@ extern "C" {
+   
+   SWIGINTERN PyObject *
+   swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) {
+-    return PyString_FromString("<Swig global variables>");
++    return PyUnicode_FromString("<Swig global variables>");
+   }
+   
+   SWIGINTERN PyObject *
+   swig_varlink_str(swig_varlinkobject *v) {
+-    PyObject *str = PyString_FromString("(");
++    PyObject *str = PyUnicode_FromString("(");
+     swig_globalvar  *var;
+     for (var = v->vars; var; var=var->next) {
+-      PyString_ConcatAndDel(&str,PyString_FromString(var->name));
+-      if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
++      PyString_ConcatAndDel(&str,PyUnicode_FromString(var->name));
++      if (var->next) PyString_ConcatAndDel(&str,PyUnicode_FromString(", "));
+     }
+-    PyString_ConcatAndDel(&str,PyString_FromString(")"));
++    PyString_ConcatAndDel(&str,PyUnicode_FromString(")"));
+     return str;
+   }
+   
+@@ -7950,7 +7950,7 @@ extern "C" {
+   swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
+     PyObject *str = swig_varlink_str(v);
+     fprintf(fp,"Swig global variables ");
+-    fprintf(fp,"%s\n", PyString_AsString(str));
++    fprintf(fp,"%s\n", PyBytes_AsString(str));
+     Py_DECREF(str);
+     return 0;
+   }
+diff -up apbs-3.0.0/tools/python/apbslib.i.swig45 apbs-3.0.0/tools/python/apbslib.i
+--- apbs-3.0.0/tools/python/apbslib.i.swig45	2026-07-27 16:32:02.376414283 +0200
++++ apbs-3.0.0/tools/python/apbslib.i	2026-07-27 16:34:17.319624936 +0200
+@@ -278,12 +278,12 @@ int parseInputFromString(NOsh *nosh, PyO
+     Vio *sock;
+ 
+     startVio();
+-    bufsize = PyString_Size(string);
++    bufsize = PyBytes_Size(string);
+ 
+     VASSERT( bufsize <= VMAX_BUFSIZE );
+     sock = Vio_ctor("BUFF","ASC",VNULL,"0","r");
+ 
+-    Vio_bufTake(sock, PyString_AsString(string), bufsize);
++    Vio_bufTake(sock, PyBytes_AsString(string), bufsize);
+ 
+     ret = NOsh_parseInput(nosh, sock);
+     sock->VIObuffer = VNULL;
+@@ -441,9 +441,9 @@ PyObject *getForces(AtomForce **atomForc
+     dbholder = PyList_New(3);
+     ibholder = PyList_New(3);
+ 
+-    qf = PyString_FromString("qf");
+-    db = PyString_FromString("db");
+-    ib = PyString_FromString("ib");
++    qf = PyUnicode_FromString("qf");
++    db = PyUnicode_FromString("db");
++    ib = PyUnicode_FromString("ib");
+ 
+     for (i=0;i<Valist_getNumberAtoms(alist);i++){
+         for (j=0;j<3;j++){
+diff -up apbs-3.0.0/tools/python/vgrid/vgridlib.c.swig45 apbs-3.0.0/tools/python/vgrid/vgridlib.c
+--- apbs-3.0.0/tools/python/vgrid/vgridlib.c.swig45	2026-07-27 16:32:02.378414326 +0200
++++ apbs-3.0.0/tools/python/vgrid/vgridlib.c	2026-07-27 17:22:47.812005286 +0200
+@@ -668,7 +668,7 @@ PySwigObject_str(PySwigObject *v)
+ {
+   char result[SWIG_BUFFER_SIZE];
+   return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+-    PyString_FromString(result) : 0;
++    PyUnicode_FromString(result) : 0;
+ }
+ 
+ SWIGRUNTIME PyObject *
+@@ -683,9 +683,9 @@ PySwigObject_format(const char* fmt, PyS
+   PyObject *res = NULL;
+   PyObject *args = PyTuple_New(1);
+   if (args && (PyTuple_SetItem(args, 0, PySwigObject_long(v)) == 0)) {
+-    PyObject *ofmt = PyString_FromString(fmt);
++    PyObject *ofmt = PyUnicode_FromString(fmt);
+     if (ofmt) {
+-      res = PyString_Format(ofmt,args);
++      res = PyUnicode_Format(ofmt,args);
+       Py_DECREF(ofmt);
+     }
+     Py_DECREF(args);
+@@ -1046,7 +1046,7 @@ SWIG_Python_TypeError(const char *type,
+       const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+       if (otype) {
+ 	PyObject *str = PyObject_Str(obj);
+-	const char *cstr = str ? PyString_AsString(str) : 0;
++	const char *cstr = str ? PyBytes_AsString(str) : 0;
+ 	if (cstr) {
+ 	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+ 		       type, otype, cstr);
+@@ -1087,9 +1087,9 @@ SWIG_Python_AddErrMesg(const char* mesg,
+       Py_XINCREF(type);
+       PyErr_Clear();
+       if (infront) {
+-	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
++	PyErr_Format(type, "%s %s", mesg, PyBytes_AsString(old_str));
+       } else {
+-	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
++	PyErr_Format(type, "%s %s", PyBytes_AsString(old_str), mesg);
+       }
+       Py_DECREF(old_str);
+     }
+@@ -1136,7 +1136,7 @@ SWIG_Python_ConvertPtr(PyObject *obj, vo
+ #ifdef SWIG_COBJECT_TYPES
+   if (!(PySwigObject_Check(obj))) {
+     if (!SWIG_this)
+-      SWIG_this = PyString_FromString("this");
++      SWIG_this = PyUnicode_FromString("this");
+     pyobj = obj;
+     obj = PyObject_GetAttr(obj,SWIG_this);
+     newref = 1;
+@@ -1151,14 +1151,14 @@ SWIG_Python_ConvertPtr(PyObject *obj, vo
+   if (newref) { Py_DECREF(obj); }
+   goto type_check;
+ #else
+-  if (!(PyString_Check(obj))) {
++  if (!(PyBytes_Check(obj))) {
+     if (!SWIG_this)
+-      SWIG_this = PyString_FromString("this");
++      SWIG_this = PyUnicode_FromString("this");
+     pyobj = obj;
+     obj = PyObject_GetAttr(obj,SWIG_this);
+     newref = 1;
+     if (!obj) goto type_error;
+-    if (!PyString_Check(obj)) {
++    if (!PyBytes_Check(obj)) {
+       Py_DECREF(obj);
+       goto type_error;
+     }
+@@ -1231,7 +1231,7 @@ SWIG_Python_ConvertPacked(PyObject *obj,
+ #if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+   c = PySwigPacked_UnpackData(obj, ptr, sz);
+ #else
+-  if ((!obj) || (!PyString_Check(obj))) goto type_error;
++  if ((!obj) || (!PyBytes_Check(obj))) goto type_error;
+   c = PyString_AS_STRING(obj);
+   /* Pointer values must start with leading underscore */
+   c = SWIG_UnpackDataName(c, ptr, sz, ty->name);
+@@ -1275,7 +1275,7 @@ SWIG_Python_NewPointerObj(void *ptr, swi
+   {
+     char result[SWIG_BUFFER_SIZE];
+     robj = SWIG_PackVoidPtr(result, ptr, type->name, sizeof(result)) ?
+-      PyString_FromString(result) : 0;
++      PyUnicode_FromString(result) : 0;
+   }
+ #endif
+   if (!robj || (robj == Py_None)) return robj;
+@@ -1308,7 +1308,7 @@ SWIG_Python_NewPackedObj(void *ptr, size
+   {
+     char result[SWIG_BUFFER_SIZE];
+     robj = SWIG_PackDataName(result, ptr, sz, type->name, sizeof(result)) ?
+-      PyString_FromString(result) : 0;
++      PyUnicode_FromString(result) : 0;
+   }
+ #endif
+   return robj;
+@@ -1419,7 +1419,7 @@ SWIGINTERN int
+ SWIGINTERN int
+   SWIG_AsVal_long(PyObject * obj, long* val)
+ {
+-  if (PyInt_Check(obj)) {
++  if (PyLong_Check(obj)) {
+     if (val) *val = PyInt_AS_LONG(obj);
+     return 1;
+   }
+@@ -1492,7 +1492,7 @@ SWIG_Check_int(PyObject* obj)
+ 
+ 
+   /*@/usr/local/share/swig/1.3.25/python/pymacros.swg,66,SWIG_define@*/
+-#define SWIG_From_int PyInt_FromLong
++#define SWIG_From_int PyLong_FromLong
+ /*@@*/
+ 
+ 
+@@ -1503,7 +1503,7 @@ SWIGINTERN int
+     if (val) *val = PyFloat_AS_DOUBLE(obj);
+     return 1;
+   }  
+-  if (PyInt_Check(obj)) {
++  if (PyLong_Check(obj)) {
+     if (val) *val = PyInt_AS_LONG(obj);
+     return 1;
+   }
+@@ -1577,7 +1577,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
+     return SWIG_OLDOBJ;
+   } else {
+     PyErr_Clear();
+-    if (PyString_Check(obj)) {
++    if (PyBytes_Check(obj)) {
+       if (cptr) {
+ 	*cptr = PyString_AS_STRING(obj);
+ 	if (psize) {
+@@ -2943,7 +2943,7 @@ extern "C" {
+     SWIGINTERN PyObject *
+     swig_varlink_repr(swig_varlinkobject *v) {
+         v = v;
+-        return PyString_FromString("<Swig global variables>");
++        return PyUnicode_FromString("<Swig global variables>");
+     }
+     
+     SWIGINTERN int
+@@ -3083,14 +3083,14 @@ extern "C" {
+         for (i = 0; constants[i].type; ++i) {
+             switch(constants[i].type) {
+                 case SWIG_PY_INT:
+-                obj = PyInt_FromLong(constants[i].lvalue);
++                obj = PyLong_FromLong(constants[i].lvalue);
+                 break;
+                 case SWIG_PY_FLOAT:
+                 obj = PyFloat_FromDouble(constants[i].dvalue);
+                 break;
+                 case SWIG_PY_STRING:
+                 if (constants[i].pvalue) {
+-                    obj = PyString_FromString((char *) constants[i].pvalue);
++                    obj = PyUnicode_FromString((char *) constants[i].pvalue);
+                 } else {
+                     Py_INCREF(Py_None);
+                     obj = Py_None;

diff --git a/apbs.spec b/apbs.spec
index 66d15f6..e0a064f 100644
--- a/apbs.spec
+++ b/apbs.spec
@@ -11,7 +11,7 @@
 Name: apbs
 Summary: Adaptive Poisson Boltzmann Solver
 Version: 3.0.0
-Release: 37%{datecommit}%{shortcommit}%{?dist}
+Release: 38%{datecommit}%{shortcommit}%{?dist}
 # iAPBS looks licensed with a LGPLv2+, APBS is released under BSD license.
 License: LGPL-2.0-or-later AND BSD-3-Clause
 URL: https://www.poissonboltzmann.org/
@@ -28,6 +28,10 @@ Patch2: %{name}-python311.patch
 
 Patch3: apbs-c99.patch
 
+# Replace removed Python 2 C API macros with Python 3 equivalents
+# for compatibility with SWIG 4.5.0
+Patch4: apbs-swig45.patch
+
 BuildRequires: gcc-c++
 BuildRequires: cmake
 BuildRequires: chrpath
@@ -112,6 +116,7 @@ Python interface of APBS.
 %endif
 
 %patch -P 3 -p1
+%patch -P 4 -p1
 
 cp -p contrib/iapbs/COPYING contrib/iapbs/iapbs-COPYING
 cp -p %{SOURCE1} contrib/iapbs/iapbs-LGPLv2
@@ -213,6 +218,9 @@ export PATH=%{buildroot}%{_bindir}
 %doc %_vpath_builddir/doc
 
 %changelog
+* Mon Jul 27 2026 Jitka Plesnikova <jplesnik@redhat.com> - 3.0.0-38
+- Replace removed Python 2 C API macros for SWIG 4.5.0 compatibility
+
 * Wed Jul 22 2026 Python Maint <python-maint@redhat.com> - 3.0.0-37
 - Rebuilt for Python 3.15.0b4 ABI change
 

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

only message in thread, other threads:[~2026-08-02 14:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-02 14:19 [rpms/apbs] rawhide: Replace removed Python 2 C API macros for SWIG 4.5.0 compatibility Jitka Plesnikova

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