wheels_builder
Scripts to automate building and managing Python wheels for the Digital Research Alliance of Canada (DRAC) wheelhouse.
Workflow Overview
Building and publishing wheels to the centralized wheelhouse typically follows a three-step workflow:
- Build or Adapt: Compile wheels from source with
build_wheel.sh(or batch build withparbuild_wheel.sh). - Inspect Compatibility: Use
wheel_architecture.shto verify library linkage, glibc compatibility, and detect target microarchitecture. - Deploy: Copy wheels into the appropriate wheelhouse directory and adjust permissions with
cp_wheels.sh.
Documentation
-
build_wheel.sh- Build wheel(s) for a Python package from source across standard Python versions.
-
wheel_architecture.sh- Analyzes wheel contents, checks glibc and library dependencies, and predicts the destination wheelhouse directory.
-
cp_wheels.sh- Copies built wheels to their target location in the CVMFS wheelhouse with proper permissions.
-
parbuild_wheel.sh- Builds multiple packages or versions in parallel across available CPU cores.
-
unmanylinuxize.sh- Downloads pre-built
manylinuxwheels and patches RPATHs and metadata for the DRAC stack.
-
config/<package>.sh- Configuration recipes providing custom hooks and build variables for specific packages.
-
manipulate_wheels.py- Inspects and modifies wheel metadata, requirements, and local tags without rebuilding.
Quickstart
Build a wheel for a specific version
$ bash build_wheel.sh --package <name> --version <version> --verbose 3
Inspect wheel placement
$ bash wheel_architecture.sh <wheel_file>.whl
Deploy to wheelhouse
$ bash cp_wheels.sh --remove --wheel <wheel_file>.whl