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
This commit is contained in:
Matthew Thode 2018-04-17 12:48:12 -05:00
parent a61c62e053
commit 0f30bd0d7c
No known key found for this signature in database
GPG Key ID: 64A37BEAAE19A4E8
2 changed files with 22 additions and 14 deletions

View File

@ -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

View File

@ -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