diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index be35ece..afcaf51 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -10,6 +10,9 @@ on: types: - published +env: + FORCE_COLOR: 3 + jobs: build_sdist: name: Build SDist @@ -36,7 +39,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [windows-latest] steps: - uses: actions/checkout@v3 @@ -45,11 +48,20 @@ jobs: - uses: pypa/cibuildwheel@v2.13.0 env: + CIBW_BUILD: cp311-* cp312-* + # Cross-compile on macOS CIBW_ARCHS_MACOS: x86_64 arm64 + # Cross-compile on Win + CIBW_ARCHS_WINDOWS: ARM64 + # Temporary: use pre-release Python 3.12 for stable ABI builds CIBW_PRERELEASE_PYTHONS: True + + # Debugging + SKBUILD_CMAKE_VERBOSE: 1 + SKBUILD_LOGGING_LEVEL: DEBUG - name: Verify clean directory run: git diff --exit-code diff --git a/CMakeLists.txt b/CMakeLists.txt index af8ce44..f0143d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,14 +25,44 @@ if (NOT SKBUILD) after editing C++ files.") endif() +include(CMakePrintHelpers) + +message(STATUS "PYTHONPATH: $ENV{PYTHONPATH}") +message(STATUS "_PYTHON_SYSCONFIGDATA_NAME: $ENV{_PYTHON_SYSCONFIGDATA_NAME}") + +execute_process( + COMMAND "${Python_EXECUTABLE}" "-c" + "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" + OUTPUT_VARIABLE EXT_SUFFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) +cmake_print_variables(EXT_SUFFIX) + # Try to import all Python components potentially needed by nanobind find_package(Python 3.8 - REQUIRED COMPONENTS Interpreter Development.Module - OPTIONAL_COMPONENTS Development.SABIModule) + REQUIRED COMPONENTS Interpreter Development.Module ${SKBUILD_SABI_COMPONENT}) # Import nanobind through CMake's find_package mechanism find_package(nanobind CONFIG REQUIRED) +execute_process( + COMMAND "${Python_EXECUTABLE}" "-c" + "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" + OUTPUT_VARIABLE EXT_SUFFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) +cmake_print_variables(EXT_SUFFIX) + +execute_process( + COMMAND "${Python_EXECUTABLE}" "-c" + "import sysconfig; print(sysconfig.get_config_var('SOABI'))" + OUTPUT_VARIABLE SOABI + OUTPUT_STRIP_TRAILING_WHITESPACE) +cmake_print_variables(SOABI) + +message(STATUS "PYTHONPATH: $ENV{PYTHONPATH}") +message(STATUS "_PYTHON_SYSCONFIGDATA_NAME: $ENV{_PYTHON_SYSCONFIGDATA_NAME}") + +cmake_print_variables(Python_SOABI SKBUILD_SOABI NB_SUFFIX) + # We are now ready to compile the actual extension module nanobind_add_module( # Name of the extension diff --git a/pyproject.toml b/pyproject.toml index ee0d3ac..8b76856 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,7 @@ [build-system] -requires = ["scikit-build-core >=0.4.3", "nanobind >=1.3.2"] +requires = [ + "scikit-build-core @ git+https://github.com/scikit-build/scikit-build-core@henryiii/fix/backport327", + "nanobind @ git+https://github.com/wjakob/nanobind@master"] build-backend = "scikit_build_core.build" [project]