Skip to main content

Custom PEP517 builder for RAPIDS

Project description

RAPIDS PEP517 build backend

rapids-build-backend is an adapter around PEP517 builders that provides support for key RAPIDS requirements. It currently support scikit-build-core and setuptools as the wrapped builder. The package's primary purpose is to automate the various bits of preprocessing that are typically done to RAPIDS package metadata prior to publishing packages. This includes the following notable changes:

  • Running rapids-dependency-file-generator to get the dependencies for the CUDA version and architecture.
  • Modifying the package name to include a CUDA suffix (e.g. "rmm" -> "rmm-cu11")
  • Updating the git commit embedded in the importable package.

Since some of these modifications are only desirable in certain scenarios (wheel vs conda builds vs editable installs), all of these functions are customizable via the project's configuration in pyproject.toml. In cases where more dynamic customization is sensible, suitable environment variables and config_settings are supported during builds of distributions.

Supported configuration

Any option without a default is required.

Option Definition Type Default Supports dynamic modification
build-backend The wrapped build backend (e.g. setuptools.build_meta) string N
commit-files List of files in which to write the git commit hash list[str] ["<project_name>/GIT_COMMIT"] N
dependencies-file The path to the dependencies.yaml file to use string "dependencies.yaml" Y
disable-cuda If true, CUDA version in build environment is ignored when setting package name and dependencies bool false Y
matrix-entry A ;-separated list of =-delimited key/value pairs string "" Y
requires List of build requirements (in addition to build-system.requires) list[str] [] N

Outstanding questions

  • How should we split up build requirements between build-system and tool.rapids-build-backend? In theory any dependency that doesn't need suffixing could also go into build-system.requires. I think it's easier to teach that all dependencies other than rapids-build-backend itself should to into tool.rapids-build-backend, but I don't know how others feel.

Rejected ideas

  • We could also include the rewrite of VERSION that we use for RAPIDS builds, but this is really more specific to our release process than the general process of building our wheels. I don't think someone building a wheel locally should see the same version as what we produce via CI. If we really wanted we could pull dunamai as a dependency and write a different version here, though.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

rapids_build_backend-0.2.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file rapids_build_backend-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for rapids_build_backend-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5b5e2face6350d6e8e3181829ba3951059b3e17ef8fab005017838bb4b0e415
MD5 5bb9a44a78047accede9c97cdee388aa
BLAKE2b-256 dd6b59a50cb3c59bf3b580f6a055c8a9099619f0e6f7cea08e114629ecb16b3e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page