Merge "Add options for development bindep install"
This commit is contained in:
commit
f3302dcee3
@ -1389,6 +1389,35 @@ function zypper_install {
|
|||||||
zypper --non-interactive install --auto-agree-with-licenses --no-recommends "$@"
|
zypper --non-interactive install --auto-agree-with-licenses --no-recommends "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run bindep and install packages it outputs
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# install_bindep <path-to-bindep.txt> [profile,profile]
|
||||||
|
#
|
||||||
|
# Note unlike the bindep command itself, profile(s) specified should
|
||||||
|
# be a single, comma-separated string, no spaces.
|
||||||
|
function install_bindep {
|
||||||
|
local file=$1
|
||||||
|
local profiles=${2:-""}
|
||||||
|
local pkgs
|
||||||
|
|
||||||
|
if [[ ! -f $file ]]; then
|
||||||
|
die $LINENO "Can not find bindep file: $file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# converting here makes it much easier to work with passing
|
||||||
|
# arguments
|
||||||
|
profiles=${profiles/,/ /}
|
||||||
|
|
||||||
|
# Note bindep returns 1 when packages need to be installed, so we
|
||||||
|
# have to ignore it's return for "-e"
|
||||||
|
pkgs=$($DEST/bindep-venv/bin/bindep -b --file $file $profiles || true)
|
||||||
|
|
||||||
|
if [[ -n "${pkgs}" ]]; then
|
||||||
|
install_package ${pkgs}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function write_user_unit_file {
|
function write_user_unit_file {
|
||||||
local service=$1
|
local service=$1
|
||||||
local command="$2"
|
local command="$2"
|
||||||
|
67
inc/python
67
inc/python
@ -428,7 +428,14 @@ function setup_lib {
|
|||||||
# another project.
|
# another project.
|
||||||
#
|
#
|
||||||
# use this for non namespaced libraries
|
# use this for non namespaced libraries
|
||||||
|
#
|
||||||
|
# setup_dev_lib [-bindep] <name>
|
||||||
function setup_dev_lib {
|
function setup_dev_lib {
|
||||||
|
local bindep
|
||||||
|
if [[ $1 == -bindep* ]]; then
|
||||||
|
bindep="${1}"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
local name=$1
|
local name=$1
|
||||||
local dir=${GITDIR[$name]}
|
local dir=${GITDIR[$name]}
|
||||||
if python3_enabled; then
|
if python3_enabled; then
|
||||||
@ -438,10 +445,10 @@ function setup_dev_lib {
|
|||||||
# of Python.
|
# of Python.
|
||||||
echo "Installing $name again without Python 3 enabled"
|
echo "Installing $name again without Python 3 enabled"
|
||||||
USE_PYTHON3=False
|
USE_PYTHON3=False
|
||||||
setup_develop $dir
|
setup_develop $bindep $dir
|
||||||
USE_PYTHON3=True
|
USE_PYTHON3=True
|
||||||
fi
|
fi
|
||||||
setup_develop $dir
|
setup_develop $bindep $dir
|
||||||
}
|
}
|
||||||
|
|
||||||
# this should be used if you want to install globally, all libraries should
|
# this should be used if you want to install globally, all libraries should
|
||||||
@ -452,11 +459,17 @@ function setup_dev_lib {
|
|||||||
# extras: comma-separated list of optional dependencies to install
|
# extras: comma-separated list of optional dependencies to install
|
||||||
# (e.g., ldap,memcache).
|
# (e.g., ldap,memcache).
|
||||||
# See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
# See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
||||||
|
# bindep: Set "-bindep" as first argument to install bindep.txt packages
|
||||||
# The command is like "pip install <project_dir>[<extras>]"
|
# The command is like "pip install <project_dir>[<extras>]"
|
||||||
function setup_install {
|
function setup_install {
|
||||||
|
local bindep
|
||||||
|
if [[ $1 == -bindep* ]]; then
|
||||||
|
bindep="${1}"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
local project_dir=$1
|
local project_dir=$1
|
||||||
local extras=$2
|
local extras=$2
|
||||||
_setup_package_with_constraints_edit $project_dir "" $extras
|
_setup_package_with_constraints_edit $bindep $project_dir "" $extras
|
||||||
}
|
}
|
||||||
|
|
||||||
# this should be used for projects which run services, like all services
|
# this should be used for projects which run services, like all services
|
||||||
@ -468,9 +481,14 @@ function setup_install {
|
|||||||
# See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
# See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
||||||
# The command is like "pip install -e <project_dir>[<extras>]"
|
# The command is like "pip install -e <project_dir>[<extras>]"
|
||||||
function setup_develop {
|
function setup_develop {
|
||||||
|
local bindep
|
||||||
|
if [[ $1 == -bindep* ]]; then
|
||||||
|
bindep="${1}"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
local project_dir=$1
|
local project_dir=$1
|
||||||
local extras=$2
|
local extras=$2
|
||||||
_setup_package_with_constraints_edit $project_dir -e $extras
|
_setup_package_with_constraints_edit $bindep $project_dir -e $extras
|
||||||
}
|
}
|
||||||
|
|
||||||
# ``pip install -e`` the package, which processes the dependencies
|
# ``pip install -e`` the package, which processes the dependencies
|
||||||
@ -489,6 +507,11 @@ function setup_develop {
|
|||||||
# See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
# See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
||||||
# The command is like "pip install <flags> <project_dir>[<extras>]"
|
# The command is like "pip install <flags> <project_dir>[<extras>]"
|
||||||
function _setup_package_with_constraints_edit {
|
function _setup_package_with_constraints_edit {
|
||||||
|
local bindep
|
||||||
|
if [[ $1 == -bindep* ]]; then
|
||||||
|
bindep="${1}"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
local project_dir=$1
|
local project_dir=$1
|
||||||
local flags=$2
|
local flags=$2
|
||||||
local extras=$3
|
local extras=$3
|
||||||
@ -509,7 +532,7 @@ function _setup_package_with_constraints_edit {
|
|||||||
"$flags file://$project_dir#egg=$name"
|
"$flags file://$project_dir#egg=$name"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
setup_package $project_dir "$flags" $extras
|
setup_package $bindep $project_dir "$flags" $extras
|
||||||
|
|
||||||
# If this project is in LIBS_FROM_GIT, verify it was actually installed
|
# If this project is in LIBS_FROM_GIT, verify it was actually installed
|
||||||
# correctly. This helps catch errors caused by constraints mismatches.
|
# correctly. This helps catch errors caused by constraints mismatches.
|
||||||
@ -521,17 +544,30 @@ function _setup_package_with_constraints_edit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ``pip install -e`` the package, which processes the dependencies
|
# ``pip install -e`` the package, which processes the dependencies
|
||||||
# using pip before running `setup.py develop`
|
# using pip before running `setup.py develop`. The command is like
|
||||||
|
# "pip install <flags> <project_dir>[<extras>]"
|
||||||
#
|
#
|
||||||
# Uses globals ``STACK_USER``
|
# Uses globals ``STACK_USER``
|
||||||
# setup_package project_dir [flags] [extras]
|
#
|
||||||
# project_dir: directory of project repo (e.g., /opt/stack/keystone)
|
# Usage:
|
||||||
# flags: pip CLI options/flags
|
# setup_package [-bindep[=profile,profile]] <project_dir> <flags> [extras]
|
||||||
# extras: comma-separated list of optional dependencies to install
|
#
|
||||||
# (e.g., ldap,memcache).
|
# -bindep : Use bindep to install dependencies; select extra profiles
|
||||||
# See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
# as comma separated arguments after "="
|
||||||
# The command is like "pip install <flags> <project_dir>[<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 https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements
|
||||||
function setup_package {
|
function setup_package {
|
||||||
|
local bindep=0
|
||||||
|
local bindep_flag=""
|
||||||
|
local bindep_profiles=""
|
||||||
|
if [[ $1 == -bindep* ]]; then
|
||||||
|
bindep=1
|
||||||
|
IFS="=" read bindep_flag bindep_profiles <<< ${1}
|
||||||
|
shift
|
||||||
|
fi
|
||||||
local project_dir=$1
|
local project_dir=$1
|
||||||
local flags=$2
|
local flags=$2
|
||||||
local extras=$3
|
local extras=$3
|
||||||
@ -547,6 +583,11 @@ function setup_package {
|
|||||||
extras="[$extras]"
|
extras="[$extras]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# install any bindep packages
|
||||||
|
if [[ $bindep == 1 ]]; then
|
||||||
|
install_bindep $project_dir/bindep.txt $bindep_profiles
|
||||||
|
fi
|
||||||
|
|
||||||
pip_install $flags "$project_dir$extras"
|
pip_install $flags "$project_dir$extras"
|
||||||
# ensure that further actions can do things like setup.py sdist
|
# ensure that further actions can do things like setup.py sdist
|
||||||
if [[ "$flags" == "-e" ]]; then
|
if [[ "$flags" == "-e" ]]; then
|
||||||
|
5
stack.sh
5
stack.sh
@ -801,6 +801,11 @@ fi
|
|||||||
# Install required infra support libraries
|
# Install required infra support libraries
|
||||||
install_infra
|
install_infra
|
||||||
|
|
||||||
|
# Install bindep
|
||||||
|
$VIRTUALENV_CMD $DEST/bindep-venv
|
||||||
|
# TODO(ianw) : optionally install from zuul checkout?
|
||||||
|
$DEST/bindep-venv/bin/pip install bindep
|
||||||
|
|
||||||
# Extras Pre-install
|
# Extras Pre-install
|
||||||
# ------------------
|
# ------------------
|
||||||
# Phase: pre-install
|
# Phase: pre-install
|
||||||
|
7
stackrc
7
stackrc
@ -143,6 +143,13 @@ export PYTHON3_VERSION=${PYTHON3_VERSION:-${_DEFAULT_PYTHON3_VERSION:-3.5}}
|
|||||||
_DEFAULT_PYTHON2_VERSION="$(_get_python_version python2)"
|
_DEFAULT_PYTHON2_VERSION="$(_get_python_version python2)"
|
||||||
export PYTHON2_VERSION=${PYTHON2_VERSION:-${_DEFAULT_PYTHON2_VERSION:-2.7}}
|
export PYTHON2_VERSION=${PYTHON2_VERSION:-${_DEFAULT_PYTHON2_VERSION:-2.7}}
|
||||||
|
|
||||||
|
# Create a virtualenv with this
|
||||||
|
if [[ ${USE_PYTHON3} == True ]]; then
|
||||||
|
export VIRTUALENV_CMD="python3 -m venv"
|
||||||
|
else
|
||||||
|
export VIRTUALENV_CMD="virtualenv "
|
||||||
|
fi
|
||||||
|
|
||||||
# allow local overrides of env variables, including repo config
|
# allow local overrides of env variables, including repo config
|
||||||
if [[ -f $RC_DIR/localrc ]]; then
|
if [[ -f $RC_DIR/localrc ]]; then
|
||||||
# Old-style user-supplied config
|
# Old-style user-supplied config
|
||||||
|
Loading…
Reference in New Issue
Block a user