diff --git a/inc/python b/inc/python index f4f65fd2e8..35bab6f1e0 100644 --- a/inc/python +++ b/inc/python @@ -242,15 +242,31 @@ function setup_dev_lib { # this should be used if you want to install globally, all libraries should # use this, especially *oslo* ones +# +# setup_install project_dir [extras] +# project_dir: directory of project repo (e.g., /opt/stack/keystone) +# extras: comma-separated list of optional dependencies to install +# (e.g., ldap,memcache). +# See http://docs.openstack.org/developer/pbr/#extra-requirements +# The command is like "pip install []" function setup_install { local project_dir=$1 - setup_package_with_constraints_edit $project_dir + local extras=$2 + _setup_package_with_constraints_edit $project_dir "" $extras } # this should be used for projects which run services, like all services +# +# setup_develop project_dir [extras] +# project_dir: directory of project repo (e.g., /opt/stack/keystone) +# extras: comma-separated list of optional dependencies to install +# (e.g., ldap,memcache). +# See http://docs.openstack.org/developer/pbr/#extra-requirements +# The command is like "pip install -e []" function setup_develop { local project_dir=$1 - setup_package_with_constraints_edit $project_dir -e + local extras=$2 + _setup_package_with_constraints_edit $project_dir -e $extras } # determine if a project as specified by directory is in @@ -272,10 +288,17 @@ function is_in_projects_txt { # install this package we get the from source version. # # Uses globals ``REQUIREMENTS_DIR`` -# setup_develop directory -function setup_package_with_constraints_edit { +# _setup_package_with_constraints_edit project_dir flags [extras] +# project_dir: directory of project repo (e.g., /opt/stack/keystone) +# flags: pip CLI options/flags +# extras: comma-separated list of optional dependencies to install +# (e.g., ldap,memcache). +# See http://docs.openstack.org/developer/pbr/#extra-requirements +# The command is like "pip install []" +function _setup_package_with_constraints_edit { local project_dir=$1 local flags=$2 + local extras=$3 if [ -n "$REQUIREMENTS_DIR" ]; then # Constrain this package to this project directory from here on out. @@ -286,19 +309,38 @@ function setup_package_with_constraints_edit { "$flags file://$project_dir#egg=$name" fi - setup_package $project_dir $flags + setup_package $project_dir "$flags" $extras } # ``pip install -e`` the package, which processes the dependencies # using pip before running `setup.py develop` +# # Uses globals ``STACK_USER`` -# setup_develop_no_requirements_update directory +# setup_package project_dir [flags] [extras] +# project_dir: directory of project repo (e.g., /opt/stack/keystone) +# flags: pip CLI options/flags +# extras: comma-separated list of optional dependencies to install +# (e.g., ldap,memcache). +# See http://docs.openstack.org/developer/pbr/#extra-requirements +# The command is like "pip install []" function setup_package { local project_dir=$1 local flags=$2 + local extras=$3 - pip_install $flags $project_dir + # if the flags variable exists, and it doesn't look like a flag, + # assume it's actually the extras list. + if [[ -n "$flags" && -z "$extras" && ! "$flags" =~ ^-.* ]]; then + extras=$flags + flags="" + fi + + if [[ ! -z "$extras" ]]; then + extras="[$extras]" + fi + + pip_install $flags "$project_dir$extras" # ensure that further actions can do things like setup.py sdist if [[ "$flags" == "-e" ]]; then safe_chown -R $STACK_USER $1/*.egg-info