Support editable installation in all cases
An editable installation allows changes to be made to the source code directly, and have those changes applied immediately without having to reinstall. pip install -e /path/to/kolla-ansible Above is currently working only in virtualenv, but there is no reason to not allow in all cases. This is usefull for example when user is building his own docker container with editable kolla-ansible installed from git without virtualenv. Change-Id: I185f7c09c3f026fd6926a26001393f066ff1860d
This commit is contained in:
parent
f49f9909ca
commit
22a6765f5e
@ -22,6 +22,7 @@ function check_environment_coherence {
|
|||||||
local ansible_python_cmdline
|
local ansible_python_cmdline
|
||||||
# NOTE(yoctozepto): may have multiple parts
|
# NOTE(yoctozepto): may have multiple parts
|
||||||
ansible_python_cmdline=${ansible_shebang_line#\#\!}
|
ansible_python_cmdline=${ansible_shebang_line#\#\!}
|
||||||
|
ansible_python_version=$($ansible_python_cmdline -c 'import sys; print(str(sys.version_info[0])+"."+str(sys.version_info[1]))')
|
||||||
|
|
||||||
if ! $ansible_python_cmdline --version &>/dev/null; then
|
if ! $ansible_python_cmdline --version &>/dev/null; then
|
||||||
echo "ERROR: Ansible Python is not functional." >&2
|
echo "ERROR: Ansible Python is not functional." >&2
|
||||||
@ -66,21 +67,38 @@ function check_environment_coherence {
|
|||||||
|
|
||||||
function find_base_dir {
|
function find_base_dir {
|
||||||
local dir_name
|
local dir_name
|
||||||
|
local python_dir
|
||||||
dir_name=$(dirname "$0")
|
dir_name=$(dirname "$0")
|
||||||
# NOTE(yoctozepto): Fix the case where dir_name is a symlink and VIRTUAL_ENV might not be. This
|
# NOTE(yoctozepto): Fix the case where dir_name is a symlink and VIRTUAL_ENV might not be. This
|
||||||
# happens with pyenv-virtualenv, see https://bugs.launchpad.net/kolla-ansible/+bug/1903887
|
# happens with pyenv-virtualenv, see https://bugs.launchpad.net/kolla-ansible/+bug/1903887
|
||||||
dir_name=$(readlink -e "$dir_name")
|
dir_name=$(readlink -e "$dir_name")
|
||||||
|
python_dir="python${ansible_python_version}"
|
||||||
if [ -z "$SNAP" ]; then
|
if [ -z "$SNAP" ]; then
|
||||||
if [[ ${dir_name} == "/usr/bin" ]]; then
|
if [[ ${dir_name} == "/usr/bin" ]]; then
|
||||||
BASEDIR=/usr/share/kolla-ansible
|
if test -f /usr/lib/${python_dir}/*-packages/kolla-ansible.egg-link; then
|
||||||
elif [[ ${dir_name} == "/usr/local/bin" ]]; then
|
|
||||||
BASEDIR=/usr/local/share/kolla-ansible
|
|
||||||
elif [[ ${dir_name} == ~/.local/bin ]]; then
|
|
||||||
BASEDIR=~/.local/share/kolla-ansible
|
|
||||||
elif [[ -n ${VIRTUAL_ENV} ]] && [[ ${dir_name} == "$(readlink -e "${VIRTUAL_ENV}/bin")" ]]; then
|
|
||||||
if test -f ${VIRTUAL_ENV}/lib/python*/site-packages/kolla-ansible.egg-link; then
|
|
||||||
# Editable install.
|
# Editable install.
|
||||||
BASEDIR="$(head -n1 ${VIRTUAL_ENV}/lib/python*/site-packages/kolla-ansible.egg-link)"
|
BASEDIR="$(head -n1 /usr/lib/${python_dir}/*-packages/kolla-ansible.egg-link)"
|
||||||
|
else
|
||||||
|
BASEDIR=/usr/share/kolla-ansible
|
||||||
|
fi
|
||||||
|
elif [[ ${dir_name} == "/usr/local/bin" ]]; then
|
||||||
|
if test -f /usr/local/lib/${python_dir}/*-packages/kolla-ansible.egg-link; then
|
||||||
|
# Editable install.
|
||||||
|
BASEDIR="$(head -n1 /usr/local/lib/${python_dir}/*-packages/kolla-ansible.egg-link)"
|
||||||
|
else
|
||||||
|
BASEDIR=/usr/local/share/kolla-ansible
|
||||||
|
fi
|
||||||
|
elif [[ ${dir_name} == ~/.local/bin ]]; then
|
||||||
|
if test -f ~/.local/lib/${python_dir}/*-packages/kolla-ansible.egg-link; then
|
||||||
|
# Editable install.
|
||||||
|
BASEDIR="$(head -n1 ~/.local/lib/${python_dir}/*-packages/kolla-ansible.egg-link)"
|
||||||
|
else
|
||||||
|
BASEDIR=~/.local/share/kolla-ansible
|
||||||
|
fi
|
||||||
|
elif [[ -n ${VIRTUAL_ENV} ]] && [[ ${dir_name} == "$(readlink -e "${VIRTUAL_ENV}/bin")" ]]; then
|
||||||
|
if test -f ${VIRTUAL_ENV}/lib/${python_dir}/site-packages/kolla-ansible.egg-link; then
|
||||||
|
# Editable install.
|
||||||
|
BASEDIR="$(head -n1 ${VIRTUAL_ENV}/lib/${python_dir}/*-packages/kolla-ansible.egg-link)"
|
||||||
else
|
else
|
||||||
BASEDIR="${VIRTUAL_ENV}/share/kolla-ansible"
|
BASEDIR="${VIRTUAL_ENV}/share/kolla-ansible"
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user