unmanylinuxize.sh
Downloads a pre-built manylinux wheel from PyPI, an external wheel index, or a direct URL, and patches its RPATH and metadata to make it compatible with the DRAC software stack.
Build from source when possible
Prefer building from source using build_wheel.sh when possible to benefit from optimization and consistent library linkage.
Packages distributed as binary wheels often carry manylinux tags in their filenames. Out of the box, these wheels are typically incompatible with our software stack because libraries reside in custom CVMFS paths rather than standard system directories.
unmanylinuxize.sh downloads the wheel, patches RPATHs using setrpaths, applies optional package-specific patch commands, renames the manylinux platform tag to linux_x86_64, and appends the +computecanada local version tag.
Usage
Usage: unmanylinuxize.sh
--package <package name>
[--version <version>]
[--python <comma separated list of python versions>]
[--add_path <rpath>]
[--add_origin]
[--find_links https://index.url | --url https://direct.url.to.wheel.whl]
Options
| Option | Description |
|---|---|
--package <name> |
Python package name (required unless --url is specified). |
--version <version> |
Package version to download (defaults to latest if omitted). |
--python <versions> |
Comma-separated list of Python versions to download for. Defaults to all active Python versions in the current StdEnv. |
--add_path <rpath> |
Additional directory path(s) to append to the RPATH using setrpaths --add_path <rpath> --any_interpreter. |
--add_origin |
Flag to add $ORIGIN to the RPATH via setrpaths --add_origin. |
--find_links <url> |
Custom index URL to search for wheels (sets PIP_FIND_LINKS). |
--url <url> |
Direct URL to download a specific .whl file using wget. |
Standard Environment & Behavior
- StdEnv 2026 (
2026): Excludes Python versions <=3.13, downloading for Python 3.14+. - StdEnv 2023 (
2023): Excludes Python versions <=3.10, downloading for Python 3.11, 3.12, and 3.13. - Pure Python & ABI3 Early Exit: If a downloaded wheel is
py3-none-any,py2.py3-none-any, or ABI3 compatible (cp*-abi3), downloading terminates after the first Python version since the artifact is compatible across all versions. - Configuration Recipes: Sources configuration recipes from
config/(config/<package>-<version>.shorconfig/<package>.sh), executing any definedPATCH_WHEEL_COMMANDS.
Examples
Download and patch specific version
$ bash unmanylinuxize.sh --package sktime --version 0.21.1
Specific Python version
$ bash unmanylinuxize.sh --package sktime --version 0.21.1 --python 3.11
Add specific library RPATH
Preload required modules and add library directories to RPATH:
$ module load cuda/12 cudnn/9
$ bash unmanylinuxize.sh --package open3d --add_path $EBROOTCUDACORE/lib/:$EBROOTCUDNN/lib
Add $ORIGIN to RPATH
Useful for wheels that bundle shared libraries in internal directories and locate them relative to $ORIGIN:
$ bash unmanylinuxize.sh --package mypkg --version 1.0.0 --add_origin
Download from alternative index
$ bash unmanylinuxize.sh --package cupy-cuda12x --find_links https://pypi.nvidia.com
Download from direct URL
$ bash unmanylinuxize.sh --url https://github.com/example/pkg/releases/download/v1.0.0/pkg-1.0.0-cp311-cp311-manylinux2014_x86_64.whl