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 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) 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/interfaces/python_sdist/src/CMakeLists.txt b/interfaces/python_sdist/src/CMakeLists.txt index f344e0e4e7..ae796acd63 100644 --- a/interfaces/python_sdist/src/CMakeLists.txt +++ b/interfaces/python_sdist/src/CMakeLists.txt @@ -10,14 +10,16 @@ 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()` - 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) @@ -30,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 @@ -47,15 +49,17 @@ 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 ) 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 @@ -85,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 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"