This is an automated email from the ASF dual-hosted git repository.

alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new fab4c6fd3 KUDU-3371 [thirdparty] introduce rocksdb
fab4c6fd3 is described below

commit fab4c6fd30dc4bdfb52e854584e9433ef6c1f363
Author: Yingchun Lai <[email protected]>
AuthorDate: Sun Nov 20 17:54:17 2022 +0800

    KUDU-3371 [thirdparty] introduce rocksdb
    
    This patch introduces RocksDB 7.7.3 as a new thirdparty
    library. RocksDB will be used to store log block container's
    metadata in future patches.
    
    Change-Id: I42992d080fb9e9d77ca5169615d61eb3463fa54c
    Reviewed-on: http://gerrit.cloudera.org:8080/19257
    Reviewed-by: Yifan Zhang <[email protected]>
    Tested-by: Alexey Serbin <[email protected]>
    Reviewed-by: Alexey Serbin <[email protected]>
---
 CMakeLists.txt                    |  7 +++++++
 cmake_modules/FindRocksdb.cmake   | 41 +++++++++++++++++++++++++++++++++++++++
 thirdparty/build-definitions.sh   | 27 ++++++++++++++++++++++++++
 thirdparty/build-thirdparty.sh    |  9 +++++++++
 thirdparty/download-thirdparty.sh |  6 ++++++
 thirdparty/vars.sh                |  4 ++++
 6 files changed, 94 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5a2f306eb..70e6bcd9d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1247,6 +1247,13 @@ ADD_THIRDPARTY_LIB(boost_date_time
     STATIC_LIB "${BOOST_DATE_TIME_STATIC_LIB}"
     SHARED_LIB "${BOOST_DATE_TIME_SHARED_LIB}")
 
+## rocksdb
+find_package(Rocksdb REQUIRED)
+include_directories(SYSTEM ${ROCKSDB_INCLUDE_DIR})
+ADD_THIRDPARTY_LIB(rocksdb
+        STATIC_LIB "${ROCKSDB_STATIC_LIB}"
+        SHARED_LIB "${ROCKSDB_SHARED_LIB}")
+
 ############################################################
 # Enable sized deallocation where supported.
 # This happens down here instead of up with the rest of the
diff --git a/cmake_modules/FindRocksdb.cmake b/cmake_modules/FindRocksdb.cmake
new file mode 100644
index 000000000..7d273f166
--- /dev/null
+++ b/cmake_modules/FindRocksdb.cmake
@@ -0,0 +1,41 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+find_path(ROCKSDB_INCLUDE_DIR rocksdb/db.h
+  # make sure we don't accidentally pick up a different version
+  NO_CMAKE_SYSTEM_PATH
+  NO_SYSTEM_ENVIRONMENT_PATH)
+
+find_library(ROCKSDB_STATIC_LIB librocksdb.a
+  NO_CMAKE_SYSTEM_PATH
+  NO_SYSTEM_ENVIRONMENT_PATH)
+
+set(__CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+if (APPLE)
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
+else()
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
+endif()
+find_library(ROCKSDB_SHARED_LIB rocksdb
+        NO_CMAKE_SYSTEM_PATH
+        NO_SYSTEM_ENVIRONMENT_PATH)
+set(CMAKE_FIND_LIBRARY_SUFFIXES ${__CURRENT_FIND_LIBRARY_SUFFIXES})
+unset(__CURRENT_FIND_LIBRARY_SUFFIXES)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Rocksdb REQUIRED_VARS
+  ROCKSDB_STATIC_LIB ROCKSDB_SHARED_LIB ROCKSDB_INCLUDE_DIR)
diff --git a/thirdparty/build-definitions.sh b/thirdparty/build-definitions.sh
index 8dae63614..8c8241620 100644
--- a/thirdparty/build-definitions.sh
+++ b/thirdparty/build-definitions.sh
@@ -1154,3 +1154,30 @@ build_jwt_cpp() {
   make -j$PARALLEL install
   popd
 }
