From 0f30bd0d7ceaf20a6dcbfffbe886af72fd6e9a25 Mon Sep 17 00:00:00 2001 From: Matthew Thode Date: Tue, 17 Apr 2018 12:48:12 -0500 Subject: [PATCH] Add support for testing on Gentoo. This patch adds support for running run_tests.sh on Gentoo by extending the package install functionality. It also switches git to only be installed if not already available. Further, there were some escaping issues that needed to be fixed and are now fixed. Change-Id: I89c2fe488ead4721f8b55b285ce932c26e05401b --- run_tests.sh | 15 ++++++++------- run_tests_common.sh | 21 ++++++++++++++------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index a31f9464..4280085e 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -58,32 +58,33 @@ case ${ID,,} in *suse*) pkg_mgr_cmd="zypper -n in" ;; centos|rhel|fedora) pkg_mgr_cmd="${RHT_PKG_MGR} install -y" ;; ubuntu|debian) pkg_mgr_cmd="apt-get install -y" ;; + gentoo) pkg_mgr_cmd="emerge" ;; *) echo "unsupported distribution: ${ID,,}"; exit 1 ;; esac -# Install git so that we can clone the tests repo -eval sudo $pkg_mgr_cmd git +# Install git so that we can clone the tests repo if git is not available +which git &>/dev/null || eval sudo "${pkg_mgr_cmd}" git # Clone the tests repo for access to the common test script -if [[ ! -d ${COMMON_TESTS_PATH} ]]; then +if [[ ! -d "${COMMON_TESTS_PATH}" ]]; then # The tests repo doesn't need a clone, we can just # symlink it. if [[ "$(basename ${WORKING_DIR})" == "openstack-ansible-tests" ]]; then - ln -s ${WORKING_DIR} ${COMMON_TESTS_PATH} + ln -s "${WORKING_DIR}" "${COMMON_TESTS_PATH}" # In zuul v3 any dependent repository is placed into # /home/zuul/src/git.openstack.org, so we check to see # if there is a tests checkout there already. If so, we # symlink that and use it. elif [[ -d "${ZUUL_TESTS_CLONE_LOCATION}" ]]; then - ln -s "${ZUUL_TESTS_CLONE_LOCATION}" ${COMMON_TESTS_PATH} + ln -s "${ZUUL_TESTS_CLONE_LOCATION}" "${COMMON_TESTS_PATH}" # Otherwise we're clearly not in zuul or using a previously setup # repo in some way, so just clone it from upstream. else - git clone -b ${TESTING_BRANCH} \ + git clone -b "${TESTING_BRANCH}" \ https://git.openstack.org/openstack/openstack-ansible-tests \ - ${COMMON_TESTS_PATH} + "${COMMON_TESTS_PATH}" fi fi diff --git a/run_tests_common.sh b/run_tests_common.sh index b35f20f1..8a6c5f01 100755 --- a/run_tests_common.sh +++ b/run_tests_common.sh @@ -77,9 +77,13 @@ case "${ID,,}" in pkg_list="python-dev lsb-release" sudo apt-get update ;; + gentoo) + sudo emaint-sync -A + ;; *) echo "Unsupported distribution: ${ID,,}" exit 1 + ;; esac eval sudo ${pkg_mgr_cmd} ${pkg_list} @@ -92,36 +96,39 @@ fi # Install bindep and tox sudo pip install 'bindep>=2.4.0' tox -if [[ ${ID,,} == "centos" ]]; then +if [[ "${ID,,}" == "centos" ]]; then # epel-release could be installed but not enabled (which is very common # in openstack-ci) so enable it here if needed sudo yum-config-manager --enable epel > /dev/null || true -elif [[ ${ID,,} == "fedora" ]]; then +elif [[ "${ID,,}" == "fedora" ]]; then sudo dnf -y install redhat-lsb-core yum-utils # openSUSE 42.1 does not have python-ndg-httpsclient -elif [[ ${ID,,} == *suse* ]] && [[ ${VERSION} == "42.1" ]]; then +elif [[ "${ID,,}" == *suse* ]] && [[ ${VERSION} == "42.1" ]]; then sudo pip install ndg-httpsclient fi # Get a list of packages to install with bindep. If packages need to be # installed, bindep exits with an exit code of 1. -BINDEP_PKGS=$(bindep -b -f ${BINDEP_FILE} test || true) +BINDEP_PKGS=$(bindep -b -f "${BINDEP_FILE}" test || true) echo "Packages to install: ${BINDEP_PKGS}" # Install OS packages using bindep if [[ ${#BINDEP_PKGS} > 0 ]]; then case "${ID,,}" in *suse*) - sudo zypper -n in $BINDEP_PKGS + sudo zypper -n in ${BINDEP_PKGS} ;; centos|fedora) - sudo $RHT_PKG_MGR install -y $BINDEP_PKGS + sudo "${RHT_PKG_MGR}" install -y ${BINDEP_PKGS} ;; ubuntu|debian) sudo apt-get update DEBIAN_FRONTEND=noninteractive \ sudo apt-get -q --option "Dpkg::Options::=--force-confold" \ - --assume-yes install $BINDEP_PKGS + --assume-yes install ${BINDEP_PKGS} + ;; + gentoo) + sudo emerge -q --jobs="$(nrpoc)" ${BINDEP_PKGS} ;; esac fi