Your message dated Fri, 24 Oct 2025 17:06:20 +0000
with message-id <[email protected]>
and subject line Bug#1117906: fixed in python-greenlet 3.2.4-1
has caused the Debian Bug report #1117906,
regarding python-greenlet FTBFS with Python 3.14: error: ‘Py_C_RECURSION_LIMIT’ 
was not declared in this scope
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1117906: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1117906
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: python-greenlet
Version: 3.1.0-1
Severity: normal
Tags: ftbfs upstream patch
Forwarded: https://github.com/python-greenlet/greenlet/pull/445
User: [email protected]
Usertags: python3.14

Python 3.14 is upon us, and we would like to enable it as a supported version 
in Debian.

This package fails to build with Python 3.14 as an available version. Graham 
Inggs did a test rebuild in Ubuntu and found this build failure. These can be 
reproduced in Debian by installing python3-all from experimental (but you may 
need to rebuild some dependencies by hand, first).

I think it has been fixed in a new upstream version, but that needs to 
be checked. Upstream claims that 3.2.2 supports Python 3.14 beta 1. And 
this MR looks like the relevant change:
https://github.com/python-greenlet/greenlet/pull/445

Build log:
https://launchpadlibrarian.net/823265632/buildlog_ubuntu-questing-amd64.python-greenlet_3.1.0-1build2_BUILDING.txt.gz

Error:
building 'greenlet._greenlet' extension
creating build/temp.linux-x86_64-cpython-314/<<PKGBUILDDIR>>/src/greenlet
x86_64-linux-gnu-g++ -g -O2 -fno-omit-frame-pointer 
-mno-omit-leaf-frame-pointer -ffile-prefix-map=/<<PKGBUILDDIR>>=. -flto=auto 
-ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat 
-Werror=format-security -fcf-protection 
-fdebug-prefix-map=/<<PKGBUILDDIR>>=/usr/src/python-greenlet-3.1.0-1build2 
-Wdate-time -D_FORTIFY_SOURCE=3 -fPIC -I/usr/include/python3.14 -c 
/<<PKGBUILDDIR>>/src/greenlet/greenlet.cpp -o 
build/temp.linux-x86_64-cpython-314/<<PKGBUILDDIR>>/src/greenlet/greenlet.o
In file included from /<<PKGBUILDDIR>>/src/greenlet/greenlet.cpp:31:
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp: In member function ‘void 
greenlet::Greenlet::expose_frames()’:
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:623:29: error: aggregate 
‘_PyInterpreterFrame iframe_copy’ has incomplete type and cannot be defined
  623 |         _PyInterpreterFrame iframe_copy;
      |                             ^~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:624:65: error: invalid application 
of ‘sizeof’ to incomplete type ‘_PyInterpreterFrame’
  624 |         this->stack_state.copy_from_stack(&iframe_copy, iframe, 
sizeof(*iframe));
      |                                                                 
