From 5e9a1d95c9f735955b92204df1f711d5098e2b2d Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 5 Sep 2019 17:58:44 +0800 Subject: [PATCH] run-make-check.sh: extract run-make.sh so we can reuse run-make.sh for building the artifact used by other tests than "make check", for instance, dashboard's E2E test and crimson's performance test. Signed-off-by: Kefu Chai --- run-make-check.sh | 129 ++------------------------------- src/script/run-make.sh | 159 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 122 deletions(-) create mode 100755 src/script/run-make.sh diff --git a/run-make-check.sh b/run-make-check.sh index 32d88e28332..2763af04569 100755 --- a/run-make-check.sh +++ b/run-make-check.sh @@ -18,129 +18,9 @@ # $ DRY_RUN=echo ./run-make-check.sh # -set -e - -trap clean_up_after_myself EXIT - -ORIGINAL_CCACHE_CONF="$HOME/.ccache/ccache.conf" -SAVED_CCACHE_CONF="$HOME/.run-make-check-saved-ccache-conf" - -function save_ccache_conf() { - test -f $ORIGINAL_CCACHE_CONF && cp $ORIGINAL_CCACHE_CONF $SAVED_CCACHE_CONF || true -} - -function restore_ccache_conf() { - test -f $SAVED_CCACHE_CONF && mv $SAVED_CCACHE_CONF $ORIGINAL_CCACHE_CONF || true -} - -function clean_up_after_myself() { - rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv* - restore_ccache_conf -} - -function get_processors() { - 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 - local boost_root=/opt/ceph - if test -f $boost_root/include/boost/config.hpp; then - cmake_opts+=" -DWITH_SYSTEM_BOOST=ON -DBOOST_ROOT=$boost_root" - else - cmake_opts+=" -DBOOST_J=$(get_processors)" - fi - echo "$cmake_opts" -} +source src/script/run-make.sh function run() { - 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" - 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 - $DRY_RUN sudo $install_cmd ccache $which_pkg - 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 - 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 - export WITH_SEASTAR=1 - export FOR_MAKE_CHECK=1 - $DRY_RUN source ./install-deps.sh || return 1 - trap clean_up_after_myself EXIT - fi - - # Init defaults after deps are installed. get_processors() depends on coreutils nproc. - DEFAULT_MAKEOPTS=${DEFAULT_MAKEOPTS:--j$(get_processors)} - BUILD_MAKEOPTS=${BUILD_MAKEOPTS:-$DEFAULT_MAKEOPTS} - test "$BUILD_MAKEOPTS" && echo "make will run with option(s) $BUILD_MAKEOPTS" - CHECK_MAKEOPTS=${CHECK_MAKEOPTS:-$DEFAULT_MAKEOPTS} - CMAKE_BUILD_OPTS="-DWITH_GTEST_PARALLEL=ON -DWITH_FIO=ON -DWITH_SEASTAR=ON -DWITH_CEPHFS_SHELL=ON -DWITH_SPDK=ON" - CMAKE_BUILD_OPTS+=$(detect_ceph_dev_pkgs) - cat <= 1024 $DRY_RUN ulimit -n $(ulimit -Hn) if [ $(ulimit -n) -lt 1024 ];then @@ -152,6 +32,7 @@ EOM # limit while running seastar tests and bluestore tests. $DRY_RUN sudo /sbin/sysctl -q -w fs.aio-max-nr=$((65536 * 16)) + CHECK_MAKEOPTS=${CHECK_MAKEOPTS:-$DEFAULT_MAKEOPTS} if ! $DRY_RUN ctest $CHECK_MAKEOPTS --output-on-failure; then rm -fr ${TMPDIR:-/tmp}/ceph-asok.* return 1 @@ -171,7 +52,11 @@ function main() { echo "Please fix 'hostname --fqdn', otherwise 'make check' will fail" return 1 fi - run "$@" && echo "make check: successful run on $(git rev-parse HEAD)" + FOR_MAKE_CHECK=1 prepare + # Init defaults after deps are installed. + configure "-DWITH_GTEST_PARALLEL=ON -DWITH_FIO=ON -DWITH_SEASTAR=ON -DWITH_CEPHFS_SHELL=ON -DWITH_SPDK=ON -DENABLE_GIT_VERSION=OFF $@" + build tests && echo "make check: successful run on $(git rev-parse HEAD)" + run } main "$@" diff --git a/src/script/run-make.sh b/src/script/run-make.sh new file mode 100755 index 00000000000..d5c2e08e984 --- /dev/null +++ b/src/script/run-make.sh @@ -0,0 +1,159 @@ +#!/usr/bin/env bash + +set -e + +trap clean_up_after_myself EXIT + +ORIGINAL_CCACHE_CONF="$HOME/.ccache/ccache.conf" +SAVED_CCACHE_CONF="$HOME/.run-make-check-saved-ccache-conf" + +function save_ccache_conf() { + test -f $ORIGINAL_CCACHE_CONF && cp $ORIGINAL_CCACHE_CONF $SAVED_CCACHE_CONF || true +} + +function restore_ccache_conf() { + test -f $SAVED_CCACHE_CONF && mv $SAVED_CCACHE_CONF $ORIGINAL_CCACHE_CONF || true +} + +function clean_up_after_myself() { + rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv* + 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 + local boost_root=/opt/ceph + if test -f $boost_root/include/boost/config.hpp; then + cmake_opts+=" -DWITH_SYSTEM_BOOST=ON -DBOOST_ROOT=$boost_root" + else + cmake_opts+=" -DBOOST_J=$(get_processors)" + fi + echo "$cmake_opts" +} + +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" + 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 + $DRY_RUN sudo $install_cmd ccache $which_pkg + 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 + 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 + export WITH_SEASTAR=1 + $DRY_RUN source ./install-deps.sh || return 1 + trap clean_up_after_myself EXIT + fi + + cat <& 2 + exit 2;; + esac + done + prepare + configure "$cmake_args" + build "$@" +fi -- 2.39.5