Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build breaks with Python-3.11: error: member access into incomplete type 'PyFrameObject' #1759

Open
yurivict opened this issue Jun 5, 2024 · 5 comments
Labels
build issues building OTIO python-bindings

Comments

@yurivict
Copy link

yurivict commented Jun 5, 2024

Required:


[x] I believe this isn't a duplicate topic
[x] This report is not related to an adapter

Select One:

[x] Build problem
[ ] Incorrect Functionality or bug
[ ] New feature or functionality

Description

In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/py-opentimelineio/opentimelineio-bindings/otio_imath.cpp:4:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/pybind11.h:13:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/attr.h:13:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/cast.h:16:
/wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/detail/type_caster_base.h:482:26: error: member access into incomplete type 'PyFrameObject' (aka '_frame')
            frame = frame->f_back;
                         ^
/usr/local/include/python3.11/pytypedefs.h:22:16: note: forward declaration of '_frame'
typedef struct _frame PyFrameObject;
               ^
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/py-opentimelineio/opentimelineio-bindings/otio_errorStatusHandler.cpp:4:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/py-opentimelineio/opentimelineio-bindings/otio_errorStatusHandler.h:6:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/pybind11.h:13:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/attr.h:13:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/cast.h:16:
/wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/detail/type_caster_base.h:482:26: error: member access into incomplete type 'PyFrameObject' (aka '_frame')
            frame = frame->f_back;
                         ^
/usr/local/include/python3.11/pytypedefs.h:22:16: note: forward declaration of '_frame'
typedef struct _frame PyFrameObject;
               ^
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/py-opentimelineio/opentimelineio-bindings/otio_anyVector.cpp:4:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/pybind11.h:13:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/attr.h:13:
In file included from /wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/cast.h:16:
/wrkdirs/usr/ports/multimedia/py-opentimelineio/work-py311/OpenTimelineIO-0.16.0/src/deps/pybind11/include/pybind11/detail/type_caster_base.h:482:26: error: member access into incomplete type 'PyFrameObject' (aka '_frame')
            frame = frame->f_back;
                         ^
/usr/local/include/python3.11/pytypedefs.h:22:16: note: forward declaration of '_frame'
typedef struct _frame PyFrameObject;
               ^

Optional


Environment

Operating System: FreeBSD 14.0
Python version if appropriate: 3.11

Reproduction Steps

Regular build.

Log output if appropriate

https://pkg-status.freebsd.org/beefy22/data/140amd64-default/28444692ea26/logs/py311-opentimelineio-0.16.0.log

@reinecke reinecke added the build issues building OTIO label Jun 20, 2024
@yurivict
Copy link
Author

@semagnum @reinecke

Hello,

Do you know why does the Python binding breaks with Python-3.11?

Thank you,
Yuri

@meshula
Copy link
Collaborator

meshula commented Aug 26, 2024

If you go into src/deps/pybind11, and git pull to the latest pybind11, does the problem resolve? Our copy of pybind11 is over a year old, and I wonder if there are fixes that we need.

@yurivict
Copy link
Author

The build succeeds with the latest pybind11 release.
Why don't you just add it to the "required" set?

@meshula
Copy link
Collaborator

meshula commented Aug 26, 2024

Thanks for investigating. We should bump it. A blocker is that the CI is currently failing so we'll need to take a look at that. Something is attempting to invoke a 32 bit msvc toolchain.

https://github.com/AcademySoftwareFoundation/OpenTimelineIO/actions/runs/10033325821/job/27726400320?pr=1785

@darbyjohnston
Copy link
Contributor

Do we support 32-bits? It looks like that action is trying to build for both x64 and x86:

cibuildwheel version 2.16.5

Build options:
  platform: windows
  architectures: AMD64, x86

Doing a quick search, it looks like the docs say it tries to build both arches by default on Windows:
https://cibuildwheel.pypa.io/en/stable/options/#archs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build issues building OTIO python-bindings
Projects
None yet
Development

No branches or pull requests

4 participants