Add support for upper-constraints.txt for all tox targets

This will make neutron-lib gate use dependency versions that are sanity
checked by jobs in openstack/requirements gate.

Since the library is itself in upper-constraints.txt file, we should
remove its entry from the constraints file before applying it, otherwise
pip will fail due to version conflict between what's in the current
library repo and what's in constraints file.

Change-Id: I6a708e7b618f2f2da9c9210a19e4d4e4ac370462
This commit is contained in:
Ihar Hrachyshka 2016-08-29 03:37:58 +00:00
parent 3c1a18aab5
commit b5454ede0e
2 changed files with 53 additions and 1 deletions

52
tools/tox_install.sh Executable file
View File

@ -0,0 +1,52 @@
#!/usr/bin/env bash
# Library constraint file contains this library 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=neutron-lib
requirements_installed=$(echo "import openstack_requirements" | python 2>/dev/null ; echo $?)
set -e
CONSTRAINTS_FILE=$1
shift
install_cmd="pip install"
mydir=$(mktemp -dt "$LIB_NAME-tox_install-XXXXXXX")
trap "rm -rf $mydir" EXIT
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 "Requirements already installed; using existing package"
elif [ -x "$ZUUL_CLONER" ]; then
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
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
# This is the main purpose of the script: Allow local installation of
# the current repo. It is listed in constraints file and thus any
# install will be constrained and we need to unconstrain it.
edit-constraints $localfile -- $LIB_NAME "-e file://$PWD#egg=$LIB_NAME"
$install_cmd -U $*
exit $?

View File

@ -6,7 +6,7 @@ skipsdist = True
[testenv]
usedevelop = True
passenv = TRACE_FAILONLY
install_command = pip install -U {opts} {packages}
install_command = {toxinidir}/tools/tox_install.sh {env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
setenv =
VIRTUAL_ENV={envdir}
PYTHONWARNINGS=default::DeprecationWarning