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