scikit-build / cmake-python-distributions

This project provides the infrastructure to build CMake Python wheels.
https://cmake-python-distributions.readthedocs.io
Apache License 2.0
111 stars 34 forks source link

Packaging python metadata for downstream #493

Open LecrisUT opened 4 months ago

LecrisUT commented 4 months ago

In Fedora many of the dependencies are auto-detected via %pyproject_buildrequires and sometimes cmake pinning is included in a projects [build-system].

Just to make such packaging smoother it would be nice to have a way to generate only the python metadata (and python-only files) so that can be packaged in cmake. This most likely would require revisiting scikit-build-cli.

On this repo side, there is only 1 requirement, to make sure release candidate are tagged and released close to the release of cmake upstream.

henryiii commented 2 months ago

The fix is to not add cmake to build-system, and maybe specifically filter 'cmake', 'ninja', 'patchelf', and any other PyPI redistrubtions with the auto-detection tool. They are not meant to be distributed outside of PyPI.

Duplicate of #80 and others, though this is more focused on redistributors, which would keep the versions in sync, at least. See my comment on #511.

One other problem with providing these metadata files is that it can cause some systems to add a Python dependency when one isn't needed (Conda-forge's ninja and cmake packages would then require Python, while they don't now), and it can also tie this to one version of Python (it would in Homebrew), when cmake and ninja do not require Python.

LecrisUT commented 2 months ago

Beyond the build-system, my worry is if the python files gain more functionalities like https://github.com/scikit-build/cmake-python-distributions/issues/36 such that it is used beyond the building of python packages.

One other problem with providing these metadata files is that it can cause some systems to add a Python dependency when one isn't needed

Oh good point. On distro packages it is possible to tune the dependencies of each sub-package. I guess you can mimic that behavior by splitting the packages, but that would lead desyncing and other issues.

henryiii commented 2 months ago

Additional functionally will not be added to this package. Scikit-build-core or other packages support additional functionality. This is only a redistribution.

LecrisUT commented 2 months ago

Ok, that's reassuring. Could the relevant feature requests be closed?

LecrisUT commented 2 months ago

Also, maybe adding some notes/warning on the README such that people do not start using/relying on the python files here, and instead use other tools that check the availability of system cmake first