Bug#1025658: libboost-python1.74-dev: Python 3.11 changes break loading of boost-python using extensions
Package: libboost-python1.74-dev
Version: 1.74.0-17+b2
Severity: serious
Tags: patch
Justification: Breaks reverse dependencies with Python 3.11
X-Debbugs-Cc: stuart@debian.org, debian-python@lists.debian.org
Dear Maintainer,
Python 3.11 has changed some details around types and GC; boost's enum.cpp
needs modifying to cope. The result of this change is that trying to
load an extension compiled with Debian's boost 1.74 results in a C++
exception being thrown and, since not properly handled, the following
rather obscure error:
SystemError: initialization of $module raised unreported exception
Further details courtesy of Alastair McKinstry's debugging work are to
be found at
https://bugs.debian.org/1024911#14
So far, we've spotted this problem in:
cctbx: https://bugs.debian.org/1024859
ecflow: https://bugs.debian.org/1024911
python-pgmagick: https://bugs.debian.org/1023909
The attached patch is a (trivial) backport of the upstream change for
this:
https://github.com/boostorg/python/commit/a218babc8daee904a83f550fb66e5cb3f1cb3013
I've verified that the attached patch solves the Python 3.11 incompatibility
of python-pgmagick, allowing it to successfully build, meaning that it is
now able to load its boost-python extensions for the test suite.
regards
Stuart
Description: Tweak enum for python 3.11 compatibility
Backport upstream patch for compatibility with python 3.11
Origin: https://github.com/boostorg/python/commit/a218babc8daee904a83f550fb66e5cb3f1cb3013
--- a/libs/python/src/object/enum.cpp
+++ b/libs/python/src/object/enum.cpp
@@ -119,7 +119,6 @@
#if PY_VERSION_HEX < 0x03000000
| Py_TPFLAGS_CHECKTYPES
#endif
- | Py_TPFLAGS_HAVE_GC
| Py_TPFLAGS_BASETYPE, /* tp_flags */
0, /* tp_doc */
0, /* tp_traverse */
Reply to: