mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
80 lines
2.2 KiB
Plaintext
Executable File
80 lines
2.2 KiB
Plaintext
Executable File
set +e
|
|
runtime-fixer runtime.txt
|
|
PYTHON_VERSION=$(cat runtime.txt)
|
|
|
|
# Install Python.
|
|
if [ -f .heroku/python-version ]; then
|
|
if [ ! $(cat .heroku/python-version) = $PYTHON_VERSION ]; then
|
|
bpwatch start uninstall_python
|
|
puts-step "Found $(cat .heroku/python-version), removing"
|
|
rm -fr .heroku/python
|
|
bpwatch stop uninstall_python
|
|
else
|
|
SKIP_INSTALL=1
|
|
fi
|
|
fi
|
|
|
|
if [ ! $STACK = $CACHED_PYTHON_STACK ]; then
|
|
bpwatch start uninstall_python
|
|
rm -fr .heroku/python .heroku/python-stack .heroku/vendor
|
|
unset SKIP_INSTALL
|
|
bpwatch stop uninstall_python
|
|
fi
|
|
|
|
|
|
if [ ! "$SKIP_INSTALL" ]; then
|
|
bpwatch start install_python
|
|
puts-step "Installing $PYTHON_VERSION"
|
|
|
|
# Prepare destination directory.
|
|
mkdir -p .heroku/python
|
|
|
|
curl https://lang-python.s3.amazonaws.com/$STACK/runtimes/$PYTHON_VERSION.tar.gz -s | tar zxv -C .heroku/python &> /dev/null
|
|
if [[ $? != 0 ]] ; then
|
|
puts-warn "Requested runtime ($PYTHON_VERSION) is not available for this stack ($STACK)."
|
|
puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support"
|
|
exit 1
|
|
fi
|
|
|
|
bpwatch stop install_python
|
|
|
|
# Record for future reference.
|
|
echo $PYTHON_VERSION > .heroku/python-version
|
|
echo $STACK > .heroku/python-stack
|
|
FRESH_PYTHON=true
|
|
|
|
hash -r
|
|
fi
|
|
|
|
# If Pip isn't up to date:
|
|
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
|
|
WORKING_DIR=$(pwd)
|
|
|
|
bpwatch start prepare_environment
|
|
|
|
TMPTARDIR=$(mktemp -d)
|
|
trap "rm -rf $TMPTARDIR" RETURN
|
|
|
|
bpwatch start install_setuptools
|
|
# Prepare it for the real world
|
|
# puts-step "Installing Setuptools ($SETUPTOOLS_VERSION)"
|
|
tar zxf $ROOT_DIR/vendor/setuptools-$SETUPTOOLS_VERSION.tar.gz -C $TMPTARDIR
|
|
cd $TMPTARDIR/setuptools-$SETUPTOOLS_VERSION/
|
|
python setup.py install &> /dev/null
|
|
cd $WORKING_DIR
|
|
bpwatch stop install_setuptoools
|
|
|
|
bpwatch start install_pip
|
|
# puts-step "Installing Pip ($PIP_VERSION)"
|
|
tar zxf $ROOT_DIR/vendor/pip-$PIP_VERSION.tar.gz -C $TMPTARDIR
|
|
cd $TMPTARDIR/pip-$PIP_VERSION/
|
|
python setup.py install &> /dev/null
|
|
cd $WORKING_DIR
|
|
|
|
bpwatch stop install_pip
|
|
bpwatch stop prepare_environment
|
|
fi
|
|
|
|
set -e
|
|
hash -r
|