From e26660c46357179689bb18b60ec126eee03da829 Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 1/8] fix: set Eigen to be exported globally in the project --- interfaces/python_sdist/src/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/interfaces/python_sdist/src/CMakeLists.txt b/interfaces/python_sdist/src/CMakeLists.txt index f344e0e4e7..7d22c6696c 100644 --- a/interfaces/python_sdist/src/CMakeLists.txt +++ b/interfaces/python_sdist/src/CMakeLists.txt @@ -17,7 +17,9 @@ FetchContent_Declare( URL_HASH SHA256=b4c198460eba6f28d34894e3a5710998818515104d6e74e5cc331ce31e46e626 # FIND_PACKAGE_ARGS has to be the last thing in this call because it greedily takes # everything after it to pass to `find_package()` - FIND_PACKAGE_ARGS NAMES Eigen3 + # GLOBAL sets up eigen to be a target in sibling directories. Without GLOBAL the target + # is scoped to this directory only. + FIND_PACKAGE_ARGS NAMES Eigen3 GLOBAL ) set(YAML_CPP_VERSION 0.8.0) @@ -47,6 +49,8 @@ FetchContent_Declare( URL_HASH SHA256=203eb4e8aa0d746c62d8f903df58e0419e3751591bb53ff971096eaa0ebd4ec3 # FIND_PACKAGE_ARGS has to be the last thing in this call because it greedily takes # everything after it to pass to `find_package()` + # GLOBAL sets up fmt to be a target in sibling directories. Without GLOBAL the target + # is scoped to this directory only. FIND_PACKAGE_ARGS NAMES fmt GLOBAL ) From 140831f0e0a1fab14d24239488dc90bde1945bd2 Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 2/8] chore: bump eigen dependency version --- interfaces/python_sdist/src/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/python_sdist/src/CMakeLists.txt b/interfaces/python_sdist/src/CMakeLists.txt index 7d22c6696c..883b2e829d 100644 --- a/interfaces/python_sdist/src/CMakeLists.txt +++ b/interfaces/python_sdist/src/CMakeLists.txt @@ -10,11 +10,11 @@ else() set(CT_USE_SYSTEM_HIGHFIVE 1) endif() -set(EIGEN_VERSION 3.4.0) +set(EIGEN_VERSION 5.0.1) FetchContent_Declare( eigen URL https://gitlab.com/libeigen/eigen/-/archive/${EIGEN_VERSION}/eigen-${EIGEN_VERSION}.tar.bz2 - URL_HASH SHA256=b4c198460eba6f28d34894e3a5710998818515104d6e74e5cc331ce31e46e626 + URL_HASH SHA256=e4de6b08f33fd8b8985d2f204381408c660bffa6170ac65b68ae1bd3cd575c0a # FIND_PACKAGE_ARGS has to be the last thing in this call because it greedily takes # everything after it to pass to `find_package()` # GLOBAL sets up eigen to be a target in sibling directories. Without GLOBAL the target From 2e9ae45574793f0c503ec0b8159a66316085f24f Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 3/8] chore: bump sundials dependency version --- interfaces/python_sdist/src/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/python_sdist/src/CMakeLists.txt b/interfaces/python_sdist/src/CMakeLists.txt index 883b2e829d..4028c6d49d 100644 --- a/interfaces/python_sdist/src/CMakeLists.txt +++ b/interfaces/python_sdist/src/CMakeLists.txt @@ -32,11 +32,11 @@ FetchContent_Declare( FIND_PACKAGE_ARGS NAMES yaml-cpp ) -set(SUNDIALS_VERSION 7.4.0) +set(SUNDIALS_VERSION 7.8.0) FetchContent_Declare( sundials URL https://github.com/LLNL/sundials/releases/download/v${SUNDIALS_VERSION}/sundials-${SUNDIALS_VERSION}.tar.gz - URL_HASH SHA256=679ddacdd77610110e613164e8297d6d0cd35bae8e9c3afc8e8ff6f99a1c2a7b + URL_HASH SHA256=69ec92653e998e4841b59d363b3abf21299251991390f52917402737164ca574 # FIND_PACKAGE_ARGS has to be the last thing in this call because it greedily takes # everything after it to pass to `find_package()` FIND_PACKAGE_ARGS NAMES SUNDIALS From 82e40a9d32864408b586a11f50a312560b58199a Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 4/8] chore: bump highfive dependency version --- interfaces/python_sdist/src/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/python_sdist/src/CMakeLists.txt b/interfaces/python_sdist/src/CMakeLists.txt index 4028c6d49d..0bf8620887 100644 --- a/interfaces/python_sdist/src/CMakeLists.txt +++ b/interfaces/python_sdist/src/CMakeLists.txt @@ -55,11 +55,11 @@ FetchContent_Declare( ) if(CT_USE_HDF5) - set(HIGHFIVE_VERSION .3.1.1) + set(HIGHFIVE_VERSION 3.3.0) FetchContent_Declare( HighFive URL https://github.com/highfive-devs/HighFive/archive/refs/tags/v${HIGHFIVE_VERSION}.tar.gz - URL_HASH SHA256=c0bc76b01868a133bf4550a07321923c5582fe3967edc102864b082e40799914 + URL_HASH SHA256=325cfbcf0c0296a6dd26f3b088801b7ebb8d6f109c0565c11d2d8c4af3253bff # FIND_PACKAGE_ARGS has to be the last thing in this call because it greedily takes # everything after it to pass to `find_package()` FIND_PACKAGE_ARGS NAMES HighFive From 5c9d73f7e7ddc3945b9e3a43e380a65dcb0db24e Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 5/8] chore: bump maximum CMake version --- interfaces/python_sdist/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/python_sdist/CMakeLists.txt b/interfaces/python_sdist/CMakeLists.txt index 76f17ef5e3..03e53cf788 100644 --- a/interfaces/python_sdist/CMakeLists.txt +++ b/interfaces/python_sdist/CMakeLists.txt @@ -1,7 +1,7 @@ # Set minimum version 3.27 so that CMP0144, search for packages by upper-cased # environment variables will use upper-cased variables. OLD behavior is to ignore # upper-cased variables -cmake_minimum_required(VERSION 3.27...3.31) +cmake_minimum_required(VERSION 3.27...4.4) project(${SKBUILD_PROJECT_NAME} LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) From 3a684e5a4e3436cad363e82225986bd89ea710d2 Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 6/8] chore: pin dependency versions in sdist build --- interfaces/python_sdist/pyproject.toml.in | 7 ++++--- pixi.toml | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/interfaces/python_sdist/pyproject.toml.in b/interfaces/python_sdist/pyproject.toml.in index 8ac27c3429..0dcba24c87 100644 --- a/interfaces/python_sdist/pyproject.toml.in +++ b/interfaces/python_sdist/pyproject.toml.in @@ -1,5 +1,5 @@ [build-system] -requires = ["scikit-build-core", "cython @cython_version_spec@", "numpy>=2.0"] +requires = ["scikit-build-core>=1.0.3", "cython @cython_version_spec@", "numpy>=2.0"] build-backend = "scikit_build_core.build" [project] @@ -64,9 +64,10 @@ lxcat2yaml = "cantera.lxcat2yaml:main" [tool.scikit-build] logging.level = "DEBUG" build.verbose = true +minimum-version = "build-system.requires" [tool.scikit-build.cmake] -version = ">=3.27,<4" +version = "CMakeLists.txt" [tool.scikit-build.ninja] version = ">=1.13" @@ -115,7 +116,7 @@ test-command = "pytest -vv --durations=100 ${CANTERA_TEST_DIR}/test/python" [tool.cibuildwheel.windows] before-build = "pip install delvewheel" -repair-wheel-command = "delvewheel repair --add-path %HDF5_LIB_DIR%;%SUNDIALS_LIB_DIR% -w {dest_dir} {wheel}" +repair-wheel-command = "delvewheel repair --add-path %HDF5_LIB_DIR%;%SUNDIALS_LIB_DIR%;%YAML_CPP_LIB_DIR% -w {dest_dir} {wheel}" test-command = "pytest -vv --durations=100 %CANTERA_TEST_DIR%\\test\\python" [tool.cibuildwheel.macos] diff --git a/pixi.toml b/pixi.toml index 6dadae843e..fe0268d12b 100644 --- a/pixi.toml +++ b/pixi.toml @@ -19,10 +19,12 @@ boost-cpp = ">=1.85.0,<2" hdf5 = ">=1.14.6,<2" highfive = ">=3.2.0,<4" sundials = ">=7.6.0,<8" +eigen = ">=3.4.0,<6" fmt = ">=12.1.0,<13" yaml-cpp = ">=0.8.0,<0.9" cython = ">=3.2.4,<4" numpy = ">=2.4.2,<3" +python-build = ">=1.5.0,<2" pip = ">=26.0.1,<27" wheel = ">=0.46.3,<0.47" setuptools = ">=82.0.0,<83" @@ -95,7 +97,7 @@ cython = ">=3.2.4,<4" numpy = ">=2.4.2,<3" "ruamel.yaml" = ">=0.19.1,<0.20" pip = ">=26.0.1,<27" -cmake = ">=3.27,<4" +cmake = ">=3.27,<5" ninja = ">=1.13.2,<2" nodejs = ">=25.2.1,<25.8" # pyodide-build shells out to `make` to read Makefile.envs when initializing the @@ -104,9 +106,9 @@ nodejs = ">=25.2.1,<25.8" make = ">=4.3,<5" [feature.pyodide.pypi-dependencies] -build = ">=1.2.2.post1, <2" -scikit-build-core = ">=0.12.1, <0.13" -pyodide-build = ">=0.33.0, <0.34" +build = ">=1.5.0,<2" +scikit-build-core = ">=1.0.3,<2" +pyodide-build = ">=0.33.0,<0.39" # Native (non-Pyodide) build of the scikit-build-core/CMake sdist wheel. Layers the # CMake toolchain onto the `core` dependencies so the sdist build route can be exercised @@ -114,12 +116,12 @@ pyodide-build = ">=0.33.0, <0.34" # run from a shell where the MSVC toolchain is activated (e.g. via vcvars64.bat), since # cmake's Ninja generator needs `cl`/`link` on PATH. [feature.wheel.dependencies] -cmake = ">=3.27,<4" +cmake = ">=3.27,<5" ninja = ">=1.13.2,<2" +scikit-build-core = ">=1.0.3,<2" [feature.wheel.pypi-dependencies] -build = ">=1.2.2.post1, <2" -scikit-build-core = ">=0.12.1, <0.13" +build = ">=1.5.0,<2" [environments] default = { features = ["core", "devtools", "docs", "samples"], no-default-feature = true } @@ -131,3 +133,6 @@ wheel = { features = ["core", "wheel"], no-default-feature = true } [feature.docs.tasks] docs = "scons sphinx doxygen" + +[feature.wheel.tasks] +sdist = "scons sdist" From c5b50864efdded7fe79bbd473caee5f1292ae78d Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 7/8] fix: sundials CMake deprecation warnings --- interfaces/python_sdist/src/CMakeLists.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/interfaces/python_sdist/src/CMakeLists.txt b/interfaces/python_sdist/src/CMakeLists.txt index 0bf8620887..ae796acd63 100644 --- a/interfaces/python_sdist/src/CMakeLists.txt +++ b/interfaces/python_sdist/src/CMakeLists.txt @@ -89,23 +89,23 @@ set(HIGHFIVE_BUILD_DOCS OFF) # SUNDIALS build options set(EXAMPLES_INSTALL OFF) -set(EXAMPLES_ENABLE_C OFF) -set(BUILD_ARKODE OFF) -set(BUILD_CVODE OFF) -set(BUILD_IDA OFF) -set(BUILD_KINSOL OFF) -set(BUILD_CPODES OFF) -set(BUILD_FORTRAN_MODULE_INTERFACE OFF) +set(SUNDIALS_ENABLE_C_EXAMPLES OFF) +set(SUNDIALS_ENABLE_ARKODE OFF) +set(SUNDIALS_ENABLE_CVODE OFF) +set(SUNDIALS_ENABLE_IDA OFF) +set(SUNDIALS_ENABLE_KINSOL OFF) +set(SUNDIALS_ENABLE_CPODES OFF) +set(SUNDIALS_ENABLE_FORTRAN OFF) if(CANTERA_ENABLE_LAPACK AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") - set(ENABLE_LAPACK ON) + set(SUNDIALS_ENABLE_LAPACK ON) set(BLA_VENDOR Apple) set(SUNDIALS_LAPACK_CASE "LOWER") set(SUNDIALS_LAPACK_UNDERSCORES "NONE") elseif(CANTERA_ENABLE_LAPACK AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") - set(ENABLE_LAPACK ON) + set(SUNDIALS_ENABLE_LAPACK ON) set(BLA_VENDOR OpenBLAS) else() - set(ENABLE_LAPACK OFF) + set(SUNDIALS_ENABLE_LAPACK OFF) endif() # fmt build options From 9a3732c658a4c2bc28b2c3ccdd5758b8b11607ae Mon Sep 17 00:00:00 2001 From: Bryan Weber Date: Sun, 2 Aug 2026 20:54:05 -0400 Subject: [PATCH 8/8] remove submodule recursive checkout for pyodide build --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1b0b86ae4a..e35b35c0b7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -620,7 +620,6 @@ jobs: - uses: actions/checkout@v7 name: Checkout the repository with: - submodules: recursive persist-credentials: false - name: Set up Pixi uses: prefix-dev/setup-pixi@a09b6247153796b190642a2b53fac4241043cf6f # v0.10.0