Skip to content

Buildsystem overhaul - #316

Merged
clonker merged 13 commits into
mainfrom
buildsystem_overhaul
Mar 29, 2026
Merged

clonker merged 13 commits into
mainfrom
buildsystem_overhaul

Conversation

@clonker

@clonker clonker commented Mar 29, 2026

Copy link
Copy Markdown
Member

No description provided.

clonker added 10 commits March 29, 2026 12:05
Remove the generated _version.py and versioneer dependency.
Version is now derived from git tags via setuptools-scm at build time
and read via importlib.metadata at runtime.
- Replace scikit-build (legacy) + setuptools with scikit-build-core as
  build backend. This fixes broken editable installs and removes the
  need for SETUPTOOLS_ENABLE_FEATURES=legacy-editable.
- Delete setup.py — scikit-build-core is configured entirely via
  pyproject.toml.
- Simplify CMakeLists.txt: remove SKBUILD/non-SKBUILD branching and
  LIBRARY_OUTPUT_DIRECTORY hack. scikit-build-core handles pybind11
  discovery and editable install redirects natively.
- Pre-cythonize eig_qr.pyx to eig_qr.c, replacing scikit-build's
  add_cython_target() with Python_add_library(). This removes Cython
  as a build-time dependency.
- Install destinations now include the full deeptime/ prefix since
  scikit-build-core installs to the wheel root (no cmake_install_dir).
Move the package from deeptime/ to src/deeptime/ to prevent the
source tree from shadowing the installed package during testing.
Update CMakeLists.txt add_subdirectory() paths and install destination
relative path calculations accordingly.
- Add tests.yml: matrix of (ubuntu/macos/windows) x (3.9-3.13),
  with coverage upload on ubuntu/3.12 and a separate C++ test job.
- Add wheels.yml: cibuildwheel on tag push with PyPI trusted
  publishing.
- Remove all Azure Pipelines configuration.
The nox-based test runner existed primarily to work around broken
editable installs with scikit-build (legacy). With scikit-build-core
and src/ layout, the development workflow is simply:

  pip install -e ".[tests,plotting,units]"
  pytest tests/ -vv --pyargs deeptime --doctest-modules

Also remove devtools/cmake/ helper scripts that were only used by
the nox cpp test path (now handled by GitHub Actions directly).
Replace Azure Pipelines build badge with GitHub Actions badge.
Update release checklist to reflect automated wheel building via
GitHub Actions trusted publishing instead of manual Azure Pipelines
+ twine workflow.
Use Development.Module instead of Development (which requires
Development.Embed / static Python library, often unavailable).
Disable editable.rebuild since the auto-rebuild uses system cmake
which may lack proper environment setup from scikit-build-core.
@clonker
clonker force-pushed the buildsystem_overhaul branch from 79f6d0c to 0361870 Compare March 29, 2026 10:58
Catch2 v3.0.1 is missing #include <cstdint> which causes build
failures with newer GCC versions on GitHub Actions runners.
@clonker
clonker force-pushed the buildsystem_overhaul branch from 0361870 to 9725419 Compare March 29, 2026 11:02
clonker added 2 commits March 29, 2026 13:06
Use setup-python's built-in pip cache to avoid re-downloading
torch + CUDA libs (~2GB) on every run.
The pre-cythonized eig_qr.c inlines all scipy types as typedefs —
no scipy headers are needed at compile time. LAPACK function pointers
are resolved at runtime via Cython's import mechanism.

Removes scipy from build-system requires and the scipy.get_include()
call from CMakeLists.txt (which broke with newer scipy that removed
get_include()).
@clonker
clonker merged commit 5851fee into main Mar 29, 2026
16 checks passed
@clonker
clonker deleted the buildsystem_overhaul branch March 29, 2026 11:17
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