]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/workunits/rados/test_envlibrados_for_rocksdb: install newer cmake 29584/head
authorKefu Chai <kchai@redhat.com>
Sat, 10 Aug 2019 08:08:00 +0000 (16:08 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 17 Aug 2019 17:32:25 +0000 (01:32 +0800)
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 <kchai@redhat.com>
qa/workunits/ceph-helpers-root.sh
qa/workunits/rados/test_envlibrados_for_rocksdb.sh

index cd716a57e78d33f3af3e4e631aedfa72d35b7fe2..65c2fc3b9e7658f66a334c413308996e759da6e2 100755 (executable)
@@ -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() {
index d5c09529ff65938610cc13c728eeae4a6437efa8..1360f6dfe5b4832f09742b4026789958a4403807 100755 (executable)
@@ -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"