build!(pypi): scikit-buil build system for sdist dirstibution on pypi with ci testing and releases - #22
Open
HarlanHeilman wants to merge 12 commits into
Open
build!(pypi): scikit-buil build system for sdist dirstibution on pypi with ci testing and releases#22HarlanHeilman wants to merge 12 commits into
HarlanHeilman wants to merge 12 commits into
Conversation
Remove the pybind11 submodule in favor of build-time pybind11, fix CMake install and CUDA arch handling, and document conda-forge versus PyPI.
Add CyRSoXSHDF5 ExternalProject static build when CYRSOXS_FETCH_HDF5 is on, wire Threads and build deps, drop libhdf5-dev from CI, and refresh docs, pyproject groups, and uv.lock.
Add authors list, refresh description, and set license text to NIST.
Include ipykernel in dependency-groups.jupyter and refresh uv.lock.
Use --whole-archive (Linux) and -force_load (macOS) for bundled static HDF5 so symbols like H5Rcreate_object are not dropped. Set BUILD_RPATH and INSTALL_RPATH when using system shared HDF5 to avoid wrong libhdf5 at import time. Document behavior in INSTALL.md.
Include instructions for installing cyrsoxs via pip, both from wheels and source. Document the installation of dependencies for the tutorial notebook using the jupyter extra.
Author
|
Went ahead and merged in #18 such that the release CI builds wheels for python versions 3.9-3.12 while also releasing the sdist. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
build,cipybind11), and adjust CMake/HDF5 so Ubuntu builds do not depend on a large prebuilt HDF5 binary.What changed
Build & distribution
pybind11supplied via the build backend / PyPI./notebook/CyRSoXS.ipynbare included in a dependency group locally sync usinguv sync --group jupyteror install directly from pypi withuv pip install cyrsoxs[jupyter]or using equivalent pip tooling.CYRSOXS_FETCH_HDF5and related CMake options) to avoid assuming a heavyweight prebuilt HDF5 artifact.So now development of new features just requires cloning the repo, and then running
This builds a virtual environment with cyrsoxs constructed using the pybind and scikit build systems to run the updated Cmake's. This will also automatically install or fetch HDF5.
CI & release
uv sync --all-extras,uv build, pytest, then a wheel install + import smoke in a clean venv.v*tags, build an sdist withuv build --sdistand publish withpypa/gh-action-pypi-publish(trusted publishing / OIDC).New releases on pypi can be made automatically by making a new tag starting with
v*, e.g.v1.2.1and building a release of the project. Note that the reset of the versioning within the project may not be up to data. For example, the version in thepyproject.tomlwill need to be updated, and the CyRSoXS print statement may not use the right version number or hash. This print could be updated to center around tags instead of the individual commit hash.Validation
cyrsoxs-tempusing test tagv1.2.1; confirmed installable viapipfrom PyPI.Note: I did not change the package versions tov1.2.1so PyPi still reflects the current version.uv syncsucceeded locally; PyPI install verified with:Post-merge cleanup
Remove the v1.2.1 test tag (and any fork-only PyPI project naming such as cyrsoxs-temp) once maintainers confirm publishing against the canonical PyPI project.
Maintainer checklist
Configure trusted publisher for the canonical repository in PyPI: Account → Publishing.
Align repository / organization variables and secrets with upstream expectations (anything beyond OIDC, if added later).
Review/update the conda feedstock for assumptions about external/pybind11 / submodule checkout; ensure recipes match the new CMake flags and PyPI-provided pybind11. Initial review suggests it may be fine as-is, but this should be confirmed by feedstock maintainers.