#!/usr/bin/env bash set -eou pipefail DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" source "${DIR}/common_utils.sh" # Allow for users to pass PACKAGE_NAME # For use with other packages, i.e. torchvision, etc. PACKAGE_NAME=${PACKAGE_NAME:-torch} pytorch_version="$(get_pytorch_version)" # Refers to the specific package we'd like to promote # i.e. VERSION_SUFFIX='%2Bcu102' # torch-1.8.0+cu102 -> torch-1.8.0 VERSION_SUFFIX=${VERSION_SUFFIX:-} # Refers to the specific platofmr we'd like to promote # i.e. PLATFORM=linux_x86_64 # For domains like torchaudio / torchtext this is to be left blank PLATFORM=${PLATFORM:-} pkgs_to_promote=$(\ curl -fsSL https://download.pytorch.org/whl/torch_stable.html \ | grep "${PACKAGE_NAME}-${pytorch_version}${VERSION_SUFFIX}-" \ | grep "${PLATFORM}" \ | cut -d '"' -f2 ) tmp_dir="$(mktemp -d)" output_tmp_dir="$(mktemp -d)" trap 'rm -rf ${tmp_dir} ${output_tmp_dir}' EXIT pushd "${output_tmp_dir}" # Dry run by default DRY_RUN=${DRY_RUN:-enabled} # On dry run just echo the commands that are meant to be run TWINE_UPLOAD="echo twine upload" if [[ $DRY_RUN = "disabled" ]]; then TWINE_UPLOAD="twine upload" fi for pkg in ${pkgs_to_promote}; do pkg_basename="$(basename "${pkg}")" # Don't attempt to change if manylinux2014 if [[ "${pkg}" != *manylinux2014* ]]; then pkg_basename="$(basename "${pkg//linux/manylinux1}")" fi orig_pkg="${tmp_dir}/${pkg_basename}" ( set -x # Download package, sub out linux for manylinux1 curl -fsSL -o "${orig_pkg}" "https://download.pytorch.org/whl/${pkg}" ) if [[ -n "${VERSION_SUFFIX}" ]]; then OUTPUT_DIR="${output_tmp_dir}" ${DIR}/prep_binary_for_pypi.sh "${orig_pkg}" else mv "${orig_pkg}" "${output_tmp_dir}/" fi ( set -x ${TWINE_UPLOAD} \ --disable-progress-bar \ --non-interactive \ ./*.whl rm -rf ./*.whl ) done