| #!/usr/bin/env bash |
| |
| # **install_pip.sh** |
| |
| # install_pip.sh [--pip-version <version>] [--use-get-pip] [--setuptools] [--force] |
| # |
| # Update pip and friends to a known common version |
| |
| # Assumptions: |
| # - currently we try to leave the system setuptools alone, install |
| # the system package if it is not already present |
| # - update pip to $INSTALL_PIP_VERSION |
| |
| # Keep track of the current directory |
| TOOLS_DIR=$(cd $(dirname "$0") && pwd) |
| TOP_DIR=`cd $TOOLS_DIR/..; pwd` |
| |
| # Change dir to top of devstack |
| cd $TOP_DIR |
| |
| # Import common functions |
| source $TOP_DIR/functions |
| |
| FILES=$TOP_DIR/files |
| |
| # Handle arguments |
| |
| INSTALL_PIP_VERSION=${INSTALL_PIP_VERSION:-"1.4"} |
| while [[ -n "$1" ]]; do |
| case $1 in |
| --force) |
| FORCE=1 |
| ;; |
| --pip-version) |
| INSTALL_PIP_VERSION="$2" |
| shift |
| ;; |
| --setuptools) |
| SETUPTOOLS=1 |
| ;; |
| --use-get-pip) |
| USE_GET_PIP=1; |
| ;; |
| esac |
| shift |
| done |
| |
| SETUPTOOLS_EZ_SETUP_URL=https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py |
| PIP_GET_PIP_URL=https://raw.github.com/pypa/pip/master/contrib/get-pip.py |
| PIP_TAR_URL=https://pypi.python.org/packages/source/p/pip/pip-$INSTALL_PIP_VERSION.tar.gz |
| |
| GetDistro |
| echo "Distro: $DISTRO" |
| |
| function get_versions() { |
| PIP=$(which pip 2>/dev/null || which pip-python 2>/dev/null) |
| if [[ -n $PIP ]]; then |
| DISTRIBUTE_VERSION=$($PIP freeze | grep 'distribute==') |
| SETUPTOOLS_VERSION=$($PIP freeze | grep 'setuptools==') |
| PIP_VERSION=$($PIP --version | awk '{ print $2}') |
| echo "pip: $PIP_VERSION setuptools: $SETUPTOOLS_VERSION distribute: $DISTRIBUTE_VERSION" |
| fi |
| } |
| |
| function setuptools_ez_setup() { |
| if [[ ! -r $FILES/ez_setup.py ]]; then |
| (cd $FILES; \ |
| curl -OR $SETUPTOOLS_EZ_SETUP_URL; \ |
| ) |
| fi |
| sudo python $FILES/ez_setup.py |
| } |
| |
| function install_get_pip() { |
| if [[ ! -r $FILES/get-pip.py ]]; then |
| (cd $FILES; \ |
| curl $PIP_GET_PIP_URL; \ |
| ) |
| fi |
| sudo python $FILES/get-pip.py |
| } |
| |
| function install_pip_tarball() { |
| (cd $FILES; \ |
| curl -O $PIP_TAR_URL; \ |
| tar xvfz pip-$INSTALL_PIP_VERSION.tar.gz; \ |
| cd pip-$INSTALL_PIP_VERSION; \ |
| sudo python setup.py install; \ |
| ) |
| } |
| |
| # Show starting versions |
| get_versions |
| |
| # Do setuptools |
| if [[ -n "$SETUPTOOLS" ]]; then |
| # We want it from source |
| uninstall_package python-setuptools |
| setuptools_ez_setup |
| else |
| # See about installing the distro setuptools |
| if ! python -c "import setuptools"; then |
| install_package python-setuptools |
| fi |
| fi |
| |
| # Do pip |
| if [[ -z $PIP || "$PIP_VERSION" != "$INSTALL_PIP_VERSION" || -n $FORCE ]]; then |
| |
| # Eradicate any and all system packages |
| uninstall_package python-pip |
| |
| if [[ -n "$USE_GET_PIP" ]]; then |
| install_get_pip |
| else |
| install_pip_tarball |
| fi |
| |
| get_versions |
| fi |