From b5454ede0eac2f5b19d4e125b26393e3d0cd9087 Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Mon, 29 Aug 2016 03:37:58 +0000 Subject: [PATCH] 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 --- tools/tox_install.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++ tox.ini | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100755 tools/tox_install.sh diff --git a/tools/tox_install.sh b/tools/tox_install.sh new file mode 100755 index 000000000..66e68c2c4 --- /dev/null +++ b/tools/tox_install.sh @@ -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 $? diff --git a/tox.ini b/tox.ini index ea161dd6e..2ab043a21 100644 --- a/tox.ini +++ b/tox.ini @@ -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