Skip to content

Migrate build system to scikit-build-core#83

Merged
keithlostracco merged 1 commit into
mainfrom
phase-1/scikit-build-core
May 26, 2026
Merged

Migrate build system to scikit-build-core#83
keithlostracco merged 1 commit into
mainfrom
phase-1/scikit-build-core

Conversation

@keithlostracco
Copy link
Copy Markdown
Contributor

@keithlostracco keithlostracco commented May 26, 2026

Summary

  • Replace setuptools/manual wheel building with scikit-build-core + pip-fetched nanobind
  • Remove hardcoded compiler paths from CMakeLists.txt, enable proper multi-Python builds
  • Eliminate vcpkg dependency (GTest now via FetchContent, guarded behind SKBUILD)
  • Single version source in pyproject.toml (0.12.0.dev0) with importlib.metadata in init.py
  • uv config for CUDA-enabled PyTorch from pytorch.org index
  • Move examples to top-level examples/ directory
  • Remove old packaging infrastructure (package/, build.bat, install/, nanobind submodule)

Dev workflow

uv venv --python 3.12
uv sync --extra examples

Test plan

  • uv sync --extra examples builds from source and installs CUDA torch
  • import touchpy works, version shows 0.12.0.dev0
  • Examples run (01_load_comp_basic.py, 06_tops.py with torch)
  • CI builds across Python 3.9-3.14 (Phase 2)

Replace the setuptools/manual wheel building pipeline with scikit-build-core
and pip-fetched nanobind. This enables proper multi-Python version builds via
cibuildwheel (Phase 2) and eliminates the vcpkg dependency.

Changes:
- New root pyproject.toml with scikit-build-core backend
- CMakeLists.txt: removed hardcoded compiler paths, nanobind via find_package,
  install() directives for extension + DLLs, GTest via FetchContent (guarded
  behind SKBUILD)
- Single version source in pyproject.toml (0.12.0.dev0), read via
  importlib.metadata in __init__.py
- uv config for CUDA-enabled PyTorch from pytorch.org index
- Simplified CMakePresets.json for local dev (no vcpkg toolchain)
- Moved examples to top-level examples/ directory

Removed:
- package/ directory (setup.py, build_wheels.py, build_package.bat, docs, pyd_files)
- build.bat, vcpkg-configuration.json, CMakePresets templates
- external/nanobind submodule (now pip-fetched as build dependency)
- install/ directory (modules, docs, stubs, internal_examples)
@keithlostracco keithlostracco merged commit 2ed82c2 into main May 26, 2026
@keithlostracco keithlostracco deleted the phase-1/scikit-build-core branch May 26, 2026 00:18
keithlostracco added a commit that referenced this pull request May 27, 2026
Replace the setuptools/manual wheel building pipeline with scikit-build-core
and pip-fetched nanobind. This enables proper multi-Python version builds via
cibuildwheel (Phase 2) and eliminates the vcpkg dependency.

Changes:
- New root pyproject.toml with scikit-build-core backend
- CMakeLists.txt: removed hardcoded compiler paths, nanobind via find_package,
  install() directives for extension + DLLs, GTest via FetchContent (guarded
  behind SKBUILD)
- Single version source in pyproject.toml (0.12.0.dev0), read via
  importlib.metadata in __init__.py
- uv config for CUDA-enabled PyTorch from pytorch.org index
- Simplified CMakePresets.json for local dev (no vcpkg toolchain)
- Moved examples to top-level examples/ directory

Removed:
- package/ directory (setup.py, build_wheels.py, build_package.bat, docs, pyd_files)
- build.bat, vcpkg-configuration.json, CMakePresets templates
- external/nanobind submodule (now pip-fetched as build dependency)
- install/ directory (modules, docs, stubs, internal_examples)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant