Bug#1061015: pygame-sdl2: FTBFS: Cannot assign type 'Sint64 (SDL_RWops *) except? -1 nogil' to 'Sint64 (*)(SDL_RWops *) noexcept'

Simon McVittie smcv at debian.org
Thu Jan 25 10:15:51 GMT 2024


Control: affects -1 + src:renpy

On Tue, 16 Jan 2024 at 20:43:34 +0100, Lucas Nussbaum wrote:
> During a rebuild of all packages in sid, your package failed to build
> on amd64.
> 
> > src/pygame_sdl2/rwobject.pyx:336:22: Cannot assign type 'Sint64 (SDL_RWops *) except? -1 nogil' to 'Sint64 (*)(SDL_RWops *) noexcept'. Exception values are incompatible. Suggest adding 'noexcept' to type 'Sint64 (SDL_RWops *) except? -1 nogil'.

This looks like probably a regression with cython 3.x, which has this
in its release notes:

    Cython-implemented C functions now propagate exceptions by default,
    rather than swallowing them in non-object returning function if the
    user forgot to add an except declaration to the signature. This was
    a long-standing source of bugs, but can require adding the noexcept
    declaration to existing functions if exception propagation is really
    undesired. (Github issue #4280)

    ...

    To opt out of the new, safer exception handling behaviour, legacy
    code can set the new directive legacy_implicit_noexcept=True for
    a transition period to keep the previous, unsafe behaviour. This
    directive will eventually be removed in a later release.

References: <https://github.com/cython/cython/issues/4280>,
<https://github.com/cython/cython/pull/5094>.

The changelog for pygame-sdl2 8.1.3-1 says the new upstream release is
compatible with cython3, but that doesn't seem to be the case? But I
also don't understand where these new upstream releases are coming from,
because https://github.com/renpy/pygame_sdl2 only has tags for 8.1.0,
and there don't seem to be any recent commits that are relevant to
cython3 compatibility.

    smcv



More information about the Pkg-games-devel mailing list