Convert TkAgg utilities to pybind11#26992
Conversation
|
Blitting on Windows seems to have broken (which you have/will realize). |
|
Hmmm... that test has been flaky at times, but failing 4 times in a pr related to tk is suspicious |
|
Ah, that's because that test is using the internal TkAgg API, which I simplified using the pybind11 array API, but I missed the test and need to update it. |
0889b76 to
199104d
Compare
f05289a to
891989b
Compare
|
While making changes here, would it be possible to change |
|
I don't see any warnings about that; it wouldn't have anything to do with Meson anyway. |
I haven't been able to build in weeks, and I'm getting: meson traceback(mpl-dev) C:\Users\story\Projects\matplotlib>python -m pip install --no-build-isolation --config-settings=editable-verbose=true --editable .
Obtaining file:///C:/Users/story/Projects/matplotlib
Checking if build backend supports build_editable ... done
Preparing editable metadata (pyproject.toml) ... error
error: subprocess-exited-with-error
× Preparing editable metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [88 lines of output]
+ meson setup --reconfigure C:\Users\story\Projects\matplotlib C:\Users\story\Projects\matplotlib\build\cp311 -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=C:\Users\story\Projects\matplotlib\build\cp311\meson-python-native-file.ini
Cleaning... 0 files.
The Meson build system
Version: 1.2.2
Source dir: C:\Users\story\Projects\matplotlib
Build dir: C:\Users\story\Projects\matplotlib\build\cp311
Build type: native build
Project name: matplotlib
Project version: 3.9.0.dev0
C compiler for the host machine: cc (gcc 7.2.0 "cc (Rev1, Built by MSYS2 project) 7.2.0")
C linker for the host machine: cc ld.bfd 2.29.1
C++ compiler for the host machine: c++ (gcc 7.2.0 "c++ (Rev1, Built by MSYS2 project) 7.2.0")
C++ linker for the host machine: c++ ld.bfd 2.29.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program python found: YES (C:\Users\story\miniconda3\envs\mpl-dev\python.exe)
Dependency pybind11 found: YES 2.11.1 (cached)
Executing subproject freetype-2.6.1
freetype-2.6.1| Project name: freetype2
freetype-2.6.1| Project version: 2.6.1
freetype-2.6.1| C compiler for the host machine: cc (gcc 7.2.0 "cc (Rev1, Built by MSYS2 project) 7.2.0")
freetype-2.6.1| C linker for the host machine: cc ld.bfd 2.29.1
freetype-2.6.1| Configuring ftconfig.h using configuration
freetype-2.6.1| Configuring ftoption.h using configuration
freetype-2.6.1| Build targets in project: 3
freetype-2.6.1| Subproject freetype-2.6.1 finished.
Executing subproject qhull
qhull| Project name: qhull
qhull| Project version: 8.0.2
qhull| C compiler for the host machine: cc (gcc 7.2.0 "cc (Rev1, Built by MSYS2 project) 7.2.0")
qhull| C linker for the host machine: cc ld.bfd 2.29.1
qhull| Build targets in project: 4
qhull| Subproject qhull finished.
Library dl found: NO
Library comctl32 found: YES
Library ole32 found: YES
Library psapi found: YES
Library shell32 found: YES
Library user32 found: YES
Configuring _version.py using configuration
Program C:/Users/story/Projects/matplotlib/tools/generate_matplotlibrc.py found: YES (python C:/Users/story/Projects/matplotlib/tools/generate_matplotlibrc.py)
Build targets in project: 14
matplotlib 3.9.0.dev0
Subprojects
freetype-2.6.1: YES
qhull : YES
User defined options
Native files : C:\Users\story\Projects\matplotlib\build\cp311\meson-python-native-file.ini
buildtype : release
b_ndebug : if-release
b_vscrt : md
Found ninja.EXE-1.11.1 at C:\Users\story\miniconda3\envs\mpl-dev\Library\bin\ninja.EXE
+ meson compile
[1/7] Compiling C++ object src/_tkagg.cp311-win_amd64.pyd.p/_tkagg.cpp.obj
FAILED: src/_tkagg.cp311-win_amd64.pyd.p/_tkagg.cpp.obj
"c++" "-Isrc\_tkagg.cp311-win_amd64.pyd.p" "-Isrc" "-I..\..\src" "-I..\..\..\..\miniconda3\envs\mpl-dev\Lib\site-packages\numpy\core\include" "-I..\..\extern\agg24-svn\include" "-IC:\Users\story\miniconda3\envs\mpl-dev\Include" "-fvisibility=hidden" "-fvisibility-inlines-hidden" "-flto=8" "-fdiagnostics-color=always" "-DNDEBUG" "-D_FILE_OFFSET_BITS=64" "-Wall" "-Winvalid-pch" "-std=c++17" "-O3" "-DMS_WIN64=" "-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION" "-D__STDC_FORMAT_MACROS=1" "-DPY_ARRAY_UNIQUE_SYMBOL=MPL__tkagg_ARRAY_API" -MD -MQ src/_tkagg.cp311-win_amd64.pyd.p/_tkagg.cpp.obj -MF "src\_tkagg.cp311-win_amd64.pyd.p\_tkagg.cpp.obj.d" -o src/_tkagg.cp311-win_amd64.pyd.p/_tkagg.cpp.obj "-c" ../../src/_tkagg.cpp
../../src/_tkagg.cpp: In function 'LRESULT DpiSubclassProc(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR)':
../../src/_tkagg.cpp:133:10: error: 'WM_DPICHANGED' was not declared in this scope
case WM_DPICHANGED:
^~~~~~~~~~~~~
../../src/_tkagg.cpp:133:10: note: suggested alternative: 'WM_USERCHANGED'
case WM_DPICHANGED:
^~~~~~~~~~~~~
WM_USERCHANGED
[2/7] Compiling C object src/_c_internal_utils.cp311-win_amd64.pyd.p/_c_internal_utils.c.obj
[3/7] Linking target src/_ttconv.cp311-win_amd64.pyd
[4/7] Linking target src/_tri.cp311-win_amd64.pyd
[5/7] Linking target src/_image.cp311-win_amd64.pyd
ninja: build stopped: subcommand failed.
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: C:\Users\story\miniconda3\envs\mpl-dev\Library\bin\ninja.EXE
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.Though granted when I fix that error, I get something like |
Ah, do you really intend to use MSYS2 over MSVC? Since you were talking about SDKs, I think you've been intending to use MSVC and never updated MSYS2. You should probably update |
No, but I have it installed for gitbash 🤦♀️ will follow those instructions, thanks! |
|
Git logs say you would need v6 of the headers, which are about 5 years old now, so probably should update your msys2 in any case. |
PR summary
Another step towards finishing #23846. Once again, this depends on the Meson port.
I moved the array handling parts into pybind11 code instead of Python, which seemed to fix some kind of reference counting bug across the callback boundaries.
PR checklist