+
+build_rocksdb() {
+  ROCKSDB_BUILD_DIR=$TP_BUILD_DIR/$ROCKSDB_NAME$MODE_SUFFIX
+  mkdir -p $ROCKSDB_BUILD_DIR
+  pushd $ROCKSDB_BUILD_DIR
+  rm -Rf CMakeCache.txt CMakeFiles/
+  CFLAGS="$EXTRA_CFLAGS -fPIC" \
+    CXXFLAGS="$EXTRA_CXXFLAGS -fPIC" \
+    cmake \
+    -ROCKSDB_BUILD_SHARED=ON \
+    -DFAIL_ON_WARNINGS=OFF \
+    -DWITH_BENCHMARK_TOOLS=OFF \
+    -DWITH_TOOLS=OFF \
+    -DWITH_CORE_TOOLS=OFF \
+    -DWITH_LZ4=ON \
+    -DWITH_ZSTD=OFF \
+    -DWITH_SNAPPY=ON \
+    -DWITH_BZ2=OFF \
+    -DWITH_TESTS=OFF \
+    -DWITH_GFLAGS=OFF \
+    -DCMAKE_BUILD_TYPE=release \
+    -DCMAKE_INSTALL_PREFIX=$PREFIX \
+    -DCMAKE_SHARED_LINKER_FLAGS="$EXTRA_LDFLAGS $EXTRA_LIBS -L$PREFIX/lib 
-Wl,-rpath,$PREFIX/lib" \
+    $ROCKSDB_SOURCE
+  make -j$PARALLEL install
+  popd
+}
diff --git a/thirdparty/build-thirdparty.sh b/thirdparty/build-thirdparty.sh
index 60d9ca7ca..b53e151dd 100755
--- a/thirdparty/build-thirdparty.sh
+++ b/thirdparty/build-thirdparty.sh
@@ -109,6 +109,7 @@ else
       "oatpp-swagger") F_OATPP_SWAGGER=1 ;;
       "jwt-cpp")      F_JWT_CPP=1 ;;
       "ranger-kms")   F_RANGER_KMS=1 ;;
+      "rocksdb")      F_ROCKSDB=1 ;;
       *)              echo "Unknown module: $arg"; exit 1 ;;
     esac
   done
@@ -445,6 +446,10 @@ if [ -n "$F_UNINSTRUMENTED" -o -n "$F_JWT_CPP" ]; then
   build_jwt_cpp
 fi
 
+if [ -n "$F_UNINSTRUMENTED" -o -n "$F_ROCKSDB" ]; then
+  build_rocksdb
+fi
+
 restore_env
 
 # If we're on macOS best to exit here, otherwise single dependency builds will 
try to
@@ -639,6 +644,10 @@ if [ -n "$F_TSAN" -o -n "$F_JWT_CPP" ]; then
   build_jwt_cpp
 fi
 
+if [ -n "$F_TSAN" -o -n "$F_ROCKSDB" ]; then
+  build_rocksdb
+fi
+
 restore_env
 
 finish
diff --git a/thirdparty/download-thirdparty.sh 
b/thirdparty/download-thirdparty.sh
index 20425f79b..8d68e8e3b 100755
--- a/thirdparty/download-thirdparty.sh
+++ b/thirdparty/download-thirdparty.sh
@@ -485,5 +485,11 @@ fetch_and_patch \
   $RANGER_KMS_SOURCE \
   $RANGER_KMS_PATCHLEVEL
 
+ROCKSDB_PATCHLEVEL=0
+fetch_and_patch \
+  $ROCKSDB_NAME.tar.gz \
+  $ROCKSDB_SOURCE \
+  $ROCKSDB_PATCHLEVEL
+
 echo "---------------"
 echo "Thirdparty dependencies downloaded successfully"
diff --git a/thirdparty/vars.sh b/thirdparty/vars.sh
index b744d4ab3..5dff3acfc 100644
--- a/thirdparty/vars.sh
+++ b/thirdparty/vars.sh
@@ -275,3 +275,7 @@ JWT_CPP_VERSION=3bd600762a70faccc7ec1c2dacb999cba6c6ef5e
 JWT_CPP=jwt-cpp
 JWT_CPP_NAME=$JWT_CPP-$JWT_CPP_VERSION
 JWT_CPP_SOURCE=$TP_SOURCE_DIR/$JWT_CPP_NAME
+
+ROCKSDB_VERSION=7.7.3
+ROCKSDB_NAME=rocksdb-$ROCKSDB_VERSION
+ROCKSDB_SOURCE=$TP_SOURCE_DIR/$ROCKSDB_NAME

Reply via email to