tox respects upper-constraints.txt
This will force pip install to use the upper-constraints.txt specified version of pip modules. When you don't do this, you are out on the bleeding edge and become unstable everytime some python library in the wide world changes in a way that you don't expect. There are a few 'post' jobs as Andreas has mentioned on this review, that have the install_command overridden (until that will be supported in upstream infra). This change has been inspired by Ie1133e4c020106e8098685ba9125f84b356d8e0c , notes from jaegerandi in the openstack/glance's tox.ini file and Ihar's python-neutronclient's fix I33302cdcab980a42c39dc9ec1e430add459615ff Change-Id: I1f8be8184683c9a3671f750ebaa87c38163c9795 Closes-Bug: 1563038
This commit is contained in:
parent
9a588122aa
commit
ea4483c0bf
55
tools/tox_install.sh
Executable file
55
tools/tox_install.sh
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Library constraint file contains version pin that is in conflict with
|
||||||
|
# installing the library from source. We should replace the version pin in
|
||||||
|
# the constraints file before applying it for from-source installation.
|
||||||
|
|
||||||
|
ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner
|
||||||
|
BRANCH_NAME=master
|
||||||
|
LIB_NAME=glance_store
|
||||||
|
requirements_installed=$(echo "import openstack_requirements" | python 2>/dev/null ; echo $?)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CONSTRAINTS_FILE=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
install_cmd="pip install"
|
||||||
|
if [ $CONSTRAINTS_FILE != "unconstrained" ]; then
|
||||||
|
|
||||||
|
mydir=$(mktemp -dt "$LIB_NAME-tox_install-XXXXXXX")
|
||||||
|
localfile=$mydir/upper-constraints.txt
|
||||||
|
if [[ $CONSTRAINTS_FILE != http* ]]; then
|
||||||
|
CONSTRAINTS_FILE=file://$CONSTRAINTS_FILE
|
||||||
|
fi
|
||||||
|
curl $CONSTRAINTS_FILE -k -o $localfile
|
||||||
|
install_cmd="$install_cmd -c$localfile"
|
||||||
|
|
||||||
|
if [ $requirements_installed -eq 0 ]; then
|
||||||
|
echo "ALREADY INSTALLED" > /tmp/tox_install.txt
|
||||||
|
echo "Requirements already installed; using existing package"
|
||||||
|
elif [ -x "$ZUUL_CLONER" ]; then
|
||||||
|
export ZUUL_BRANCH=${ZUUL_BRANCH-$BRANCH}
|
||||||
|
echo "ZUUL CLONER" > /tmp/tox_install.txt
|
||||||
|
pushd $mydir
|
||||||
|
$ZUUL_CLONER --cache-dir \
|
||||||
|
/opt/git \
|
||||||
|
--branch $BRANCH_NAME \
|
||||||
|
git://git.openstack.org \
|
||||||
|
openstack/requirements
|
||||||
|
cd openstack/requirements
|
||||||
|
$install_cmd -e .
|
||||||
|
popd
|
||||||
|
else
|
||||||
|
echo "PIP HARDCODE" > /tmp/tox_install.txt
|
||||||
|
if [ -z "$REQUIREMENTS_PIP_LOCATION" ]; then
|
||||||
|
REQUIREMENTS_PIP_LOCATION="git+https://git.openstack.org/openstack/requirements@$BRANCH_NAME#egg=requirements"
|
||||||
|
fi
|
||||||
|
$install_cmd -U -e ${REQUIREMENTS_PIP_LOCATION}
|
||||||
|
fi
|
||||||
|
|
||||||
|
edit-constraints $localfile -- $LIB_NAME "-e file://$PWD#egg=$LIB_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$install_cmd -U $*
|
||||||
|
exit $?
|
11
tox.ini
11
tox.ini
@ -6,7 +6,7 @@ skipsdist = True
|
|||||||
[testenv]
|
[testenv]
|
||||||
setenv = VIRTUAL_ENV={envdir}
|
setenv = VIRTUAL_ENV={envdir}
|
||||||
usedevelop = True
|
usedevelop = True
|
||||||
install_command = pip install --allow-all-external --allow-insecure netaddr -U {opts} {packages}
|
install_command = {toxinidir}/tools/tox_install.sh -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} --allow-all-external --allow-insecure netaddr -U {opts} {packages}
|
||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
.[s3,vmware,swift,cinder]
|
.[s3,vmware,swift,cinder]
|
||||||
@ -16,6 +16,9 @@ commands = ostestr --slowest {posargs}
|
|||||||
commands = python setup.py build_sphinx
|
commands = python setup.py build_sphinx
|
||||||
|
|
||||||
[testenv:releasenotes]
|
[testenv:releasenotes]
|
||||||
|
# NOTE(nikhil): this target does not use constraints because upstream infra
|
||||||
|
# does not yet support it. Once that's fixed, we can drop the install_command.
|
||||||
|
install_command = pip install --allow-all-external --allow-insecure netaddr -U {opts} {packages}
|
||||||
commands = sphinx-build -a -E -W -d releasenotes/build/.doctrees -b html releasenotes/source releasenotes/build/html
|
commands = sphinx-build -a -E -W -d releasenotes/build/.doctrees -b html releasenotes/source releasenotes/build/html
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
@ -23,10 +26,16 @@ commands =
|
|||||||
flake8 {posargs}
|
flake8 {posargs}
|
||||||
|
|
||||||
[testenv:cover]
|
[testenv:cover]
|
||||||
|
# NOTE(nikhil): this target does not use constraints because upstream infra
|
||||||
|
# does not yet support it. Once that's fixed, we can drop the install_command.
|
||||||
|
install_command = pip install --allow-all-external --allow-insecure netaddr -U {opts} {packages}
|
||||||
setenv = VIRTUAL_ENV={envdir}
|
setenv = VIRTUAL_ENV={envdir}
|
||||||
commands = python setup.py testr --coverage --testr-args='^(?!.*test.*coverage).*$'
|
commands = python setup.py testr --coverage --testr-args='^(?!.*test.*coverage).*$'
|
||||||
|
|
||||||
[testenv:venv]
|
[testenv:venv]
|
||||||
|
# NOTE(nikhil): this target does not use constraints because upstream infra
|
||||||
|
# does not yet support it. Once that's fixed, we can drop the install_command.
|
||||||
|
install_command = pip install --allow-all-external --allow-insecure netaddr -U {opts} {packages}
|
||||||
commands = {posargs}
|
commands = {posargs}
|
||||||
|
|
||||||
[testenv:functional]
|
[testenv:functional]
|
||||||
|
Loading…
Reference in New Issue
Block a user