Your message dated Wed, 29 Oct 2025 11:51:50 +0000
with message-id <[email protected]>
and subject line Bug#1117906: fixed in python-greenlet 3.2.4-2
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-2
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: Wed, 29 Oct 2025 11:16:43 +0000
Source: python-greenlet
Architecture: source
Version: 3.2.4-2
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <[email protected]>
Changed-By: Colin Watson <[email protected]>
Closes: 1082800 1117906
Changes:
 python-greenlet (3.2.4-2) unstable; urgency=medium
 .
   * Move to unstable.
 .
 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:
 f2a3306eb1f0a5fad82795f7cb02de0142801b50 2605 python-greenlet_3.2.4-2.dsc
 d277b74064dcac955e0d952681fbab211a89961d 10612 
python-greenlet_3.2.4-2.debian.tar.xz
 64950a7b4c435043c8a1b6f71f8eedc3576bed90 417308 
python-greenlet_3.2.4-2.git.tar.xz
 f709cb051621ccc71020f5330b515780f3d6093a 18250 
python-greenlet_3.2.4-2_source.buildinfo
Checksums-Sha256:
 a0fa9628207cd25854720efc40fc06af476a509f51c11e6f0b58781cf6400c4b 2605 
python-greenlet_3.2.4-2.dsc
 cd09b398a1bf1db169414fb06e9ccecc2f8c5b3f39b48d49144bf7d5a25b47a8 10612 
python-greenlet_3.2.4-2.debian.tar.xz
 b60804e4f104715e30dea393b635231fe0b96581be695c81b02b51acd4dda214 417308 
python-greenlet_3.2.4-2.git.tar.xz
 8d9f94ec4921a86236088ecc7761df7e3255b38fc0a0566b3a9727f3de8db810 18250 
python-greenlet_3.2.4-2_source.buildinfo
Files:
 40b112614da8d3f527424b1908f9224e 2605 python optional 
python-greenlet_3.2.4-2.dsc
 be32bad00916c66f33be4ec758007daf 10612 python optional 
python-greenlet_3.2.4-2.debian.tar.xz
 38b919b48143f443e3ce353a8188f6df 417308 python optional 
python-greenlet_3.2.4-2.git.tar.xz
 9525f257d8f1bc8846ebcf659acb5201 18250 python optional 
python-greenlet_3.2.4-2_source.buildinfo
Git-Tag-Info: tag=4c1df037b1b783937879b672ddee8a23827a2f38 
fp=ac0a4ff12611b6fccf01c111393587d97d86500b
Git-Tag-Tagger: Colin Watson <[email protected]>

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

iQIzBAEBCgAdFiEEN02M5NuW6cvUwJcqYG0ITkaDwHkFAmkB+CsACgkQYG0ITkaD
wHlabhAAqrvt5C3Q8+yKrhFAGFF35HstYabs4MHxFdSCUxsrhdJeumCPitG5gRXd
uYyJXJhY71iN52cs7XTi+CTOf4+4C0sXLSSXQkuJWPtcHx8QJ6Dz8ZXbWGzSKd1M
XUr4IBqqch4yndSxFAy4l2yOwLwXuAOud4xpR3Y+jLIQYiYgkm7NHvv3tz7zTJVe
jhDmgVH2ENFUnmb2J3+5sDbEfuG034lx1QJdqkn3qA3/XM1aE84duEnt+u+MasnX
g7FYo8ApokhLK0xBuH3d0zf5FRqy8TFuqWEyKNteGXK7zAPZOW4QEFA2BxOP215r
Vq2XWsm+ygczhvuqg26gmAiJ3fm68X/ZhQU+QaOWHXohUgcsH0grWV4wPgqAMQzi
LJvjc2zcYijcQII11T8LaimsC3RVfXzw1eZLpddq9MUoHvV4v/XV3yoVpU6JwnKZ
p9eCwd0IACxFsb46DCCAU6EOBdXgrhT6e4oDFgUWLUcmX1EiJq4Ma0naojY2mfKT
qs87JhTnyRF9wzTTN4Ire82e1VfmJfcaSy+KaPM8Jxo2ndl+amJpi6MVDfS7aDuN
r5g++sdzQWatghbgoApC0BCmfQHN4vhpNrJhmsOpl6I2XgOYxFmITImiA9dJmBjn
Loo6G8CsIaNs/rfi/oFKP9pxc1LPNdSRRLaKqW+8ZYL2hj/8vjw=
=64aj
-----END PGP SIGNATURE-----

Attachment: pgplB_MLNbfDn.pgp
Description: PGP signature


--- End Message ---

Reply via email to