#!/bin/bash ######################################################################## # Pull this script and run from an ITK external module root directory # to generate the Linux Python wheels for the external module. # # ======================================================================== # PARAMETERS # # Versions can be restricted by passing them in as arguments to the script # For example, # # scripts/dockcross-manylinux-build-module-wheels.sh cp39 # # =========================================== # ENVIRONMENT VARIABLES # # These variables are set with the `export` bash command before calling the script. # For example, # # export ITK_PACKAGE_VERSION="v5.4.0" # scripts/dockcross-manylinux-build-module-wheels.sh cp39 # # `ITKPYTHONPACKAGE_ORG`: Github organization for fetching ITKPythonPackage build scripts. # # `ITKPYTHONPACKAGE_TAG`: ITKPythonPackage tag for fetching build scripts. # # Additional environment variables may be defined in accompanying build scripts. # ######################################################################## # ----------------------------------------------------------------------- # Script argument parsing # usage() { echo "Usage: dockcross-manylinux-download-cache-and-build-module-wheels [ -h | --help ] show usage [ -c | --cmake_options ] space-delimited string containing CMake options to forward to the module (e.g. \"-DBUILD_TESTING=OFF\") [ -x | --exclude_libs ] semicolon-delimited library names to exclude when repairing wheel (e.g. \"libcuda.so\") [ python_version ] build wheel for a specific python version. (e.g. cp39)" exit 2 } FORWARD_ARGS=("$@") # Store arguments to forward them later PARSED_ARGS=$(getopt -a -n dockcross-manylinux-download-cache-and-build-module-wheels \ -o hc:x: --long help,cmake_options:,exclude_libs: -- "$@") eval set -- "$PARSED_ARGS" while : do case "$1" in -h | --help) usage; break ;; -c | --cmake_options) CMAKE_OPTIONS="$2" ; shift 2 ;; -x | --exclude_libs) EXCLUDE_LIBS="$2" ; shift 2 ;; --) shift; break ;; *) echo "Unexpected option: $1."; usage; break ;; esac done # ----------------------------------------------------------------------- # Download and extract cache echo "Fetching https://raw.githubusercontent.com/${ITKPYTHONPACKAGE_ORG:=InsightSoftwareConsortium}/ITKPythonPackage/${ITKPYTHONPACKAGE_TAG:=v5.4.0}/scripts/dockcross-manylinux-download-cache.sh" curl -L https://raw.githubusercontent.com/${ITKPYTHONPACKAGE_ORG:=InsightSoftwareConsortium}/ITKPythonPackage/${ITKPYTHONPACKAGE_TAG:=v5.4.0}/scripts/dockcross-manylinux-download-cache.sh -O chmod u+x dockcross-manylinux-download-cache.sh ./dockcross-manylinux-download-cache.sh $1 # ----------------------------------------------------------------------- # Build module wheels echo "Building module wheels" set -- "${FORWARD_ARGS[@]}"; # Restore initial argument list ./ITKPythonPackage/scripts/dockcross-manylinux-build-module-wheels.sh "$@"