From 3cc4ae4f5a56ad0f60c2cd2d7364feac38e024c2 Mon Sep 17 00:00:00 2001 From: John Mulligan Date: Mon, 31 Oct 2022 15:06:25 -0400 Subject: [PATCH] script: add a common ci_debug function to print ci debug lines Reduces some of the boilerplate around emitting the "CI_DEBUG:" prefixed debug lines for the CI. Additionally, enables using the FORCE_CI_DEBUG var to enable ci debug lines even when not in a jenkins environment. Signed-off-by: John Mulligan (cherry picked from commit 93b94811cb10bb936c5abf87d708ae96d7939a8e) (cherry picked from commit 29da3e654d0f73ac52626c7e2532b996fa4b925b) --- src/script/lib-build.sh | 33 ++++++++++ src/script/run-make.sh | 136 ++++++++++++++++------------------------ 2 files changed, 87 insertions(+), 82 deletions(-) create mode 100644 src/script/lib-build.sh diff --git a/src/script/lib-build.sh b/src/script/lib-build.sh new file mode 100644 index 00000000000..a6ff447c99e --- /dev/null +++ b/src/script/lib-build.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# +# lib-build.sh - A library of build and test bash shell functions. +# +# There should be few, or none, globals in this file beyond function +# definitions. +# +# This script should be `shellcheck`ed. Please run shellcheck when +# making changes to this script and use ignore comments +# (ref: https://www.shellcheck.net/wiki/Ignore ) to explicitly mark +# where a line is intentionally ignoring a typical rule. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# + +# The following global only exists to help detect if lib-build has already been +# sourced. This is only needed because the scripts that are being migrated are +# often sourcing (as opposed to exec'ing one another). +# shellcheck disable=SC2034 +_SOURCED_LIB_BUILD=1 + +function in_jenkins() { + [ -n "$JENKINS_HOME" ] +} + +function ci_debug() { + if in_jenkins || [ "${FORCE_CI_DEBUG}" ]; then + echo "CI_DEBUG: $*" + fi +} diff --git a/src/script/run-make.sh b/src/script/run-make.sh index 609ec83a01a..7bbb5797b95 100755 --- a/src/script/run-make.sh +++ b/src/script/run-make.sh @@ -2,15 +2,18 @@ set -e +if ! [ "${_SOURCED_LIB_BUILD}" = 1 ]; then + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + CEPH_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" + . "${CEPH_ROOT}/src/script/lib-build.sh" || exit 2 +fi + + trap clean_up_after_myself EXIT ORIGINAL_CCACHE_CONF="$HOME/.ccache/ccache.conf" SAVED_CCACHE_CONF="$HOME/.run-make-check-saved-ccache-conf" -function in_jenkins() { - test -n "$JENKINS_HOME" -} - function save_ccache_conf() { test -f $ORIGINAL_CCACHE_CONF && cp $ORIGINAL_CCACHE_CONF $SAVED_CCACHE_CONF || true } @@ -24,19 +27,6 @@ function clean_up_after_myself() { restore_ccache_conf } -function get_processors() { - # get_processors() depends on coreutils nproc. - if test -n "$NPROC" ; then - echo $NPROC - else - if test $(nproc) -ge 2 ; then - expr $(nproc) / 2 - else - echo 1 - fi - fi -} - function detect_ceph_dev_pkgs() { local cmake_opts="-DWITH_FMT_VERSION=9.0.0" local boost_root=/opt/ceph @@ -58,76 +48,26 @@ function detect_ceph_dev_pkgs() { echo "$cmake_opts" } -function do_install() { - local install_cmd - local pkgs - local ret - install_cmd=$1 - shift - pkgs=$@ - shift - ret=0 - $DRY_RUN sudo $install_cmd $pkgs || ret=$? - if test $ret -eq 0 ; then - return - fi - # try harder if apt-get, and it was interrutped - if [[ $install_cmd == *"apt-get"* ]]; then - if test $ret -eq 100 ; then - # dpkg was interrupted - $DRY_RUN sudo dpkg --configure -a - in_jenkins && echo "CI_DEBUG: Running 'sudo $install_cmd $pkgs'" - $DRY_RUN sudo $install_cmd $pkgs - else - return $ret - fi - fi -} function prepare() { - local install_cmd local which_pkg="which" - source /etc/os-release - if test -f /etc/redhat-release ; then - if ! type bc > /dev/null 2>&1 ; then - echo "Please install bc and re-run." - exit 1 - fi - if test "$(echo "$VERSION_ID >= 22" | bc)" -ne 0; then - install_cmd="dnf -y install" - else - install_cmd="yum install -y" - fi - elif type zypper > /dev/null 2>&1 ; then - install_cmd="zypper --gpg-auto-import-keys --non-interactive install --no-recommends" - elif type apt-get > /dev/null 2>&1 ; then - install_cmd="apt-get install -y" + if command -v apt-get > /dev/null 2>&1 ; then which_pkg="debianutils" fi - if ! type sudo > /dev/null 2>&1 ; then - echo "Please install sudo and re-run. This script assumes it is running" - echo "as a normal user with the ability to run commands as root via sudo." - exit 1 - fi - if [ -n "$install_cmd" ]; then - in_jenkins && echo "CI_DEBUG: Running '$install_cmd ccache $which_pkg clang'" - do_install "$install_cmd" ccache $which_pkg clang - else - echo "WARNING: Don't know how to install packages" >&2 - echo "This probably means distribution $ID is not supported by run-make-check.sh" >&2 + if test -f ./install-deps.sh ; then + ci_debug "Running install-deps.sh" + INSTALL_EXTRA_PACKAGES="ccache git $which_pkg clang" + $DRY_RUN source ./install-deps.sh || return 1 + trap clean_up_after_myself EXIT fi if ! type ccache > /dev/null 2>&1 ; then echo "ERROR: ccache could not be installed" exit 1 fi +} - if test -f ./install-deps.sh ; then - in_jenkins && echo "CI_DEBUG: Running install-deps.sh" - $DRY_RUN source ./install-deps.sh || return 1 - trap clean_up_after_myself EXIT - fi - +function configure() { cat <