^~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:625:14: error: 
‘_PyFrame_IsIncomplete’ was not declared in this scope
  625 |         if (!_PyFrame_IsIncomplete(&iframe_copy)) {
      |              ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.14/Python.h:19,
                 from /<<PKGBUILDDIR>>/src/greenlet/greenlet.cpp:16:
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:632:41: error: 
‘FRAME_OWNED_BY_CSTACK’ was not declared in this scope
  632 |             assert(iframe_copy.owner != FRAME_OWNED_BY_CSTACK);
      |                                         ^~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:651:24: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  651 |             if (!iframe->frame_obj) {
      |                        ^~
In file included from /usr/include/python3.14/pyframe.h:19,
                 from /usr/include/python3.14/Python.h:104:
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:653:37: error: aggregate 
‘_PyInterpreterFrame dummy_iframe’ has incomplete type and cannot be defined
  653 |                 _PyInterpreterFrame dummy_iframe;
      |                                     ^~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:658:38: error: 
‘FRAME_OWNED_BY_GENERATOR’ was not declared in this scope
  658 |                 dummy_iframe.owner = FRAME_OWNED_BY_GENERATOR;
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:664:30: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  664 |                 assert(iframe->frame_obj);
      |                              ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:679:26: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  679 |             assert(iframe->owner == FRAME_OWNED_BY_THREAD
      |                          ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:679:37: error: 
‘FRAME_OWNED_BY_THREAD’ was not declared in this scope
  679 |             assert(iframe->owner == FRAME_OWNED_BY_THREAD
      |                                     ^~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:680:29: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  680 |                    || iframe->owner == FRAME_OWNED_BY_GENERATOR);
      |                             ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:680:40: error: 
‘FRAME_OWNED_BY_GENERATOR’ was not declared in this scope
  680 |                    || iframe->owner == FRAME_OWNED_BY_GENERATOR);
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:682:44: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  682 |                 assert(last_complete_iframe->frame_obj);
      |                                            ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:683:45: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  683 |                 
memcpy(&last_complete_iframe->frame_obj->_f_frame_data[0],
      |                                             ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:684:45: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  684 |                        &last_complete_iframe->previous, sizeof(void *));
      |                                             ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:685:37: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  685 |                 last_complete_iframe->previous = iframe;
      |                                     ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:701:36: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  701 |         assert(last_complete_iframe->frame_obj);
      |                                    ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:702:37: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  702 |         memcpy(&last_complete_iframe->frame_obj->_f_frame_data[0],
      |                                     ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:703:37: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  703 |                &last_complete_iframe->previous, sizeof(void *));
      |                                     ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TGreenlet.cpp:704:29: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  704 |         last_complete_iframe->previous = nullptr;
      |                             ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
In file included from /<<PKGBUILDDIR>>/src/greenlet/greenlet.cpp:36:
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp: In member function ‘void 
greenlet::PythonState::operator<<(const PyThreadState*)’:
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:137:31: error: 
‘Py_C_RECURSION_LIMIT’ was not declared in this scope
  137 |     this->c_recursion_depth = Py_C_RECURSION_LIMIT - 
tstate->c_recursion_remaining;
      |                               ^~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:137:62: error: ‘const 
PyThreadState’ {aka ‘const struct _ts’} has no member named 
‘c_recursion_remaining’; did you mean ‘py_recursion_remaining’?
  137 |     this->c_recursion_depth = Py_C_RECURSION_LIMIT - 
tstate->c_recursion_remaining;
      |                                                              
^~~~~~~~~~~~~~~~~~~~~
      |                                                              
py_recursion_remaining
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp: In member function ‘void 
greenlet::PythonState::unexpose_frames()’:
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:179:51: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  179 |         _PyInterpreterFrame *prev_exposed = iframe->previous;
      |                                                   ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:180:22: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  180 |         assert(iframe->frame_obj);
      |                      ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:181:23: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  181 |         memcpy(&iframe->previous, &iframe->frame_obj->_f_frame_data[0],
      |                       ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:181:42: error: invalid use of 
incomplete type ‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
  181 |         memcpy(&iframe->previous, &iframe->frame_obj->_f_frame_data[0],
      |                                          ^~
/usr/include/python3.14/cpython/pyframe.h:25:8: note: forward declaration of 
‘_PyInterpreterFrame’ {aka ‘struct _PyInterpreterFrame’}
   25 | struct _PyInterpreterFrame;
      |        ^~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp: In member function ‘void 
greenlet::PythonState::operator>>(PyThreadState*)’:
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:212:13: error: ‘PyThreadState’ 
{aka ‘struct _ts’} has no member named ‘c_recursion_remaining’; did you mean 
‘py_recursion_remaining’?
  212 |     tstate->c_recursion_remaining = Py_C_RECURSION_LIMIT - 
this->c_recursion_depth;
      |             ^~~~~~~~~~~~~~~~~~~~~
      |             py_recursion_remaining
/<<PKGBUILDDIR>>/src/greenlet/TPythonState.cpp:212:37: error: 
‘Py_C_RECURSION_LIMIT’ was not declared in this scope
  212 |     tstate->c_recursion_remaining = Py_C_RECURSION_LIMIT - 
this->c_recursion_depth;
      |                                     ^~~~~~~~~~~~~~~~~~~~
error: command '/usr/bin/x86_64-linux-gnu-g++' failed with exit code 1

--- End Message ---
--- Begin Message ---
Source: python-greenlet
Source-Version: 3.2.4-1
Done: Colin Watson <[email protected]>

We believe that the bug you reported is fixed in the latest version of
python-greenlet, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Colin Watson <[email protected]> (supplier of updated python-greenlet package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Fri, 24 Oct 2025 17:49:28 +0100
Source: python-greenlet
Architecture: source
Version: 3.2.4-1
Distribution: experimental
Urgency: medium
Maintainer: Debian Python Team <[email protected]>
Changed-By: Colin Watson <[email protected]>
Closes: 1082800 1117906
Changes:
 python-greenlet (3.2.4-1) experimental; urgency=medium
 .
   [ Alexandre Detiste ]
   * fix syntax error in Maintainer: field that confuses UDD & the Tracker
   * use dh-sequence-python3
   * bump Standards-Version to 4.7.2
 .
   [ Colin Watson ]
   * Remove dangling .PHONY entry that broke the build
   * Remove an ancient override for Python 3.7
   * New upstream release:
     - Fix crashes on 32-bit PPC Linux (closes: #1082800).
     - Make greenlet build and run on Python 3.14 (closes: #1117906).
   * Require tests to pass on ppc64el; they seem to have passed for years
Checksums-Sha1:
 5b2e481e90cb30b54580ace9cd125987374671b5 2451 python-greenlet_3.2.4-1.dsc
 65c4968f105e2c296397901baf3550dbb4ba77e8 182179 
python-greenlet_3.2.4.orig.tar.gz
 70ceffa8c102ea77b5f4891de587b696a78435c3 10592 
python-greenlet_3.2.4-1.debian.tar.xz
Checksums-Sha256:
 8638391493713a7cdba8ed8f5309330bf4656f5ff32199d6d2baa20fdc4b3996 2451 
python-greenlet_3.2.4-1.dsc
 72b20876a114c0d12683edacac3e8aa329639bae2835902ee9da92a899847b1f 182179 
python-greenlet_3.2.4.orig.tar.gz
 2430c6c2be760279a97eac3d1fbe9b9abc173566a3b6c081291a0907cfb196a1 10592 
python-greenlet_3.2.4-1.debian.tar.xz
Files:
 9d388902197076a18e2de175625c6d63 2451 python optional 
python-greenlet_3.2.4-1.dsc
 573edd036a653e0173eef530f6d5e65e 182179 python optional 
python-greenlet_3.2.4.orig.tar.gz
 c12085683f6227fc38db1a65f8b36a2d 10592 python optional 
python-greenlet_3.2.4-1.debian.tar.xz

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmj7rlIACgkQOTWH2X2G
UAvOUg//SD1IkgT6nFWuBg+Vphg5k92G7/TAazeCpgGQoWBRCG1uM/PuFiPj+knZ
rhIgohgSnA3Wl6t8lK2FAbtm90jviVDZKMryOu4Ejdbwj1kpRHXFkK8lv8ElzoyL
Vzn1awWi779jjwM3ur5ey8lRElurGEdElLSKGZRILeF4Lf8Aa5kFKIPqpf//xlSh
M0TlwkkW6R0AvDjopbcy/H3pfO+IW+oIKiFGdQQm3ZZ70bPwH6pwsayZYlLr2HWE
frvEUvXyOKJkZWJWCNepIEz3kFrFXuPShFZdbb4HcCuFOt8rzIZE/T0jmSduQeJh
YFkS9gI6yGNrHUoIiU89juxUByce4GF57Yivnfdul+T32iLQXaH2E6z+d/7GhZRr
rr4kJhaRW+dBCNDi3KLrsJpH3ZIy5cLl81ZIKZ9GwmLGLrbLC283dD6prwy1hz4H
Sder3ANWmF8oL0grWqHL9Yauss5bakR4bkARq7K3m6+jzmDkDpQB5/P3AWOiuZHM
Ad7OPleXXdkH28MPYnux4b6NkFLlwxzHQZ7+ahxMthqZ5uU7DVLv0oHSpmf3Xg1x
1lEimn0OQdZTSwrqRdWyapv8pAoOtQgKM8AfdiRRutjjQJP0yYTjllD7maABmOxJ
earvPI/XptxPhNSpIFZNRn+oYPcaeGirX6xX6E1NaccE7VTG/o0=
=Ebmv
-----END PGP SIGNATURE-----

Attachment: pgpf5VX8BGVcV.pgp
Description: PGP signature


--- End Message ---

Reply via email to