|  | #!/usr/bin/env bash | 
|  | # | 
|  | # **tools/build_venv.sh** - Build a Python Virtual Envirnment | 
|  | # | 
|  | # build_venv.sh venv-path [package [...]] | 
|  | # | 
|  | # Assumes: | 
|  | # - a useful pip is installed | 
|  | # - virtualenv will be installed by pip | 
|  | # - installs basic common prereq packages that require compilation | 
|  | #   to allow quick copying of resulting venv as a baseline | 
|  |  | 
|  |  | 
|  | VENV_DEST=${1:-.venv} | 
|  | shift | 
|  |  | 
|  | MORE_PACKAGES="$@" | 
|  |  | 
|  | # If TOP_DIR is set we're being sourced rather than running stand-alone | 
|  | # or in a sub-shell | 
|  | if [[ -z "$TOP_DIR" ]]; then | 
|  |  | 
|  | set -o errexit | 
|  | set -o nounset | 
|  |  | 
|  | # Keep track of the devstack directory | 
|  | TOP_DIR=$(cd $(dirname "$0")/.. && pwd) | 
|  | FILES=$TOP_DIR/files | 
|  |  | 
|  | # Import common functions | 
|  | source $TOP_DIR/functions | 
|  |  | 
|  | GetDistro | 
|  |  | 
|  | source $TOP_DIR/stackrc | 
|  |  | 
|  | fi | 
|  |  | 
|  | # Build new venv | 
|  | virtualenv $VENV_DEST | 
|  |  | 
|  | # Install modern pip | 
|  | PIP_VIRTUAL_ENV=$VENV_DEST pip_install -U pip | 
|  |  | 
|  | # Install additional packages | 
|  | PIP_VIRTUAL_ENV=$VENV_DEST pip_install ${MORE_PACKAGES} |