| #!/bin/bash |
| # Copyright 2020 The IREE Authors |
| # |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| # Script to do ad-hoc builds for all python versions in a dockcross manylinux |
| # container. Mostly, there are CI scripts and actions that do this, but they |
| # generally are not friendly for running directly, and sometimes you just |
| # want to be able to build a binary without balancing the world. This script |
| # is for such times. |
| # |
| # Typical usage: |
| # ./build_tools/python_deploy/manylinux_foreach_py.sh \ |
| # ./llvm-projects/iree-compiler-api/build_tools/build_python_wheels.sh |
| set -eu -o errtrace |
| |
| this_dir="$(cd $(dirname $0) && pwd)" |
| script_name="$(basename $0)" |
| dockcross_image="manylinux2014-x64" |
| python_versions="cp37-cp37m cp38-cp38 cp39-cp39" |
| |
| function run_on_host() { |
| echo "Running on host" |
| "$this_dir/setup_dockcross.sh" $dockcross_image |
| |
| echo "Running in docker..." |
| "$this_dir/$dockcross_image" \ |
| --args "-v $this_dir:/python_deploy -e __MANYLINUX_BUILD_WHEELS_IN_DOCKER=1 -e MANYLINUX_AUDITWHEEL_REPAIR=1" \ |
| -- bash /python_deploy/$script_name "$@" |
| } |
| |
| function run_in_docker() { |
| local script="$1" |
| shift |
| echo "Running in docker" |
| local orig_path="$PATH" |
| local script_path="/work/$script" |
| for python_version in $python_versions; do |
| python_dir="/opt/python/$python_version" |
| if ! [ -x "$python_dir/bin/python" ]; then |
| echo "ERROR: Could not find python: $python_dir (skipping)" |
| continue |
| fi |
| export PATH=$python_dir/bin:$orig_path |
| # CMake has trouble with manylinux versions of python, so set some env |
| # vars. |
| echo "Running $script_path $@" |
| "$script_path" "$@" |
| done |
| } |
| |
| # Trampoline to the docker container if running on the host. |
| if [ -z "${__MANYLINUX_BUILD_WHEELS_IN_DOCKER-}" ]; then |
| run_on_host "$@" |
| else |
| run_in_docker "$@" |
| fi |