Fix eigen wheel builds - #2160
Conversation
2c8da7f to
153a795
Compare
|
Any idea which update here is causing the Pyodide build to fail -- the making Eigen "global" according to CMake, or one of the dependency updates? Do we just need to simultaneously bump some of the Pyodide-related build dependencies? |
|
I haven't been able to figure it out yet, but I also haven't tried very hard. I only got as far as reproducing the failure locally. |
153a795 to
1f9ec59
Compare
|
I reverted the pyodide version changes in |
…Emscripten flags Add CMAKE_CXX_SCAN_FOR_MODULES=OFF to the pyodide build CMAKE_ARGS. When scikit-build-core 1.0.3+ runs with minimum-version enforcement, it attempts to scan for C++ modules using emscan-deps in the Emscripten environment. This scanning phase doesn't properly handle Emscripten compiler flags like -sSUPPORT_LONGJMP, causing the build to fail. Disabling module scanning for Pyodide builds is safe because Pyodide doesn't require C++ module support, and CMake will fall back to traditional dependency detection.
Add CMAKE_CXX_SCAN_FOR_MODULES to [tool.scikit-build.cmake.define] so that scikit-build-core properly recognizes and passes through the environment variable. This allows build_pyodide_wheel.py to set CMAKE_CXX_SCAN_FOR_MODULES=OFF in the environment, which scikit-build-core will then configure and pass to CMake, disabling the C++ module scanning that causes incompatible Emscripten flags.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2160 +/- ##
=======================================
Coverage 78.15% 78.15%
=======================================
Files 453 453
Lines 55433 55433
Branches 9115 9115
=======================================
+ Hits 43324 43326 +2
+ Misses 9060 9059 -1
+ Partials 3049 3048 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Changes proposed in this pull request
Cantera/pypi-packagesby exporting the imported Eigen symbol as a project-global in the CMake config. By default, imported symbols are not shared to sibling directories; when theext_managerintroduced a dependency onEigen3::Eigen, the symbol couldn't actually be found.AI Statement (required)
I asked Gemma (I think?) about the CMake garbage and it answered correctly
Checklist
scons build&scons test) and unit tests address code coverage