Last active
March 27, 2025 14:15
-
-
Save barrbrain/d35cb1d46c5a32590b9a32112a35e87a to your computer and use it in GitHub Desktop.
kvrocks.nix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { pkgs ? import <nixpkgs> { | |
| localSystem = { | |
| gcc.arch = "x86-64-v3"; | |
| gcc.tune = "alderlake"; | |
| system = "x86_64-linux"; | |
| }; | |
| } }: | |
| let kvrocks = pkgs.stdenv.mkDerivation (finalAttrs: with pkgs; { | |
| pname = "kvrocks"; | |
| version = "2.11.1"; | |
| src = fetchFromGitHub { | |
| owner = "apache"; | |
| repo = "kvrocks"; | |
| rev = "v${finalAttrs.version}"; | |
| hash = "sha256-15VXbQt4OdaC8/kgOsCcKgaj8h/DyEW77UUcl47ixkY="; | |
| }; | |
| patches = [ | |
| (substituteAll { | |
| src = ./dont-fetch.patch; | |
| jemallocSrc = fetchFromGitHub { | |
| owner = "jemalloc"; | |
| repo = "jemalloc"; | |
| rev = "5.3.0"; | |
| hash = "sha256-bb0OhZVXyvN+hf9BpPSykn5cGm87a0C+Y/iXKt9wTSs="; | |
| }; | |
| gtestSrc = fetchFromGitHub { | |
| owner = "google"; | |
| repo = "googletest"; | |
| rev = "v1.15.2"; | |
| hash = "sha256-1OJ2SeSscRBNr7zZ/a8bJGIqAnhkg45re0j3DtPfcXM="; | |
| }; | |
| glogSrc = fetchFromGitHub { | |
| owner = "google"; | |
| repo = "glog"; | |
| rev = "v0.7.1"; | |
| hash = "sha256-+nwWP6VBmhgU7GCPSEGUzvUSCc48wXME181WpJ5ABP4="; | |
| }; | |
| snappySrc = fetchFromGitHub { | |
| owner = "google"; | |
| repo = "snappy"; | |
| rev = "1.2.1"; | |
| hash = "sha256-IzKzrMDjh+Weor+OrKdX62cAKYTdDXgldxCgNE2/8vk="; | |
| }; | |
| lz4Src = fetchFromGitHub { | |
| owner = "lz4"; | |
| repo = "lz4"; | |
| rev = "v1.10.0"; | |
| hash = "sha256-/dG1n59SKBaEBg72pAWltAtVmJ2cXxlFFhP+klrkTos="; | |
| }; | |
| zlibSrc = stdenv.mkDerivation { | |
| name = "zlib-src"; | |
| src = fetchFromGitHub { | |
| owner = "madler"; | |
| repo = "zlib"; | |
| rev = "v1.3"; | |
| hash = "sha256-eUuXV5zfy+fmiMNdWw5QCqDloBkaxy1tgi7by9nYHNA="; | |
| }; | |
| postInstall = '' | |
| cp -r . $out | |
| mv -v $out/zconf.h $out/zconf.h.included | |
| ''; | |
| }; | |
| zstdSrc = fetchFromGitHub { | |
| owner = "facebook"; | |
| repo = "zstd"; | |
| rev = "v1.5.6"; | |
| hash = "sha256-qcd92hQqVBjMT3hyntjcgk29o9wGQsg5Hg7HE5C0UNc="; | |
| }; | |
| tbbSrc = fetchFromGitHub { | |
| owner = "oneapi-src"; | |
| repo = "oneTBB"; | |
| rev = "v2022.0.0"; | |
| hash = "sha256-XOlC1+rf65oEGKDba9N561NuFo1YJhn3Q1CTGtvkn7A="; | |
| }; | |
| rocksdbSrc = fetchFromGitHub { | |
| owner = "facebook"; | |
| repo = "rocksdb"; | |
| rev = "v9.10.0"; | |
| hash = "sha256-G+DlQwEUyd7JOCjS1Hg1cKWmA/qAiK8UpUIKcP+riGQ="; | |
| }; | |
| libeventSrc = fetchFromGitHub { | |
| owner = "libevent"; | |
| repo = "libevent"; | |
| rev = "release-2.1.12-stable"; | |
| hash = "sha256-M/OgLkgQs+LwGkqv5vu26vluntDAJX5ZsHjjMVM1BqU="; | |
| }; | |
| fmtSrc = fetchFromGitHub { | |
| owner = "fmtlib"; | |
| repo = "fmt"; | |
| rev = "11.1.2"; | |
| hash = "sha256-HextYcoZGK5xNOMsOdq8COUsPZXyaaUYbgJaHY8dvD4="; | |
| }; | |
| jsonconsSrc = fetchFromGitHub { | |
| owner = "danielaparker"; | |
| repo = "jsoncons"; | |
| rev = "v1.1.0"; | |
| hash = "sha256-3NG9Jal3+BdcFeWAIq3eFoV+1ywUCsWafe/WNu2VJU8="; | |
| }; | |
| xxhashSrc = fetchFromGitHub { | |
| owner = "Cyan4973"; | |
| repo = "xxHash"; | |
| rev = "v0.8.3"; | |
| hash = "sha256-h6kohM+NxvQ89R9NEXZcYBG2wPOuB4mcyPfofKrx9wQ="; | |
| }; | |
| spanSrc = fetchFromGitHub { | |
| owner = "martinmoene"; | |
| repo = "span-lite"; | |
| rev = "v0.11.0"; | |
| hash = "sha256-BYRSdGzIvrOjPXxeabMj4tPFmQ0wfq7y+zJf6BD/bTw="; | |
| }; | |
| trieSrc = fetchFromGitHub { | |
| owner = "Tessil"; | |
| repo = "hat-trie"; | |
| rev = "906e6abd1e7063f1dacd3a6b270aa654b525eb0a"; | |
| hash = "sha256-umEyxbG3f4nIXTU9lpaBgM+fdh/Fv9AwV+N6eQV6D0k="; | |
| }; | |
| pegtlSrc = fetchFromGitHub { | |
| owner = "taocpp"; | |
| repo = "PEGTL"; | |
| rev = "3.2.8"; | |
| hash = "sha256-nPWSO2wPl/qenUQgvQDQu7Oy1dKa/PnNFSclmkaoM8A="; | |
| }; | |
| rangev3Src = fetchFromGitHub { | |
| owner = "ericniebler"; | |
| repo = "range-v3"; | |
| rev = "0.12.0"; | |
| hash = "sha256-bRSX91+ROqG1C3nB9HSQaKgLzOHEFy9mrD2WW3PRBWU="; | |
| }; | |
| cpptraceSrc = fetchFromGitHub { | |
| owner = "jeremy-rifkin"; | |
| repo = "cpptrace"; | |
| rev = "v0.7.5"; | |
| hash = "sha256-2rDyH9vo47tbqqZrTupAOrMySj4IGKeWX8HBTGjFf+g="; | |
| }; | |
| luajitSrc = fetchFromGitHub { | |
| owner = "RocksLabs"; | |
| repo = "LuaJIT"; | |
| rev = "c0a8e68325ec261a77bde1c8eabad398168ffe74"; | |
| hash = "sha256-Wjh14d0JR5ecAwdYVBjQYIHb2vJ1I61oR0N0LMmtq4E="; | |
| }; | |
| }) | |
| ./lz4hc.patch | |
| ]; | |
| nativeBuildInputs = [ autoconf cmake pkg-config python3 libdwarf ]; | |
| buildInputs = [ openssl ]; | |
| outputs = [ | |
| "out" | |
| ]; | |
| cmakeFlags = [ | |
| "-DENABLE_OPENSSL=ON" | |
| "-DPORTABLE=1" | |
| "-DSYMBOLIZE_BACKEND=libdwarf" | |
| ]; | |
| postInstall = "install -D kvrocks -t $out/bin/"; | |
| meta = with lib; { | |
| homepage = "https://kvrocks.apache.org"; | |
| description = "A distributed key value NoSQL database that uses RocksDB as storage engine and is compatible with Redis protocol"; | |
| license = licenses.asl20; | |
| platforms = platforms.all; | |
| mainProgram = "kvrocks"; | |
| }; | |
| }); | |
| in pkgs.dockerTools.streamLayeredImage { | |
| name = "kvrocks"; | |
| tag = kvrocks.version; | |
| enableFakechroot = true; | |
| fakeRootCommands = '' | |
| mkdir -p /kvrocks /var/{lib,run}/kvrocks | |
| cp -a ${kvrocks.src}/{LICENSE,NOTICE,licenses} /kvrocks/ | |
| cp ${kvrocks.src}/kvrocks.conf /var/lib/kvrocks/ | |
| ''; | |
| config = { | |
| Volumes = { | |
| "/var/lib/kvrocks" = {}; | |
| }; | |
| Expose = "6666:6666"; | |
| Entrypoint = [ | |
| "${pkgs.lib.getExe kvrocks}" | |
| "-c" "/var/lib/kvrocks/kvrocks.conf" | |
| "--dir" "/var/lib/kvrocks" | |
| "--pidfile" "/var/run/kvrocks/kvrocks.pid" | |
| "--bind" "0.0.0.0" | |
| ]; | |
| }; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/CMakeLists.txt b/CMakeLists.txt | |
| index 5f4f518d..8f07dc17 100644 | |
| --- a/CMakeLists.txt | |
| +++ b/CMakeLists.txt | |
| @@ -204,11 +204,8 @@ list(APPEND EXTERNAL_LIBS range-v3) | |
| list(APPEND EXTERNAL_LIBS cpptrace::cpptrace) | |
| # Add git sha to version.h | |
| -find_package(Git REQUIRED) | |
| execute_process(COMMAND sh -c "cat src/VERSION.txt" | |
| WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE PROJECT_VERSION) | |
| -execute_process(COMMAND git rev-parse --short HEAD | |
| - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE GIT_SHA) | |
| string(STRIP "${GIT_SHA}" GIT_SHA) | |
| if ((PROJECT_VERSION STREQUAL "unstable") AND (GIT_SHA STREQUAL "")) | |
| message(WARNING "It is highly recommended to build the unstable branch in a Git repo") | |
| diff --git a/cmake/cpptrace.cmake b/cmake/cpptrace.cmake | |
| index b42b025d..3c322315 100644 | |
| --- a/cmake/cpptrace.cmake | |
| +++ b/cmake/cpptrace.cmake | |
| @@ -19,15 +19,16 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(cpptrace | |
| - jeremy-rifkin/cpptrace v0.7.5 | |
| - MD5=1fa7eeaea1b39afed2fd403a819d2139 | |
| +FetchContent_Declare(cpptrace | |
| + SOURCE_DIR @cpptraceSrc@ | |
| ) | |
| if (SYMBOLIZE_BACKEND STREQUAL "libbacktrace") | |
| set(CPPTRACE_BACKEND_OPTION "CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE=ON") | |
| elseif (SYMBOLIZE_BACKEND STREQUAL "libdwarf") | |
| - set(CPPTRACE_BACKEND_OPTION "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF=ON") | |
| + set(CPPTRACE_BACKEND_OPTION "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF=ON" | |
| + "CPPTRACE_USE_EXTERNAL_LIBDWARF=ON" | |
| + "CPPTRACE_FIND_LIBDWARF_WITH_PKGCONFIG=ON") | |
| else () | |
| set(CPPTRACE_BACKEND_OPTION "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE=ON") | |
| endif () | |
| diff --git a/cmake/fmt.cmake b/cmake/fmt.cmake | |
| index 63e9952a..5a6ca61b 100644 | |
| --- a/cmake/fmt.cmake | |
| +++ b/cmake/fmt.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(fmt | |
| - fmtlib/fmt 11.1.2 | |
| - MD5=51d22757327a07efeae326a6ce4c66a4 | |
| +FetchContent_Declare(fmt | |
| + SOURCE_DIR @fmtSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(fmt) | |
| diff --git a/cmake/glog.cmake b/cmake/glog.cmake | |
| index 50b892fe..f815dbe8 100644 | |
| --- a/cmake/glog.cmake | |
| +++ b/cmake/glog.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(glog | |
| - google/glog v0.7.1 | |
| - MD5=fa30180d4284c454bdd324ad3baf7f5f | |
| +FetchContent_Declare(glog | |
| + SOURCE_DIR @glogSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(glog | |
| diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake | |
| index f72747e0..9d54d61b 100644 | |
| --- a/cmake/gtest.cmake | |
| +++ b/cmake/gtest.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(gtest | |
| - google/googletest v1.15.2 | |
| - MD5=eb1c5c237d13ed12bf492d3997ca6b0d | |
| +FetchContent_Declare(gtest | |
| + SOURCE_DIR @gtestSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(gtest | |
| diff --git a/cmake/jemalloc.cmake b/cmake/jemalloc.cmake | |
| index 5c69cfa7..246d16f0 100644 | |
| --- a/cmake/jemalloc.cmake | |
| +++ b/cmake/jemalloc.cmake | |
| @@ -25,19 +25,19 @@ endif() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(jemalloc | |
| - jemalloc/jemalloc 5.3.0 | |
| - SHA1=1be8fdba021e9d6ed201e7d6a3c464b2223fc927 | |
| +FetchContent_Declare(jemalloc | |
| + SOURCE_DIR @jemallocSrc@ | |
| ) | |
| FetchContent_GetProperties(jemalloc) | |
| if(NOT jemalloc_POPULATED) | |
| FetchContent_Populate(jemalloc) | |
| + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${jemalloc_SOURCE_DIR} ${jemalloc_BINARY_DIR}) | |
| execute_process(COMMAND autoconf | |
| - WORKING_DIRECTORY ${jemalloc_SOURCE_DIR} | |
| + WORKING_DIRECTORY ${jemalloc_BINARY_DIR} | |
| ) | |
| - execute_process(COMMAND ${jemalloc_SOURCE_DIR}/configure CC=${CMAKE_C_COMPILER} -C --enable-autogen | |
| + execute_process(COMMAND ${jemalloc_BINARY_DIR}/configure CC=${CMAKE_C_COMPILER} -C --enable-autogen | |
| --disable-shared --disable-libdl ${DISABLE_CACHE_OBLIVIOUS} --with-jemalloc-prefix="" | |
| WORKING_DIRECTORY ${jemalloc_BINARY_DIR} | |
| ) | |
| diff --git a/cmake/jsoncons.cmake b/cmake/jsoncons.cmake | |
| index 993f0849..d2306db0 100644 | |
| --- a/cmake/jsoncons.cmake | |
| +++ b/cmake/jsoncons.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(jsoncons | |
| - danielaparker/jsoncons v1.1.0 | |
| - MD5=6aa6c2aec8876c49cab90be75bc545a9 | |
| +FetchContent_Declare(jsoncons | |
| + SOURCE_DIR @jsonconsSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(jsoncons | |
| diff --git a/cmake/libevent.cmake b/cmake/libevent.cmake | |
| index f0148599..ab7e256e 100644 | |
| --- a/cmake/libevent.cmake | |
| +++ b/cmake/libevent.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(libevent | |
| - libevent/libevent release-2.1.12-stable | |
| - MD5=041edf4f20251f429d1674759ab6882c | |
| +FetchContent_Declare(libevent | |
| + SOURCE_DIR @libeventSrc@ | |
| ) | |
| set(libevent_disable_ssl ON) | |
| diff --git a/cmake/lua.cmake b/cmake/lua.cmake | |
| index 0b6827b0..625957f0 100644 | |
| --- a/cmake/lua.cmake | |
| +++ b/cmake/lua.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(lua | |
| - RocksLabs/lua f458c3d797db31155fa0c156d5301716df48cb8c | |
| - MD5=c7c4deb9f750d8f2bef0044a701df85c | |
| +FetchContent_Declare(lua | |
| + SOURCE_DIR @luaSrc@ | |
| ) | |
| FetchContent_GetProperties(lua) | |
| diff --git a/cmake/luajit.cmake b/cmake/luajit.cmake | |
| index 2e38efa0..65b2c49c 100644 | |
| --- a/cmake/luajit.cmake | |
| +++ b/cmake/luajit.cmake | |
| @@ -39,9 +39,8 @@ if ((${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND (NOT CMAKE_OSX_DEPLOYMENT_TARGET | |
| message(FATAL_ERROR "The CMake option `CMAKE_OSX_DEPLOYMENT_TARGET` need to be specified, e.g. `-DCMAKE_OSX_DEPLOYMENT_TARGET=10.3`") | |
| endif () | |
| -FetchContent_DeclareGitHubWithMirror(luajit | |
| - RocksLabs/LuaJIT c0a8e68325ec261a77bde1c8eabad398168ffe74 | |
| - MD5=7ff3e5ca4ddec59be2c2f97c5ff881d0) | |
| +FetchContent_Declare(luajit | |
| + SOURCE_DIR @luajitSrc@) | |
| FetchContent_GetProperties(luajit) | |
| if (NOT lua_POPULATED) | |
| @@ -56,10 +55,11 @@ if (NOT lua_POPULATED) | |
| set(MACOSX_TARGET "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") | |
| endif () | |
| + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${luajit_SOURCE_DIR} ${luajit_BINARY_DIR}) | |
| add_custom_target(make_luajit COMMAND ${MAKE_COMMAND} libluajit.a ${NINJA_MAKE_JOBS_FLAG} | |
| "CFLAGS=${LUA_CFLAGS}" ${MACOSX_TARGET} | |
| - WORKING_DIRECTORY ${luajit_SOURCE_DIR}/src | |
| - BYPRODUCTS ${luajit_SOURCE_DIR}/src/libluajit.a | |
| + WORKING_DIRECTORY ${luajit_BINARY_DIR}/src | |
| + BYPRODUCTS ${luajit_BINARY_DIR}/src/libluajit.a | |
| ) | |
| file(GLOB LUA_PUBLIC_HEADERS "${luajit_SOURCE_DIR}/src/*.hpp" "${luajit_SOURCE_DIR}/src/*.h") | |
| @@ -68,5 +68,5 @@ endif() | |
| add_library(luajit INTERFACE) | |
| target_include_directories(luajit INTERFACE ${luajit_BINARY_DIR}/include) | |
| -target_link_libraries(luajit INTERFACE ${luajit_SOURCE_DIR}/src/libluajit.a dl) | |
| +target_link_libraries(luajit INTERFACE ${luajit_BINARY_DIR}/src/libluajit.a dl) | |
| add_dependencies(luajit make_luajit) | |
| diff --git a/cmake/lz4.cmake b/cmake/lz4.cmake | |
| index 6df0b48f..1a676e2b 100644 | |
| --- a/cmake/lz4.cmake | |
| +++ b/cmake/lz4.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(lz4 | |
| - lz4/lz4 v1.10.0 | |
| - MD5=0ef5a1dfd7fe28c246275c043531165d | |
| +FetchContent_Declare(lz4 | |
| + SOURCE_DIR @lz4Src@ | |
| ) | |
| FetchContent_GetProperties(lz4) | |
| @@ -32,13 +31,14 @@ if(NOT lz4_POPULATED) | |
| set(APPLE_FLAG "CFLAGS=-isysroot ${CMAKE_OSX_SYSROOT}") | |
| endif() | |
| + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${lz4_SOURCE_DIR} ${lz4_BINARY_DIR}) | |
| add_custom_target(make_lz4 COMMAND ${MAKE_COMMAND} CC=${CMAKE_C_COMPILER} ${NINJA_MAKE_JOBS_FLAG} ${APPLE_FLAG} liblz4.a | |
| - WORKING_DIRECTORY ${lz4_SOURCE_DIR}/lib | |
| - BYPRODUCTS ${lz4_SOURCE_DIR}/lib/liblz4.a | |
| + WORKING_DIRECTORY ${lz4_BINARY_DIR}/lib | |
| + BYPRODUCTS ${lz4_BINARY_DIR}/lib/liblz4.a | |
| ) | |
| endif() | |
| add_library(lz4 INTERFACE) | |
| -target_include_directories(lz4 INTERFACE $<BUILD_INTERFACE:${lz4_SOURCE_DIR}/lib>) | |
| -target_link_libraries(lz4 INTERFACE $<BUILD_INTERFACE:${lz4_SOURCE_DIR}/lib/liblz4.a>) | |
| +target_include_directories(lz4 INTERFACE $<BUILD_INTERFACE:${lz4_BINARY_DIR}/lib>) | |
| +target_link_libraries(lz4 INTERFACE $<BUILD_INTERFACE:${lz4_BINARY_DIR}/lib/liblz4.a>) | |
| add_dependencies(lz4 make_lz4) | |
| diff --git a/cmake/pegtl.cmake b/cmake/pegtl.cmake | |
| index 6e4b581f..5cf3c1c0 100644 | |
| --- a/cmake/pegtl.cmake | |
| +++ b/cmake/pegtl.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubTarWithMirror(pegtl | |
| - taocpp/PEGTL 3.2.8 | |
| - MD5=50339029d1bb037909b28c382214033e | |
| +FetchContent_Declare(pegtl | |
| + SOURCE_DIR @pegtlSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(pegtl) | |
| diff --git a/cmake/rangev3.cmake b/cmake/rangev3.cmake | |
| index c30a1468..62e09957 100644 | |
| --- a/cmake/rangev3.cmake | |
| +++ b/cmake/rangev3.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(rangev3 | |
| - ericniebler/range-v3 0.12.0 | |
| - MD5=e220e3f545fdf46241b4f139822d73a1 | |
| +FetchContent_Declare(rangev3 | |
| + SOURCE_DIR @rangev3Src@ | |
| ) | |
| if (CMAKE_BUILD_TYPE STREQUAL "Debug") | |
| diff --git a/cmake/rocksdb.cmake b/cmake/rocksdb.cmake | |
| index f7412a59..d4855d19 100644 | |
| --- a/cmake/rocksdb.cmake | |
| +++ b/cmake/rocksdb.cmake | |
| @@ -25,9 +25,8 @@ endif() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(rocksdb | |
| - facebook/rocksdb v9.10.0 | |
| - MD5=ccc55dbd6f89d41c5bf2cb5a4c83a714 | |
| +FetchContent_Declare(rocksdb | |
| + SOURCE_DIR @rocksdbSrc@ | |
| ) | |
| FetchContent_GetProperties(jemalloc) | |
| @@ -35,6 +34,7 @@ FetchContent_GetProperties(snappy) | |
| FetchContent_GetProperties(tbb) | |
| FetchContent_MakeAvailableWithArgs(rocksdb | |
| + CMAKE_CXX_FLAGS=-mpclmul | |
| CMAKE_MODULE_PATH=${PROJECT_SOURCE_DIR}/cmake/modules # to locate FindJeMalloc.cmake | |
| Snappy_DIR=${PROJECT_SOURCE_DIR}/cmake/modules # to locate SnappyConfig.cmake | |
| FAIL_ON_WARNINGS=OFF | |
| diff --git a/cmake/snappy.cmake b/cmake/snappy.cmake | |
| index d62a506d..309a96eb 100644 | |
| --- a/cmake/snappy.cmake | |
| +++ b/cmake/snappy.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(snappy | |
| - google/snappy 1.2.1 | |
| - MD5=b120895e012e097b86bf49e0ef9ca67c | |
| +FetchContent_Declare(snappy | |
| + SOURCE_DIR @snappySrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(snappy | |
| diff --git a/cmake/span.cmake b/cmake/span.cmake | |
| index 0fe733dc..95f6aa7f 100644 | |
| --- a/cmake/span.cmake | |
| +++ b/cmake/span.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(span | |
| - martinmoene/span-lite v0.11.0 | |
| - MD5=9786933d03cda33ac7dccbfe85f771dd | |
| +FetchContent_Declare(span | |
| + SOURCE_DIR @spanSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(span) | |
| diff --git a/cmake/tbb.cmake b/cmake/tbb.cmake | |
| index 622a4783..76150f3b 100644 | |
| --- a/cmake/tbb.cmake | |
| +++ b/cmake/tbb.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(tbb | |
| - oneapi-src/oneTBB v2022.0.0 | |
| - MD5=7eaeff0ddec85182afb60f2232fae2af | |
| +FetchContent_Declare(tbb | |
| + SOURCE_DIR @tbbSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(tbb | |
| diff --git a/cmake/trie.cmake b/cmake/trie.cmake | |
| index 30d63429..8d531b06 100644 | |
| --- a/cmake/trie.cmake | |
| +++ b/cmake/trie.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(trie | |
| - Tessil/hat-trie 906e6abd1e7063f1dacd3a6b270aa654b525eb0a | |
| - MD5=a930364e9f6b60371319664bddf78000 | |
| +FetchContent_Declare(trie | |
| + SOURCE_DIR @trieSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(trie) | |
| diff --git a/cmake/xxhash.cmake b/cmake/xxhash.cmake | |
| index 95b802f9..32319483 100644 | |
| --- a/cmake/xxhash.cmake | |
| +++ b/cmake/xxhash.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(xxhash | |
| - Cyan4973/xxHash v0.8.3 | |
| - MD5=19b919a066c28a9121dd9767e01d0c71 | |
| +FetchContent_Declare(xxhash | |
| + SOURCE_DIR @xxhashSrc@ | |
| ) | |
| FetchContent_GetProperties(xxhash) | |
| diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake | |
| index e92cd543..253c1c87 100644 | |
| --- a/cmake/zlib.cmake | |
| +++ b/cmake/zlib.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(zlib | |
| - madler/zlib v1.3 | |
| - MD5=2be1b77674e5aa3196330e58180e5a2c | |
| +FetchContent_Declare(zlib | |
| + SOURCE_DIR @zlibSrc@ | |
| ) | |
| FetchContent_MakeAvailableWithArgs(zlib) | |
| diff --git a/cmake/zstd.cmake b/cmake/zstd.cmake | |
| index 2b2fb3c9..1c26a939 100644 | |
| --- a/cmake/zstd.cmake | |
| +++ b/cmake/zstd.cmake | |
| @@ -19,9 +19,8 @@ include_guard() | |
| include(cmake/utils.cmake) | |
| -FetchContent_DeclareGitHubWithMirror(zstd | |
| - facebook/zstd v1.5.6 | |
| - MD5=cfb58a03ae01a39d5fff731ecaaa2657 | |
| +FetchContent_Declare(zstd | |
| + SOURCE_DIR @zstdSrc@ | |
| ) | |
| FetchContent_GetProperties(zstd) | |
| @@ -32,13 +31,14 @@ if(NOT zstd_POPULATED) | |
| set(APPLE_FLAG "CFLAGS=-isysroot ${CMAKE_OSX_SYSROOT}") | |
| endif() | |
| + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${zstd_SOURCE_DIR} ${zstd_BINARY_DIR}) | |
| add_custom_target(make_zstd COMMAND ${MAKE_COMMAND} ${NINJA_MAKE_JOBS_FLAG} CC=${CMAKE_C_COMPILER} ${APPLE_FLAG} libzstd.a | |
| - WORKING_DIRECTORY ${zstd_SOURCE_DIR}/lib | |
| - BYPRODUCTS ${zstd_SOURCE_DIR}/lib/libzstd.a | |
| + WORKING_DIRECTORY ${zstd_BINARY_DIR}/lib | |
| + BYPRODUCTS ${zstd_BINARY_DIR}/lib/libzstd.a | |
| ) | |
| endif() | |
| add_library(zstd INTERFACE) | |
| -target_include_directories(zstd INTERFACE $<BUILD_INTERFACE:${zstd_SOURCE_DIR}/lib>) | |
| -target_link_libraries(zstd INTERFACE $<BUILD_INTERFACE:${zstd_SOURCE_DIR}/lib/libzstd.a>) | |
| +target_include_directories(zstd INTERFACE $<BUILD_INTERFACE:${zstd_BINARY_DIR}/lib>) | |
| +target_link_libraries(zstd INTERFACE $<BUILD_INTERFACE:${zstd_BINARY_DIR}/lib/libzstd.a>) | |
| add_dependencies(zstd make_zstd) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/kvrocks.conf b/kvrocks.conf | |
| index 461d077e..da862094 100644 | |
| --- a/kvrocks.conf | |
| +++ b/kvrocks.conf | |
| @@ -817,7 +817,7 @@ rocksdb.block_size 16384 | |
| rocksdb.cache_index_and_filter_blocks yes | |
| # Specify the compression to use. | |
| -# Accept value: "no", "snappy", "lz4", "zstd", "zlib" | |
| +# Accept value: "no", "snappy", "lz4", "lz4hc", "zstd", "zlib" | |
| # default snappy | |
| rocksdb.compression snappy | |
| @@ -835,6 +835,7 @@ rocksdb.compression snappy | |
| # RocksDB Default: | |
| # - zstd: 3 | |
| # - zlib: Z_DEFAULT_COMPRESSION (currently -1) | |
| +# - kLZ4HCCompression: 0 | |
| # - kLZ4: -1 (i.e., `acceleration=1`; see `CompressionOptions::level` doc) | |
| # For all others, RocksDB does not specify a compression level. | |
| # If the compression type doesn't support the setting, it will be a no-op. | |
| diff --git a/src/storage/storage.h b/src/storage/storage.h | |
| index a4563eab..af06d101 100644 | |
| --- a/src/storage/storage.h | |
| +++ b/src/storage/storage.h | |
| @@ -93,6 +93,7 @@ inline const std::vector<CompressionOption> CompressionOptions = { | |
| {rocksdb::kSnappyCompression, "snappy", "kSnappyCompression"}, | |
| {rocksdb::kZlibCompression, "zlib", "kZlibCompression"}, | |
| {rocksdb::kLZ4Compression, "lz4", "kLZ4Compression"}, | |
| + {rocksdb::kLZ4HCCompression, "lz4hc", "kLZ4HCCompression"}, | |
| {rocksdb::kZSTD, "zstd", "kZSTD"}, | |
| }; | |
| diff --git a/tests/gocase/unit/config/config_test.go b/tests/gocase/unit/config/config_test.go | |
| index 34f67c89..6e82d9fc 100644 | |
| --- a/tests/gocase/unit/config/config_test.go | |
| +++ b/tests/gocase/unit/config/config_test.go | |
| @@ -123,7 +123,7 @@ func TestConfigSetCompression(t *testing.T) { | |
| require.NoError(t, rdb.Do(ctx, "SET", "foo", "bar").Err()) | |
| configKey := "rocksdb.compression" | |
| - supportedCompressions := []string{"no", "snappy", "zlib", "lz4", "zstd"} | |
| + supportedCompressions := []string{"no", "snappy", "zlib", "lz4", "lz4hc", "zstd"} | |
| for _, compression := range supportedCompressions { | |
| require.NoError(t, rdb.ConfigSet(ctx, configKey, compression).Err()) | |
| vals, err := rdb.ConfigGet(ctx, configKey).Result() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment