From 199f0e0b7cd43cb963341ce2af398603259c65ff Mon Sep 17 00:00:00 2001 From: Akihiro Motoki Date: Thu, 30 Nov 2017 19:52:09 +0900 Subject: [PATCH] Align tox_install.sh with other projects pip_install.sh is renamed to tox_install.sh to align with other projects. The tox_install.sh here behaves a bit differently than the others, which is causing some problems when trying to rework some of the shared gate jobs. Align it to the form used in other repos. Change-Id: Ie35d2b33f4bfaa8383c7af9e5ca489b61f7da073 --- tools/pip_install.sh | 52 ----------------------------------- tools/tox_install.sh | 65 ++++++++++++++++++++++++++++++++++++++++++++ tox.ini | 6 ++-- 3 files changed, 68 insertions(+), 55 deletions(-) delete mode 100755 tools/pip_install.sh create mode 100755 tools/tox_install.sh diff --git a/tools/pip_install.sh b/tools/pip_install.sh deleted file mode 100755 index c7568eb9..00000000 --- a/tools/pip_install.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh - -# This script is borrowed from Sahara who borrowed from neutron-* repos. - -# Many of horizon's repos suffer from the problem of depending on horizon, -# but it not existing on pypi. - -# This wrapper for tox's package installer will use the existing package -# if it exists, else use zuul-cloner if that program exists, else grab it -# from horizon master via a hard-coded URL. That last case should only -# happen with devs running unit tests locally. - -# From the tox.ini config page: -# install_command=ARGV -# default: -# pip install {opts} {packages} - -ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner -BRANCH_NAME=master -horizon_installed=$(echo "import horizon" | python 2>/dev/null ; echo $?) - -set -e - -install_cmd="pip install $1" -shift - -if [ $horizon_installed -eq 0 ]; then - echo "ALREADY INSTALLED" > /tmp/tox_install.txt - echo "Horizon already installed; using existing package" -elif [ -x "$ZUUL_CLONER" ]; then - export ZUUL_BRANCH=${ZUUL_BRANCH-$BRANCH} - echo "ZUUL CLONER" > /tmp/tox_install.txt - cwd=$(/bin/pwd) - cd /tmp - $ZUUL_CLONER --cache-dir \ - /opt/git \ - --branch $BRANCH_NAME \ - git://git.openstack.org \ - openstack/horizon - cd openstack/horizon - $install_cmd -e . - cd "$cwd" -else - echo "PIP HARDCODE" > /tmp/tox_install.txt - if [ -z "$HORIZON_PIP_LOCATION" ]; then - HORIZON_PIP_LOCATION="git+https://git.openstack.org/openstack/horizon@$BRANCH_NAME#egg=horizon" - fi - $install_cmd -U -e ${HORIZON_PIP_LOCATION} -fi - -$install_cmd -U $* -exit $? diff --git a/tools/tox_install.sh b/tools/tox_install.sh new file mode 100755 index 00000000..ebb83154 --- /dev/null +++ b/tools/tox_install.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +# Many of horizon's repos suffer from the problem of depending on horizon, +# but it not existing on pypi. + +# This wrapper for tox's package installer will use the existing package +# if it exists, else use zuul-cloner if that program exists, else grab it +# from horizon master via a hard-coded URL. That last case should only +# happen with devs running unit tests locally. + +# From the tox.ini config page: +# install_command=ARGV +# default: +# pip install {opts} {packages} + +ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner +BRANCH_NAME=master +GIT_BASE=${GIT_BASE:-https://git.openstack.org/} + +install_project() { + local project=$1 + local branch=${2:-$BRANCH_NAME} + local module_name=${project//-/_} + + set +e + project_installed=$(echo "import $module_name" | python 2>/dev/null ; echo $?) + set -e + + if [ $project_installed -eq 0 ]; then + echo "ALREADY INSTALLED" > /tmp/tox_install.txt + echo "$project already installed; using existing package" + elif [ -x "$ZUUL_CLONER" ]; then + echo "ZUUL CLONER" > /tmp/tox_install.txt + # Make this relative to current working directory so that + # git clean can remove it. We cannot remove the directory directly + # since it is referenced after $install_cmd -e + mkdir -p .tmp + PROJECT_DIR=$(/bin/mktemp -d -p $(pwd)/.tmp) + pushd $PROJECT_DIR + $ZUUL_CLONER --cache-dir \ + /opt/git \ + --branch $branch \ + http://git.openstack.org \ + openstack/$project + cd openstack/$project + $install_cmd -e . + popd + else + echo "PIP HARDCODE" > /tmp/tox_install.txt + local GIT_REPO="$GIT_BASE/openstack/$project" + SRC_DIR="$VIRTUAL_ENV/src/$project" + git clone --depth 1 --branch $branch $GIT_REPO $SRC_DIR + $install_cmd -U -e $SRC_DIR + fi +} + +set -e + +install_cmd="pip install -c$1" +shift + +install_project horizon + +$install_cmd -U $* +exit $? diff --git a/tox.ini b/tox.ini index c5bec30b..ddfbc779 100644 --- a/tox.ini +++ b/tox.ini @@ -5,8 +5,8 @@ skipsdist = True [testenv] usedevelop = True -install_command = {toxinidir}/tools/pip_install.sh \ - -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} \ +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} @@ -102,7 +102,7 @@ commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasen local-check-factory = horizon.hacking.checks.factory [flake8] -exclude = .venv,.git,.tox,dist,*lib/python*,*egg,build,panel_template,dash_template,local_settings.py,*/local/*,*/test/test_plugins/*,.ropeproject,node_modules +exclude = .venv,.git,.tox,dist,*lib/python*,*egg,build,panel_template,dash_template,local_settings.py,*/local/*,*/test/test_plugins/*,.ropeproject,node_modules,.tmp max-complexity = 20 import-order-style = pep8