asdf-python/bin/install
Paul Swartz a48bcb72bc feat: support patching during install
`python-build` supports a `-p` option to patch Python before installing. In
particular, I use this to apply a patch for OS X Big Sur before installing
older versions of Python.

I'm not super-wedded to this particular implementation: opening this PR for
more discussion.
2020-12-23 11:46:37 -05:00

47 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
set -e
source "$(dirname "$0")/utils.sh"
install_python() {
local install_type=$1
local version=$2
local install_path=$3
if [ "$install_type" != "version" ]; then
echoerr "Cannot install specific ref from source, sorry."
echoerr "For a list of available versions, see \`asdf list-all python\`."
exit 1
fi
install_or_update_python_build
local patch_file=${ASDF_PYTHON_PATCHES_DIRECTORY}/${version}.patch
if [ -f "$patch_file" ]; then
echo "python-build $version $install_path -p < $patch_file"
$(python_build_path) "$version" "$install_path" -p < $patch_file
else
echo "python-build $version $install_path"
$(python_build_path) "$version" "$install_path"
fi
}
install_default_python_packages() {
local packages_file="${ASDF_PYTHON_DEFAULT_PACKAGES_FILE:-$HOME/.default-python-packages}"
if [ ! -f "$packages_file" ]; then return; fi
while read -r name; do
echo -ne "\nInstalling \033[33m${name}\033[39m python package... "
PATH="$ASDF_INSTALL_PATH/bin:$PATH" pip install "$name" > /dev/null 2>&1 && rc=$? || rc=$?
if [[ $rc -eq 0 ]]; then
echo -e "\033[32mSUCCESS\033[39m"
else
echo -e "\033[31mFAIL\033[39m"
fi
done < "$packages_file"
}
ensure_python_build_installed
install_python "$ASDF_INSTALL_TYPE" "$ASDF_INSTALL_VERSION" "$ASDF_INSTALL_PATH"
install_default_python_packages