From 52277bfa52c9bc168d332f14ec95ff5f5cca0fb1 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 10 Aug 2019 16:08:00 +0800 Subject: [PATCH] qa/workunits/rados/test_envlibrados_for_rocksdb: install newer cmake rocksdb needs CMake 3.5.1 since https://github.com/facebook/rocksdb/pull/5662 Fixes: https://tracker.ceph.com/issues/41253 Signed-off-by: Kefu Chai --- qa/workunits/ceph-helpers-root.sh | 51 +++++++++++++++++++ .../rados/test_envlibrados_for_rocksdb.sh | 27 ++++++++-- 2 files changed, 73 insertions(+), 5 deletions(-) diff --git a/qa/workunits/ceph-helpers-root.sh b/qa/workunits/ceph-helpers-root.sh index cd716a57e78d..65c2fc3b9e76 100755 --- a/qa/workunits/ceph-helpers-root.sh +++ b/qa/workunits/ceph-helpers-root.sh @@ -22,6 +22,11 @@ function distro_id() { echo $ID } +function distro_version() { + source /etc/os-release + echo $VERSION +} + function install() { for package in "$@" ; do install_one $package @@ -45,6 +50,52 @@ function install_one() { esac } +function install_cmake3_on_centos7 { + source /etc/os-release + local MAJOR_VERSION="$(echo $VERSION_ID | cut -d. -f1)" + sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/$MAJOR_VERSION/x86_64/ + sudo yum install --nogpgcheck -y epel-release + sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$MAJOR_VERSION + sudo yum install -y cmake3 +} + +function install_cmake3_on_xenial { + install_pkg_on_ubuntu \ + ceph-cmake \ + d278b9d28de0f6b88f56dfe1e8bf684a41577210 \ + xenial \ + force \ + cmake +} + +function install_pkg_on_ubuntu { + local project=$1 + shift + local sha1=$1 + shift + local codename=$1 + shift + local force=$1 + shift + local pkgs=$@ + local missing_pkgs + if [ $force = "force" ]; then + missing_pkgs="$@" + else + for pkg in $pkgs; do + if ! dpkg -s $pkg &> /dev/null; then + missing_pkgs+=" $pkg" + fi + done + fi + if test -n "$missing_pkgs"; then + local shaman_url="https://shaman.ceph.com/api/repos/${project}/master/${sha1}/ubuntu/${codename}/repo" + sudo curl --silent --location $shaman_url --output /etc/apt/sources.list.d/$project.list + sudo env DEBIAN_FRONTEND=noninteractive apt-get update -y -o Acquire::Languages=none -o Acquire::Translation=none || true + sudo env DEBIAN_FRONTEND=noninteractive apt-get install --allow-unauthenticated -y $missing_pkgs + fi +} + ####################################################################### function control_osd() { diff --git a/qa/workunits/rados/test_envlibrados_for_rocksdb.sh b/qa/workunits/rados/test_envlibrados_for_rocksdb.sh index d5c09529ff65..1360f6dfe5b4 100755 --- a/qa/workunits/rados/test_envlibrados_for_rocksdb.sh +++ b/qa/workunits/rados/test_envlibrados_for_rocksdb.sh @@ -10,7 +10,6 @@ source $(dirname $0)/../ceph-helpers-root.sh # Install required tools ############################################ echo "Install required tools" -install git cmake CURRENT_PATH=`pwd` @@ -21,13 +20,26 @@ CURRENT_PATH=`pwd` # for rocksdb case $(distro_id) in ubuntu|debian|devuan) - install g++ libsnappy-dev zlib1g-dev libbz2-dev libradospp-dev + install git g++ libsnappy-dev zlib1g-dev libbz2-dev libradospp-dev + case $(distro_version) in + *Xenial*) + install_cmake3_on_xenial + ;; + *) + install cmake + ;; + esac ;; centos|fedora|rhel) - install gcc-c++.x86_64 snappy-devel zlib zlib-devel bzip2 bzip2-devel libradospp-devel.x86_64 + install git gcc-c++.x86_64 snappy-devel zlib zlib-devel bzip2 bzip2-devel libradospp-devel.x86_64 + if [ $(distro_id) = "fedora" ]; then + install cmake + else + install_cmake3_on_centos7 + fi ;; opensuse*|suse|sles) - install gcc-c++ snappy-devel zlib-devel libbz2-devel libradospp-devel + install git gcc-c++ snappy-devel zlib-devel libbz2-devel libradospp-devel ;; *) echo "$(distro_id) is unknown, $@ will have to be installed manually." @@ -55,7 +67,12 @@ git clone https://github.com/facebook/rocksdb.git --depth 1 # compile code cd rocksdb -mkdir build && cd build && cmake -DWITH_LIBRADOS=ON -DWITH_SNAPPY=ON -DWITH_GFLAGS=OFF -DFAIL_ON_WARNINGS=OFF .. +if type cmake3 > /dev/null 2>&1 ; then + CMAKE=cmake3 +else + CMAKE=cmake +fi +mkdir build && cd build && ${CMAKE} -DWITH_LIBRADOS=ON -DWITH_SNAPPY=ON -DWITH_GFLAGS=OFF -DFAIL_ON_WARNINGS=OFF .. make rocksdb_env_librados_test -j8 echo "Copy ceph.conf" -- 2.47.3