direct-rocksdb 0.0.2 → 0.0.3
raw patch · 29 files changed
+2893/−2901 lines, 29 filessetup-changed
Files
- README.md +15/−3
- Setup.hs +64/−43
- direct-rocksdb.cabal +17/−26
- rocksdb-5.8/CMakeLists.txt +919/−919
- rocksdb-5.8/build_tools/cont_integration.sh +135/−135
- rocksdb-5.8/build_tools/dependencies.sh +18/−18
- rocksdb-5.8/build_tools/dependencies_4.8.1.sh +18/−18
- rocksdb-5.8/build_tools/dockerbuild.sh +2/−2
- rocksdb-5.8/build_tools/fb_compile_mongo.sh +55/−55
- rocksdb-5.8/build_tools/fbcode_config.sh +156/−156
- rocksdb-5.8/build_tools/fbcode_config4.8.1.sh +115/−115
- rocksdb-5.8/build_tools/format-diff.sh +122/−122
- rocksdb-5.8/build_tools/make_package.sh +128/−128
- rocksdb-5.8/build_tools/regression_build_test.sh +413/−413
- rocksdb-5.8/build_tools/update_dependencies.sh +131/−131
- rocksdb-5.8/build_tools/version.sh +22/−22
- rocksdb-5.8/cmake/modules/FindJeMalloc.cmake +0/−21
- rocksdb-5.8/cmake/modules/Findbzip2.cmake +0/−21
- rocksdb-5.8/cmake/modules/Findlz4.cmake +0/−21
- rocksdb-5.8/cmake/modules/Findsnappy.cmake +0/−21
- rocksdb-5.8/cmake/modules/Findzlib.cmake +0/−21
- rocksdb-5.8/cmake/modules/Findzstd.cmake +0/−21
- src/Database/RocksDB/DB.hs +4/−4
- src/Database/RocksDB/Exceptions.hs +0/−15
- src/Database/RocksDB/Internals.hs +532/−441
- src/Database/RocksDB/Options.hs +3/−3
- src/Database/RocksDB/ReadOptions.hs +3/−3
- src/Database/RocksDB/Utils.hs +18/−0
- src/Database/RocksDB/WriteOptions.hs +3/−3
README.md view
@@ -5,14 +5,26 @@ Bindings to [RocksDB](https://github.com/facebook/rocksdb). -## Dependencies+## Building -This package builds RocksDB in place and doesn't link with system-wide RocksDB. Requires:+This package builds RocksDB in place by default. This requires: * [`cmake`](https://cmake.org/) * [`ninja`](http://ninja-build.org/) * `awk` -## Windows support+You can use the `NINJA_J` environment variable to control the number of threads used by `ninja`, e.g. `NINJA_J=2`. This is a hack for building on CI, since `ninja` seems to fail to detect the actual number of CPU cores available.++To skip building and link with system-wide RocksDB, use the `system-rocksdb` Cabal flag. This is not recommended, since this package is only developed with the latest release of RocksDB.++## Using++[`Database.RocksDB.Internals`](src/Database/RocksDB/Internals.hs) contains the raw C bindings. All functions and `enum` values in [`rocksdb/c.h`](rocksdb-5.8/include/rocksdb/c.h) are covered. The opaque types like `rocksdb_t`, `rocksdb_options_t` have corresponding Haskell types like `Rocksdb`, `RocksdbOptions`. They are nullary datatypes and are only used to mark the `Ptr` phantom type.++The higher-level API is being worked on. Using functions like `marshalOptions`, `openDB`, you can obtain a `ForeignPtr` which carries a C resource. The garbage collector can automatically invokes the `ForeignPtr` finalizers, and you can also use `finalizeForeignPtr` with something like `bracket` or `ResourceT` to ensure scoped finalizing. Also, `ByteString`s are used instead of raw buffers.++Some RocksDB functions require passing in a pointer to an error message buffer for error reporting. The higher-level API will obtain the error message and throw it with a `RocksDBException` when present.++## About Windows support Not working at the moment (builds but crashes when built with mingw-w64 toolchain). May switch to MSVC to fix it.
Setup.hs view
@@ -1,9 +1,11 @@+{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -Wall -Wno-deprecations #-} import Data.Foldable import Distribution.Simple import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Toolkit+import Distribution.System import Distribution.Types.BuildInfo import Distribution.Types.GenericPackageDescription import Distribution.Types.PackageDescription@@ -19,48 +21,67 @@ , confHook = \t f -> do lbi <- confHook simpleUserHooks t f- rocksdb_srcdir <- (</> "rocksdb-5.8") <$> getCurrentDirectory- let clbi = getComponentLocalBuildInfo lbi CLibName- rocksdb_libname =- getHSLibraryName (componentUnitId clbi) ++ "-rocksdb-5.8"- rocksdb_builddir = componentBuildDir lbi clbi </> "rocksdb-5.8"- lib_installdir =- libdir $- getComponentInstallDirs- (packageDescription $ fst t)+ let extra_libs =+ "stdc++" :+ (case buildOS of+ Windows -> ["rpcrt4"]+ _ -> [])+ [system_rocksdb] =+ [v | (k, v) <- flagAssignment lbi, k == "system-rocksdb"]+ if system_rocksdb+ then pure+ lbi+ { localPkgDescr =+ updatePackageDescription+ ( Just+ emptyBuildInfo {extraLibs = "rocksdb" : extra_libs}+ , []) $+ localPkgDescr lbi+ }+ else do+ rocksdb_srcdir <- (</> "rocksdb-5.8") <$> getCurrentDirectory+ let clbi = getComponentLocalBuildInfo lbi CLibName+ rocksdb_libname =+ getHSLibraryName (componentUnitId clbi) ++ "-rocksdb-5.8"+ rocksdb_builddir =+ componentBuildDir lbi clbi </> "rocksdb-5.8"+ lib_installdir =+ libdir $+ getComponentInstallDirs+ (packageDescription $ fst t)+ lbi+ CLibName+ for_ [rocksdb_builddir, lib_installdir] $+ createDirectoryIfMissing True+ withCurrentDirectory rocksdb_builddir $ do+ runLBIProgram lbi- CLibName- for_ [rocksdb_builddir, lib_installdir] $- createDirectoryIfMissing True- withCurrentDirectory rocksdb_builddir $ do- runLBIProgram- lbi- cmakeProgram- [ rocksdb_srcdir- , "-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true"- , "-G"- , "Ninja"- ]- ninja_extra_args <-- do r <- lookupEnv "NINJA_J"- pure $- case r of- Just s -> ["-j", s]- _ -> []- runLBIProgram lbi ninjaProgram $- ninja_extra_args ++ ["librocksdb.a"]- copyFile "librocksdb.a" $- lib_installdir </> "lib" ++ rocksdb_libname <.> "a"- pure- lbi- { localPkgDescr =- updatePackageDescription- ( Just- emptyBuildInfo- { extraLibs = [rocksdb_libname]- , extraLibDirs = [lib_installdir]- }- , []) $- localPkgDescr lbi- }+ cmakeProgram+ [ rocksdb_srcdir+ , "-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true"+ , "-G"+ , "Ninja"+ ]+ ninja_extra_args <-+ do r <- lookupEnv "NINJA_J"+ pure $+ case r of+ Just s -> ["-j", s]+ _ -> []+ runLBIProgram lbi ninjaProgram $+ ninja_extra_args ++ ["librocksdb.a"]+ copyFile "librocksdb.a" $+ lib_installdir </> "lib" ++ rocksdb_libname <.> "a"+ pure+ lbi+ { localPkgDescr =+ updatePackageDescription+ ( Just+ emptyBuildInfo+ { extraLibs = rocksdb_libname : extra_libs+ , extraLibDirs = [lib_installdir]+ }+ , []) $+ localPkgDescr lbi+ } }
direct-rocksdb.cabal view
@@ -1,9 +1,9 @@--- This file has been generated from package.yaml by hpack version 0.17.1.+-- This file has been generated from package.yaml by hpack version 0.19.3. -- -- see: https://github.com/sol/hpack name: direct-rocksdb-version: 0.0.2+version: 0.0.3 synopsis: Bindings to RocksDB. category: Database stability: alpha@@ -56,12 +56,6 @@ rocksdb-5.8/cache/lru_cache_test.cc rocksdb-5.8/cache/sharded_cache.cc rocksdb-5.8/cache/sharded_cache.h- rocksdb-5.8/cmake/modules/Findbzip2.cmake- rocksdb-5.8/cmake/modules/FindJeMalloc.cmake- rocksdb-5.8/cmake/modules/Findlz4.cmake- rocksdb-5.8/cmake/modules/Findsnappy.cmake- rocksdb-5.8/cmake/modules/Findzlib.cmake- rocksdb-5.8/cmake/modules/Findzstd.cmake rocksdb-5.8/cmake/RocksDBConfig.cmake.in rocksdb-5.8/CMakeLists.txt rocksdb-5.8/CONTRIBUTING.md@@ -1210,34 +1204,34 @@ custom-setup setup-depends:- base >= 4.10 && < 5- , Cabal >= 2.0 && < 2.2- , cabal-toolkit >= 0.0.3+ Cabal >=2.0 && <2.2+ , base >=4.10 && <5+ , cabal-toolkit >=0.0.3 , directory , filepath +flag system-rocksdb+ manual: False+ default: False+ library hs-source-dirs: src- other-extensions: DeriveAnyClass RecordWildCards ScopedTypeVariables+ other-extensions: DeriveAnyClass InterruptibleFFI RecordWildCards ScopedTypeVariables ghc-options: -Wall- extra-libraries:- stdc++ build-depends:- base >= 4.10 && < 5+ base >=4.10 && <5 , bytestring , safe-exceptions- if os(windows)- extra-libraries:- rpcrt4 exposed-modules: Database.RocksDB.DB Database.RocksDB.Exceptions Database.RocksDB.Internals Database.RocksDB.Options Database.RocksDB.ReadOptions- Database.RocksDB.Utils Database.RocksDB.WriteOptions+ other-modules:+ Database.RocksDB.Utils default-language: Haskell2010 test-suite direct-rocksdb-test@@ -1247,16 +1241,13 @@ test other-extensions: OverloadedStrings ghc-options: -Wall -threaded -with-rtsopts=-N- extra-libraries:- stdc++ build-depends:- base >= 4.10 && < 5+ base >=4.10 && <5 , bytestring- , safe-exceptions , direct-rocksdb , directory , filepath- if os(windows)- extra-libraries:- rpcrt4+ , safe-exceptions+ other-modules:+ Paths_direct_rocksdb default-language: Haskell2010
rocksdb-5.8/CMakeLists.txt view
@@ -1,919 +1,919 @@-# Prerequisites for Windows: -# This cmake build is for Windows 64-bit only. -# -# Prerequisites: -# You must have at least Visual Studio 2015 Update 3. Start the Developer Command Prompt window that is a part of Visual Studio installation. -# Run the build commands from within the Developer Command Prompt window to have paths to the compiler and runtime libraries set. -# You must have git.exe in your %PATH% environment variable. -# -# To build Rocksdb for Windows is as easy as 1-2-3-4-5: -# -# 1. Update paths to third-party libraries in thirdparty.inc file -# 2. Create a new directory for build artifacts -# mkdir build -# cd build -# 3. Run cmake to generate project files for Windows, add more options to enable required third-party libraries. -# See thirdparty.inc for more information. -# sample command: cmake -G "Visual Studio 14 Win64" -DGFLAGS=1 -DSNAPPY=1 -DJEMALLOC=1 -DJNI=1 .. -# 4. Then build the project in debug mode (you may want to add /m[:<N>] flag to run msbuild in <N> parallel threads -# or simply /m ot use all avail cores) -# msbuild rocksdb.sln -# -# rocksdb.sln build features exclusions of test only code in Release. If you build ALL_BUILD then everything -# will be attempted but test only code does not build in Release mode. -# -# 5. And release mode (/m[:<N>] is also supported) -# msbuild rocksdb.sln /p:Configuration=Release -# -# Linux: -# -# 1. Install a recent toolchain such as devtoolset-3 if you're on a older distro. C++11 required. -# 2. mkdir build; cd build -# 3. cmake .. -# 4. make -j - -cmake_minimum_required(VERSION 2.6) -project(rocksdb) - -if(POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) -endif() - -list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/") - -if(MSVC) - include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc) -else() - option(WITH_JEMALLOC "build with JeMalloc" OFF) - if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - # FreeBSD has jemaloc as default malloc - # but it does not have all the jemalloc files in include/... - set(WITH_JEMALLOC ON) - else() - if(WITH_JEMALLOC) - find_package(JeMalloc REQUIRED) - add_definitions(-DROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE) - include_directories(${JEMALLOC_INCLUDE_DIR}) - endif() - endif() - - option(WITH_SNAPPY "build with SNAPPY" OFF) - if(WITH_SNAPPY) - find_package(snappy REQUIRED) - add_definitions(-DSNAPPY) - include_directories(${SNAPPY_INCLUDE_DIR}) - list(APPEND THIRDPARTY_LIBS ${SNAPPY_LIBRARIES}) - endif() - - option(WITH_ZLIB "build with zlib" OFF) - if(WITH_ZLIB) - find_package(zlib REQUIRED) - add_definitions(-DZLIB) - include_directories(${ZLIB_INCLUDE_DIR}) - list(APPEND THIRDPARTY_LIBS ${ZLIB_LIBRARIES}) - endif() - - option(WITH_BZ2 "build with bzip2" OFF) - if(WITH_BZ2) - find_package(bzip2 REQUIRED) - add_definitions(-DBZIP2) - include_directories(${BZIP2_INCLUDE_DIR}) - list(APPEND THIRDPARTY_LIBS ${BZIP2_LIBRARIES}) - endif() - - option(WITH_LZ4 "build with lz4" OFF) - if(WITH_LZ4) - find_package(lz4 REQUIRED) - add_definitions(-DLZ4) - include_directories(${LZ4_INCLUDE_DIR}) - list(APPEND THIRDPARTY_LIBS ${LZ4_LIBRARIES}) - endif() - - option(WITH_ZSTD "build with zstd" OFF) - if(WITH_ZSTD) - find_package(zstd REQUIRED) - add_definitions(-DZSTD) - include_directories(${ZSTD_INCLUDE_DIR}) - list(APPEND THIRDPARTY_LIBS ${ZSTD_LIBRARIES}) - endif() -endif() - -if(WIN32) - execute_process(COMMAND powershell -noprofile -Command "Get-Date -format MM_dd_yyyy" OUTPUT_VARIABLE DATE) - execute_process(COMMAND powershell -noprofile -Command "Get-Date -format HH:mm:ss" OUTPUT_VARIABLE TIME) - string(REGEX REPLACE "(..)_(..)_..(..).*" "\\1/\\2/\\3" DATE "${DATE}") - string(REGEX REPLACE "(..):(.....).*" " \\1:\\2" TIME "${TIME}") - set(GIT_DATE_TIME "${DATE} ${TIME}") -else() - execute_process(COMMAND date "+%Y/%m/%d %H:%M:%S" OUTPUT_VARIABLE DATETIME) - string(REGEX REPLACE "\n" "" DATETIME ${DATETIME}) - set(GIT_DATE_TIME "${DATETIME}") -endif() - -find_package(Git) - -if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") - if(WIN32) - execute_process(COMMAND $ENV{COMSPEC} /C ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE GIT_SHA) - else() - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE GIT_SHA) - endif() -else() - set(GIT_SHA 0) -endif() - -string(REGEX REPLACE "[^0-9a-f]+" "" GIT_SHA "${GIT_SHA}") - -if(NOT WIN32) - execute_process(COMMAND - "./build_tools/version.sh" "full" - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - OUTPUT_VARIABLE ROCKSDB_VERSION - ) - string(STRIP "${ROCKSDB_VERSION}" ROCKSDB_VERSION) - execute_process(COMMAND - "./build_tools/version.sh" "major" - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - OUTPUT_VARIABLE ROCKSDB_VERSION_MAJOR - ) - string(STRIP "${ROCKSDB_VERSION_MAJOR}" ROCKSDB_VERSION_MAJOR) -endif() - -option(WITH_MD_LIBRARY "build with MD" ON) -if(WIN32 AND MSVC) - if(WITH_MD_LIBRARY) - set(RUNTIME_LIBRARY "MD") - else() - set(RUNTIME_LIBRARY "MT") - endif() -endif() - -set(BUILD_VERSION_CC ${CMAKE_BINARY_DIR}/build_version.cc) -configure_file(util/build_version.cc.in ${BUILD_VERSION_CC} @ONLY) -add_library(build_version OBJECT ${BUILD_VERSION_CC}) -target_include_directories(build_version PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/util) -if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi /nologo /EHsc /GS /Gd /GR /GF /fp:precise /Zc:wchar_t /Zc:forScope /errorReport:queue") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FC /d2Zi+ /W3 /wd4127 /wd4800 /wd4996 /wd4351") -else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wextra -Wall") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers") - if(MINGW) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format") - endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -fno-omit-frame-pointer") - include(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-momit-leaf-frame-pointer" HAVE_OMIT_LEAF_FRAME_POINTER) - if(HAVE_OMIT_LEAF_FRAME_POINTER) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -momit-leaf-frame-pointer") - endif() - endif() -endif() - -option(PORTABLE "build a portable binary" OFF) -option(FORCE_SSE42 "force building with SSE4.2, even when PORTABLE=ON" OFF) -if(PORTABLE) - # MSVC does not need a separate compiler flag to enable SSE4.2; if nmmintrin.h - # is available, it is available by default. - if(FORCE_SSE42 AND NOT MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2") - endif() -else() - if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") - endif() -endif() - -set(CMAKE_REQUIRED_FLAGS ${CMAKE_CXX_FLAGS}) -include(CheckCXXSourceCompiles) -CHECK_CXX_SOURCE_COMPILES(" -#include <cstdint> -#include <nmmintrin.h> -int main() { - volatile uint32_t x = _mm_crc32_u32(0, 0); -} -" HAVE_SSE42) -if(HAVE_SSE42) - add_definitions(-DHAVE_SSE42) -elseif(FORCE_SSE42) - message(FATAL_ERROR "FORCE_SSE42=ON but unable to compile with SSE4.2 enabled") -endif() - -CHECK_CXX_SOURCE_COMPILES(" -#if defined(_MSC_VER) && !defined(__thread) -#define __thread __declspec(thread) -#endif -int main() { - static __thread int tls; -} -" HAVE_THREAD_LOCAL) -if(HAVE_THREAD_LOCAL) - add_definitions(-DROCKSDB_SUPPORT_THREAD_LOCAL) -endif() - -option(FAIL_ON_WARNINGS "Treat compile warnings as errors" ON) -if(FAIL_ON_WARNINGS) - if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX") - else() # assume GCC - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - endif() -endif() - -option(WITH_ASAN "build with ASAN" OFF) -if(WITH_ASAN) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") - if(WITH_JEMALLOC) - message(FATAL "ASAN does not work well with JeMalloc") - endif() -endif() - -option(WITH_TSAN "build with TSAN" OFF) -if(WITH_TSAN) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread -pie") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fPIC") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fPIC") - if(WITH_JEMALLOC) - message(FATAL "TSAN does not work well with JeMalloc") - endif() -endif() - -option(WITH_UBSAN "build with UBSAN" OFF) -if(WITH_UBSAN) - add_definitions(-DROCKSDB_UBSAN_RUN) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined") - if(WITH_JEMALLOC) - message(FATAL "UBSAN does not work well with JeMalloc") - endif() -endif() - -# Used to run CI build and tests so we can run faster -set(OPTIMIZE_DEBUG_DEFAULT 0) # Debug build is unoptimized by default use -DOPTDBG=1 to optimize - -if(DEFINED OPTDBG) - set(OPTIMIZE_DEBUG ${OPTDBG}) -else() - set(OPTIMIZE_DEBUG ${OPTIMIZE_DEBUG_DEFAULT}) -endif() - -if(MSVC) - if((${OPTIMIZE_DEBUG} EQUAL 1)) - message(STATUS "Debug optimization is enabled") - set(CMAKE_CXX_FLAGS_DEBUG "/Oxt /${RUNTIME_LIBRARY}d") - else() - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /RTC1 /Gm /${RUNTIME_LIBRARY}d") - endif() - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oxt /Zp8 /Gm- /Gy /${RUNTIME_LIBRARY}") - - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG") -endif() - -if(CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp") -endif() - -option(ROCKSDB_LITE "Build RocksDBLite version" OFF) -if(ROCKSDB_LITE) - add_definitions(-DROCKSDB_LITE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") -endif() - -if(CMAKE_SYSTEM_NAME MATCHES "Cygwin") - add_definitions(-fno-builtin-memcmp -DCYGWIN) -elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin") - add_definitions(-DOS_MACOSX) - if(CMAKE_SYSTEM_PROCESSOR MATCHES arm) - add_definitions(-DIOS_CROSS_COMPILE -DROCKSDB_LITE) - # no debug info for IOS, that will make our library big - add_definitions(-DNDEBUG) - endif() -elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") - add_definitions(-DOS_LINUX) -elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS") - add_definitions(-DOS_SOLARIS) -elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - add_definitions(-DOS_FREEBSD) -elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD") - add_definitions(-DOS_NETBSD) -elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") - add_definitions(-DOS_OPENBSD) -elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly") - add_definitions(-DOS_DRAGONFLYBSD) -elseif(CMAKE_SYSTEM_NAME MATCHES "Android") - add_definitions(-DOS_ANDROID) -elseif(CMAKE_SYSTEM_NAME MATCHES "Windows") - add_definitions(-DWIN32 -DOS_WIN -D_MBCS -DWIN64 -DNOMINMAX) - if(MINGW) - add_definitions(-D_WIN32_WINNT=_WIN32_WINNT_VISTA) - endif() -endif() - -if(NOT WIN32) - add_definitions(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX) -endif() - -option(WITH_FALLOCATE "build with fallocate" ON) - -if(WITH_FALLOCATE) - set(CMAKE_REQUIRED_FLAGS ${CMAKE_C_FLAGS}) - include(CheckCSourceCompiles) - CHECK_C_SOURCE_COMPILES(" -#include <fcntl.h> -#include <linux/falloc.h> -int main() { - int fd = open(\"/dev/null\", 0); - fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, 0, 1024); -} -" HAVE_FALLOCATE) - if(HAVE_FALLOCATE) - add_definitions(-DROCKSDB_FALLOCATE_PRESENT) - endif() -endif() - -include(CheckFunctionExists) -CHECK_FUNCTION_EXISTS(malloc_usable_size HAVE_MALLOC_USABLE_SIZE) -if(HAVE_MALLOC_USABLE_SIZE) - add_definitions(-DROCKSDB_MALLOC_USABLE_SIZE) -endif() - -include_directories(${PROJECT_SOURCE_DIR}) -include_directories(${PROJECT_SOURCE_DIR}/include) -include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src) -find_package(Threads REQUIRED) - -add_subdirectory(third-party/gtest-1.7.0/fused-src/gtest) - -# Main library source code - -set(SOURCES - cache/clock_cache.cc - cache/lru_cache.cc - cache/sharded_cache.cc - db/builder.cc - db/c.cc - db/column_family.cc - db/compacted_db_impl.cc - db/compaction.cc - db/compaction_iterator.cc - db/compaction_job.cc - db/compaction_picker.cc - db/compaction_picker_universal.cc - db/convenience.cc - db/db_filesnapshot.cc - db/db_impl.cc - db/db_impl_write.cc - db/db_impl_compaction_flush.cc - db/db_impl_files.cc - db/db_impl_open.cc - db/db_impl_debug.cc - db/db_impl_experimental.cc - db/db_impl_readonly.cc - db/db_info_dumper.cc - db/db_iter.cc - db/dbformat.cc - db/event_helpers.cc - db/experimental.cc - db/external_sst_file_ingestion_job.cc - db/file_indexer.cc - db/flush_job.cc - db/flush_scheduler.cc - db/forward_iterator.cc - db/internal_stats.cc - db/log_reader.cc - db/log_writer.cc - db/malloc_stats.cc - db/managed_iterator.cc - db/memtable.cc - db/memtable_list.cc - db/merge_helper.cc - db/merge_operator.cc - db/range_del_aggregator.cc - db/repair.cc - db/snapshot_impl.cc - db/table_cache.cc - db/table_properties_collector.cc - db/transaction_log_impl.cc - db/version_builder.cc - db/version_edit.cc - db/version_set.cc - db/wal_manager.cc - db/write_batch.cc - db/write_batch_base.cc - db/write_controller.cc - db/write_thread.cc - env/env.cc - env/env_chroot.cc - env/env_encryption.cc - env/env_hdfs.cc - env/mock_env.cc - memtable/alloc_tracker.cc - memtable/hash_cuckoo_rep.cc - memtable/hash_linklist_rep.cc - memtable/hash_skiplist_rep.cc - memtable/skiplistrep.cc - memtable/vectorrep.cc - memtable/write_buffer_manager.cc - monitoring/histogram.cc - monitoring/histogram_windowing.cc - monitoring/instrumented_mutex.cc - monitoring/iostats_context.cc - monitoring/perf_context.cc - monitoring/perf_level.cc - monitoring/statistics.cc - monitoring/thread_status_impl.cc - monitoring/thread_status_updater.cc - monitoring/thread_status_util.cc - monitoring/thread_status_util_debug.cc - options/cf_options.cc - options/db_options.cc - options/options.cc - options/options_helper.cc - options/options_parser.cc - options/options_sanity_check.cc - port/stack_trace.cc - table/adaptive_table_factory.cc - table/block.cc - table/block_based_filter_block.cc - table/block_based_table_builder.cc - table/block_based_table_factory.cc - table/block_based_table_reader.cc - table/block_builder.cc - table/block_prefix_index.cc - table/bloom_block.cc - table/cuckoo_table_builder.cc - table/cuckoo_table_factory.cc - table/cuckoo_table_reader.cc - table/flush_block_policy.cc - table/format.cc - table/full_filter_block.cc - table/get_context.cc - table/index_builder.cc - table/iterator.cc - table/merging_iterator.cc - table/meta_blocks.cc - table/partitioned_filter_block.cc - table/persistent_cache_helper.cc - table/plain_table_builder.cc - table/plain_table_factory.cc - table/plain_table_index.cc - table/plain_table_key_coding.cc - table/plain_table_reader.cc - table/sst_file_writer.cc - table/table_properties.cc - table/two_level_iterator.cc - tools/db_bench_tool.cc - tools/dump/db_dump_tool.cc - tools/ldb_cmd.cc - tools/ldb_tool.cc - tools/sst_dump_tool.cc - util/arena.cc - util/auto_roll_logger.cc - util/bloom.cc - util/coding.cc - util/compaction_job_stats_impl.cc - util/comparator.cc - util/concurrent_arena.cc - util/crc32c.cc - util/delete_scheduler.cc - util/dynamic_bloom.cc - util/event_logger.cc - util/file_reader_writer.cc - util/file_util.cc - util/filename.cc - util/filter_policy.cc - util/hash.cc - util/log_buffer.cc - util/murmurhash.cc - util/random.cc - util/rate_limiter.cc - util/slice.cc - util/sst_file_manager_impl.cc - util/status.cc - util/status_message.cc - util/string_util.cc - util/sync_point.cc - util/testutil.cc - util/thread_local.cc - util/threadpool_imp.cc - util/transaction_test_util.cc - util/xxhash.cc - utilities/backupable/backupable_db.cc - utilities/blob_db/blob_db.cc - utilities/blob_db/blob_db_impl.cc - utilities/blob_db/blob_dump_tool.cc - utilities/blob_db/blob_file.cc - utilities/blob_db/blob_log_reader.cc - utilities/blob_db/blob_log_writer.cc - utilities/blob_db/blob_log_format.cc - utilities/blob_db/ttl_extractor.cc - utilities/cassandra/cassandra_compaction_filter.cc - utilities/cassandra/format.cc - utilities/cassandra/merge_operator.cc - utilities/checkpoint/checkpoint_impl.cc - utilities/col_buf_decoder.cc - utilities/col_buf_encoder.cc - utilities/column_aware_encoding_util.cc - utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc - utilities/date_tiered/date_tiered_db_impl.cc - utilities/debug.cc - utilities/document/document_db.cc - utilities/document/json_document.cc - utilities/document/json_document_builder.cc - utilities/env_mirror.cc - utilities/env_timed.cc - utilities/geodb/geodb_impl.cc - utilities/leveldb_options/leveldb_options.cc - utilities/lua/rocks_lua_compaction_filter.cc - utilities/memory/memory_util.cc - utilities/merge_operators/max.cc - utilities/merge_operators/put.cc - utilities/merge_operators/string_append/stringappend.cc - utilities/merge_operators/string_append/stringappend2.cc - utilities/merge_operators/uint64add.cc - utilities/option_change_migration/option_change_migration.cc - utilities/options/options_util.cc - utilities/persistent_cache/block_cache_tier.cc - utilities/persistent_cache/block_cache_tier_file.cc - utilities/persistent_cache/block_cache_tier_metadata.cc - utilities/persistent_cache/persistent_cache_tier.cc - utilities/persistent_cache/volatile_tier_impl.cc - utilities/redis/redis_lists.cc - utilities/simulator_cache/sim_cache.cc - utilities/spatialdb/spatial_db.cc - utilities/table_properties_collectors/compact_on_deletion_collector.cc - utilities/transactions/optimistic_transaction_db_impl.cc - utilities/transactions/optimistic_transaction.cc - utilities/transactions/transaction_base.cc - utilities/transactions/pessimistic_transaction_db.cc - utilities/transactions/transaction_db_mutex_impl.cc - utilities/transactions/pessimistic_transaction.cc - utilities/transactions/transaction_lock_mgr.cc - utilities/transactions/transaction_util.cc - utilities/transactions/write_prepared_txn.cc - utilities/ttl/db_ttl_impl.cc - utilities/write_batch_with_index/write_batch_with_index.cc - utilities/write_batch_with_index/write_batch_with_index_internal.cc - $<TARGET_OBJECTS:build_version>) - -if(WIN32) - list(APPEND SOURCES - port/win/io_win.cc - port/win/env_win.cc - port/win/env_default.cc - port/win/port_win.cc - port/win/win_logger.cc - port/win/win_thread.cc - port/win/xpress_win.cc) -else() - list(APPEND SOURCES - port/port_posix.cc - env/env_posix.cc - env/io_posix.cc) -endif() - -set(ROCKSDB_STATIC_LIB rocksdb${ARTIFACT_SUFFIX}) -set(ROCKSDB_SHARED_LIB rocksdb-shared${ARTIFACT_SUFFIX}) -set(ROCKSDB_IMPORT_LIB ${ROCKSDB_SHARED_LIB}) -if(WIN32) - set(SYSTEM_LIBS ${SYSTEM_LIBS} Shlwapi.lib Rpcrt4.lib) - set(LIBS ${ROCKSDB_STATIC_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) -else() - set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT}) - set(LIBS ${ROCKSDB_SHARED_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) - - add_library(${ROCKSDB_SHARED_LIB} SHARED ${SOURCES}) - target_link_libraries(${ROCKSDB_SHARED_LIB} - ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) - set_target_properties(${ROCKSDB_SHARED_LIB} PROPERTIES - LINKER_LANGUAGE CXX - VERSION ${ROCKSDB_VERSION} - SOVERSION ${ROCKSDB_VERSION_MAJOR} - CXX_STANDARD 11 - OUTPUT_NAME "rocksdb") -endif() - -option(WITH_LIBRADOS "Build with librados" OFF) -if(WITH_LIBRADOS) - list(APPEND SOURCES - utilities/env_librados.cc) - list(APPEND THIRDPARTY_LIBS rados) -endif() - -add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES}) -target_link_libraries(${ROCKSDB_STATIC_LIB} - ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) - -if(WIN32) - add_library(${ROCKSDB_IMPORT_LIB} SHARED ${SOURCES}) - target_link_libraries(${ROCKSDB_IMPORT_LIB} - ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) - set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES - COMPILE_DEFINITIONS "ROCKSDB_DLL;ROCKSDB_LIBRARY_EXPORTS") - if(MSVC) - set_target_properties(${ROCKSDB_STATIC_LIB} PROPERTIES - COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_STATIC_LIB}.pdb") - set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES - COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_IMPORT_LIB}.pdb") - endif() -endif() - -option(WITH_JNI "build with JNI" OFF) -if(WITH_JNI OR JNI) - message(STATUS "JNI library is enabled") - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/java) -else() - message(STATUS "JNI library is disabled") -endif() - -# Installation and packaging -if(WIN32) - option(ROCKSDB_INSTALL_ON_WINDOWS "Enable install target on Windows" OFF) -endif() -if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS) - if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - # Change default installation prefix on Linux to /usr - set(CMAKE_INSTALL_PREFIX /usr CACHE PATH "Install path prefix, prepended onto install directories." FORCE) - endif() - endif() - - include(GNUInstallDirs) - include(CMakePackageConfigHelpers) - - set(package_config_destination ${CMAKE_INSTALL_LIBDIR}/cmake/rocksdb) - - configure_package_config_file( - ${CMAKE_SOURCE_DIR}/cmake/RocksDBConfig.cmake.in RocksDBConfig.cmake - INSTALL_DESTINATION ${package_config_destination} - ) - - write_basic_package_version_file( - RocksDBConfigVersion.cmake - VERSION ${ROCKSDB_VERSION} - COMPATIBILITY SameMajorVersion - ) - - install(DIRECTORY include/rocksdb COMPONENT devel DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") - - install( - TARGETS ${ROCKSDB_STATIC_LIB} - EXPORT RocksDBTargets - COMPONENT devel - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" - ) - - install( - TARGETS ${ROCKSDB_SHARED_LIB} - EXPORT RocksDBTargets - COMPONENT runtime - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" - ) - - install( - EXPORT RocksDBTargets - COMPONENT devel - DESTINATION ${package_config_destination} - NAMESPACE RocksDB:: - ) - - install( - FILES - ${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfigVersion.cmake - COMPONENT devel - DESTINATION ${package_config_destination} - ) -endif() - -option(WITH_TESTS "build with tests" ON) -if(WITH_TESTS) - set(TESTS - cache/cache_test.cc - cache/lru_cache_test.cc - db/column_family_test.cc - db/compact_files_test.cc - db/compaction_iterator_test.cc - db/compaction_job_stats_test.cc - db/compaction_job_test.cc - db/compaction_picker_test.cc - db/comparator_db_test.cc - db/corruption_test.cc - db/cuckoo_table_db_test.cc - db/db_basic_test.cc - db/db_block_cache_test.cc - db/db_bloom_filter_test.cc - db/db_compaction_filter_test.cc - db/db_compaction_test.cc - db/db_dynamic_level_test.cc - db/db_flush_test.cc - db/db_inplace_update_test.cc - db/db_io_failure_test.cc - db/db_iter_test.cc - db/db_iterator_test.cc - db/db_log_iter_test.cc - db/db_memtable_test.cc - db/db_merge_operator_test.cc - db/db_options_test.cc - db/db_properties_test.cc - db/db_range_del_test.cc - db/db_sst_test.cc - db/db_statistics_test.cc - db/db_table_properties_test.cc - db/db_tailing_iter_test.cc - db/db_test.cc - db/db_test2.cc - db/db_universal_compaction_test.cc - db/db_wal_test.cc - db/db_write_test.cc - db/dbformat_test.cc - db/deletefile_test.cc - db/external_sst_file_basic_test.cc - db/external_sst_file_test.cc - db/fault_injection_test.cc - db/file_indexer_test.cc - db/filename_test.cc - db/flush_job_test.cc - db/listener_test.cc - db/log_test.cc - db/manual_compaction_test.cc - db/memtable_list_test.cc - db/merge_helper_test.cc - db/merge_test.cc - db/options_file_test.cc - db/perf_context_test.cc - db/plain_table_db_test.cc - db/prefix_test.cc - db/repair_test.cc - db/table_properties_collector_test.cc - db/version_builder_test.cc - db/version_edit_test.cc - db/version_set_test.cc - db/wal_manager_test.cc - db/write_batch_test.cc - db/write_callback_test.cc - db/write_controller_test.cc - env/env_basic_test.cc - env/env_test.cc - env/mock_env_test.cc - memtable/inlineskiplist_test.cc - memtable/skiplist_test.cc - memtable/write_buffer_manager_test.cc - monitoring/histogram_test.cc - monitoring/iostats_context_test.cc - monitoring/statistics_test.cc - options/options_settable_test.cc - options/options_test.cc - table/block_based_filter_block_test.cc - table/block_test.cc - table/cuckoo_table_builder_test.cc - table/cuckoo_table_reader_test.cc - table/full_filter_block_test.cc - table/merger_test.cc - table/table_test.cc - tools/ldb_cmd_test.cc - tools/reduce_levels_test.cc - tools/sst_dump_test.cc - util/arena_test.cc - util/auto_roll_logger_test.cc - util/autovector_test.cc - util/bloom_test.cc - util/coding_test.cc - util/crc32c_test.cc - util/delete_scheduler_test.cc - util/dynamic_bloom_test.cc - util/event_logger_test.cc - util/file_reader_writer_test.cc - util/filelock_test.cc - util/hash_test.cc - util/heap_test.cc - util/rate_limiter_test.cc - util/slice_transform_test.cc - util/timer_queue_test.cc - util/thread_list_test.cc - util/thread_local_test.cc - utilities/backupable/backupable_db_test.cc - utilities/blob_db/blob_db_test.cc - utilities/cassandra/cassandra_functional_test.cc - utilities/cassandra/cassandra_format_test.cc - utilities/cassandra/cassandra_row_merge_test.cc - utilities/cassandra/cassandra_serialize_test.cc - utilities/checkpoint/checkpoint_test.cc - utilities/column_aware_encoding_test.cc - utilities/date_tiered/date_tiered_test.cc - utilities/document/document_db_test.cc - utilities/document/json_document_test.cc - utilities/geodb/geodb_test.cc - utilities/lua/rocks_lua_test.cc - utilities/memory/memory_test.cc - utilities/merge_operators/string_append/stringappend_test.cc - utilities/object_registry_test.cc - utilities/option_change_migration/option_change_migration_test.cc - utilities/options/options_util_test.cc - utilities/persistent_cache/hash_table_test.cc - utilities/persistent_cache/persistent_cache_test.cc - utilities/redis/redis_lists_test.cc - utilities/spatialdb/spatial_db_test.cc - utilities/simulator_cache/sim_cache_test.cc - utilities/table_properties_collectors/compact_on_deletion_collector_test.cc - utilities/transactions/optimistic_transaction_test.cc - utilities/transactions/transaction_test.cc - utilities/ttl/ttl_test.cc - utilities/write_batch_with_index/write_batch_with_index_test.cc - ) - if(WITH_LIBRADOS) - list(APPEND TESTS utilities/env_librados_test.cc) - endif() - - set(BENCHMARKS - cache/cache_bench.cc - memtable/memtablerep_bench.cc - tools/db_bench.cc - table/table_reader_bench.cc - utilities/column_aware_encoding_exp.cc - utilities/persistent_cache/hash_table_bench.cc) - add_library(testharness OBJECT util/testharness.cc) - foreach(sourcefile ${BENCHMARKS}) - get_filename_component(exename ${sourcefile} NAME_WE) - add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile} - $<TARGET_OBJECTS:testharness>) - target_link_libraries(${exename}${ARTIFACT_SUFFIX} gtest ${LIBS}) - endforeach(sourcefile ${BENCHMARKS}) - - # For test util library that is build only in DEBUG mode - # and linked to tests. Add test only code that is not #ifdefed for Release here. - set(TESTUTIL_SOURCE - db/db_test_util.cc - monitoring/thread_status_updater_debug.cc - table/mock_table.cc - util/fault_injection_test_env.cc - utilities/cassandra/test_utils.cc - ) - # test utilities are only build in debug - enable_testing() - add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}) - set(TESTUTILLIB testutillib${ARTIFACT_SUFFIX}) - add_library(${TESTUTILLIB} STATIC ${TESTUTIL_SOURCE}) - if(MSVC) - set_target_properties(${TESTUTILLIB} PROPERTIES COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/testutillib${ARTIFACT_SUFFIX}.pdb") - endif() - set_target_properties(${TESTUTILLIB} - PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1 - EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1 - EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1 - ) - - # Tests are excluded from Release builds - set(TEST_EXES ${TESTS}) - - foreach(sourcefile ${TEST_EXES}) - get_filename_component(exename ${sourcefile} NAME_WE) - add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile} - $<TARGET_OBJECTS:testharness>) - set_target_properties(${exename}${ARTIFACT_SUFFIX} - PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1 - EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1 - EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1 - ) - target_link_libraries(${exename}${ARTIFACT_SUFFIX} testutillib${ARTIFACT_SUFFIX} gtest ${LIBS}) - if(NOT "${exename}" MATCHES "db_sanity_test") - add_test(NAME ${exename} COMMAND ${exename}${ARTIFACT_SUFFIX}) - add_dependencies(check ${exename}${ARTIFACT_SUFFIX}) - endif() - endforeach(sourcefile ${TEST_EXES}) - - # C executables must link to a shared object - set(C_TESTS db/c_test.c) - set(C_TEST_EXES ${C_TESTS}) - - foreach(sourcefile ${C_TEST_EXES}) - string(REPLACE ".c" "" exename ${sourcefile}) - string(REGEX REPLACE "^((.+)/)+" "" exename ${exename}) - add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile}) - set_target_properties(${exename}${ARTIFACT_SUFFIX} - PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1 - EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1 - EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1 - ) - target_link_libraries(${exename}${ARTIFACT_SUFFIX} ${ROCKSDB_IMPORT_LIB} testutillib${ARTIFACT_SUFFIX}) - add_test(NAME ${exename} COMMAND ${exename}${ARTIFACT_SUFFIX}) - add_dependencies(check ${exename}${ARTIFACT_SUFFIX}) - endforeach(sourcefile ${C_TEST_EXES}) -endif() - -option(WITH_TOOLS "build with tools" ON) -if(WITH_TOOLS) - add_subdirectory(tools) -endif() +# Prerequisites for Windows:+# This cmake build is for Windows 64-bit only.+#+# Prerequisites:+# You must have at least Visual Studio 2015 Update 3. Start the Developer Command Prompt window that is a part of Visual Studio installation.+# Run the build commands from within the Developer Command Prompt window to have paths to the compiler and runtime libraries set.+# You must have git.exe in your %PATH% environment variable.+#+# To build Rocksdb for Windows is as easy as 1-2-3-4-5:+#+# 1. Update paths to third-party libraries in thirdparty.inc file+# 2. Create a new directory for build artifacts+# mkdir build+# cd build+# 3. Run cmake to generate project files for Windows, add more options to enable required third-party libraries.+# See thirdparty.inc for more information.+# sample command: cmake -G "Visual Studio 14 Win64" -DGFLAGS=1 -DSNAPPY=1 -DJEMALLOC=1 -DJNI=1 ..+# 4. Then build the project in debug mode (you may want to add /m[:<N>] flag to run msbuild in <N> parallel threads+# or simply /m ot use all avail cores)+# msbuild rocksdb.sln+#+# rocksdb.sln build features exclusions of test only code in Release. If you build ALL_BUILD then everything+# will be attempted but test only code does not build in Release mode.+#+# 5. And release mode (/m[:<N>] is also supported)+# msbuild rocksdb.sln /p:Configuration=Release+#+# Linux:+#+# 1. Install a recent toolchain such as devtoolset-3 if you're on a older distro. C++11 required.+# 2. mkdir build; cd build+# 3. cmake ..+# 4. make -j++cmake_minimum_required(VERSION 2.6)+project(rocksdb)++if(POLICY CMP0042)+ cmake_policy(SET CMP0042 NEW)+endif()++list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")++if(MSVC)+ include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc)+else()+ option(WITH_JEMALLOC "build with JeMalloc" OFF)+ if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")+ # FreeBSD has jemaloc as default malloc+ # but it does not have all the jemalloc files in include/...+ set(WITH_JEMALLOC ON)+ else()+ if(WITH_JEMALLOC)+ find_package(JeMalloc REQUIRED)+ add_definitions(-DROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE)+ include_directories(${JEMALLOC_INCLUDE_DIR})+ endif()+ endif()++ option(WITH_SNAPPY "build with SNAPPY" OFF)+ if(WITH_SNAPPY)+ find_package(snappy REQUIRED)+ add_definitions(-DSNAPPY)+ include_directories(${SNAPPY_INCLUDE_DIR})+ list(APPEND THIRDPARTY_LIBS ${SNAPPY_LIBRARIES})+ endif()++ option(WITH_ZLIB "build with zlib" OFF)+ if(WITH_ZLIB)+ find_package(zlib REQUIRED)+ add_definitions(-DZLIB)+ include_directories(${ZLIB_INCLUDE_DIR})+ list(APPEND THIRDPARTY_LIBS ${ZLIB_LIBRARIES})+ endif()++ option(WITH_BZ2 "build with bzip2" OFF)+ if(WITH_BZ2)+ find_package(bzip2 REQUIRED)+ add_definitions(-DBZIP2)+ include_directories(${BZIP2_INCLUDE_DIR})+ list(APPEND THIRDPARTY_LIBS ${BZIP2_LIBRARIES})+ endif()++ option(WITH_LZ4 "build with lz4" OFF)+ if(WITH_LZ4)+ find_package(lz4 REQUIRED)+ add_definitions(-DLZ4)+ include_directories(${LZ4_INCLUDE_DIR})+ list(APPEND THIRDPARTY_LIBS ${LZ4_LIBRARIES})+ endif()++ option(WITH_ZSTD "build with zstd" OFF)+ if(WITH_ZSTD)+ find_package(zstd REQUIRED)+ add_definitions(-DZSTD)+ include_directories(${ZSTD_INCLUDE_DIR})+ list(APPEND THIRDPARTY_LIBS ${ZSTD_LIBRARIES})+ endif()+endif()++if(WIN32)+ execute_process(COMMAND powershell -noprofile -Command "Get-Date -format MM_dd_yyyy" OUTPUT_VARIABLE DATE)+ execute_process(COMMAND powershell -noprofile -Command "Get-Date -format HH:mm:ss" OUTPUT_VARIABLE TIME)+ string(REGEX REPLACE "(..)_(..)_..(..).*" "\\1/\\2/\\3" DATE "${DATE}")+ string(REGEX REPLACE "(..):(.....).*" " \\1:\\2" TIME "${TIME}")+ set(GIT_DATE_TIME "${DATE} ${TIME}")+else()+ execute_process(COMMAND date "+%Y/%m/%d %H:%M:%S" OUTPUT_VARIABLE DATETIME)+ string(REGEX REPLACE "\n" "" DATETIME ${DATETIME})+ set(GIT_DATE_TIME "${DATETIME}")+endif()++find_package(Git)++if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")+ if(WIN32)+ execute_process(COMMAND $ENV{COMSPEC} /C ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE GIT_SHA)+ else()+ execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE GIT_SHA)+ endif()+else()+ set(GIT_SHA 0)+endif()++string(REGEX REPLACE "[^0-9a-f]+" "" GIT_SHA "${GIT_SHA}")++if(NOT WIN32)+ execute_process(COMMAND+ "./build_tools/version.sh" "full"+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}+ OUTPUT_VARIABLE ROCKSDB_VERSION+ )+ string(STRIP "${ROCKSDB_VERSION}" ROCKSDB_VERSION)+ execute_process(COMMAND+ "./build_tools/version.sh" "major"+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}+ OUTPUT_VARIABLE ROCKSDB_VERSION_MAJOR+ )+ string(STRIP "${ROCKSDB_VERSION_MAJOR}" ROCKSDB_VERSION_MAJOR)+endif()++option(WITH_MD_LIBRARY "build with MD" ON)+if(WIN32 AND MSVC)+ if(WITH_MD_LIBRARY)+ set(RUNTIME_LIBRARY "MD")+ else()+ set(RUNTIME_LIBRARY "MT")+ endif()+endif()++set(BUILD_VERSION_CC ${CMAKE_BINARY_DIR}/build_version.cc)+configure_file(util/build_version.cc.in ${BUILD_VERSION_CC} @ONLY)+add_library(build_version OBJECT ${BUILD_VERSION_CC})+target_include_directories(build_version PRIVATE+ ${CMAKE_CURRENT_SOURCE_DIR}/util)+if(MSVC)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi /nologo /EHsc /GS /Gd /GR /GF /fp:precise /Zc:wchar_t /Zc:forScope /errorReport:queue")+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FC /d2Zi+ /W3 /wd4127 /wd4800 /wd4996 /wd4351")+else()+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wextra -Wall")+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers")+ if(MINGW)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format")+ endif()+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")+ if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -fno-omit-frame-pointer")+ include(CheckCXXCompilerFlag)+ CHECK_CXX_COMPILER_FLAG("-momit-leaf-frame-pointer" HAVE_OMIT_LEAF_FRAME_POINTER)+ if(HAVE_OMIT_LEAF_FRAME_POINTER)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -momit-leaf-frame-pointer")+ endif()+ endif()+endif()++option(PORTABLE "build a portable binary" OFF)+option(FORCE_SSE42 "force building with SSE4.2, even when PORTABLE=ON" OFF)+if(PORTABLE)+ # MSVC does not need a separate compiler flag to enable SSE4.2; if nmmintrin.h+ # is available, it is available by default.+ if(FORCE_SSE42 AND NOT MSVC)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")+ endif()+else()+ if(MSVC)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2")+ else()+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")+ endif()+endif()++set(CMAKE_REQUIRED_FLAGS ${CMAKE_CXX_FLAGS})+include(CheckCXXSourceCompiles)+CHECK_CXX_SOURCE_COMPILES("+#include <cstdint>+#include <nmmintrin.h>+int main() {+ volatile uint32_t x = _mm_crc32_u32(0, 0);+}+" HAVE_SSE42)+if(HAVE_SSE42)+ add_definitions(-DHAVE_SSE42)+elseif(FORCE_SSE42)+ message(FATAL_ERROR "FORCE_SSE42=ON but unable to compile with SSE4.2 enabled")+endif()++CHECK_CXX_SOURCE_COMPILES("+#if defined(_MSC_VER) && !defined(__thread)+#define __thread __declspec(thread)+#endif+int main() {+ static __thread int tls;+}+" HAVE_THREAD_LOCAL)+if(HAVE_THREAD_LOCAL)+ add_definitions(-DROCKSDB_SUPPORT_THREAD_LOCAL)+endif()++option(FAIL_ON_WARNINGS "Treat compile warnings as errors" ON)+if(FAIL_ON_WARNINGS)+ if(MSVC)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")+ else() # assume GCC+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")+ endif()+endif()++option(WITH_ASAN "build with ASAN" OFF)+if(WITH_ASAN)+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")+ if(WITH_JEMALLOC)+ message(FATAL "ASAN does not work well with JeMalloc")+ endif()+endif()++option(WITH_TSAN "build with TSAN" OFF)+if(WITH_TSAN)+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread -pie")+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fPIC")+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fPIC")+ if(WITH_JEMALLOC)+ message(FATAL "TSAN does not work well with JeMalloc")+ endif()+endif()++option(WITH_UBSAN "build with UBSAN" OFF)+if(WITH_UBSAN)+ add_definitions(-DROCKSDB_UBSAN_RUN)+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined")+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined")+ if(WITH_JEMALLOC)+ message(FATAL "UBSAN does not work well with JeMalloc")+ endif()+endif()++# Used to run CI build and tests so we can run faster+set(OPTIMIZE_DEBUG_DEFAULT 0) # Debug build is unoptimized by default use -DOPTDBG=1 to optimize++if(DEFINED OPTDBG)+ set(OPTIMIZE_DEBUG ${OPTDBG})+else()+ set(OPTIMIZE_DEBUG ${OPTIMIZE_DEBUG_DEFAULT})+endif()++if(MSVC)+ if((${OPTIMIZE_DEBUG} EQUAL 1))+ message(STATUS "Debug optimization is enabled")+ set(CMAKE_CXX_FLAGS_DEBUG "/Oxt /${RUNTIME_LIBRARY}d")+ else()+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /RTC1 /Gm /${RUNTIME_LIBRARY}d")+ endif()+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oxt /Zp8 /Gm- /Gy /${RUNTIME_LIBRARY}")++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG")+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")+endif()++if(CMAKE_COMPILER_IS_GNUCXX)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp")+endif()++option(ROCKSDB_LITE "Build RocksDBLite version" OFF)+if(ROCKSDB_LITE)+ add_definitions(-DROCKSDB_LITE)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")+endif()++if(CMAKE_SYSTEM_NAME MATCHES "Cygwin")+ add_definitions(-fno-builtin-memcmp -DCYGWIN)+elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")+ add_definitions(-DOS_MACOSX)+ if(CMAKE_SYSTEM_PROCESSOR MATCHES arm)+ add_definitions(-DIOS_CROSS_COMPILE -DROCKSDB_LITE)+ # no debug info for IOS, that will make our library big+ add_definitions(-DNDEBUG)+ endif()+elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")+ add_definitions(-DOS_LINUX)+elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS")+ add_definitions(-DOS_SOLARIS)+elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")+ add_definitions(-DOS_FREEBSD)+elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD")+ add_definitions(-DOS_NETBSD)+elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")+ add_definitions(-DOS_OPENBSD)+elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly")+ add_definitions(-DOS_DRAGONFLYBSD)+elseif(CMAKE_SYSTEM_NAME MATCHES "Android")+ add_definitions(-DOS_ANDROID)+elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")+ add_definitions(-DWIN32 -DOS_WIN -D_MBCS -DWIN64 -DNOMINMAX)+ if(MINGW)+ add_definitions(-D_WIN32_WINNT=_WIN32_WINNT_VISTA)+ endif()+endif()++if(NOT WIN32)+ add_definitions(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX)+endif()++option(WITH_FALLOCATE "build with fallocate" ON)++if(WITH_FALLOCATE)+ set(CMAKE_REQUIRED_FLAGS ${CMAKE_C_FLAGS})+ include(CheckCSourceCompiles)+ CHECK_C_SOURCE_COMPILES("+#include <fcntl.h>+#include <linux/falloc.h>+int main() {+ int fd = open(\"/dev/null\", 0);+ fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, 0, 1024);+}+" HAVE_FALLOCATE)+ if(HAVE_FALLOCATE)+ add_definitions(-DROCKSDB_FALLOCATE_PRESENT)+ endif()+endif()++include(CheckFunctionExists)+CHECK_FUNCTION_EXISTS(malloc_usable_size HAVE_MALLOC_USABLE_SIZE)+if(HAVE_MALLOC_USABLE_SIZE)+ add_definitions(-DROCKSDB_MALLOC_USABLE_SIZE)+endif()++include_directories(${PROJECT_SOURCE_DIR})+include_directories(${PROJECT_SOURCE_DIR}/include)+include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src)+find_package(Threads REQUIRED)++add_subdirectory(third-party/gtest-1.7.0/fused-src/gtest)++# Main library source code++set(SOURCES+ cache/clock_cache.cc+ cache/lru_cache.cc+ cache/sharded_cache.cc+ db/builder.cc+ db/c.cc+ db/column_family.cc+ db/compacted_db_impl.cc+ db/compaction.cc+ db/compaction_iterator.cc+ db/compaction_job.cc+ db/compaction_picker.cc+ db/compaction_picker_universal.cc+ db/convenience.cc+ db/db_filesnapshot.cc+ db/db_impl.cc+ db/db_impl_write.cc+ db/db_impl_compaction_flush.cc+ db/db_impl_files.cc+ db/db_impl_open.cc+ db/db_impl_debug.cc+ db/db_impl_experimental.cc+ db/db_impl_readonly.cc+ db/db_info_dumper.cc+ db/db_iter.cc+ db/dbformat.cc+ db/event_helpers.cc+ db/experimental.cc+ db/external_sst_file_ingestion_job.cc+ db/file_indexer.cc+ db/flush_job.cc+ db/flush_scheduler.cc+ db/forward_iterator.cc+ db/internal_stats.cc+ db/log_reader.cc+ db/log_writer.cc+ db/malloc_stats.cc+ db/managed_iterator.cc+ db/memtable.cc+ db/memtable_list.cc+ db/merge_helper.cc+ db/merge_operator.cc+ db/range_del_aggregator.cc+ db/repair.cc+ db/snapshot_impl.cc+ db/table_cache.cc+ db/table_properties_collector.cc+ db/transaction_log_impl.cc+ db/version_builder.cc+ db/version_edit.cc+ db/version_set.cc+ db/wal_manager.cc+ db/write_batch.cc+ db/write_batch_base.cc+ db/write_controller.cc+ db/write_thread.cc+ env/env.cc+ env/env_chroot.cc+ env/env_encryption.cc+ env/env_hdfs.cc+ env/mock_env.cc+ memtable/alloc_tracker.cc+ memtable/hash_cuckoo_rep.cc+ memtable/hash_linklist_rep.cc+ memtable/hash_skiplist_rep.cc+ memtable/skiplistrep.cc+ memtable/vectorrep.cc+ memtable/write_buffer_manager.cc+ monitoring/histogram.cc+ monitoring/histogram_windowing.cc+ monitoring/instrumented_mutex.cc+ monitoring/iostats_context.cc+ monitoring/perf_context.cc+ monitoring/perf_level.cc+ monitoring/statistics.cc+ monitoring/thread_status_impl.cc+ monitoring/thread_status_updater.cc+ monitoring/thread_status_util.cc+ monitoring/thread_status_util_debug.cc+ options/cf_options.cc+ options/db_options.cc+ options/options.cc+ options/options_helper.cc+ options/options_parser.cc+ options/options_sanity_check.cc+ port/stack_trace.cc+ table/adaptive_table_factory.cc+ table/block.cc+ table/block_based_filter_block.cc+ table/block_based_table_builder.cc+ table/block_based_table_factory.cc+ table/block_based_table_reader.cc+ table/block_builder.cc+ table/block_prefix_index.cc+ table/bloom_block.cc+ table/cuckoo_table_builder.cc+ table/cuckoo_table_factory.cc+ table/cuckoo_table_reader.cc+ table/flush_block_policy.cc+ table/format.cc+ table/full_filter_block.cc+ table/get_context.cc+ table/index_builder.cc+ table/iterator.cc+ table/merging_iterator.cc+ table/meta_blocks.cc+ table/partitioned_filter_block.cc+ table/persistent_cache_helper.cc+ table/plain_table_builder.cc+ table/plain_table_factory.cc+ table/plain_table_index.cc+ table/plain_table_key_coding.cc+ table/plain_table_reader.cc+ table/sst_file_writer.cc+ table/table_properties.cc+ table/two_level_iterator.cc+ tools/db_bench_tool.cc+ tools/dump/db_dump_tool.cc+ tools/ldb_cmd.cc+ tools/ldb_tool.cc+ tools/sst_dump_tool.cc+ util/arena.cc+ util/auto_roll_logger.cc+ util/bloom.cc+ util/coding.cc+ util/compaction_job_stats_impl.cc+ util/comparator.cc+ util/concurrent_arena.cc+ util/crc32c.cc+ util/delete_scheduler.cc+ util/dynamic_bloom.cc+ util/event_logger.cc+ util/file_reader_writer.cc+ util/file_util.cc+ util/filename.cc+ util/filter_policy.cc+ util/hash.cc+ util/log_buffer.cc+ util/murmurhash.cc+ util/random.cc+ util/rate_limiter.cc+ util/slice.cc+ util/sst_file_manager_impl.cc+ util/status.cc+ util/status_message.cc+ util/string_util.cc+ util/sync_point.cc+ util/testutil.cc+ util/thread_local.cc+ util/threadpool_imp.cc+ util/transaction_test_util.cc+ util/xxhash.cc+ utilities/backupable/backupable_db.cc+ utilities/blob_db/blob_db.cc+ utilities/blob_db/blob_db_impl.cc+ utilities/blob_db/blob_dump_tool.cc+ utilities/blob_db/blob_file.cc+ utilities/blob_db/blob_log_reader.cc+ utilities/blob_db/blob_log_writer.cc+ utilities/blob_db/blob_log_format.cc+ utilities/blob_db/ttl_extractor.cc+ utilities/cassandra/cassandra_compaction_filter.cc+ utilities/cassandra/format.cc+ utilities/cassandra/merge_operator.cc+ utilities/checkpoint/checkpoint_impl.cc+ utilities/col_buf_decoder.cc+ utilities/col_buf_encoder.cc+ utilities/column_aware_encoding_util.cc+ utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc+ utilities/date_tiered/date_tiered_db_impl.cc+ utilities/debug.cc+ utilities/document/document_db.cc+ utilities/document/json_document.cc+ utilities/document/json_document_builder.cc+ utilities/env_mirror.cc+ utilities/env_timed.cc+ utilities/geodb/geodb_impl.cc+ utilities/leveldb_options/leveldb_options.cc+ utilities/lua/rocks_lua_compaction_filter.cc+ utilities/memory/memory_util.cc+ utilities/merge_operators/max.cc+ utilities/merge_operators/put.cc+ utilities/merge_operators/string_append/stringappend.cc+ utilities/merge_operators/string_append/stringappend2.cc+ utilities/merge_operators/uint64add.cc+ utilities/option_change_migration/option_change_migration.cc+ utilities/options/options_util.cc+ utilities/persistent_cache/block_cache_tier.cc+ utilities/persistent_cache/block_cache_tier_file.cc+ utilities/persistent_cache/block_cache_tier_metadata.cc+ utilities/persistent_cache/persistent_cache_tier.cc+ utilities/persistent_cache/volatile_tier_impl.cc+ utilities/redis/redis_lists.cc+ utilities/simulator_cache/sim_cache.cc+ utilities/spatialdb/spatial_db.cc+ utilities/table_properties_collectors/compact_on_deletion_collector.cc+ utilities/transactions/optimistic_transaction_db_impl.cc+ utilities/transactions/optimistic_transaction.cc+ utilities/transactions/transaction_base.cc+ utilities/transactions/pessimistic_transaction_db.cc+ utilities/transactions/transaction_db_mutex_impl.cc+ utilities/transactions/pessimistic_transaction.cc+ utilities/transactions/transaction_lock_mgr.cc+ utilities/transactions/transaction_util.cc+ utilities/transactions/write_prepared_txn.cc+ utilities/ttl/db_ttl_impl.cc+ utilities/write_batch_with_index/write_batch_with_index.cc+ utilities/write_batch_with_index/write_batch_with_index_internal.cc+ $<TARGET_OBJECTS:build_version>)++if(WIN32)+ list(APPEND SOURCES+ port/win/io_win.cc+ port/win/env_win.cc+ port/win/env_default.cc+ port/win/port_win.cc+ port/win/win_logger.cc+ port/win/win_thread.cc+ port/win/xpress_win.cc)+else()+ list(APPEND SOURCES+ port/port_posix.cc+ env/env_posix.cc+ env/io_posix.cc)+endif()++set(ROCKSDB_STATIC_LIB rocksdb${ARTIFACT_SUFFIX})+set(ROCKSDB_SHARED_LIB rocksdb-shared${ARTIFACT_SUFFIX})+set(ROCKSDB_IMPORT_LIB ${ROCKSDB_SHARED_LIB})+if(WIN32)+ set(SYSTEM_LIBS ${SYSTEM_LIBS} Shlwapi.lib Rpcrt4.lib)+ set(LIBS ${ROCKSDB_STATIC_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})+else()+ set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT})+ set(LIBS ${ROCKSDB_SHARED_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})++ add_library(${ROCKSDB_SHARED_LIB} SHARED ${SOURCES})+ target_link_libraries(${ROCKSDB_SHARED_LIB}+ ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})+ set_target_properties(${ROCKSDB_SHARED_LIB} PROPERTIES+ LINKER_LANGUAGE CXX+ VERSION ${ROCKSDB_VERSION}+ SOVERSION ${ROCKSDB_VERSION_MAJOR}+ CXX_STANDARD 11+ OUTPUT_NAME "rocksdb")+endif()++option(WITH_LIBRADOS "Build with librados" OFF)+if(WITH_LIBRADOS)+ list(APPEND SOURCES+ utilities/env_librados.cc)+ list(APPEND THIRDPARTY_LIBS rados)+endif()++add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES})+target_link_libraries(${ROCKSDB_STATIC_LIB}+ ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})++if(WIN32)+ add_library(${ROCKSDB_IMPORT_LIB} SHARED ${SOURCES})+ target_link_libraries(${ROCKSDB_IMPORT_LIB}+ ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})+ set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES+ COMPILE_DEFINITIONS "ROCKSDB_DLL;ROCKSDB_LIBRARY_EXPORTS")+ if(MSVC)+ set_target_properties(${ROCKSDB_STATIC_LIB} PROPERTIES+ COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_STATIC_LIB}.pdb")+ set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES+ COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_IMPORT_LIB}.pdb")+ endif()+endif()++option(WITH_JNI "build with JNI" OFF)+if(WITH_JNI OR JNI)+ message(STATUS "JNI library is enabled")+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/java)+else()+ message(STATUS "JNI library is disabled")+endif()++# Installation and packaging+if(WIN32)+ option(ROCKSDB_INSTALL_ON_WINDOWS "Enable install target on Windows" OFF)+endif()+if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS)+ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)+ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")+ # Change default installation prefix on Linux to /usr+ set(CMAKE_INSTALL_PREFIX /usr CACHE PATH "Install path prefix, prepended onto install directories." FORCE)+ endif()+ endif()++ include(GNUInstallDirs)+ include(CMakePackageConfigHelpers)++ set(package_config_destination ${CMAKE_INSTALL_LIBDIR}/cmake/rocksdb)++ configure_package_config_file(+ ${CMAKE_SOURCE_DIR}/cmake/RocksDBConfig.cmake.in RocksDBConfig.cmake+ INSTALL_DESTINATION ${package_config_destination}+ )++ write_basic_package_version_file(+ RocksDBConfigVersion.cmake+ VERSION ${ROCKSDB_VERSION}+ COMPATIBILITY SameMajorVersion+ )++ install(DIRECTORY include/rocksdb COMPONENT devel DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")++ install(+ TARGETS ${ROCKSDB_STATIC_LIB}+ EXPORT RocksDBTargets+ COMPONENT devel+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"+ )++ install(+ TARGETS ${ROCKSDB_SHARED_LIB}+ EXPORT RocksDBTargets+ COMPONENT runtime+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"+ )++ install(+ EXPORT RocksDBTargets+ COMPONENT devel+ DESTINATION ${package_config_destination}+ NAMESPACE RocksDB::+ )++ install(+ FILES+ ${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfig.cmake+ ${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfigVersion.cmake+ COMPONENT devel+ DESTINATION ${package_config_destination}+ )+endif()++option(WITH_TESTS "build with tests" ON)+if(WITH_TESTS)+ set(TESTS+ cache/cache_test.cc+ cache/lru_cache_test.cc+ db/column_family_test.cc+ db/compact_files_test.cc+ db/compaction_iterator_test.cc+ db/compaction_job_stats_test.cc+ db/compaction_job_test.cc+ db/compaction_picker_test.cc+ db/comparator_db_test.cc+ db/corruption_test.cc+ db/cuckoo_table_db_test.cc+ db/db_basic_test.cc+ db/db_block_cache_test.cc+ db/db_bloom_filter_test.cc+ db/db_compaction_filter_test.cc+ db/db_compaction_test.cc+ db/db_dynamic_level_test.cc+ db/db_flush_test.cc+ db/db_inplace_update_test.cc+ db/db_io_failure_test.cc+ db/db_iter_test.cc+ db/db_iterator_test.cc+ db/db_log_iter_test.cc+ db/db_memtable_test.cc+ db/db_merge_operator_test.cc+ db/db_options_test.cc+ db/db_properties_test.cc+ db/db_range_del_test.cc+ db/db_sst_test.cc+ db/db_statistics_test.cc+ db/db_table_properties_test.cc+ db/db_tailing_iter_test.cc+ db/db_test.cc+ db/db_test2.cc+ db/db_universal_compaction_test.cc+ db/db_wal_test.cc+ db/db_write_test.cc+ db/dbformat_test.cc+ db/deletefile_test.cc+ db/external_sst_file_basic_test.cc+ db/external_sst_file_test.cc+ db/fault_injection_test.cc+ db/file_indexer_test.cc+ db/filename_test.cc+ db/flush_job_test.cc+ db/listener_test.cc+ db/log_test.cc+ db/manual_compaction_test.cc+ db/memtable_list_test.cc+ db/merge_helper_test.cc+ db/merge_test.cc+ db/options_file_test.cc+ db/perf_context_test.cc+ db/plain_table_db_test.cc+ db/prefix_test.cc+ db/repair_test.cc+ db/table_properties_collector_test.cc+ db/version_builder_test.cc+ db/version_edit_test.cc+ db/version_set_test.cc+ db/wal_manager_test.cc+ db/write_batch_test.cc+ db/write_callback_test.cc+ db/write_controller_test.cc+ env/env_basic_test.cc+ env/env_test.cc+ env/mock_env_test.cc+ memtable/inlineskiplist_test.cc+ memtable/skiplist_test.cc+ memtable/write_buffer_manager_test.cc+ monitoring/histogram_test.cc+ monitoring/iostats_context_test.cc+ monitoring/statistics_test.cc+ options/options_settable_test.cc+ options/options_test.cc+ table/block_based_filter_block_test.cc+ table/block_test.cc+ table/cuckoo_table_builder_test.cc+ table/cuckoo_table_reader_test.cc+ table/full_filter_block_test.cc+ table/merger_test.cc+ table/table_test.cc+ tools/ldb_cmd_test.cc+ tools/reduce_levels_test.cc+ tools/sst_dump_test.cc+ util/arena_test.cc+ util/auto_roll_logger_test.cc+ util/autovector_test.cc+ util/bloom_test.cc+ util/coding_test.cc+ util/crc32c_test.cc+ util/delete_scheduler_test.cc+ util/dynamic_bloom_test.cc+ util/event_logger_test.cc+ util/file_reader_writer_test.cc+ util/filelock_test.cc+ util/hash_test.cc+ util/heap_test.cc+ util/rate_limiter_test.cc+ util/slice_transform_test.cc+ util/timer_queue_test.cc+ util/thread_list_test.cc+ util/thread_local_test.cc+ utilities/backupable/backupable_db_test.cc+ utilities/blob_db/blob_db_test.cc+ utilities/cassandra/cassandra_functional_test.cc+ utilities/cassandra/cassandra_format_test.cc+ utilities/cassandra/cassandra_row_merge_test.cc+ utilities/cassandra/cassandra_serialize_test.cc+ utilities/checkpoint/checkpoint_test.cc+ utilities/column_aware_encoding_test.cc+ utilities/date_tiered/date_tiered_test.cc+ utilities/document/document_db_test.cc+ utilities/document/json_document_test.cc+ utilities/geodb/geodb_test.cc+ utilities/lua/rocks_lua_test.cc+ utilities/memory/memory_test.cc+ utilities/merge_operators/string_append/stringappend_test.cc+ utilities/object_registry_test.cc+ utilities/option_change_migration/option_change_migration_test.cc+ utilities/options/options_util_test.cc+ utilities/persistent_cache/hash_table_test.cc+ utilities/persistent_cache/persistent_cache_test.cc+ utilities/redis/redis_lists_test.cc+ utilities/spatialdb/spatial_db_test.cc+ utilities/simulator_cache/sim_cache_test.cc+ utilities/table_properties_collectors/compact_on_deletion_collector_test.cc+ utilities/transactions/optimistic_transaction_test.cc+ utilities/transactions/transaction_test.cc+ utilities/ttl/ttl_test.cc+ utilities/write_batch_with_index/write_batch_with_index_test.cc+ )+ if(WITH_LIBRADOS)+ list(APPEND TESTS utilities/env_librados_test.cc)+ endif()++ set(BENCHMARKS+ cache/cache_bench.cc+ memtable/memtablerep_bench.cc+ tools/db_bench.cc+ table/table_reader_bench.cc+ utilities/column_aware_encoding_exp.cc+ utilities/persistent_cache/hash_table_bench.cc)+ add_library(testharness OBJECT util/testharness.cc)+ foreach(sourcefile ${BENCHMARKS})+ get_filename_component(exename ${sourcefile} NAME_WE)+ add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile}+ $<TARGET_OBJECTS:testharness>)+ target_link_libraries(${exename}${ARTIFACT_SUFFIX} gtest ${LIBS})+ endforeach(sourcefile ${BENCHMARKS})++ # For test util library that is build only in DEBUG mode+ # and linked to tests. Add test only code that is not #ifdefed for Release here.+ set(TESTUTIL_SOURCE+ db/db_test_util.cc+ monitoring/thread_status_updater_debug.cc+ table/mock_table.cc+ util/fault_injection_test_env.cc+ utilities/cassandra/test_utils.cc+ )+ # test utilities are only build in debug+ enable_testing()+ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})+ set(TESTUTILLIB testutillib${ARTIFACT_SUFFIX})+ add_library(${TESTUTILLIB} STATIC ${TESTUTIL_SOURCE})+ if(MSVC)+ set_target_properties(${TESTUTILLIB} PROPERTIES COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/testutillib${ARTIFACT_SUFFIX}.pdb")+ endif()+ set_target_properties(${TESTUTILLIB}+ PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1+ EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1+ EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1+ )++ # Tests are excluded from Release builds+ set(TEST_EXES ${TESTS})++ foreach(sourcefile ${TEST_EXES})+ get_filename_component(exename ${sourcefile} NAME_WE)+ add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile}+ $<TARGET_OBJECTS:testharness>)+ set_target_properties(${exename}${ARTIFACT_SUFFIX}+ PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1+ EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1+ EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1+ )+ target_link_libraries(${exename}${ARTIFACT_SUFFIX} testutillib${ARTIFACT_SUFFIX} gtest ${LIBS})+ if(NOT "${exename}" MATCHES "db_sanity_test")+ add_test(NAME ${exename} COMMAND ${exename}${ARTIFACT_SUFFIX})+ add_dependencies(check ${exename}${ARTIFACT_SUFFIX})+ endif()+ endforeach(sourcefile ${TEST_EXES})++ # C executables must link to a shared object+ set(C_TESTS db/c_test.c)+ set(C_TEST_EXES ${C_TESTS})++ foreach(sourcefile ${C_TEST_EXES})+ string(REPLACE ".c" "" exename ${sourcefile})+ string(REGEX REPLACE "^((.+)/)+" "" exename ${exename})+ add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile})+ set_target_properties(${exename}${ARTIFACT_SUFFIX}+ PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1+ EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1+ EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1+ )+ target_link_libraries(${exename}${ARTIFACT_SUFFIX} ${ROCKSDB_IMPORT_LIB} testutillib${ARTIFACT_SUFFIX})+ add_test(NAME ${exename} COMMAND ${exename}${ARTIFACT_SUFFIX})+ add_dependencies(check ${exename}${ARTIFACT_SUFFIX})+ endforeach(sourcefile ${C_TEST_EXES})+endif()++option(WITH_TOOLS "build with tools" ON)+if(WITH_TOOLS)+ add_subdirectory(tools)+endif()
rocksdb-5.8/build_tools/cont_integration.sh view
@@ -1,135 +1,135 @@-#!/usr/bin/env bash -# -# Copyright (c) 2016, Facebook. All rights reserved. -# -# Overall wrapper script for RocksDB continuous builds. The implementation is a -# trivial pulling scheme. We loop infinitely, check if any new changes have been -# committed, if yes then trigger a Sandcastle run, and finally go to sleep again -# for a certain interval. -# - -SRC_GIT_REPO=/data/git/rocksdb-public -error=0 - -function log { - DATE=`date +%Y-%m-%d:%H:%M:%S` - echo $DATE $@ -} - -function log_err { - log "ERROR: $@ Error code: $error." -} - -function update_repo_status { - # Update the parent first. - pushd $SRC_GIT_REPO - - # This is a fatal error. Something in the environment isn't right and we will - # terminate the execution. - error=$? - if [ ! $error -eq 0 ]; then - log_err "Where is $SRC_GIT_REPO?" - exit $error - fi - - HTTPS_PROXY=fwdproxy:8080 git fetch -f - - error=$? - if [ ! $error -eq 0 ]; then - log_err "git fetch -f failed." - popd - return $error - fi - - git update-ref refs/heads/master refs/remotes/origin/master - - error=$? - if [ ! $error -eq 0 ]; then - log_err "git update-ref failed." - popd - return $error - fi - - popd - - # We're back in an instance-specific directory. Get the latest changes. - git pull --rebase - - error=$? - if [ ! $error -eq 0 ]; then - log_err "git pull --rebase failed." - return $error - fi -} - -# -# Execution starts here. -# - -# Path to the determinator from the root of the RocksDB repo. -CONTRUN_DETERMINATOR=./build_tools/RocksDBCommonHelper.php - -# Value of the previous commit. -PREV_COMMIT= - -log "Starting to monitor for new RocksDB changes ..." -log "Running under `pwd` as `whoami`." - -# Paranoia. Make sure that we're using the right branch. -git checkout master - -error=$? -if [ ! $error -eq 0 ]; then - log_err "This is not good. Can't checkout master. Bye-bye!" - exit 1 -fi - -# We'll run forever and let the execution environment terminate us if we'll -# exceed whatever timeout is set for the job. -while true; -do - # Get the latest changes committed. - update_repo_status - - error=$? - if [ $error -eq 0 ]; then - LAST_COMMIT=`git log -1 | head -1 | grep commit | awk '{ print $2; }'` - - log "Last commit is '$LAST_COMMIT', previous commit is '$PREV_COMMIT'." - - if [ "$PREV_COMMIT" == "$LAST_COMMIT" ]; then - log "There were no changes since the last time I checked. Going to sleep." - else - if [ ! -z "$LAST_COMMIT" ]; then - log "New code has been committed or previous commit not known. " \ - "Will trigger the tests." - - PREV_COMMIT=$LAST_COMMIT - log "Updated previous commit to '$PREV_COMMIT'." - - # - # This is where we'll trigger the Sandcastle run. The values for - # HTTPS_APP_VALUE and HTTPS_APP_VALUE will be set in the container we're - # running in. - # - POST_RECEIVE_HOOK=1 php $CONTRUN_DETERMINATOR - - error=$? - if [ $error -eq 0 ]; then - log "Sandcastle run successfully triggered." - else - log_err "Failed to trigger Sandcastle run." - fi - else - log_err "Previous commit not updated. Don't know what the last one is." - fi - fi - else - log_err "Getting latest changes failed. Will skip running tests for now." - fi - - # Always sleep, even if errors happens while trying to determine the latest - # commit. This will prevent us terminating in case of transient errors. - log "Will go to sleep for 5 minutes." - sleep 5m -done +#!/usr/bin/env bash+#+# Copyright (c) 2016, Facebook. All rights reserved.+#+# Overall wrapper script for RocksDB continuous builds. The implementation is a+# trivial pulling scheme. We loop infinitely, check if any new changes have been+# committed, if yes then trigger a Sandcastle run, and finally go to sleep again+# for a certain interval.+#++SRC_GIT_REPO=/data/git/rocksdb-public+error=0++function log {+ DATE=`date +%Y-%m-%d:%H:%M:%S`+ echo $DATE $@+}++function log_err {+ log "ERROR: $@ Error code: $error."+}++function update_repo_status {+ # Update the parent first.+ pushd $SRC_GIT_REPO++ # This is a fatal error. Something in the environment isn't right and we will+ # terminate the execution.+ error=$?+ if [ ! $error -eq 0 ]; then+ log_err "Where is $SRC_GIT_REPO?"+ exit $error+ fi++ HTTPS_PROXY=fwdproxy:8080 git fetch -f++ error=$?+ if [ ! $error -eq 0 ]; then+ log_err "git fetch -f failed."+ popd+ return $error+ fi++ git update-ref refs/heads/master refs/remotes/origin/master++ error=$?+ if [ ! $error -eq 0 ]; then+ log_err "git update-ref failed."+ popd+ return $error+ fi++ popd++ # We're back in an instance-specific directory. Get the latest changes.+ git pull --rebase++ error=$?+ if [ ! $error -eq 0 ]; then+ log_err "git pull --rebase failed."+ return $error+ fi+}++#+# Execution starts here.+#++# Path to the determinator from the root of the RocksDB repo.+CONTRUN_DETERMINATOR=./build_tools/RocksDBCommonHelper.php++# Value of the previous commit.+PREV_COMMIT=++log "Starting to monitor for new RocksDB changes ..."+log "Running under `pwd` as `whoami`."++# Paranoia. Make sure that we're using the right branch.+git checkout master++error=$?+if [ ! $error -eq 0 ]; then+ log_err "This is not good. Can't checkout master. Bye-bye!"+ exit 1+fi++# We'll run forever and let the execution environment terminate us if we'll+# exceed whatever timeout is set for the job.+while true;+do+ # Get the latest changes committed.+ update_repo_status++ error=$?+ if [ $error -eq 0 ]; then+ LAST_COMMIT=`git log -1 | head -1 | grep commit | awk '{ print $2; }'`++ log "Last commit is '$LAST_COMMIT', previous commit is '$PREV_COMMIT'."++ if [ "$PREV_COMMIT" == "$LAST_COMMIT" ]; then+ log "There were no changes since the last time I checked. Going to sleep."+ else+ if [ ! -z "$LAST_COMMIT" ]; then+ log "New code has been committed or previous commit not known. " \+ "Will trigger the tests."++ PREV_COMMIT=$LAST_COMMIT+ log "Updated previous commit to '$PREV_COMMIT'."++ #+ # This is where we'll trigger the Sandcastle run. The values for+ # HTTPS_APP_VALUE and HTTPS_APP_VALUE will be set in the container we're+ # running in.+ #+ POST_RECEIVE_HOOK=1 php $CONTRUN_DETERMINATOR++ error=$?+ if [ $error -eq 0 ]; then+ log "Sandcastle run successfully triggered."+ else+ log_err "Failed to trigger Sandcastle run."+ fi+ else+ log_err "Previous commit not updated. Don't know what the last one is."+ fi+ fi+ else+ log_err "Getting latest changes failed. Will skip running tests for now."+ fi++ # Always sleep, even if errors happens while trying to determine the latest+ # commit. This will prevent us terminating in case of transient errors.+ log "Will go to sleep for 5 minutes."+ sleep 5m+done
rocksdb-5.8/build_tools/dependencies.sh view
@@ -1,18 +1,18 @@-GCC_BASE=/mnt/gvfs/third-party2/gcc/2928bb3ed95bf64f5b388ee88c30dc74710c3b35/5.x/centos6-native/f4950a1 -CLANG_BASE=/mnt/gvfs/third-party2/llvm-fb/a5fea028cb7ba43498976e1f8054b0b2e790c295/stable/centos6-native/6aaf4de -LIBGCC_BASE=/mnt/gvfs/third-party2/libgcc/7a9099f6587ee4378c0b1fa32bb8934019d30ca4/5.x/gcc-5-glibc-2.23/339d858 -GLIBC_BASE=/mnt/gvfs/third-party2/glibc/3b7c6469854dfc7832a1c3cc5b86919a84e5f865/2.23/gcc-5-glibc-2.23/ca1d1c0 -SNAPPY_BASE=/mnt/gvfs/third-party2/snappy/8c38a4c1e52b4c2cc8a9cdc31b9c947ed7dbfcb4/1.1.3/gcc-5-glibc-2.23/9bc6787 -ZLIB_BASE=/mnt/gvfs/third-party2/zlib/d7861abe6f0e27ab98c9303b95a662f0e4cdedb5/1.2.8/gcc-5-glibc-2.23/9bc6787 -BZIP2_BASE=/mnt/gvfs/third-party2/bzip2/740325875f6729f42d28deaa2147b0854f3a347e/1.0.6/gcc-5-glibc-2.23/9bc6787 -LZ4_BASE=/mnt/gvfs/third-party2/lz4/0815d59804160c96caac5f27ca004f51af893dc6/r131/gcc-5-glibc-2.23/9bc6787 -ZSTD_BASE=/mnt/gvfs/third-party2/zstd/c15a4f5f619a2930478d01e2e34dc1e0652b0873/1.1.4/gcc-5-glibc-2.23/03859b5 -GFLAGS_BASE=/mnt/gvfs/third-party2/gflags/f905a5e1032fb30c05db3d3752319857388c0c49/2.2.0/gcc-5-glibc-2.23/9bc6787 -JEMALLOC_BASE=/mnt/gvfs/third-party2/jemalloc/8d60633d822a2a55849c73db24e74a25e52b71db/master/gcc-5-glibc-2.23/1c32b4b -NUMA_BASE=/mnt/gvfs/third-party2/numa/17c514c4d102a25ca15f4558be564eeed76f4b6a/2.0.8/gcc-5-glibc-2.23/9bc6787 -LIBUNWIND_BASE=/mnt/gvfs/third-party2/libunwind/8db74270cd6d0212ac92d69e7fc7beefe617d772/trunk/gcc-5-glibc-2.23/b1847cb -TBB_BASE=/mnt/gvfs/third-party2/tbb/9d9a554877d0c5bef330fe818ab7178806dd316a/4.0_update2/gcc-5-glibc-2.23/9bc6787 -KERNEL_HEADERS_BASE=/mnt/gvfs/third-party2/kernel-headers/90c9734afc5579c9d1db529fa788d09f97763b85/4.0.9-36_fbk5_2933_gd092e3f/gcc-5-glibc-2.23/da39a3e -BINUTILS_BASE=/mnt/gvfs/third-party2/binutils/9e829389ef61b92c62de8748c80169aaf25ce1f0/2.26.1/centos6-native/da39a3e -VALGRIND_BASE=/mnt/gvfs/third-party2/valgrind/d7f4d4d86674a57668e3a96f76f0e17dd0eb8765/3.11.0/gcc-5-glibc-2.23/9bc6787 -LUA_BASE=/mnt/gvfs/third-party2/lua/61e4abf5813bbc39bc4f548757ccfcadde175a48/5.2.3/gcc-5-glibc-2.23/65372bd +GCC_BASE=/mnt/gvfs/third-party2/gcc/2928bb3ed95bf64f5b388ee88c30dc74710c3b35/5.x/centos6-native/f4950a1+CLANG_BASE=/mnt/gvfs/third-party2/llvm-fb/a5fea028cb7ba43498976e1f8054b0b2e790c295/stable/centos6-native/6aaf4de+LIBGCC_BASE=/mnt/gvfs/third-party2/libgcc/7a9099f6587ee4378c0b1fa32bb8934019d30ca4/5.x/gcc-5-glibc-2.23/339d858+GLIBC_BASE=/mnt/gvfs/third-party2/glibc/3b7c6469854dfc7832a1c3cc5b86919a84e5f865/2.23/gcc-5-glibc-2.23/ca1d1c0+SNAPPY_BASE=/mnt/gvfs/third-party2/snappy/8c38a4c1e52b4c2cc8a9cdc31b9c947ed7dbfcb4/1.1.3/gcc-5-glibc-2.23/9bc6787+ZLIB_BASE=/mnt/gvfs/third-party2/zlib/d7861abe6f0e27ab98c9303b95a662f0e4cdedb5/1.2.8/gcc-5-glibc-2.23/9bc6787+BZIP2_BASE=/mnt/gvfs/third-party2/bzip2/740325875f6729f42d28deaa2147b0854f3a347e/1.0.6/gcc-5-glibc-2.23/9bc6787+LZ4_BASE=/mnt/gvfs/third-party2/lz4/0815d59804160c96caac5f27ca004f51af893dc6/r131/gcc-5-glibc-2.23/9bc6787+ZSTD_BASE=/mnt/gvfs/third-party2/zstd/c15a4f5f619a2930478d01e2e34dc1e0652b0873/1.1.4/gcc-5-glibc-2.23/03859b5+GFLAGS_BASE=/mnt/gvfs/third-party2/gflags/f905a5e1032fb30c05db3d3752319857388c0c49/2.2.0/gcc-5-glibc-2.23/9bc6787+JEMALLOC_BASE=/mnt/gvfs/third-party2/jemalloc/8d60633d822a2a55849c73db24e74a25e52b71db/master/gcc-5-glibc-2.23/1c32b4b+NUMA_BASE=/mnt/gvfs/third-party2/numa/17c514c4d102a25ca15f4558be564eeed76f4b6a/2.0.8/gcc-5-glibc-2.23/9bc6787+LIBUNWIND_BASE=/mnt/gvfs/third-party2/libunwind/8db74270cd6d0212ac92d69e7fc7beefe617d772/trunk/gcc-5-glibc-2.23/b1847cb+TBB_BASE=/mnt/gvfs/third-party2/tbb/9d9a554877d0c5bef330fe818ab7178806dd316a/4.0_update2/gcc-5-glibc-2.23/9bc6787+KERNEL_HEADERS_BASE=/mnt/gvfs/third-party2/kernel-headers/90c9734afc5579c9d1db529fa788d09f97763b85/4.0.9-36_fbk5_2933_gd092e3f/gcc-5-glibc-2.23/da39a3e+BINUTILS_BASE=/mnt/gvfs/third-party2/binutils/9e829389ef61b92c62de8748c80169aaf25ce1f0/2.26.1/centos6-native/da39a3e+VALGRIND_BASE=/mnt/gvfs/third-party2/valgrind/d7f4d4d86674a57668e3a96f76f0e17dd0eb8765/3.11.0/gcc-5-glibc-2.23/9bc6787+LUA_BASE=/mnt/gvfs/third-party2/lua/61e4abf5813bbc39bc4f548757ccfcadde175a48/5.2.3/gcc-5-glibc-2.23/65372bd
rocksdb-5.8/build_tools/dependencies_4.8.1.sh view
@@ -1,18 +1,18 @@-GCC_BASE=/mnt/gvfs/third-party2/gcc/cf7d14c625ce30bae1a4661c2319c5a283e4dd22/4.8.1/centos6-native/cc6c9dc -CLANG_BASE=/mnt/gvfs/third-party2/llvm-fb/8598c375b0e94e1448182eb3df034704144a838d/stable/centos6-native/3f16ddd -LIBGCC_BASE=/mnt/gvfs/third-party2/libgcc/d6e0a7da6faba45f5e5b1638f9edd7afc2f34e7d/4.8.1/gcc-4.8.1-glibc-2.17/8aac7fc -GLIBC_BASE=/mnt/gvfs/third-party2/glibc/d282e6e8f3d20f4e40a516834847bdc038e07973/2.17/gcc-4.8.1-glibc-2.17/99df8fc -SNAPPY_BASE=/mnt/gvfs/third-party2/snappy/8c38a4c1e52b4c2cc8a9cdc31b9c947ed7dbfcb4/1.1.3/gcc-4.8.1-glibc-2.17/c3f970a -ZLIB_BASE=/mnt/gvfs/third-party2/zlib/0882df3713c7a84f15abe368dc004581f20b39d7/1.2.8/gcc-4.8.1-glibc-2.17/c3f970a -BZIP2_BASE=/mnt/gvfs/third-party2/bzip2/740325875f6729f42d28deaa2147b0854f3a347e/1.0.6/gcc-4.8.1-glibc-2.17/c3f970a -LZ4_BASE=/mnt/gvfs/third-party2/lz4/0e790b441e2d9acd68d51e1d2e028f88c6a79ddf/r131/gcc-4.8.1-glibc-2.17/c3f970a -ZSTD_BASE=/mnt/gvfs/third-party2/zstd/9455f75ff7f4831dc9fda02a6a0f8c68922fad8f/1.0.0/gcc-4.8.1-glibc-2.17/c3f970a -GFLAGS_BASE=/mnt/gvfs/third-party2/gflags/f001a51b2854957676d07306ef3abf67186b5c8b/2.1.1/gcc-4.8.1-glibc-2.17/c3f970a -JEMALLOC_BASE=/mnt/gvfs/third-party2/jemalloc/fc8a13ca1fffa4d0765c716c5a0b49f0c107518f/master/gcc-4.8.1-glibc-2.17/8d31e51 -NUMA_BASE=/mnt/gvfs/third-party2/numa/17c514c4d102a25ca15f4558be564eeed76f4b6a/2.0.8/gcc-4.8.1-glibc-2.17/c3f970a -LIBUNWIND_BASE=/mnt/gvfs/third-party2/libunwind/ad576de2a1ea560c4d3434304f0fc4e079bede42/trunk/gcc-4.8.1-glibc-2.17/675d945 -TBB_BASE=/mnt/gvfs/third-party2/tbb/9d9a554877d0c5bef330fe818ab7178806dd316a/4.0_update2/gcc-4.8.1-glibc-2.17/c3f970a -KERNEL_HEADERS_BASE=/mnt/gvfs/third-party2/kernel-headers/7c111ff27e0c466235163f00f280a9d617c3d2ec/4.0.9-36_fbk5_2933_gd092e3f/gcc-4.8.1-glibc-2.17/da39a3e -BINUTILS_BASE=/mnt/gvfs/third-party2/binutils/b7fd454c4b10c6a81015d4524ed06cdeab558490/2.26/centos6-native/da39a3e -VALGRIND_BASE=/mnt/gvfs/third-party2/valgrind/d7f4d4d86674a57668e3a96f76f0e17dd0eb8765/3.8.1/gcc-4.8.1-glibc-2.17/c3f970a -LUA_BASE=/mnt/gvfs/third-party2/lua/61e4abf5813bbc39bc4f548757ccfcadde175a48/5.2.3/centos6-native/730f94e +GCC_BASE=/mnt/gvfs/third-party2/gcc/cf7d14c625ce30bae1a4661c2319c5a283e4dd22/4.8.1/centos6-native/cc6c9dc+CLANG_BASE=/mnt/gvfs/third-party2/llvm-fb/8598c375b0e94e1448182eb3df034704144a838d/stable/centos6-native/3f16ddd+LIBGCC_BASE=/mnt/gvfs/third-party2/libgcc/d6e0a7da6faba45f5e5b1638f9edd7afc2f34e7d/4.8.1/gcc-4.8.1-glibc-2.17/8aac7fc+GLIBC_BASE=/mnt/gvfs/third-party2/glibc/d282e6e8f3d20f4e40a516834847bdc038e07973/2.17/gcc-4.8.1-glibc-2.17/99df8fc+SNAPPY_BASE=/mnt/gvfs/third-party2/snappy/8c38a4c1e52b4c2cc8a9cdc31b9c947ed7dbfcb4/1.1.3/gcc-4.8.1-glibc-2.17/c3f970a+ZLIB_BASE=/mnt/gvfs/third-party2/zlib/0882df3713c7a84f15abe368dc004581f20b39d7/1.2.8/gcc-4.8.1-glibc-2.17/c3f970a+BZIP2_BASE=/mnt/gvfs/third-party2/bzip2/740325875f6729f42d28deaa2147b0854f3a347e/1.0.6/gcc-4.8.1-glibc-2.17/c3f970a+LZ4_BASE=/mnt/gvfs/third-party2/lz4/0e790b441e2d9acd68d51e1d2e028f88c6a79ddf/r131/gcc-4.8.1-glibc-2.17/c3f970a+ZSTD_BASE=/mnt/gvfs/third-party2/zstd/9455f75ff7f4831dc9fda02a6a0f8c68922fad8f/1.0.0/gcc-4.8.1-glibc-2.17/c3f970a+GFLAGS_BASE=/mnt/gvfs/third-party2/gflags/f001a51b2854957676d07306ef3abf67186b5c8b/2.1.1/gcc-4.8.1-glibc-2.17/c3f970a+JEMALLOC_BASE=/mnt/gvfs/third-party2/jemalloc/fc8a13ca1fffa4d0765c716c5a0b49f0c107518f/master/gcc-4.8.1-glibc-2.17/8d31e51+NUMA_BASE=/mnt/gvfs/third-party2/numa/17c514c4d102a25ca15f4558be564eeed76f4b6a/2.0.8/gcc-4.8.1-glibc-2.17/c3f970a+LIBUNWIND_BASE=/mnt/gvfs/third-party2/libunwind/ad576de2a1ea560c4d3434304f0fc4e079bede42/trunk/gcc-4.8.1-glibc-2.17/675d945+TBB_BASE=/mnt/gvfs/third-party2/tbb/9d9a554877d0c5bef330fe818ab7178806dd316a/4.0_update2/gcc-4.8.1-glibc-2.17/c3f970a+KERNEL_HEADERS_BASE=/mnt/gvfs/third-party2/kernel-headers/7c111ff27e0c466235163f00f280a9d617c3d2ec/4.0.9-36_fbk5_2933_gd092e3f/gcc-4.8.1-glibc-2.17/da39a3e+BINUTILS_BASE=/mnt/gvfs/third-party2/binutils/b7fd454c4b10c6a81015d4524ed06cdeab558490/2.26/centos6-native/da39a3e+VALGRIND_BASE=/mnt/gvfs/third-party2/valgrind/d7f4d4d86674a57668e3a96f76f0e17dd0eb8765/3.8.1/gcc-4.8.1-glibc-2.17/c3f970a+LUA_BASE=/mnt/gvfs/third-party2/lua/61e4abf5813bbc39bc4f548757ccfcadde175a48/5.2.3/centos6-native/730f94e
rocksdb-5.8/build_tools/dockerbuild.sh view
@@ -1,2 +1,2 @@-#!/usr/bin/env bash -docker run -v $PWD:/rocks -w /rocks buildpack-deps make +#!/usr/bin/env bash+docker run -v $PWD:/rocks -w /rocks buildpack-deps make
rocksdb-5.8/build_tools/fb_compile_mongo.sh view
@@ -1,55 +1,55 @@-#!/bin/sh - -# fail early -set -e - -if test -z $ROCKSDB_PATH; then - ROCKSDB_PATH=~/rocksdb -fi -source $ROCKSDB_PATH/build_tools/fbcode_config4.8.1.sh - -EXTRA_LDFLAGS="" - -if test -z $ALLOC; then - # default - ALLOC=tcmalloc -elif [[ $ALLOC == "jemalloc" ]]; then - ALLOC=system - EXTRA_LDFLAGS+=" -Wl,--whole-archive $JEMALLOC_LIB -Wl,--no-whole-archive" -fi - -# we need to force mongo to use static library, not shared -STATIC_LIB_DEP_DIR='build/static_library_dependencies' -test -d $STATIC_LIB_DEP_DIR || mkdir $STATIC_LIB_DEP_DIR -test -h $STATIC_LIB_DEP_DIR/`basename $SNAPPY_LIBS` || ln -s $SNAPPY_LIBS $STATIC_LIB_DEP_DIR -test -h $STATIC_LIB_DEP_DIR/`basename $LZ4_LIBS` || ln -s $LZ4_LIBS $STATIC_LIB_DEP_DIR - -EXTRA_LDFLAGS+=" -L $STATIC_LIB_DEP_DIR" - -set -x - -EXTRA_CMD="" -if ! test -e version.json; then - # this is Mongo 3.0 - EXTRA_CMD="--rocksdb \ - --variant-dir=linux2/norm - --cxx=${CXX} \ - --cc=${CC} \ - --use-system-zlib" # add this line back to normal code path - # when https://jira.mongodb.org/browse/SERVER-19123 is resolved -fi - -scons \ - LINKFLAGS="$EXTRA_LDFLAGS $EXEC_LDFLAGS $PLATFORM_LDFLAGS" \ - CCFLAGS="$CXXFLAGS -L $STATIC_LIB_DEP_DIR" \ - LIBS="lz4 gcc stdc++" \ - LIBPATH="$ROCKSDB_PATH" \ - CPPPATH="$ROCKSDB_PATH/include" \ - -j32 \ - --allocator=$ALLOC \ - --nostrip \ - --opt=on \ - --disable-minimum-compiler-version-enforcement \ - --use-system-snappy \ - --disable-warnings-as-errors \ - $EXTRA_CMD $* +#!/bin/sh++# fail early+set -e++if test -z $ROCKSDB_PATH; then+ ROCKSDB_PATH=~/rocksdb+fi+source $ROCKSDB_PATH/build_tools/fbcode_config4.8.1.sh++EXTRA_LDFLAGS=""++if test -z $ALLOC; then+ # default+ ALLOC=tcmalloc+elif [[ $ALLOC == "jemalloc" ]]; then+ ALLOC=system+ EXTRA_LDFLAGS+=" -Wl,--whole-archive $JEMALLOC_LIB -Wl,--no-whole-archive"+fi++# we need to force mongo to use static library, not shared+STATIC_LIB_DEP_DIR='build/static_library_dependencies'+test -d $STATIC_LIB_DEP_DIR || mkdir $STATIC_LIB_DEP_DIR+test -h $STATIC_LIB_DEP_DIR/`basename $SNAPPY_LIBS` || ln -s $SNAPPY_LIBS $STATIC_LIB_DEP_DIR+test -h $STATIC_LIB_DEP_DIR/`basename $LZ4_LIBS` || ln -s $LZ4_LIBS $STATIC_LIB_DEP_DIR++EXTRA_LDFLAGS+=" -L $STATIC_LIB_DEP_DIR"++set -x++EXTRA_CMD=""+if ! test -e version.json; then+ # this is Mongo 3.0+ EXTRA_CMD="--rocksdb \+ --variant-dir=linux2/norm+ --cxx=${CXX} \+ --cc=${CC} \+ --use-system-zlib" # add this line back to normal code path+ # when https://jira.mongodb.org/browse/SERVER-19123 is resolved+fi++scons \+ LINKFLAGS="$EXTRA_LDFLAGS $EXEC_LDFLAGS $PLATFORM_LDFLAGS" \+ CCFLAGS="$CXXFLAGS -L $STATIC_LIB_DEP_DIR" \+ LIBS="lz4 gcc stdc++" \+ LIBPATH="$ROCKSDB_PATH" \+ CPPPATH="$ROCKSDB_PATH/include" \+ -j32 \+ --allocator=$ALLOC \+ --nostrip \+ --opt=on \+ --disable-minimum-compiler-version-enforcement \+ --use-system-snappy \+ --disable-warnings-as-errors \+ $EXTRA_CMD $*
rocksdb-5.8/build_tools/fbcode_config.sh view
@@ -1,156 +1,156 @@-#!/bin/sh -# -# Set environment variables so that we can compile rocksdb using -# fbcode settings. It uses the latest g++ and clang compilers and also -# uses jemalloc -# Environment variables that change the behavior of this script: -# PIC_BUILD -- if true, it will only take pic versions of libraries from fbcode. libraries that don't have pic variant will not be included - - -BASEDIR=`dirname $BASH_SOURCE` -source "$BASEDIR/dependencies.sh" - -CFLAGS="" - -# libgcc -LIBGCC_INCLUDE="$LIBGCC_BASE/include" -LIBGCC_LIBS=" -L $LIBGCC_BASE/lib" - -# glibc -GLIBC_INCLUDE="$GLIBC_BASE/include" -GLIBC_LIBS=" -L $GLIBC_BASE/lib" - -# snappy -SNAPPY_INCLUDE=" -I $SNAPPY_BASE/include/" -if test -z $PIC_BUILD; then - SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy.a" -else - SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy_pic.a" -fi -CFLAGS+=" -DSNAPPY" - -if test -z $PIC_BUILD; then - # location of zlib headers and libraries - ZLIB_INCLUDE=" -I $ZLIB_BASE/include/" - ZLIB_LIBS=" $ZLIB_BASE/lib/libz.a" - CFLAGS+=" -DZLIB" - - # location of bzip headers and libraries - BZIP_INCLUDE=" -I $BZIP2_BASE/include/" - BZIP_LIBS=" $BZIP2_BASE/lib/libbz2.a" - CFLAGS+=" -DBZIP2" - - LZ4_INCLUDE=" -I $LZ4_BASE/include/" - LZ4_LIBS=" $LZ4_BASE/lib/liblz4.a" - CFLAGS+=" -DLZ4" - - ZSTD_INCLUDE=" -I $ZSTD_BASE/include/" - ZSTD_LIBS=" $ZSTD_BASE/lib/libzstd.a" - CFLAGS+=" -DZSTD" -fi - -# location of gflags headers and libraries -GFLAGS_INCLUDE=" -I $GFLAGS_BASE/include/" -if test -z $PIC_BUILD; then - GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags.a" -else - GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags_pic.a" -fi -CFLAGS+=" -DGFLAGS=gflags" - -# location of jemalloc -JEMALLOC_INCLUDE=" -I $JEMALLOC_BASE/include/" -JEMALLOC_LIB=" $JEMALLOC_BASE/lib/libjemalloc.a" - -if test -z $PIC_BUILD; then - # location of numa - NUMA_INCLUDE=" -I $NUMA_BASE/include/" - NUMA_LIB=" $NUMA_BASE/lib/libnuma.a" - CFLAGS+=" -DNUMA" - - # location of libunwind - LIBUNWIND="$LIBUNWIND_BASE/lib/libunwind.a" -fi - -# location of TBB -TBB_INCLUDE=" -isystem $TBB_BASE/include/" -if test -z $PIC_BUILD; then - TBB_LIBS="$TBB_BASE/lib/libtbb.a" -else - TBB_LIBS="$TBB_BASE/lib/libtbb_pic.a" -fi -CFLAGS+=" -DTBB" - -# use Intel SSE support for checksum calculations -export USE_SSE=1 - -BINUTILS="$BINUTILS_BASE/bin" -AR="$BINUTILS/ar" - -DEPS_INCLUDE="$SNAPPY_INCLUDE $ZLIB_INCLUDE $BZIP_INCLUDE $LZ4_INCLUDE $ZSTD_INCLUDE $GFLAGS_INCLUDE $NUMA_INCLUDE $TBB_INCLUDE" - -STDLIBS="-L $GCC_BASE/lib64" - -CLANG_BIN="$CLANG_BASE/bin" -CLANG_LIB="$CLANG_BASE/lib" -CLANG_SRC="$CLANG_BASE/../../src" - -CLANG_ANALYZER="$CLANG_BIN/clang++" -CLANG_SCAN_BUILD="$CLANG_SRC/llvm/tools/clang/tools/scan-build/bin/scan-build" - -if [ -z "$USE_CLANG" ]; then - # gcc - CC="$GCC_BASE/bin/gcc" - CXX="$GCC_BASE/bin/g++" - - CFLAGS+=" -B$BINUTILS/gold" - CFLAGS+=" -isystem $GLIBC_INCLUDE" - CFLAGS+=" -isystem $LIBGCC_INCLUDE" - JEMALLOC=1 -else - # clang - CLANG_INCLUDE="$CLANG_LIB/clang/stable/include" - CC="$CLANG_BIN/clang" - CXX="$CLANG_BIN/clang++" - - KERNEL_HEADERS_INCLUDE="$KERNEL_HEADERS_BASE/include" - - CFLAGS+=" -B$BINUTILS/gold -nostdinc -nostdlib" - CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/5.x " - CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/5.x/x86_64-facebook-linux " - CFLAGS+=" -isystem $GLIBC_INCLUDE" - CFLAGS+=" -isystem $LIBGCC_INCLUDE" - CFLAGS+=" -isystem $CLANG_INCLUDE" - CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE/linux " - CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE " - CFLAGS+=" -Wno-expansion-to-defined " - CXXFLAGS="-nostdinc++" -fi - -CFLAGS+=" $DEPS_INCLUDE" -CFLAGS+=" -DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DROCKSDB_SUPPORT_THREAD_LOCAL -DHAVE_SSE42" -CXXFLAGS+=" $CFLAGS" - -EXEC_LDFLAGS=" $SNAPPY_LIBS $ZLIB_LIBS $BZIP_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $NUMA_LIB $TBB_LIBS" -EXEC_LDFLAGS+=" -B$BINUTILS/gold" -EXEC_LDFLAGS+=" -Wl,--dynamic-linker,/usr/local/fbcode/gcc-5-glibc-2.23/lib/ld.so" -EXEC_LDFLAGS+=" $LIBUNWIND" -EXEC_LDFLAGS+=" -Wl,-rpath=/usr/local/fbcode/gcc-5-glibc-2.23/lib" -# required by libtbb -EXEC_LDFLAGS+=" -ldl" - -PLATFORM_LDFLAGS="$LIBGCC_LIBS $GLIBC_LIBS $STDLIBS -lgcc -lstdc++" - -EXEC_LDFLAGS_SHARED="$SNAPPY_LIBS $ZLIB_LIBS $BZIP_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $TBB_LIBS" - -VALGRIND_VER="$VALGRIND_BASE/bin/" - -LUA_PATH="$LUA_BASE" - -if test -z $PIC_BUILD; then - LUA_LIB=" $LUA_PATH/lib/liblua.a" -else - LUA_LIB=" $LUA_PATH/lib/liblua_pic.a" -fi - -export CC CXX AR CFLAGS CXXFLAGS EXEC_LDFLAGS EXEC_LDFLAGS_SHARED VALGRIND_VER JEMALLOC_LIB JEMALLOC_INCLUDE CLANG_ANALYZER CLANG_SCAN_BUILD LUA_PATH LUA_LIB +#!/bin/sh+#+# Set environment variables so that we can compile rocksdb using+# fbcode settings. It uses the latest g++ and clang compilers and also+# uses jemalloc+# Environment variables that change the behavior of this script:+# PIC_BUILD -- if true, it will only take pic versions of libraries from fbcode. libraries that don't have pic variant will not be included+++BASEDIR=`dirname $BASH_SOURCE`+source "$BASEDIR/dependencies.sh"++CFLAGS=""++# libgcc+LIBGCC_INCLUDE="$LIBGCC_BASE/include"+LIBGCC_LIBS=" -L $LIBGCC_BASE/lib"++# glibc+GLIBC_INCLUDE="$GLIBC_BASE/include"+GLIBC_LIBS=" -L $GLIBC_BASE/lib"++# snappy+SNAPPY_INCLUDE=" -I $SNAPPY_BASE/include/"+if test -z $PIC_BUILD; then+ SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy.a"+else+ SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy_pic.a"+fi+CFLAGS+=" -DSNAPPY"++if test -z $PIC_BUILD; then+ # location of zlib headers and libraries+ ZLIB_INCLUDE=" -I $ZLIB_BASE/include/"+ ZLIB_LIBS=" $ZLIB_BASE/lib/libz.a"+ CFLAGS+=" -DZLIB"++ # location of bzip headers and libraries+ BZIP_INCLUDE=" -I $BZIP2_BASE/include/"+ BZIP_LIBS=" $BZIP2_BASE/lib/libbz2.a"+ CFLAGS+=" -DBZIP2"++ LZ4_INCLUDE=" -I $LZ4_BASE/include/"+ LZ4_LIBS=" $LZ4_BASE/lib/liblz4.a"+ CFLAGS+=" -DLZ4"++ ZSTD_INCLUDE=" -I $ZSTD_BASE/include/"+ ZSTD_LIBS=" $ZSTD_BASE/lib/libzstd.a"+ CFLAGS+=" -DZSTD"+fi++# location of gflags headers and libraries+GFLAGS_INCLUDE=" -I $GFLAGS_BASE/include/"+if test -z $PIC_BUILD; then+ GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags.a"+else+ GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags_pic.a"+fi+CFLAGS+=" -DGFLAGS=gflags"++# location of jemalloc+JEMALLOC_INCLUDE=" -I $JEMALLOC_BASE/include/"+JEMALLOC_LIB=" $JEMALLOC_BASE/lib/libjemalloc.a"++if test -z $PIC_BUILD; then+ # location of numa+ NUMA_INCLUDE=" -I $NUMA_BASE/include/"+ NUMA_LIB=" $NUMA_BASE/lib/libnuma.a"+ CFLAGS+=" -DNUMA"++ # location of libunwind+ LIBUNWIND="$LIBUNWIND_BASE/lib/libunwind.a"+fi++# location of TBB+TBB_INCLUDE=" -isystem $TBB_BASE/include/"+if test -z $PIC_BUILD; then+ TBB_LIBS="$TBB_BASE/lib/libtbb.a"+else+ TBB_LIBS="$TBB_BASE/lib/libtbb_pic.a"+fi+CFLAGS+=" -DTBB"++# use Intel SSE support for checksum calculations+export USE_SSE=1++BINUTILS="$BINUTILS_BASE/bin"+AR="$BINUTILS/ar"++DEPS_INCLUDE="$SNAPPY_INCLUDE $ZLIB_INCLUDE $BZIP_INCLUDE $LZ4_INCLUDE $ZSTD_INCLUDE $GFLAGS_INCLUDE $NUMA_INCLUDE $TBB_INCLUDE"++STDLIBS="-L $GCC_BASE/lib64"++CLANG_BIN="$CLANG_BASE/bin"+CLANG_LIB="$CLANG_BASE/lib"+CLANG_SRC="$CLANG_BASE/../../src"++CLANG_ANALYZER="$CLANG_BIN/clang++"+CLANG_SCAN_BUILD="$CLANG_SRC/llvm/tools/clang/tools/scan-build/bin/scan-build"++if [ -z "$USE_CLANG" ]; then+ # gcc+ CC="$GCC_BASE/bin/gcc"+ CXX="$GCC_BASE/bin/g++"++ CFLAGS+=" -B$BINUTILS/gold"+ CFLAGS+=" -isystem $GLIBC_INCLUDE"+ CFLAGS+=" -isystem $LIBGCC_INCLUDE"+ JEMALLOC=1+else+ # clang+ CLANG_INCLUDE="$CLANG_LIB/clang/stable/include"+ CC="$CLANG_BIN/clang"+ CXX="$CLANG_BIN/clang++"++ KERNEL_HEADERS_INCLUDE="$KERNEL_HEADERS_BASE/include"++ CFLAGS+=" -B$BINUTILS/gold -nostdinc -nostdlib"+ CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/5.x "+ CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/5.x/x86_64-facebook-linux "+ CFLAGS+=" -isystem $GLIBC_INCLUDE"+ CFLAGS+=" -isystem $LIBGCC_INCLUDE"+ CFLAGS+=" -isystem $CLANG_INCLUDE"+ CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE/linux "+ CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE "+ CFLAGS+=" -Wno-expansion-to-defined "+ CXXFLAGS="-nostdinc++"+fi++CFLAGS+=" $DEPS_INCLUDE"+CFLAGS+=" -DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DROCKSDB_SUPPORT_THREAD_LOCAL -DHAVE_SSE42"+CXXFLAGS+=" $CFLAGS"++EXEC_LDFLAGS=" $SNAPPY_LIBS $ZLIB_LIBS $BZIP_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $NUMA_LIB $TBB_LIBS"+EXEC_LDFLAGS+=" -B$BINUTILS/gold"+EXEC_LDFLAGS+=" -Wl,--dynamic-linker,/usr/local/fbcode/gcc-5-glibc-2.23/lib/ld.so"+EXEC_LDFLAGS+=" $LIBUNWIND"+EXEC_LDFLAGS+=" -Wl,-rpath=/usr/local/fbcode/gcc-5-glibc-2.23/lib"+# required by libtbb+EXEC_LDFLAGS+=" -ldl"++PLATFORM_LDFLAGS="$LIBGCC_LIBS $GLIBC_LIBS $STDLIBS -lgcc -lstdc++"++EXEC_LDFLAGS_SHARED="$SNAPPY_LIBS $ZLIB_LIBS $BZIP_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $TBB_LIBS"++VALGRIND_VER="$VALGRIND_BASE/bin/"++LUA_PATH="$LUA_BASE"++if test -z $PIC_BUILD; then+ LUA_LIB=" $LUA_PATH/lib/liblua.a"+else+ LUA_LIB=" $LUA_PATH/lib/liblua_pic.a"+fi++export CC CXX AR CFLAGS CXXFLAGS EXEC_LDFLAGS EXEC_LDFLAGS_SHARED VALGRIND_VER JEMALLOC_LIB JEMALLOC_INCLUDE CLANG_ANALYZER CLANG_SCAN_BUILD LUA_PATH LUA_LIB
rocksdb-5.8/build_tools/fbcode_config4.8.1.sh view
@@ -1,115 +1,115 @@-#!/bin/sh -# -# Set environment variables so that we can compile rocksdb using -# fbcode settings. It uses the latest g++ compiler and also -# uses jemalloc - -BASEDIR=`dirname $BASH_SOURCE` -source "$BASEDIR/dependencies_4.8.1.sh" - -# location of libgcc -LIBGCC_INCLUDE="$LIBGCC_BASE/include" -LIBGCC_LIBS=" -L $LIBGCC_BASE/lib" - -# location of glibc -GLIBC_INCLUDE="$GLIBC_BASE/include" -GLIBC_LIBS=" -L $GLIBC_BASE/lib" - -# location of snappy headers and libraries -SNAPPY_INCLUDE=" -I $SNAPPY_BASE/include" -SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy.a" - -# location of zlib headers and libraries -ZLIB_INCLUDE=" -I $ZLIB_BASE/include" -ZLIB_LIBS=" $ZLIB_BASE/lib/libz.a" - -# location of bzip headers and libraries -BZIP2_INCLUDE=" -I $BZIP2_BASE/include/" -BZIP2_LIBS=" $BZIP2_BASE/lib/libbz2.a" - -LZ4_INCLUDE=" -I $LZ4_BASE/include" -LZ4_LIBS=" $LZ4_BASE/lib/liblz4.a" - -ZSTD_INCLUDE=" -I $ZSTD_BASE/include" -ZSTD_LIBS=" $ZSTD_BASE/lib/libzstd.a" - -# location of gflags headers and libraries -GFLAGS_INCLUDE=" -I $GFLAGS_BASE/include/" -GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags.a" - -# location of jemalloc -JEMALLOC_INCLUDE=" -I $JEMALLOC_BASE/include" -JEMALLOC_LIB="$JEMALLOC_BASE/lib/libjemalloc.a" - -# location of numa -NUMA_INCLUDE=" -I $NUMA_BASE/include/" -NUMA_LIB=" $NUMA_BASE/lib/libnuma.a" - -# location of libunwind -LIBUNWIND="$LIBUNWIND_BASE/lib/libunwind.a" - -# location of tbb -TBB_INCLUDE=" -isystem $TBB_BASE/include/" -TBB_LIBS="$TBB_BASE/lib/libtbb.a" - -# use Intel SSE support for checksum calculations -export USE_SSE=1 - -BINUTILS="$BINUTILS_BASE/bin" -AR="$BINUTILS/ar" - -DEPS_INCLUDE="$SNAPPY_INCLUDE $ZLIB_INCLUDE $BZIP2_INCLUDE $LZ4_INCLUDE $ZSTD_INCLUDE $GFLAGS_INCLUDE $NUMA_INCLUDE $TBB_INCLUDE" - -STDLIBS="-L $GCC_BASE/lib64" - -if [ -z "$USE_CLANG" ]; then - # gcc - CC="$GCC_BASE/bin/gcc" - CXX="$GCC_BASE/bin/g++" - - CFLAGS="-B$BINUTILS/gold -m64 -mtune=generic" - CFLAGS+=" -isystem $GLIBC_INCLUDE" - CFLAGS+=" -isystem $LIBGCC_INCLUDE" - JEMALLOC=1 -else - # clang - CLANG_BIN="$CLANG_BASE/bin" - CLANG_LIB="$CLANG_BASE/lib" - CLANG_INCLUDE="$CLANG_LIB/clang/*/include" - CC="$CLANG_BIN/clang" - CXX="$CLANG_BIN/clang++" - - KERNEL_HEADERS_INCLUDE="$KERNEL_HEADERS_BASE/include/" - - CFLAGS="-B$BINUTILS/gold -nostdinc -nostdlib" - CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/4.8.1 " - CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/4.8.1/x86_64-facebook-linux " - CFLAGS+=" -isystem $GLIBC_INCLUDE" - CFLAGS+=" -isystem $LIBGCC_INCLUDE" - CFLAGS+=" -isystem $CLANG_INCLUDE" - CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE/linux " - CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE " - CXXFLAGS="-nostdinc++" -fi - -CFLAGS+=" $DEPS_INCLUDE" -CFLAGS+=" -DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DROCKSDB_SUPPORT_THREAD_LOCAL -DHAVE_SSE42" -CFLAGS+=" -DSNAPPY -DGFLAGS=google -DZLIB -DBZIP2 -DLZ4 -DZSTD -DNUMA -DTBB" -CXXFLAGS+=" $CFLAGS" - -EXEC_LDFLAGS=" $SNAPPY_LIBS $ZLIB_LIBS $BZIP2_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $NUMA_LIB $TBB_LIBS" -EXEC_LDFLAGS+=" -Wl,--dynamic-linker,/usr/local/fbcode/gcc-4.8.1-glibc-2.17/lib/ld.so" -EXEC_LDFLAGS+=" $LIBUNWIND" -EXEC_LDFLAGS+=" -Wl,-rpath=/usr/local/fbcode/gcc-4.8.1-glibc-2.17/lib" -# required by libtbb -EXEC_LDFLAGS+=" -ldl" - -PLATFORM_LDFLAGS="$LIBGCC_LIBS $GLIBC_LIBS $STDLIBS -lgcc -lstdc++" - -EXEC_LDFLAGS_SHARED="$SNAPPY_LIBS $ZLIB_LIBS $BZIP2_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS" - -VALGRIND_VER="$VALGRIND_BASE/bin/" - -LUA_PATH="$LUA_BASE" - -export CC CXX AR CFLAGS CXXFLAGS EXEC_LDFLAGS EXEC_LDFLAGS_SHARED VALGRIND_VER JEMALLOC_LIB JEMALLOC_INCLUDE LUA_PATH +#!/bin/sh+#+# Set environment variables so that we can compile rocksdb using+# fbcode settings. It uses the latest g++ compiler and also+# uses jemalloc++BASEDIR=`dirname $BASH_SOURCE`+source "$BASEDIR/dependencies_4.8.1.sh"++# location of libgcc+LIBGCC_INCLUDE="$LIBGCC_BASE/include"+LIBGCC_LIBS=" -L $LIBGCC_BASE/lib"++# location of glibc+GLIBC_INCLUDE="$GLIBC_BASE/include"+GLIBC_LIBS=" -L $GLIBC_BASE/lib"++# location of snappy headers and libraries+SNAPPY_INCLUDE=" -I $SNAPPY_BASE/include"+SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy.a"++# location of zlib headers and libraries+ZLIB_INCLUDE=" -I $ZLIB_BASE/include"+ZLIB_LIBS=" $ZLIB_BASE/lib/libz.a"++# location of bzip headers and libraries+BZIP2_INCLUDE=" -I $BZIP2_BASE/include/"+BZIP2_LIBS=" $BZIP2_BASE/lib/libbz2.a"++LZ4_INCLUDE=" -I $LZ4_BASE/include"+LZ4_LIBS=" $LZ4_BASE/lib/liblz4.a"++ZSTD_INCLUDE=" -I $ZSTD_BASE/include"+ZSTD_LIBS=" $ZSTD_BASE/lib/libzstd.a"++# location of gflags headers and libraries+GFLAGS_INCLUDE=" -I $GFLAGS_BASE/include/"+GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags.a"++# location of jemalloc+JEMALLOC_INCLUDE=" -I $JEMALLOC_BASE/include"+JEMALLOC_LIB="$JEMALLOC_BASE/lib/libjemalloc.a"++# location of numa+NUMA_INCLUDE=" -I $NUMA_BASE/include/"+NUMA_LIB=" $NUMA_BASE/lib/libnuma.a"++# location of libunwind+LIBUNWIND="$LIBUNWIND_BASE/lib/libunwind.a"++# location of tbb+TBB_INCLUDE=" -isystem $TBB_BASE/include/"+TBB_LIBS="$TBB_BASE/lib/libtbb.a"++# use Intel SSE support for checksum calculations+export USE_SSE=1++BINUTILS="$BINUTILS_BASE/bin"+AR="$BINUTILS/ar"++DEPS_INCLUDE="$SNAPPY_INCLUDE $ZLIB_INCLUDE $BZIP2_INCLUDE $LZ4_INCLUDE $ZSTD_INCLUDE $GFLAGS_INCLUDE $NUMA_INCLUDE $TBB_INCLUDE"++STDLIBS="-L $GCC_BASE/lib64"++if [ -z "$USE_CLANG" ]; then+ # gcc+ CC="$GCC_BASE/bin/gcc"+ CXX="$GCC_BASE/bin/g++"++ CFLAGS="-B$BINUTILS/gold -m64 -mtune=generic"+ CFLAGS+=" -isystem $GLIBC_INCLUDE"+ CFLAGS+=" -isystem $LIBGCC_INCLUDE"+ JEMALLOC=1+else+ # clang+ CLANG_BIN="$CLANG_BASE/bin"+ CLANG_LIB="$CLANG_BASE/lib"+ CLANG_INCLUDE="$CLANG_LIB/clang/*/include"+ CC="$CLANG_BIN/clang"+ CXX="$CLANG_BIN/clang++"++ KERNEL_HEADERS_INCLUDE="$KERNEL_HEADERS_BASE/include/"++ CFLAGS="-B$BINUTILS/gold -nostdinc -nostdlib"+ CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/4.8.1 "+ CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/4.8.1/x86_64-facebook-linux "+ CFLAGS+=" -isystem $GLIBC_INCLUDE"+ CFLAGS+=" -isystem $LIBGCC_INCLUDE"+ CFLAGS+=" -isystem $CLANG_INCLUDE"+ CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE/linux "+ CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE "+ CXXFLAGS="-nostdinc++"+fi++CFLAGS+=" $DEPS_INCLUDE"+CFLAGS+=" -DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DROCKSDB_SUPPORT_THREAD_LOCAL -DHAVE_SSE42"+CFLAGS+=" -DSNAPPY -DGFLAGS=google -DZLIB -DBZIP2 -DLZ4 -DZSTD -DNUMA -DTBB"+CXXFLAGS+=" $CFLAGS"++EXEC_LDFLAGS=" $SNAPPY_LIBS $ZLIB_LIBS $BZIP2_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $NUMA_LIB $TBB_LIBS"+EXEC_LDFLAGS+=" -Wl,--dynamic-linker,/usr/local/fbcode/gcc-4.8.1-glibc-2.17/lib/ld.so"+EXEC_LDFLAGS+=" $LIBUNWIND"+EXEC_LDFLAGS+=" -Wl,-rpath=/usr/local/fbcode/gcc-4.8.1-glibc-2.17/lib"+# required by libtbb+EXEC_LDFLAGS+=" -ldl"++PLATFORM_LDFLAGS="$LIBGCC_LIBS $GLIBC_LIBS $STDLIBS -lgcc -lstdc++"++EXEC_LDFLAGS_SHARED="$SNAPPY_LIBS $ZLIB_LIBS $BZIP2_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS"++VALGRIND_VER="$VALGRIND_BASE/bin/"++LUA_PATH="$LUA_BASE"++export CC CXX AR CFLAGS CXXFLAGS EXEC_LDFLAGS EXEC_LDFLAGS_SHARED VALGRIND_VER JEMALLOC_LIB JEMALLOC_INCLUDE LUA_PATH
rocksdb-5.8/build_tools/format-diff.sh view
@@ -1,122 +1,122 @@-#!/usr/bin/env bash -# If clang_format_diff.py command is not specfied, we assume we are able to -# access directly without any path. -if [ -z $CLANG_FORMAT_DIFF ] -then -CLANG_FORMAT_DIFF="clang-format-diff.py" -fi - -# Check clang-format-diff.py -if ! which $CLANG_FORMAT_DIFF &> /dev/null -then - echo "You didn't have clang-format-diff.py and/or clang-format available in your computer!" - echo "You can download clang-format-diff.py by running: " - echo " curl --location http://goo.gl/iUW1u2 -o ${CLANG_FORMAT_DIFF}" - echo "You can download clang-format by running: " - echo " brew install clang-format" - echo "Then, move both files (i.e. ${CLANG_FORMAT_DIFF} and clang-format) to some directory within PATH=${PATH}" - exit 128 -fi - -# Check argparse, a library that clang-format-diff.py requires. -python 2>/dev/null << EOF -import argparse -EOF - -if [ "$?" != 0 ] -then - echo "To run clang-format-diff.py, we'll need the library "argparse" to be" - echo "installed. You can try either of the follow ways to install it:" - echo " 1. Manually download argparse: https://pypi.python.org/pypi/argparse" - echo " 2. easy_install argparse (if you have easy_install)" - echo " 3. pip install argparse (if you have pip)" - exit 129 -fi - -# TODO(kailiu) following work is not complete since we still need to figure -# out how to add the modified files done pre-commit hook to git's commit index. -# -# Check if this script has already been added to pre-commit hook. -# Will suggest user to add this script to pre-commit hook if their pre-commit -# is empty. -# PRE_COMMIT_SCRIPT_PATH="`git rev-parse --show-toplevel`/.git/hooks/pre-commit" -# if ! ls $PRE_COMMIT_SCRIPT_PATH &> /dev/null -# then -# echo "Would you like to add this script to pre-commit hook, which will do " -# echo -n "the format check for all the affected lines before you check in (y/n):" -# read add_to_hook -# if [ "$add_to_hook" == "y" ] -# then -# ln -s `git rev-parse --show-toplevel`/build_tools/format-diff.sh $PRE_COMMIT_SCRIPT_PATH -# fi -# fi -set -e - -uncommitted_code=`git diff HEAD` -LAST_MASTER=`git merge-base master HEAD` - -# If there's no uncommitted changes, we assume user are doing post-commit -# format check, in which case we'll check the modified lines since last commit -# from master. Otherwise, we'll check format of the uncommitted code only. -if [ -z "$uncommitted_code" ] -then - # Check the format of last commit - diffs=$(git diff -U0 $LAST_MASTER^ | $CLANG_FORMAT_DIFF -p 1) -else - # Check the format of uncommitted lines, - diffs=$(git diff -U0 HEAD | $CLANG_FORMAT_DIFF -p 1) -fi - -if [ -z "$diffs" ] -then - echo "Nothing needs to be reformatted!" - exit 0 -fi - -# Highlight the insertion/deletion from the clang-format-diff.py's output -COLOR_END="\033[0m" -COLOR_RED="\033[0;31m" -COLOR_GREEN="\033[0;32m" - -echo -e "Detect lines that doesn't follow the format rules:\r" -# Add the color to the diff. lines added will be green; lines removed will be red. -echo "$diffs" | - sed -e "s/\(^-.*$\)/`echo -e \"$COLOR_RED\1$COLOR_END\"`/" | - sed -e "s/\(^+.*$\)/`echo -e \"$COLOR_GREEN\1$COLOR_END\"`/" - -if [[ "$OPT" == *"-DTRAVIS"* ]] -then - exit 1 -fi - -echo -e "Would you like to fix the format automatically (y/n): \c" - -# Make sure under any mode, we can read user input. -exec < /dev/tty -read to_fix - -if [ "$to_fix" != "y" ] -then - exit 1 -fi - -# Do in-place format adjustment. -if [ -z "$uncommitted_code" ] -then - git diff -U0 $LAST_MASTER^ | $CLANG_FORMAT_DIFF -i -p 1 -else - git diff -U0 HEAD^ | $CLANG_FORMAT_DIFF -i -p 1 -fi -echo "Files reformatted!" - -# Amend to last commit if user do the post-commit format check -if [ -z "$uncommitted_code" ]; then - echo -e "Would you like to amend the changes to last commit (`git log HEAD --oneline | head -1`)? (y/n): \c" - read to_amend - - if [ "$to_amend" == "y" ] - then - git commit -a --amend --reuse-message HEAD - echo "Amended to last commit" - fi -fi +#!/usr/bin/env bash+# If clang_format_diff.py command is not specfied, we assume we are able to+# access directly without any path.+if [ -z $CLANG_FORMAT_DIFF ]+then+CLANG_FORMAT_DIFF="clang-format-diff.py"+fi++# Check clang-format-diff.py+if ! which $CLANG_FORMAT_DIFF &> /dev/null+then+ echo "You didn't have clang-format-diff.py and/or clang-format available in your computer!"+ echo "You can download clang-format-diff.py by running: "+ echo " curl --location http://goo.gl/iUW1u2 -o ${CLANG_FORMAT_DIFF}"+ echo "You can download clang-format by running: "+ echo " brew install clang-format"+ echo "Then, move both files (i.e. ${CLANG_FORMAT_DIFF} and clang-format) to some directory within PATH=${PATH}"+ exit 128+fi++# Check argparse, a library that clang-format-diff.py requires.+python 2>/dev/null << EOF+import argparse+EOF++if [ "$?" != 0 ]+then+ echo "To run clang-format-diff.py, we'll need the library "argparse" to be"+ echo "installed. You can try either of the follow ways to install it:"+ echo " 1. Manually download argparse: https://pypi.python.org/pypi/argparse"+ echo " 2. easy_install argparse (if you have easy_install)"+ echo " 3. pip install argparse (if you have pip)"+ exit 129+fi++# TODO(kailiu) following work is not complete since we still need to figure+# out how to add the modified files done pre-commit hook to git's commit index.+#+# Check if this script has already been added to pre-commit hook.+# Will suggest user to add this script to pre-commit hook if their pre-commit+# is empty.+# PRE_COMMIT_SCRIPT_PATH="`git rev-parse --show-toplevel`/.git/hooks/pre-commit"+# if ! ls $PRE_COMMIT_SCRIPT_PATH &> /dev/null+# then+# echo "Would you like to add this script to pre-commit hook, which will do "+# echo -n "the format check for all the affected lines before you check in (y/n):"+# read add_to_hook+# if [ "$add_to_hook" == "y" ]+# then+# ln -s `git rev-parse --show-toplevel`/build_tools/format-diff.sh $PRE_COMMIT_SCRIPT_PATH+# fi+# fi+set -e++uncommitted_code=`git diff HEAD`+LAST_MASTER=`git merge-base master HEAD`++# If there's no uncommitted changes, we assume user are doing post-commit+# format check, in which case we'll check the modified lines since last commit+# from master. Otherwise, we'll check format of the uncommitted code only.+if [ -z "$uncommitted_code" ]+then+ # Check the format of last commit+ diffs=$(git diff -U0 $LAST_MASTER^ | $CLANG_FORMAT_DIFF -p 1)+else+ # Check the format of uncommitted lines,+ diffs=$(git diff -U0 HEAD | $CLANG_FORMAT_DIFF -p 1)+fi++if [ -z "$diffs" ]+then+ echo "Nothing needs to be reformatted!"+ exit 0+fi++# Highlight the insertion/deletion from the clang-format-diff.py's output+COLOR_END="\033[0m"+COLOR_RED="\033[0;31m" +COLOR_GREEN="\033[0;32m" ++echo -e "Detect lines that doesn't follow the format rules:\r"+# Add the color to the diff. lines added will be green; lines removed will be red.+echo "$diffs" | + sed -e "s/\(^-.*$\)/`echo -e \"$COLOR_RED\1$COLOR_END\"`/" |+ sed -e "s/\(^+.*$\)/`echo -e \"$COLOR_GREEN\1$COLOR_END\"`/"++if [[ "$OPT" == *"-DTRAVIS"* ]]+then+ exit 1+fi++echo -e "Would you like to fix the format automatically (y/n): \c"++# Make sure under any mode, we can read user input.+exec < /dev/tty+read to_fix++if [ "$to_fix" != "y" ]+then+ exit 1+fi++# Do in-place format adjustment.+if [ -z "$uncommitted_code" ]+then+ git diff -U0 $LAST_MASTER^ | $CLANG_FORMAT_DIFF -i -p 1+else+ git diff -U0 HEAD^ | $CLANG_FORMAT_DIFF -i -p 1+fi+echo "Files reformatted!"++# Amend to last commit if user do the post-commit format check+if [ -z "$uncommitted_code" ]; then+ echo -e "Would you like to amend the changes to last commit (`git log HEAD --oneline | head -1`)? (y/n): \c"+ read to_amend++ if [ "$to_amend" == "y" ]+ then+ git commit -a --amend --reuse-message HEAD+ echo "Amended to last commit"+ fi+fi
rocksdb-5.8/build_tools/make_package.sh view
@@ -1,128 +1,128 @@-#/usr/bin/env bash - -set -e - -function log() { - echo "[+] $1" -} - -function fatal() { - echo "[!] $1" - exit 1 -} - -function platform() { - local __resultvar=$1 - if [[ -f "/etc/yum.conf" ]]; then - eval $__resultvar="centos" - elif [[ -f "/etc/dpkg/dpkg.cfg" ]]; then - eval $__resultvar="ubuntu" - else - fatal "Unknwon operating system" - fi -} -platform OS - -function package() { - if [[ $OS = "ubuntu" ]]; then - if dpkg --get-selections | grep --quiet $1; then - log "$1 is already installed. skipping." - else - apt-get install $@ -y - fi - elif [[ $OS = "centos" ]]; then - if rpm -qa | grep --quiet $1; then - log "$1 is already installed. skipping." - else - yum install $@ -y - fi - fi -} - -function detect_fpm_output() { - if [[ $OS = "ubuntu" ]]; then - export FPM_OUTPUT=deb - elif [[ $OS = "centos" ]]; then - export FPM_OUTPUT=rpm - fi -} -detect_fpm_output - -function gem_install() { - if gem list | grep --quiet $1; then - log "$1 is already installed. skipping." - else - gem install $@ - fi -} - -function main() { - if [[ $# -ne 1 ]]; then - fatal "Usage: $0 <rocksdb_version>" - else - log "using rocksdb version: $1" - fi - - if [[ -d /vagrant ]]; then - if [[ $OS = "ubuntu" ]]; then - package g++-4.8 - export CXX=g++-4.8 - - # the deb would depend on libgflags2, but the static lib is the only thing - # installed by make install - package libgflags-dev - - package ruby-all-dev - elif [[ $OS = "centos" ]]; then - pushd /etc/yum.repos.d - if [[ ! -f /etc/yum.repos.d/devtools-1.1.repo ]]; then - wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo - fi - package devtoolset-1.1-gcc --enablerepo=testing-1.1-devtools-6 - package devtoolset-1.1-gcc-c++ --enablerepo=testing-1.1-devtools-6 - export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc - export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp - export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++ - export PATH=$PATH:/opt/centos/devtoolset-1.1/root/usr/bin - popd - if ! rpm -qa | grep --quiet gflags; then - rpm -i https://github.com/schuhschuh/gflags/releases/download/v2.1.0/gflags-devel-2.1.0-1.amd64.rpm - fi - - package ruby - package ruby-devel - package rubygems - package rpm-build - fi - fi - gem_install fpm - - make static_lib - make install INSTALL_PATH=package - - cd package - - LIB_DIR=lib - if [[ -z "$ARCH" ]]; then - ARCH=$(getconf LONG_BIT) - fi - if [[ ("$FPM_OUTPUT" = "rpm") && ($ARCH -eq 64) ]]; then - mv lib lib64 - LIB_DIR=lib64 - fi - - fpm \ - -s dir \ - -t $FPM_OUTPUT \ - -n rocksdb \ - -v $1 \ - --prefix /usr \ - --url http://rocksdb.org/ \ - -m rocksdb@fb.com \ - --license BSD \ - --vendor Facebook \ - --description "RocksDB is an embeddable persistent key-value store for fast storage." \ - include $LIB_DIR -} - -main $@ +#/usr/bin/env bash++set -e++function log() {+ echo "[+] $1"+}++function fatal() {+ echo "[!] $1"+ exit 1+}++function platform() {+ local __resultvar=$1+ if [[ -f "/etc/yum.conf" ]]; then+ eval $__resultvar="centos"+ elif [[ -f "/etc/dpkg/dpkg.cfg" ]]; then+ eval $__resultvar="ubuntu"+ else+ fatal "Unknwon operating system"+ fi+}+platform OS++function package() {+ if [[ $OS = "ubuntu" ]]; then+ if dpkg --get-selections | grep --quiet $1; then+ log "$1 is already installed. skipping."+ else+ apt-get install $@ -y+ fi+ elif [[ $OS = "centos" ]]; then+ if rpm -qa | grep --quiet $1; then+ log "$1 is already installed. skipping."+ else+ yum install $@ -y+ fi+ fi+}++function detect_fpm_output() {+ if [[ $OS = "ubuntu" ]]; then+ export FPM_OUTPUT=deb+ elif [[ $OS = "centos" ]]; then+ export FPM_OUTPUT=rpm+ fi+}+detect_fpm_output++function gem_install() {+ if gem list | grep --quiet $1; then+ log "$1 is already installed. skipping."+ else+ gem install $@+ fi+}++function main() {+ if [[ $# -ne 1 ]]; then+ fatal "Usage: $0 <rocksdb_version>"+ else+ log "using rocksdb version: $1"+ fi++ if [[ -d /vagrant ]]; then+ if [[ $OS = "ubuntu" ]]; then+ package g++-4.8+ export CXX=g++-4.8++ # the deb would depend on libgflags2, but the static lib is the only thing+ # installed by make install+ package libgflags-dev++ package ruby-all-dev+ elif [[ $OS = "centos" ]]; then+ pushd /etc/yum.repos.d+ if [[ ! -f /etc/yum.repos.d/devtools-1.1.repo ]]; then+ wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo+ fi+ package devtoolset-1.1-gcc --enablerepo=testing-1.1-devtools-6+ package devtoolset-1.1-gcc-c++ --enablerepo=testing-1.1-devtools-6+ export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc+ export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp+ export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c+++ export PATH=$PATH:/opt/centos/devtoolset-1.1/root/usr/bin+ popd+ if ! rpm -qa | grep --quiet gflags; then+ rpm -i https://github.com/schuhschuh/gflags/releases/download/v2.1.0/gflags-devel-2.1.0-1.amd64.rpm+ fi++ package ruby+ package ruby-devel+ package rubygems+ package rpm-build+ fi+ fi+ gem_install fpm++ make static_lib+ make install INSTALL_PATH=package++ cd package++ LIB_DIR=lib+ if [[ -z "$ARCH" ]]; then+ ARCH=$(getconf LONG_BIT)+ fi+ if [[ ("$FPM_OUTPUT" = "rpm") && ($ARCH -eq 64) ]]; then+ mv lib lib64+ LIB_DIR=lib64+ fi++ fpm \+ -s dir \+ -t $FPM_OUTPUT \+ -n rocksdb \+ -v $1 \+ --prefix /usr \+ --url http://rocksdb.org/ \+ -m rocksdb@fb.com \+ --license BSD \+ --vendor Facebook \+ --description "RocksDB is an embeddable persistent key-value store for fast storage." \+ include $LIB_DIR+}++main $@
rocksdb-5.8/build_tools/regression_build_test.sh view
@@ -1,413 +1,413 @@-#!/usr/bin/env bash - -set -e - -NUM=10000000 - -if [ $# -eq 1 ];then - DATA_DIR=$1 -elif [ $# -eq 2 ];then - DATA_DIR=$1 - STAT_FILE=$2 -fi - -# On the production build servers, set data and stat -# files/directories not in /tmp or else the tempdir cleaning -# scripts will make you very unhappy. -DATA_DIR=${DATA_DIR:-$(mktemp -t -d rocksdb_XXXX)} -STAT_FILE=${STAT_FILE:-$(mktemp -t -u rocksdb_test_stats_XXXX)} - -function cleanup { - rm -rf $DATA_DIR - rm -f $STAT_FILE.fillseq - rm -f $STAT_FILE.readrandom - rm -f $STAT_FILE.overwrite - rm -f $STAT_FILE.memtablefillreadrandom -} - -trap cleanup EXIT - -if [ -z $GIT_BRANCH ]; then - git_br=`git rev-parse --abbrev-ref HEAD` -else - git_br=$(basename $GIT_BRANCH) -fi - -if [ $git_br == "master" ]; then - git_br="" -else - git_br="."$git_br -fi - -make release - -# measure fillseq + fill up the DB for overwrite benchmark -./db_bench \ - --benchmarks=fillseq \ - --db=$DATA_DIR \ - --use_existing_db=0 \ - --bloom_bits=10 \ - --num=$NUM \ - --writes=$NUM \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 > ${STAT_FILE}.fillseq - -# measure overwrite performance -./db_bench \ - --benchmarks=overwrite \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$NUM \ - --writes=$((NUM / 10)) \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=8 > ${STAT_FILE}.overwrite - -# fill up the db for readrandom benchmark (1GB total size) -./db_bench \ - --benchmarks=fillseq \ - --db=$DATA_DIR \ - --use_existing_db=0 \ - --bloom_bits=10 \ - --num=$NUM \ - --writes=$NUM \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=1 > /dev/null - -# measure readrandom with 6GB block cache -./db_bench \ - --benchmarks=readrandom \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$NUM \ - --reads=$((NUM / 5)) \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=16 > ${STAT_FILE}.readrandom - -# measure readrandom with 6GB block cache and tailing iterator -./db_bench \ - --benchmarks=readrandom \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$NUM \ - --reads=$((NUM / 5)) \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --use_tailing_iterator=1 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=16 > ${STAT_FILE}.readrandomtailing - -# measure readrandom with 100MB block cache -./db_bench \ - --benchmarks=readrandom \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$NUM \ - --reads=$((NUM / 5)) \ - --cache_size=104857600 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=16 > ${STAT_FILE}.readrandomsmallblockcache - -# measure readrandom with 8k data in memtable -./db_bench \ - --benchmarks=overwrite,readrandom \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$NUM \ - --reads=$((NUM / 5)) \ - --writes=512 \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --write_buffer_size=1000000000 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=16 > ${STAT_FILE}.readrandom_mem_sst - - -# fill up the db for readrandom benchmark with filluniquerandom (1GB total size) -./db_bench \ - --benchmarks=filluniquerandom \ - --db=$DATA_DIR \ - --use_existing_db=0 \ - --bloom_bits=10 \ - --num=$((NUM / 4)) \ - --writes=$((NUM / 4)) \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=1 > /dev/null - -# dummy test just to compact the data -./db_bench \ - --benchmarks=readrandom \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$((NUM / 1000)) \ - --reads=$((NUM / 1000)) \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=16 > /dev/null - -# measure readrandom after load with filluniquerandom with 6GB block cache -./db_bench \ - --benchmarks=readrandom \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$((NUM / 4)) \ - --reads=$((NUM / 4)) \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --disable_auto_compactions=1 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=16 > ${STAT_FILE}.readrandom_filluniquerandom - -# measure readwhilewriting after load with filluniquerandom with 6GB block cache -./db_bench \ - --benchmarks=readwhilewriting \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --bloom_bits=10 \ - --num=$((NUM / 4)) \ - --reads=$((NUM / 4)) \ - --benchmark_write_rate_limit=$(( 110 * 1024 )) \ - --write_buffer_size=100000000 \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=16 > ${STAT_FILE}.readwhilewriting - -# measure memtable performance -- none of the data gets flushed to disk -./db_bench \ - --benchmarks=fillrandom,readrandom, \ - --db=$DATA_DIR \ - --use_existing_db=0 \ - --num=$((NUM / 10)) \ - --reads=$NUM \ - --cache_size=6442450944 \ - --cache_numshardbits=6 \ - --table_cache_numshardbits=4 \ - --write_buffer_size=1000000000 \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --value_size=10 \ - --threads=16 > ${STAT_FILE}.memtablefillreadrandom - -common_in_mem_args="--db=/dev/shm/rocksdb \ - --num_levels=6 \ - --key_size=20 \ - --prefix_size=12 \ - --keys_per_prefix=10 \ - --value_size=100 \ - --compression_type=none \ - --compression_ratio=1 \ - --hard_rate_limit=2 \ - --write_buffer_size=134217728 \ - --max_write_buffer_number=4 \ - --level0_file_num_compaction_trigger=8 \ - --level0_slowdown_writes_trigger=16 \ - --level0_stop_writes_trigger=24 \ - --target_file_size_base=134217728 \ - --max_bytes_for_level_base=1073741824 \ - --disable_wal=0 \ - --wal_dir=/dev/shm/rocksdb \ - --sync=0 \ - --verify_checksum=1 \ - --delete_obsolete_files_period_micros=314572800 \ - --max_grandparent_overlap_factor=10 \ - --use_plain_table=1 \ - --open_files=-1 \ - --mmap_read=1 \ - --mmap_write=0 \ - --memtablerep=prefix_hash \ - --bloom_bits=10 \ - --bloom_locality=1 \ - --perf_level=0" - -# prepare a in-memory DB with 50M keys, total DB size is ~6G -./db_bench \ - $common_in_mem_args \ - --statistics=0 \ - --max_background_compactions=16 \ - --max_background_flushes=16 \ - --benchmarks=filluniquerandom \ - --use_existing_db=0 \ - --num=52428800 \ - --threads=1 > /dev/null - -# Readwhilewriting -./db_bench \ - $common_in_mem_args \ - --statistics=1 \ - --max_background_compactions=4 \ - --max_background_flushes=0 \ - --benchmarks=readwhilewriting\ - --use_existing_db=1 \ - --duration=600 \ - --threads=32 \ - --benchmark_write_rate_limit=9502720 > ${STAT_FILE}.readwhilewriting_in_ram - -# Seekrandomwhilewriting -./db_bench \ - $common_in_mem_args \ - --statistics=1 \ - --max_background_compactions=4 \ - --max_background_flushes=0 \ - --benchmarks=seekrandomwhilewriting \ - --use_existing_db=1 \ - --use_tailing_iterator=1 \ - --duration=600 \ - --threads=32 \ - --benchmark_write_rate_limit=9502720 > ${STAT_FILE}.seekwhilewriting_in_ram - -# measure fillseq with bunch of column families -./db_bench \ - --benchmarks=fillseq \ - --num_column_families=500 \ - --write_buffer_size=1048576 \ - --db=$DATA_DIR \ - --use_existing_db=0 \ - --num=$NUM \ - --writes=$NUM \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 > ${STAT_FILE}.fillseq_lots_column_families - -# measure overwrite performance with bunch of column families -./db_bench \ - --benchmarks=overwrite \ - --num_column_families=500 \ - --write_buffer_size=1048576 \ - --db=$DATA_DIR \ - --use_existing_db=1 \ - --num=$NUM \ - --writes=$((NUM / 10)) \ - --open_files=55000 \ - --statistics=1 \ - --histogram=1 \ - --disable_wal=1 \ - --sync=0 \ - --threads=8 > ${STAT_FILE}.overwrite_lots_column_families - -# send data to ods -function send_to_ods { - key="$1" - value="$2" - - if [ -z $JENKINS_HOME ]; then - # running on devbox, just print out the values - echo $1 $2 - return - fi - - if [ -z "$value" ];then - echo >&2 "ERROR: Key $key doesn't have a value." - return - fi - curl -s "https://www.intern.facebook.com/intern/agent/ods_set.php?entity=rocksdb_build$git_br&key=$key&value=$value" \ - --connect-timeout 60 -} - -function send_benchmark_to_ods { - bench="$1" - bench_key="$2" - file="$3" - - QPS=$(grep $bench $file | awk '{print $5}') - P50_MICROS=$(grep $bench $file -A 6 | grep "Percentiles" | awk '{print $3}' ) - P75_MICROS=$(grep $bench $file -A 6 | grep "Percentiles" | awk '{print $5}' ) - P99_MICROS=$(grep $bench $file -A 6 | grep "Percentiles" | awk '{print $7}' ) - - send_to_ods rocksdb.build.$bench_key.qps $QPS - send_to_ods rocksdb.build.$bench_key.p50_micros $P50_MICROS - send_to_ods rocksdb.build.$bench_key.p75_micros $P75_MICROS - send_to_ods rocksdb.build.$bench_key.p99_micros $P99_MICROS -} - -send_benchmark_to_ods overwrite overwrite $STAT_FILE.overwrite -send_benchmark_to_ods fillseq fillseq $STAT_FILE.fillseq -send_benchmark_to_ods readrandom readrandom $STAT_FILE.readrandom -send_benchmark_to_ods readrandom readrandom_tailing $STAT_FILE.readrandomtailing -send_benchmark_to_ods readrandom readrandom_smallblockcache $STAT_FILE.readrandomsmallblockcache -send_benchmark_to_ods readrandom readrandom_memtable_sst $STAT_FILE.readrandom_mem_sst -send_benchmark_to_ods readrandom readrandom_fillunique_random $STAT_FILE.readrandom_filluniquerandom -send_benchmark_to_ods fillrandom memtablefillrandom $STAT_FILE.memtablefillreadrandom -send_benchmark_to_ods readrandom memtablereadrandom $STAT_FILE.memtablefillreadrandom -send_benchmark_to_ods readwhilewriting readwhilewriting $STAT_FILE.readwhilewriting -send_benchmark_to_ods readwhilewriting readwhilewriting_in_ram ${STAT_FILE}.readwhilewriting_in_ram -send_benchmark_to_ods seekrandomwhilewriting seekwhilewriting_in_ram ${STAT_FILE}.seekwhilewriting_in_ram -send_benchmark_to_ods fillseq fillseq_lots_column_families ${STAT_FILE}.fillseq_lots_column_families -send_benchmark_to_ods overwrite overwrite_lots_column_families ${STAT_FILE}.overwrite_lots_column_families +#!/usr/bin/env bash++set -e++NUM=10000000++if [ $# -eq 1 ];then+ DATA_DIR=$1+elif [ $# -eq 2 ];then+ DATA_DIR=$1+ STAT_FILE=$2+fi++# On the production build servers, set data and stat+# files/directories not in /tmp or else the tempdir cleaning+# scripts will make you very unhappy.+DATA_DIR=${DATA_DIR:-$(mktemp -t -d rocksdb_XXXX)}+STAT_FILE=${STAT_FILE:-$(mktemp -t -u rocksdb_test_stats_XXXX)}++function cleanup {+ rm -rf $DATA_DIR+ rm -f $STAT_FILE.fillseq+ rm -f $STAT_FILE.readrandom+ rm -f $STAT_FILE.overwrite+ rm -f $STAT_FILE.memtablefillreadrandom+}++trap cleanup EXIT++if [ -z $GIT_BRANCH ]; then+ git_br=`git rev-parse --abbrev-ref HEAD`+else+ git_br=$(basename $GIT_BRANCH)+fi++if [ $git_br == "master" ]; then+ git_br=""+else+ git_br="."$git_br+fi++make release++# measure fillseq + fill up the DB for overwrite benchmark+./db_bench \+ --benchmarks=fillseq \+ --db=$DATA_DIR \+ --use_existing_db=0 \+ --bloom_bits=10 \+ --num=$NUM \+ --writes=$NUM \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 > ${STAT_FILE}.fillseq++# measure overwrite performance+./db_bench \+ --benchmarks=overwrite \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$NUM \+ --writes=$((NUM / 10)) \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=8 > ${STAT_FILE}.overwrite++# fill up the db for readrandom benchmark (1GB total size)+./db_bench \+ --benchmarks=fillseq \+ --db=$DATA_DIR \+ --use_existing_db=0 \+ --bloom_bits=10 \+ --num=$NUM \+ --writes=$NUM \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=1 > /dev/null++# measure readrandom with 6GB block cache+./db_bench \+ --benchmarks=readrandom \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$NUM \+ --reads=$((NUM / 5)) \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=16 > ${STAT_FILE}.readrandom++# measure readrandom with 6GB block cache and tailing iterator+./db_bench \+ --benchmarks=readrandom \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$NUM \+ --reads=$((NUM / 5)) \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --use_tailing_iterator=1 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=16 > ${STAT_FILE}.readrandomtailing++# measure readrandom with 100MB block cache+./db_bench \+ --benchmarks=readrandom \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$NUM \+ --reads=$((NUM / 5)) \+ --cache_size=104857600 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=16 > ${STAT_FILE}.readrandomsmallblockcache++# measure readrandom with 8k data in memtable+./db_bench \+ --benchmarks=overwrite,readrandom \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$NUM \+ --reads=$((NUM / 5)) \+ --writes=512 \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --write_buffer_size=1000000000 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=16 > ${STAT_FILE}.readrandom_mem_sst+++# fill up the db for readrandom benchmark with filluniquerandom (1GB total size)+./db_bench \+ --benchmarks=filluniquerandom \+ --db=$DATA_DIR \+ --use_existing_db=0 \+ --bloom_bits=10 \+ --num=$((NUM / 4)) \+ --writes=$((NUM / 4)) \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=1 > /dev/null++# dummy test just to compact the data+./db_bench \+ --benchmarks=readrandom \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$((NUM / 1000)) \+ --reads=$((NUM / 1000)) \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=16 > /dev/null++# measure readrandom after load with filluniquerandom with 6GB block cache+./db_bench \+ --benchmarks=readrandom \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$((NUM / 4)) \+ --reads=$((NUM / 4)) \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --disable_auto_compactions=1 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=16 > ${STAT_FILE}.readrandom_filluniquerandom++# measure readwhilewriting after load with filluniquerandom with 6GB block cache+./db_bench \+ --benchmarks=readwhilewriting \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --bloom_bits=10 \+ --num=$((NUM / 4)) \+ --reads=$((NUM / 4)) \+ --benchmark_write_rate_limit=$(( 110 * 1024 )) \+ --write_buffer_size=100000000 \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=16 > ${STAT_FILE}.readwhilewriting++# measure memtable performance -- none of the data gets flushed to disk+./db_bench \+ --benchmarks=fillrandom,readrandom, \+ --db=$DATA_DIR \+ --use_existing_db=0 \+ --num=$((NUM / 10)) \+ --reads=$NUM \+ --cache_size=6442450944 \+ --cache_numshardbits=6 \+ --table_cache_numshardbits=4 \+ --write_buffer_size=1000000000 \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --value_size=10 \+ --threads=16 > ${STAT_FILE}.memtablefillreadrandom++common_in_mem_args="--db=/dev/shm/rocksdb \+ --num_levels=6 \+ --key_size=20 \+ --prefix_size=12 \+ --keys_per_prefix=10 \+ --value_size=100 \+ --compression_type=none \+ --compression_ratio=1 \+ --hard_rate_limit=2 \+ --write_buffer_size=134217728 \+ --max_write_buffer_number=4 \+ --level0_file_num_compaction_trigger=8 \+ --level0_slowdown_writes_trigger=16 \+ --level0_stop_writes_trigger=24 \+ --target_file_size_base=134217728 \+ --max_bytes_for_level_base=1073741824 \+ --disable_wal=0 \+ --wal_dir=/dev/shm/rocksdb \+ --sync=0 \+ --verify_checksum=1 \+ --delete_obsolete_files_period_micros=314572800 \+ --max_grandparent_overlap_factor=10 \+ --use_plain_table=1 \+ --open_files=-1 \+ --mmap_read=1 \+ --mmap_write=0 \+ --memtablerep=prefix_hash \+ --bloom_bits=10 \+ --bloom_locality=1 \+ --perf_level=0"++# prepare a in-memory DB with 50M keys, total DB size is ~6G+./db_bench \+ $common_in_mem_args \+ --statistics=0 \+ --max_background_compactions=16 \+ --max_background_flushes=16 \+ --benchmarks=filluniquerandom \+ --use_existing_db=0 \+ --num=52428800 \+ --threads=1 > /dev/null++# Readwhilewriting+./db_bench \+ $common_in_mem_args \+ --statistics=1 \+ --max_background_compactions=4 \+ --max_background_flushes=0 \+ --benchmarks=readwhilewriting\+ --use_existing_db=1 \+ --duration=600 \+ --threads=32 \+ --benchmark_write_rate_limit=9502720 > ${STAT_FILE}.readwhilewriting_in_ram++# Seekrandomwhilewriting+./db_bench \+ $common_in_mem_args \+ --statistics=1 \+ --max_background_compactions=4 \+ --max_background_flushes=0 \+ --benchmarks=seekrandomwhilewriting \+ --use_existing_db=1 \+ --use_tailing_iterator=1 \+ --duration=600 \+ --threads=32 \+ --benchmark_write_rate_limit=9502720 > ${STAT_FILE}.seekwhilewriting_in_ram++# measure fillseq with bunch of column families+./db_bench \+ --benchmarks=fillseq \+ --num_column_families=500 \+ --write_buffer_size=1048576 \+ --db=$DATA_DIR \+ --use_existing_db=0 \+ --num=$NUM \+ --writes=$NUM \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 > ${STAT_FILE}.fillseq_lots_column_families++# measure overwrite performance with bunch of column families+./db_bench \+ --benchmarks=overwrite \+ --num_column_families=500 \+ --write_buffer_size=1048576 \+ --db=$DATA_DIR \+ --use_existing_db=1 \+ --num=$NUM \+ --writes=$((NUM / 10)) \+ --open_files=55000 \+ --statistics=1 \+ --histogram=1 \+ --disable_wal=1 \+ --sync=0 \+ --threads=8 > ${STAT_FILE}.overwrite_lots_column_families++# send data to ods+function send_to_ods {+ key="$1"+ value="$2"++ if [ -z $JENKINS_HOME ]; then+ # running on devbox, just print out the values+ echo $1 $2+ return+ fi++ if [ -z "$value" ];then+ echo >&2 "ERROR: Key $key doesn't have a value."+ return+ fi+ curl -s "https://www.intern.facebook.com/intern/agent/ods_set.php?entity=rocksdb_build$git_br&key=$key&value=$value" \+ --connect-timeout 60+}++function send_benchmark_to_ods {+ bench="$1"+ bench_key="$2"+ file="$3"++ QPS=$(grep $bench $file | awk '{print $5}')+ P50_MICROS=$(grep $bench $file -A 6 | grep "Percentiles" | awk '{print $3}' )+ P75_MICROS=$(grep $bench $file -A 6 | grep "Percentiles" | awk '{print $5}' )+ P99_MICROS=$(grep $bench $file -A 6 | grep "Percentiles" | awk '{print $7}' )++ send_to_ods rocksdb.build.$bench_key.qps $QPS+ send_to_ods rocksdb.build.$bench_key.p50_micros $P50_MICROS+ send_to_ods rocksdb.build.$bench_key.p75_micros $P75_MICROS+ send_to_ods rocksdb.build.$bench_key.p99_micros $P99_MICROS+}++send_benchmark_to_ods overwrite overwrite $STAT_FILE.overwrite+send_benchmark_to_ods fillseq fillseq $STAT_FILE.fillseq+send_benchmark_to_ods readrandom readrandom $STAT_FILE.readrandom+send_benchmark_to_ods readrandom readrandom_tailing $STAT_FILE.readrandomtailing+send_benchmark_to_ods readrandom readrandom_smallblockcache $STAT_FILE.readrandomsmallblockcache+send_benchmark_to_ods readrandom readrandom_memtable_sst $STAT_FILE.readrandom_mem_sst+send_benchmark_to_ods readrandom readrandom_fillunique_random $STAT_FILE.readrandom_filluniquerandom+send_benchmark_to_ods fillrandom memtablefillrandom $STAT_FILE.memtablefillreadrandom+send_benchmark_to_ods readrandom memtablereadrandom $STAT_FILE.memtablefillreadrandom+send_benchmark_to_ods readwhilewriting readwhilewriting $STAT_FILE.readwhilewriting+send_benchmark_to_ods readwhilewriting readwhilewriting_in_ram ${STAT_FILE}.readwhilewriting_in_ram+send_benchmark_to_ods seekrandomwhilewriting seekwhilewriting_in_ram ${STAT_FILE}.seekwhilewriting_in_ram+send_benchmark_to_ods fillseq fillseq_lots_column_families ${STAT_FILE}.fillseq_lots_column_families+send_benchmark_to_ods overwrite overwrite_lots_column_families ${STAT_FILE}.overwrite_lots_column_families
rocksdb-5.8/build_tools/update_dependencies.sh view
@@ -1,131 +1,131 @@-#!/bin/sh -# -# Update dependencies.sh file with the latest avaliable versions - -BASEDIR=$(dirname $0) -OUTPUT="" - -function log_variable() -{ - echo "$1=${!1}" >> "$OUTPUT" -} - - -TP2_LATEST="/mnt/vol/engshare/fbcode/third-party2" -## $1 => lib name -## $2 => lib version (if not provided, will try to pick latest) -## $3 => platform (if not provided, will try to pick latest gcc) -## -## get_lib_base will set a variable named ${LIB_NAME}_BASE to the lib location -function get_lib_base() -{ - local lib_name=$1 - local lib_version=$2 - local lib_platform=$3 - - local result="$TP2_LATEST/$lib_name/" - - # Lib Version - if [ -z "$lib_version" ] || [ "$lib_version" = "LATEST" ]; then - # version is not provided, use latest - result=`ls -dr1v $result/*/ | head -n1` - else - result="$result/$lib_version/" - fi - - # Lib Platform - if [ -z "$lib_platform" ]; then - # platform is not provided, use latest gcc - result=`ls -dr1v $result/gcc-*[^fb]/ | head -n1` - else - result="$result/$lib_platform/" - fi - - result=`ls -1d $result/*/ | head -n1` - - # lib_name => LIB_NAME_BASE - local __res_var=${lib_name^^}"_BASE" - __res_var=`echo $__res_var | tr - _` - # LIB_NAME_BASE=$result - eval $__res_var=`readlink -f $result` - - log_variable $__res_var -} - -########################################################### -# 5.x dependencies # -########################################################### - -OUTPUT="$BASEDIR/dependencies.sh" - -rm -f "$OUTPUT" -touch "$OUTPUT" - -echo "Writing dependencies to $OUTPUT" - -# Compilers locations -GCC_BASE=`readlink -f $TP2_LATEST/gcc/5.x/centos6-native/*/` -CLANG_BASE=`readlink -f $TP2_LATEST/llvm-fb/stable/centos6-native/*/` - -log_variable GCC_BASE -log_variable CLANG_BASE - -# Libraries locations -get_lib_base libgcc 5.x -get_lib_base glibc 2.23 -get_lib_base snappy LATEST gcc-5-glibc-2.23 -get_lib_base zlib LATEST -get_lib_base bzip2 LATEST -get_lib_base lz4 LATEST -get_lib_base zstd LATEST -get_lib_base gflags LATEST -get_lib_base jemalloc LATEST -get_lib_base numa LATEST -get_lib_base libunwind LATEST -get_lib_base tbb 4.0_update2 gcc-5-glibc-2.23 - -get_lib_base kernel-headers LATEST -get_lib_base binutils LATEST centos6-native -get_lib_base valgrind 3.10.0 gcc-5-glibc-2.23 -get_lib_base lua 5.2.3 gcc-5-glibc-2.23 - -git diff $OUTPUT - -########################################################### -# 4.8.1 dependencies # -########################################################### - -OUTPUT="$BASEDIR/dependencies_4.8.1.sh" - -rm -f "$OUTPUT" -touch "$OUTPUT" - -echo "Writing 4.8.1 dependencies to $OUTPUT" - -# Compilers locations -GCC_BASE=`readlink -f $TP2_LATEST/gcc/4.8.1/centos6-native/*/` -CLANG_BASE=`readlink -f $TP2_LATEST/llvm-fb/stable/centos6-native/*/` - -log_variable GCC_BASE -log_variable CLANG_BASE - -# Libraries locations -get_lib_base libgcc 4.8.1 gcc-4.8.1-glibc-2.17 -get_lib_base glibc 2.17 gcc-4.8.1-glibc-2.17 -get_lib_base snappy LATEST gcc-4.8.1-glibc-2.17 -get_lib_base zlib LATEST gcc-4.8.1-glibc-2.17 -get_lib_base bzip2 LATEST gcc-4.8.1-glibc-2.17 -get_lib_base lz4 LATEST gcc-4.8.1-glibc-2.17 -get_lib_base zstd LATEST gcc-4.8.1-glibc-2.17 -get_lib_base gflags LATEST gcc-4.8.1-glibc-2.17 -get_lib_base jemalloc LATEST gcc-4.8.1-glibc-2.17 -get_lib_base numa LATEST gcc-4.8.1-glibc-2.17 -get_lib_base libunwind LATEST gcc-4.8.1-glibc-2.17 -get_lib_base tbb 4.0_update2 gcc-4.8.1-glibc-2.17 - -get_lib_base kernel-headers LATEST gcc-4.8.1-glibc-2.17 -get_lib_base binutils LATEST centos6-native -get_lib_base valgrind 3.8.1 gcc-4.8.1-glibc-2.17 -get_lib_base lua 5.2.3 centos6-native - -git diff $OUTPUT +#!/bin/sh+#+# Update dependencies.sh file with the latest avaliable versions++BASEDIR=$(dirname $0)+OUTPUT=""++function log_variable()+{+ echo "$1=${!1}" >> "$OUTPUT"+}+++TP2_LATEST="/mnt/vol/engshare/fbcode/third-party2"+## $1 => lib name+## $2 => lib version (if not provided, will try to pick latest)+## $3 => platform (if not provided, will try to pick latest gcc)+##+## get_lib_base will set a variable named ${LIB_NAME}_BASE to the lib location+function get_lib_base()+{+ local lib_name=$1+ local lib_version=$2+ local lib_platform=$3++ local result="$TP2_LATEST/$lib_name/"+ + # Lib Version+ if [ -z "$lib_version" ] || [ "$lib_version" = "LATEST" ]; then+ # version is not provided, use latest+ result=`ls -dr1v $result/*/ | head -n1`+ else+ result="$result/$lib_version/"+ fi+ + # Lib Platform+ if [ -z "$lib_platform" ]; then+ # platform is not provided, use latest gcc+ result=`ls -dr1v $result/gcc-*[^fb]/ | head -n1`+ else+ result="$result/$lib_platform/"+ fi+ + result=`ls -1d $result/*/ | head -n1`+ + # lib_name => LIB_NAME_BASE+ local __res_var=${lib_name^^}"_BASE"+ __res_var=`echo $__res_var | tr - _`+ # LIB_NAME_BASE=$result+ eval $__res_var=`readlink -f $result`+ + log_variable $__res_var+}++###########################################################+# 5.x dependencies #+###########################################################++OUTPUT="$BASEDIR/dependencies.sh"++rm -f "$OUTPUT"+touch "$OUTPUT"++echo "Writing dependencies to $OUTPUT"++# Compilers locations+GCC_BASE=`readlink -f $TP2_LATEST/gcc/5.x/centos6-native/*/`+CLANG_BASE=`readlink -f $TP2_LATEST/llvm-fb/stable/centos6-native/*/`++log_variable GCC_BASE+log_variable CLANG_BASE++# Libraries locations+get_lib_base libgcc 5.x+get_lib_base glibc 2.23+get_lib_base snappy LATEST gcc-5-glibc-2.23+get_lib_base zlib LATEST+get_lib_base bzip2 LATEST+get_lib_base lz4 LATEST+get_lib_base zstd LATEST+get_lib_base gflags LATEST+get_lib_base jemalloc LATEST+get_lib_base numa LATEST+get_lib_base libunwind LATEST+get_lib_base tbb 4.0_update2 gcc-5-glibc-2.23++get_lib_base kernel-headers LATEST +get_lib_base binutils LATEST centos6-native +get_lib_base valgrind 3.10.0 gcc-5-glibc-2.23+get_lib_base lua 5.2.3 gcc-5-glibc-2.23++git diff $OUTPUT++###########################################################+# 4.8.1 dependencies #+###########################################################++OUTPUT="$BASEDIR/dependencies_4.8.1.sh"++rm -f "$OUTPUT"+touch "$OUTPUT"++echo "Writing 4.8.1 dependencies to $OUTPUT"++# Compilers locations+GCC_BASE=`readlink -f $TP2_LATEST/gcc/4.8.1/centos6-native/*/`+CLANG_BASE=`readlink -f $TP2_LATEST/llvm-fb/stable/centos6-native/*/`++log_variable GCC_BASE+log_variable CLANG_BASE++# Libraries locations+get_lib_base libgcc 4.8.1 gcc-4.8.1-glibc-2.17+get_lib_base glibc 2.17 gcc-4.8.1-glibc-2.17 +get_lib_base snappy LATEST gcc-4.8.1-glibc-2.17+get_lib_base zlib LATEST gcc-4.8.1-glibc-2.17+get_lib_base bzip2 LATEST gcc-4.8.1-glibc-2.17+get_lib_base lz4 LATEST gcc-4.8.1-glibc-2.17+get_lib_base zstd LATEST gcc-4.8.1-glibc-2.17+get_lib_base gflags LATEST gcc-4.8.1-glibc-2.17+get_lib_base jemalloc LATEST gcc-4.8.1-glibc-2.17+get_lib_base numa LATEST gcc-4.8.1-glibc-2.17+get_lib_base libunwind LATEST gcc-4.8.1-glibc-2.17+get_lib_base tbb 4.0_update2 gcc-4.8.1-glibc-2.17++get_lib_base kernel-headers LATEST gcc-4.8.1-glibc-2.17 +get_lib_base binutils LATEST centos6-native +get_lib_base valgrind 3.8.1 gcc-4.8.1-glibc-2.17+get_lib_base lua 5.2.3 centos6-native++git diff $OUTPUT
rocksdb-5.8/build_tools/version.sh view
@@ -1,22 +1,22 @@-#!/bin/sh -if [ "$#" = "0" ]; then - echo "Usage: $0 major|minor|patch|full" - exit 1 -fi - -if [ "$1" = "major" ]; then - cat include/rocksdb/version.h | grep MAJOR | head -n1 | awk '{print $3}' -fi -if [ "$1" = "minor" ]; then - cat include/rocksdb/version.h | grep MINOR | head -n1 | awk '{print $3}' -fi -if [ "$1" = "patch" ]; then - cat include/rocksdb/version.h | grep PATCH | head -n1 | awk '{print $3}' -fi -if [ "$1" = "full" ]; then - awk '/#define ROCKSDB/ { env[$2] = $3 } - END { printf "%s.%s.%s\n", env["ROCKSDB_MAJOR"], - env["ROCKSDB_MINOR"], - env["ROCKSDB_PATCH"] }' \ - include/rocksdb/version.h -fi +#!/bin/sh+if [ "$#" = "0" ]; then+ echo "Usage: $0 major|minor|patch|full"+ exit 1+fi++if [ "$1" = "major" ]; then+ cat include/rocksdb/version.h | grep MAJOR | head -n1 | awk '{print $3}'+fi+if [ "$1" = "minor" ]; then+ cat include/rocksdb/version.h | grep MINOR | head -n1 | awk '{print $3}'+fi+if [ "$1" = "patch" ]; then+ cat include/rocksdb/version.h | grep PATCH | head -n1 | awk '{print $3}'+fi+if [ "$1" = "full" ]; then+ awk '/#define ROCKSDB/ { env[$2] = $3 }+ END { printf "%s.%s.%s\n", env["ROCKSDB_MAJOR"],+ env["ROCKSDB_MINOR"],+ env["ROCKSDB_PATCH"] }' \+ include/rocksdb/version.h+fi
− rocksdb-5.8/cmake/modules/FindJeMalloc.cmake
@@ -1,21 +0,0 @@-# - Find JeMalloc library-# Find the native JeMalloc includes and library-#-# JEMALLOC_INCLUDE_DIR - where to find jemalloc.h, etc.-# JEMALLOC_LIBRARIES - List of libraries when using jemalloc.-# JEMALLOC_FOUND - True if jemalloc found.--find_path(JEMALLOC_INCLUDE_DIR- NAMES jemalloc/jemalloc.h- HINTS ${JEMALLOC_ROOT_DIR}/include)--find_library(JEMALLOC_LIBRARIES- NAMES jemalloc- HINTS ${JEMALLOC_ROOT_DIR}/lib)--include(FindPackageHandleStandardArgs)-find_package_handle_standard_args(jemalloc DEFAULT_MSG JEMALLOC_LIBRARIES JEMALLOC_INCLUDE_DIR)--mark_as_advanced(- JEMALLOC_LIBRARIES- JEMALLOC_INCLUDE_DIR)
− rocksdb-5.8/cmake/modules/Findbzip2.cmake
@@ -1,21 +0,0 @@-# - Find Bzip2-# Find the bzip2 compression library and includes-#-# BZIP2_INCLUDE_DIR - where to find bzlib.h, etc.-# BZIP2_LIBRARIES - List of libraries when using bzip2.-# BZIP2_FOUND - True if bzip2 found.--find_path(BZIP2_INCLUDE_DIR- NAMES bzlib.h- HINTS ${BZIP2_ROOT_DIR}/include)--find_library(BZIP2_LIBRARIES- NAMES bz2- HINTS ${BZIP2_ROOT_DIR}/lib)--include(FindPackageHandleStandardArgs)-find_package_handle_standard_args(bzip2 DEFAULT_MSG BZIP2_LIBRARIES BZIP2_INCLUDE_DIR)--mark_as_advanced(- BZIP2_LIBRARIES- BZIP2_INCLUDE_DIR)
− rocksdb-5.8/cmake/modules/Findlz4.cmake
@@ -1,21 +0,0 @@-# - Find Lz4-# Find the lz4 compression library and includes-#-# LZ4_INCLUDE_DIR - where to find lz4.h, etc.-# LZ4_LIBRARIES - List of libraries when using lz4.-# LZ4_FOUND - True if lz4 found.--find_path(LZ4_INCLUDE_DIR- NAMES lz4.h- HINTS ${LZ4_ROOT_DIR}/include)--find_library(LZ4_LIBRARIES- NAMES lz4- HINTS ${LZ4_ROOT_DIR}/lib)--include(FindPackageHandleStandardArgs)-find_package_handle_standard_args(lz4 DEFAULT_MSG LZ4_LIBRARIES LZ4_INCLUDE_DIR)--mark_as_advanced(- LZ4_LIBRARIES- LZ4_INCLUDE_DIR)
− rocksdb-5.8/cmake/modules/Findsnappy.cmake
@@ -1,21 +0,0 @@-# - Find Snappy-# Find the snappy compression library and includes-#-# SNAPPY_INCLUDE_DIR - where to find snappy.h, etc.-# SNAPPY_LIBRARIES - List of libraries when using snappy.-# SNAPPY_FOUND - True if snappy found.--find_path(SNAPPY_INCLUDE_DIR- NAMES snappy.h- HINTS ${SNAPPY_ROOT_DIR}/include)--find_library(SNAPPY_LIBRARIES- NAMES snappy- HINTS ${SNAPPY_ROOT_DIR}/lib)--include(FindPackageHandleStandardArgs)-find_package_handle_standard_args(snappy DEFAULT_MSG SNAPPY_LIBRARIES SNAPPY_INCLUDE_DIR)--mark_as_advanced(- SNAPPY_LIBRARIES- SNAPPY_INCLUDE_DIR)
− rocksdb-5.8/cmake/modules/Findzlib.cmake
@@ -1,21 +0,0 @@-# - Find zlib-# Find the zlib compression library and includes-#-# ZLIB_INCLUDE_DIR - where to find zlib.h, etc.-# ZLIB_LIBRARIES - List of libraries when using zlib.-# ZLIB_FOUND - True if zlib found.--find_path(ZLIB_INCLUDE_DIR- NAMES zlib.h- HINTS ${ZLIB_ROOT_DIR}/include)--find_library(ZLIB_LIBRARIES- NAMES z- HINTS ${ZLIB_ROOT_DIR}/lib)--include(FindPackageHandleStandardArgs)-find_package_handle_standard_args(zlib DEFAULT_MSG ZLIB_LIBRARIES ZLIB_INCLUDE_DIR)--mark_as_advanced(- ZLIB_LIBRARIES- ZLIB_INCLUDE_DIR)
− rocksdb-5.8/cmake/modules/Findzstd.cmake
@@ -1,21 +0,0 @@-# - Find zstd-# Find the zstd compression library and includes-#-# ZSTD_INCLUDE_DIR - where to find zstd.h, etc.-# ZSTD_LIBRARIES - List of libraries when using zstd.-# ZSTD_FOUND - True if zstd found.--find_path(ZSTD_INCLUDE_DIR- NAMES zstd.h- HINTS ${ZSTD_ROOT_DIR}/include)--find_library(ZSTD_LIBRARIES- NAMES zstd- HINTS ${ZSTD_ROOT_DIR}/lib)--include(FindPackageHandleStandardArgs)-find_package_handle_standard_args(zstd DEFAULT_MSG ZSTD_LIBRARIES ZSTD_INCLUDE_DIR)--mark_as_advanced(- ZSTD_LIBRARIES- ZSTD_INCLUDE_DIR)
src/Database/RocksDB/DB.hs view
@@ -8,12 +8,12 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Unsafe as BS-import Database.RocksDB.Exceptions import Database.RocksDB.Internals import Database.RocksDB.Options-import Foreign+import Database.RocksDB.Utils+import Foreign hiding (newForeignPtr) import Foreign.C-import GHC.ForeignPtr+import Foreign.Concurrent openDB :: Options -> FilePath -> IO (ForeignPtr Rocksdb) {-# INLINEABLE openDB #-}@@ -22,7 +22,7 @@ withForeignPtr opts_fptr $ \opts_ptr -> withCString path $ \path_ptr -> do db_ptr <- withErrorMessagePtr $ c_rocksdb_open opts_ptr path_ptr- newConcForeignPtr db_ptr $ c_rocksdb_close db_ptr+ newForeignPtr db_ptr $ c_rocksdb_close db_ptr putDB :: ForeignPtr Rocksdb
src/Database/RocksDB/Exceptions.hs view
@@ -2,26 +2,11 @@ module Database.RocksDB.Exceptions ( RocksDBException(..)- , withErrorMessagePtr ) where import Control.Exception.Safe import qualified Data.ByteString as BS-import Foreign-import Foreign.C newtype RocksDBException = RocksDBException { errorMessage :: BS.ByteString } deriving (Show, Exception)--withErrorMessagePtr :: (Ptr (Ptr CChar) -> IO r) -> IO r-{-# INLINEABLE withErrorMessagePtr #-}-withErrorMessagePtr cont =- alloca $ \p -> do- r <- cont p- p' <- peek p- if p' == nullPtr- then pure r- else do- msg <- BS.packCString p'- throw $ RocksDBException msg
src/Database/RocksDB/Internals.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE InterruptibleFFI #-}+ module Database.RocksDB.Internals where import Foreign@@ -95,95 +97,102 @@ data RocksdbCheckpoint -foreign import ccall unsafe "rocksdb_open" c_rocksdb_open ::+foreign import ccall interruptible "rocksdb_open" c_rocksdb_open :: Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO (Ptr Rocksdb) -foreign import ccall unsafe "rocksdb_open_for_read_only"+foreign import ccall interruptible "rocksdb_open_for_read_only" c_rocksdb_open_for_read_only :: Ptr RocksdbOptions -> Ptr CChar -> CUChar -> Ptr (Ptr CChar) -> IO (Ptr Rocksdb) -foreign import ccall unsafe "rocksdb_backup_engine_open"+foreign import ccall interruptible "rocksdb_backup_engine_open" c_rocksdb_backup_engine_open :: Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO (Ptr RocksdbBackupEngine) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_backup_engine_create_new_backup" c_rocksdb_backup_engine_create_new_backup :: Ptr RocksdbBackupEngine -> Ptr Rocksdb -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_backup_engine_purge_old_backups" c_rocksdb_backup_engine_purge_old_backups :: Ptr RocksdbBackupEngine -> Word32 -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_restore_options_create"+foreign import ccall interruptible "rocksdb_restore_options_create" c_rocksdb_restore_options_create :: IO (Ptr RocksdbRestoreOptions) -foreign import ccall unsafe "rocksdb_restore_options_destroy"- c_rocksdb_restore_options_destroy ::- Ptr RocksdbRestoreOptions -> IO ()+foreign import ccall interruptible+ "rocksdb_restore_options_destroy" c_rocksdb_restore_options_destroy+ :: Ptr RocksdbRestoreOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_restore_options_set_keep_log_files" c_rocksdb_restore_options_set_keep_log_files :: Ptr RocksdbRestoreOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_backup_engine_restore_db_from_latest_backup" c_rocksdb_backup_engine_restore_db_from_latest_backup :: Ptr RocksdbBackupEngine -> Ptr CChar -> Ptr CChar -> Ptr RocksdbRestoreOptions -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_backup_engine_get_backup_info"+foreign import ccall interruptible+ "rocksdb_backup_engine_get_backup_info" c_rocksdb_backup_engine_get_backup_info :: Ptr RocksdbBackupEngine -> IO (Ptr RocksdbBackupEngineInfo) -foreign import ccall unsafe "rocksdb_backup_engine_info_count"+foreign import ccall interruptible+ "rocksdb_backup_engine_info_count" c_rocksdb_backup_engine_info_count :: Ptr RocksdbBackupEngineInfo -> IO CInt -foreign import ccall unsafe "rocksdb_backup_engine_info_timestamp"+foreign import ccall interruptible+ "rocksdb_backup_engine_info_timestamp" c_rocksdb_backup_engine_info_timestamp :: Ptr RocksdbBackupEngineInfo -> CInt -> IO Int64 -foreign import ccall unsafe "rocksdb_backup_engine_info_backup_id"+foreign import ccall interruptible+ "rocksdb_backup_engine_info_backup_id" c_rocksdb_backup_engine_info_backup_id :: Ptr RocksdbBackupEngineInfo -> CInt -> IO Word32 -foreign import ccall unsafe "rocksdb_backup_engine_info_size"- c_rocksdb_backup_engine_info_size ::- Ptr RocksdbBackupEngineInfo -> CInt -> IO Word64+foreign import ccall interruptible+ "rocksdb_backup_engine_info_size" c_rocksdb_backup_engine_info_size+ :: Ptr RocksdbBackupEngineInfo -> CInt -> IO Word64 -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_backup_engine_info_number_files" c_rocksdb_backup_engine_info_number_files :: Ptr RocksdbBackupEngineInfo -> CInt -> IO Word32 -foreign import ccall unsafe "rocksdb_backup_engine_info_destroy"+foreign import ccall interruptible+ "rocksdb_backup_engine_info_destroy" c_rocksdb_backup_engine_info_destroy :: Ptr RocksdbBackupEngineInfo -> IO () -foreign import ccall unsafe "rocksdb_backup_engine_close"+foreign import ccall interruptible "rocksdb_backup_engine_close" c_rocksdb_backup_engine_close :: Ptr RocksdbBackupEngine -> IO () -foreign import ccall unsafe "rocksdb_checkpoint_object_create"+foreign import ccall interruptible+ "rocksdb_checkpoint_object_create" c_rocksdb_checkpoint_object_create :: Ptr Rocksdb -> Ptr (Ptr CChar) -> IO (Ptr RocksdbCheckpoint) -foreign import ccall unsafe "rocksdb_checkpoint_create"+foreign import ccall interruptible "rocksdb_checkpoint_create" c_rocksdb_checkpoint_create :: Ptr RocksdbCheckpoint -> Ptr CChar -> Word64 -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_checkpoint_object_destroy"+foreign import ccall interruptible+ "rocksdb_checkpoint_object_destroy" c_rocksdb_checkpoint_object_destroy :: Ptr RocksdbCheckpoint -> IO () -foreign import ccall unsafe "rocksdb_open_column_families"+foreign import ccall interruptible "rocksdb_open_column_families" c_rocksdb_open_column_families :: Ptr RocksdbOptions -> Ptr CChar ->@@ -193,7 +202,7 @@ Ptr (Ptr RocksdbColumnFamilyHandle) -> Ptr (Ptr CChar) -> IO (Ptr Rocksdb) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_open_for_read_only_column_families" c_rocksdb_open_for_read_only_column_families :: Ptr RocksdbOptions ->@@ -204,92 +213,99 @@ Ptr (Ptr RocksdbColumnFamilyHandle) -> CUChar -> Ptr (Ptr CChar) -> IO (Ptr Rocksdb) -foreign import ccall unsafe "rocksdb_list_column_families"+foreign import ccall interruptible "rocksdb_list_column_families" c_rocksdb_list_column_families :: Ptr RocksdbOptions -> Ptr CChar -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr (Ptr CChar)) -foreign import ccall unsafe "rocksdb_list_column_families_destroy"+foreign import ccall interruptible+ "rocksdb_list_column_families_destroy" c_rocksdb_list_column_families_destroy :: Ptr (Ptr CChar) -> CSize -> IO () -foreign import ccall unsafe "rocksdb_create_column_family"+foreign import ccall interruptible "rocksdb_create_column_family" c_rocksdb_create_column_family :: Ptr Rocksdb -> Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO (Ptr RocksdbColumnFamilyHandle) -foreign import ccall unsafe "rocksdb_drop_column_family"+foreign import ccall interruptible "rocksdb_drop_column_family" c_rocksdb_drop_column_family :: Ptr Rocksdb -> Ptr RocksdbColumnFamilyHandle -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_column_family_handle_destroy"+foreign import ccall interruptible+ "rocksdb_column_family_handle_destroy" c_rocksdb_column_family_handle_destroy :: Ptr RocksdbColumnFamilyHandle -> IO () -foreign import ccall unsafe "rocksdb_close" c_rocksdb_close ::- Ptr Rocksdb -> IO ()+foreign import ccall interruptible "rocksdb_close" c_rocksdb_close+ :: Ptr Rocksdb -> IO () -foreign import ccall unsafe "rocksdb_put" c_rocksdb_put ::+foreign import ccall interruptible "rocksdb_put" c_rocksdb_put :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_put_cf" c_rocksdb_put_cf ::+foreign import ccall interruptible "rocksdb_put_cf"+ c_rocksdb_put_cf :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_delete" c_rocksdb_delete ::+foreign import ccall interruptible "rocksdb_delete"+ c_rocksdb_delete :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_delete_cf" c_rocksdb_delete_cf- ::+foreign import ccall interruptible "rocksdb_delete_cf"+ c_rocksdb_delete_cf :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_merge" c_rocksdb_merge ::+foreign import ccall interruptible "rocksdb_merge" c_rocksdb_merge+ :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_merge_cf" c_rocksdb_merge_cf- ::+foreign import ccall interruptible "rocksdb_merge_cf"+ c_rocksdb_merge_cf :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_write" c_rocksdb_write ::+foreign import ccall interruptible "rocksdb_write" c_rocksdb_write+ :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr RocksdbWritebatch -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_get" c_rocksdb_get ::+foreign import ccall interruptible "rocksdb_get" c_rocksdb_get :: Ptr Rocksdb -> Ptr RocksdbReadoptions -> Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_get_cf" c_rocksdb_get_cf ::+foreign import ccall interruptible "rocksdb_get_cf"+ c_rocksdb_get_cf :: Ptr Rocksdb -> Ptr RocksdbReadoptions -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_multi_get" c_rocksdb_multi_get- ::+foreign import ccall interruptible "rocksdb_multi_get"+ c_rocksdb_multi_get :: Ptr Rocksdb -> Ptr RocksdbReadoptions -> CSize ->@@ -297,7 +313,7 @@ Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_multi_get_cf"+foreign import ccall interruptible "rocksdb_multi_get_cf" c_rocksdb_multi_get_cf :: Ptr Rocksdb -> Ptr RocksdbReadoptions ->@@ -307,52 +323,52 @@ Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_create_iterator"+foreign import ccall interruptible "rocksdb_create_iterator" c_rocksdb_create_iterator :: Ptr Rocksdb -> Ptr RocksdbReadoptions -> IO (Ptr RocksdbIterator) -foreign import ccall unsafe "rocksdb_create_iterator_cf"+foreign import ccall interruptible "rocksdb_create_iterator_cf" c_rocksdb_create_iterator_cf :: Ptr Rocksdb -> Ptr RocksdbReadoptions -> Ptr RocksdbColumnFamilyHandle -> IO (Ptr RocksdbIterator) -foreign import ccall unsafe "rocksdb_create_iterators"+foreign import ccall interruptible "rocksdb_create_iterators" c_rocksdb_create_iterators :: Ptr Rocksdb -> Ptr RocksdbReadoptions -> Ptr (Ptr RocksdbColumnFamilyHandle) -> Ptr (Ptr RocksdbIterator) -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_create_snapshot"+foreign import ccall interruptible "rocksdb_create_snapshot" c_rocksdb_create_snapshot :: Ptr Rocksdb -> IO (Ptr RocksdbSnapshot) -foreign import ccall unsafe "rocksdb_release_snapshot"+foreign import ccall interruptible "rocksdb_release_snapshot" c_rocksdb_release_snapshot :: Ptr Rocksdb -> Ptr RocksdbSnapshot -> IO () -foreign import ccall unsafe "rocksdb_property_value"+foreign import ccall interruptible "rocksdb_property_value" c_rocksdb_property_value :: Ptr Rocksdb -> Ptr CChar -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_property_int"+foreign import ccall interruptible "rocksdb_property_int" c_rocksdb_property_int :: Ptr Rocksdb -> Ptr CChar -> Ptr Word64 -> IO CInt -foreign import ccall unsafe "rocksdb_property_value_cf"+foreign import ccall interruptible "rocksdb_property_value_cf" c_rocksdb_property_value_cf :: Ptr Rocksdb -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_approximate_sizes"+foreign import ccall interruptible "rocksdb_approximate_sizes" c_rocksdb_approximate_sizes :: Ptr Rocksdb -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> Ptr Word64 -> IO () -foreign import ccall unsafe "rocksdb_approximate_sizes_cf"+foreign import ccall interruptible "rocksdb_approximate_sizes_cf" c_rocksdb_approximate_sizes_cf :: Ptr Rocksdb -> Ptr RocksdbColumnFamilyHandle ->@@ -360,124 +376,128 @@ Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> Ptr Word64 -> IO () -foreign import ccall unsafe "rocksdb_compact_range"+foreign import ccall interruptible "rocksdb_compact_range" c_rocksdb_compact_range :: Ptr Rocksdb -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_compact_range_cf"+foreign import ccall interruptible "rocksdb_compact_range_cf" c_rocksdb_compact_range_cf :: Ptr Rocksdb -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_compact_range_opt"+foreign import ccall interruptible "rocksdb_compact_range_opt" c_rocksdb_compact_range_opt :: Ptr Rocksdb -> Ptr RocksdbCompactoptions -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_compact_range_cf_opt"+foreign import ccall interruptible "rocksdb_compact_range_cf_opt" c_rocksdb_compact_range_cf_opt :: Ptr Rocksdb -> Ptr RocksdbColumnFamilyHandle -> Ptr RocksdbCompactoptions -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_delete_file"+foreign import ccall interruptible "rocksdb_delete_file" c_rocksdb_delete_file :: Ptr Rocksdb -> Ptr CChar -> IO () -foreign import ccall unsafe "rocksdb_livefiles" c_rocksdb_livefiles- :: Ptr Rocksdb -> IO (Ptr RocksdbLivefiles)+foreign import ccall interruptible "rocksdb_livefiles"+ c_rocksdb_livefiles :: Ptr Rocksdb -> IO (Ptr RocksdbLivefiles) -foreign import ccall unsafe "rocksdb_flush" c_rocksdb_flush ::+foreign import ccall interruptible "rocksdb_flush" c_rocksdb_flush+ :: Ptr Rocksdb -> Ptr RocksdbFlushoptions -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_disable_file_deletions"+foreign import ccall interruptible "rocksdb_disable_file_deletions" c_rocksdb_disable_file_deletions :: Ptr Rocksdb -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_enable_file_deletions"+foreign import ccall interruptible "rocksdb_enable_file_deletions" c_rocksdb_enable_file_deletions :: Ptr Rocksdb -> CUChar -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_destroy_db"+foreign import ccall interruptible "rocksdb_destroy_db" c_rocksdb_destroy_db :: Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_repair_db" c_rocksdb_repair_db- :: Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO ()+foreign import ccall interruptible "rocksdb_repair_db"+ c_rocksdb_repair_db ::+ Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_iter_destroy"+foreign import ccall interruptible "rocksdb_iter_destroy" c_rocksdb_iter_destroy :: Ptr RocksdbIterator -> IO () -foreign import ccall unsafe "rocksdb_iter_valid"+foreign import ccall interruptible "rocksdb_iter_valid" c_rocksdb_iter_valid :: Ptr RocksdbIterator -> IO CUChar -foreign import ccall unsafe "rocksdb_iter_seek_to_first"+foreign import ccall interruptible "rocksdb_iter_seek_to_first" c_rocksdb_iter_seek_to_first :: Ptr RocksdbIterator -> IO () -foreign import ccall unsafe "rocksdb_iter_seek_to_last"+foreign import ccall interruptible "rocksdb_iter_seek_to_last" c_rocksdb_iter_seek_to_last :: Ptr RocksdbIterator -> IO () -foreign import ccall unsafe "rocksdb_iter_seek" c_rocksdb_iter_seek- :: Ptr RocksdbIterator -> Ptr CChar -> CSize -> IO ()+foreign import ccall interruptible "rocksdb_iter_seek"+ c_rocksdb_iter_seek ::+ Ptr RocksdbIterator -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_iter_seek_for_prev"+foreign import ccall interruptible "rocksdb_iter_seek_for_prev" c_rocksdb_iter_seek_for_prev :: Ptr RocksdbIterator -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_iter_next" c_rocksdb_iter_next- :: Ptr RocksdbIterator -> IO ()+foreign import ccall interruptible "rocksdb_iter_next"+ c_rocksdb_iter_next :: Ptr RocksdbIterator -> IO () -foreign import ccall unsafe "rocksdb_iter_prev" c_rocksdb_iter_prev- :: Ptr RocksdbIterator -> IO ()+foreign import ccall interruptible "rocksdb_iter_prev"+ c_rocksdb_iter_prev :: Ptr RocksdbIterator -> IO () -foreign import ccall unsafe "rocksdb_iter_key" c_rocksdb_iter_key- :: Ptr RocksdbIterator -> Ptr CSize -> IO (Ptr CChar)+foreign import ccall interruptible "rocksdb_iter_key"+ c_rocksdb_iter_key ::+ Ptr RocksdbIterator -> Ptr CSize -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_iter_value"+foreign import ccall interruptible "rocksdb_iter_value" c_rocksdb_iter_value :: Ptr RocksdbIterator -> Ptr CSize -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_iter_get_error"+foreign import ccall interruptible "rocksdb_iter_get_error" c_rocksdb_iter_get_error :: Ptr RocksdbIterator -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_writebatch_create"+foreign import ccall interruptible "rocksdb_writebatch_create" c_rocksdb_writebatch_create :: IO (Ptr RocksdbWritebatch) -foreign import ccall unsafe "rocksdb_writebatch_create_from"+foreign import ccall interruptible "rocksdb_writebatch_create_from" c_rocksdb_writebatch_create_from :: Ptr CChar -> CSize -> IO (Ptr RocksdbWritebatch) -foreign import ccall unsafe "rocksdb_writebatch_destroy"+foreign import ccall interruptible "rocksdb_writebatch_destroy" c_rocksdb_writebatch_destroy :: Ptr RocksdbWritebatch -> IO () -foreign import ccall unsafe "rocksdb_writebatch_clear"+foreign import ccall interruptible "rocksdb_writebatch_clear" c_rocksdb_writebatch_clear :: Ptr RocksdbWritebatch -> IO () -foreign import ccall unsafe "rocksdb_writebatch_count"+foreign import ccall interruptible "rocksdb_writebatch_count" c_rocksdb_writebatch_count :: Ptr RocksdbWritebatch -> IO CInt -foreign import ccall unsafe "rocksdb_writebatch_put"+foreign import ccall interruptible "rocksdb_writebatch_put" c_rocksdb_writebatch_put :: Ptr RocksdbWritebatch -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_put_cf"+foreign import ccall interruptible "rocksdb_writebatch_put_cf" c_rocksdb_writebatch_put_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_putv"+foreign import ccall interruptible "rocksdb_writebatch_putv" c_rocksdb_writebatch_putv :: Ptr RocksdbWritebatch -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_putv_cf"+foreign import ccall interruptible "rocksdb_writebatch_putv_cf" c_rocksdb_writebatch_putv_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle ->@@ -485,25 +505,25 @@ Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_merge"+foreign import ccall interruptible "rocksdb_writebatch_merge" c_rocksdb_writebatch_merge :: Ptr RocksdbWritebatch -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_merge_cf"+foreign import ccall interruptible "rocksdb_writebatch_merge_cf" c_rocksdb_writebatch_merge_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_mergev"+foreign import ccall interruptible "rocksdb_writebatch_mergev" c_rocksdb_writebatch_mergev :: Ptr RocksdbWritebatch -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_mergev_cf"+foreign import ccall interruptible "rocksdb_writebatch_mergev_cf" c_rocksdb_writebatch_mergev_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle ->@@ -511,45 +531,49 @@ Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_delete"+foreign import ccall interruptible "rocksdb_writebatch_delete" c_rocksdb_writebatch_delete :: Ptr RocksdbWritebatch -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_delete_cf"+foreign import ccall interruptible "rocksdb_writebatch_delete_cf" c_rocksdb_writebatch_delete_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_deletev"+foreign import ccall interruptible "rocksdb_writebatch_deletev" c_rocksdb_writebatch_deletev :: Ptr RocksdbWritebatch -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_deletev_cf"+foreign import ccall interruptible "rocksdb_writebatch_deletev_cf" c_rocksdb_writebatch_deletev_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_delete_range"- c_rocksdb_writebatch_delete_range ::+foreign import ccall interruptible+ "rocksdb_writebatch_delete_range" c_rocksdb_writebatch_delete_range+ :: Ptr RocksdbWritebatch -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_delete_range_cf"+foreign import ccall interruptible+ "rocksdb_writebatch_delete_range_cf" c_rocksdb_writebatch_delete_range_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_delete_rangev"+foreign import ccall interruptible+ "rocksdb_writebatch_delete_rangev" c_rocksdb_writebatch_delete_rangev :: Ptr RocksdbWritebatch -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_delete_rangev_cf"+foreign import ccall interruptible+ "rocksdb_writebatch_delete_rangev_cf" c_rocksdb_writebatch_delete_rangev_cf :: Ptr RocksdbWritebatch -> Ptr RocksdbColumnFamilyHandle ->@@ -557,11 +581,11 @@ Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_put_log_data"- c_rocksdb_writebatch_put_log_data ::- Ptr RocksdbWritebatch -> Ptr CChar -> CSize -> IO ()+foreign import ccall interruptible+ "rocksdb_writebatch_put_log_data" c_rocksdb_writebatch_put_log_data+ :: Ptr RocksdbWritebatch -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_iterate"+foreign import ccall interruptible "rocksdb_writebatch_iterate" c_rocksdb_writebatch_iterate :: Ptr RocksdbWritebatch -> Ptr () ->@@ -569,55 +593,57 @@ (Ptr () -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO ()) -> FunPtr (Ptr () -> Ptr CChar -> CSize -> IO ()) -> IO () -foreign import ccall unsafe "rocksdb_writebatch_data"+foreign import ccall interruptible "rocksdb_writebatch_data" c_rocksdb_writebatch_data :: Ptr RocksdbWritebatch -> Ptr CSize -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_writebatch_set_save_point"+foreign import ccall interruptible+ "rocksdb_writebatch_set_save_point" c_rocksdb_writebatch_set_save_point :: Ptr RocksdbWritebatch -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_rollback_to_save_point" c_rocksdb_writebatch_rollback_to_save_point :: Ptr RocksdbWritebatch -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_writebatch_pop_save_point"+foreign import ccall interruptible+ "rocksdb_writebatch_pop_save_point" c_rocksdb_writebatch_pop_save_point :: Ptr RocksdbWritebatch -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_create"+foreign import ccall interruptible "rocksdb_writebatch_wi_create" c_rocksdb_writebatch_wi_create :: CSize -> CUChar -> IO (Ptr RocksdbWritebatchWi) -foreign import ccall unsafe "rocksdb_writebatch_wi_destroy"+foreign import ccall interruptible "rocksdb_writebatch_wi_destroy" c_rocksdb_writebatch_wi_destroy :: Ptr RocksdbWritebatchWi -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_clear"+foreign import ccall interruptible "rocksdb_writebatch_wi_clear" c_rocksdb_writebatch_wi_clear :: Ptr RocksdbWritebatchWi -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_count"+foreign import ccall interruptible "rocksdb_writebatch_wi_count" c_rocksdb_writebatch_wi_count :: Ptr RocksdbWritebatchWi -> IO CInt -foreign import ccall unsafe "rocksdb_writebatch_wi_put"+foreign import ccall interruptible "rocksdb_writebatch_wi_put" c_rocksdb_writebatch_wi_put :: Ptr RocksdbWritebatchWi -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_put_cf"+foreign import ccall interruptible "rocksdb_writebatch_wi_put_cf" c_rocksdb_writebatch_wi_put_cf :: Ptr RocksdbWritebatchWi -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_putv"+foreign import ccall interruptible "rocksdb_writebatch_wi_putv" c_rocksdb_writebatch_wi_putv :: Ptr RocksdbWritebatchWi -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_putv_cf"+foreign import ccall interruptible "rocksdb_writebatch_wi_putv_cf" c_rocksdb_writebatch_wi_putv_cf :: Ptr RocksdbWritebatchWi -> Ptr RocksdbColumnFamilyHandle ->@@ -625,71 +651,77 @@ Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_merge"+foreign import ccall interruptible "rocksdb_writebatch_wi_merge" c_rocksdb_writebatch_wi_merge :: Ptr RocksdbWritebatchWi -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_merge_cf"+foreign import ccall interruptible "rocksdb_writebatch_wi_merge_cf" c_rocksdb_writebatch_wi_merge_cf :: Ptr RocksdbWritebatchWi -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_mergev"+foreign import ccall interruptible "rocksdb_writebatch_wi_mergev" c_rocksdb_writebatch_wi_mergev :: Ptr RocksdbWritebatchWi -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_mergev_cf"- c_rocksdb_writebatch_wi_mergev_cf ::+foreign import ccall interruptible+ "rocksdb_writebatch_wi_mergev_cf" c_rocksdb_writebatch_wi_mergev_cf+ :: Ptr RocksdbWritebatchWi -> Ptr RocksdbColumnFamilyHandle -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_delete"+foreign import ccall interruptible "rocksdb_writebatch_wi_delete" c_rocksdb_writebatch_wi_delete :: Ptr RocksdbWritebatchWi -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_delete_cf"- c_rocksdb_writebatch_wi_delete_cf ::+foreign import ccall interruptible+ "rocksdb_writebatch_wi_delete_cf" c_rocksdb_writebatch_wi_delete_cf+ :: Ptr RocksdbWritebatchWi -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_deletev"+foreign import ccall interruptible "rocksdb_writebatch_wi_deletev" c_rocksdb_writebatch_wi_deletev :: Ptr RocksdbWritebatchWi -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_deletev_cf"+foreign import ccall interruptible+ "rocksdb_writebatch_wi_deletev_cf" c_rocksdb_writebatch_wi_deletev_cf :: Ptr RocksdbWritebatchWi -> Ptr RocksdbColumnFamilyHandle -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_delete_range"+foreign import ccall interruptible+ "rocksdb_writebatch_wi_delete_range" c_rocksdb_writebatch_wi_delete_range :: Ptr RocksdbWritebatchWi -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_delete_range_cf"+foreign import ccall interruptible+ "rocksdb_writebatch_wi_delete_range_cf" c_rocksdb_writebatch_wi_delete_range_cf :: Ptr RocksdbWritebatchWi -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_delete_rangev"+foreign import ccall interruptible+ "rocksdb_writebatch_wi_delete_rangev" c_rocksdb_writebatch_wi_delete_rangev :: Ptr RocksdbWritebatchWi -> CInt -> Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_wi_delete_rangev_cf" c_rocksdb_writebatch_wi_delete_rangev_cf :: Ptr RocksdbWritebatchWi ->@@ -698,11 +730,12 @@ Ptr (Ptr CChar) -> Ptr CSize -> Ptr (Ptr CChar) -> Ptr CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_put_log_data"+foreign import ccall interruptible+ "rocksdb_writebatch_wi_put_log_data" c_rocksdb_writebatch_wi_put_log_data :: Ptr RocksdbWritebatchWi -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_iterate"+foreign import ccall interruptible "rocksdb_writebatch_wi_iterate" c_rocksdb_writebatch_wi_iterate :: Ptr RocksdbWritebatchWi -> Ptr () ->@@ -710,27 +743,29 @@ (Ptr () -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO ()) -> FunPtr (Ptr () -> Ptr CChar -> CSize -> IO ()) -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_data"+foreign import ccall interruptible "rocksdb_writebatch_wi_data" c_rocksdb_writebatch_wi_data :: Ptr RocksdbWritebatchWi -> Ptr CSize -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_writebatch_wi_set_save_point"+foreign import ccall interruptible+ "rocksdb_writebatch_wi_set_save_point" c_rocksdb_writebatch_wi_set_save_point :: Ptr RocksdbWritebatchWi -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_wi_rollback_to_save_point" c_rocksdb_writebatch_wi_rollback_to_save_point :: Ptr RocksdbWritebatchWi -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_writebatch_wi_get_from_batch"+foreign import ccall interruptible+ "rocksdb_writebatch_wi_get_from_batch" c_rocksdb_writebatch_wi_get_from_batch :: Ptr RocksdbWritebatchWi -> Ptr RocksdbOptions -> Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_wi_get_from_batch_cf" c_rocksdb_writebatch_wi_get_from_batch_cf :: Ptr RocksdbWritebatchWi ->@@ -739,7 +774,7 @@ Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_wi_get_from_batch_and_db" c_rocksdb_writebatch_wi_get_from_batch_and_db :: Ptr RocksdbWritebatchWi ->@@ -748,7 +783,7 @@ Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_wi_get_from_batch_and_db_cf" c_rocksdb_writebatch_wi_get_from_batch_and_db_cf :: Ptr RocksdbWritebatchWi ->@@ -758,75 +793,77 @@ Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_write_writebatch_wi"+foreign import ccall interruptible "rocksdb_write_writebatch_wi" c_rocksdb_write_writebatch_wi :: Ptr Rocksdb -> Ptr RocksdbWriteoptions -> Ptr RocksdbWritebatchWi -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_wi_create_iterator_with_base" c_rocksdb_writebatch_wi_create_iterator_with_base :: Ptr RocksdbWritebatchWi -> Ptr RocksdbIterator -> IO (Ptr RocksdbIterator) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_writebatch_wi_create_iterator_with_base_cf" c_rocksdb_writebatch_wi_create_iterator_with_base_cf :: Ptr RocksdbWritebatchWi -> Ptr RocksdbIterator -> Ptr RocksdbColumnFamilyHandle -> IO (Ptr RocksdbIterator) -foreign import ccall unsafe "rocksdb_block_based_options_create"+foreign import ccall interruptible+ "rocksdb_block_based_options_create" c_rocksdb_block_based_options_create :: IO (Ptr RocksdbBlockBasedTableOptions) -foreign import ccall unsafe "rocksdb_block_based_options_destroy"+foreign import ccall interruptible+ "rocksdb_block_based_options_destroy" c_rocksdb_block_based_options_destroy :: Ptr RocksdbBlockBasedTableOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_block_size" c_rocksdb_block_based_options_set_block_size :: Ptr RocksdbBlockBasedTableOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_block_size_deviation" c_rocksdb_block_based_options_set_block_size_deviation :: Ptr RocksdbBlockBasedTableOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_block_restart_interval" c_rocksdb_block_based_options_set_block_restart_interval :: Ptr RocksdbBlockBasedTableOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_filter_policy" c_rocksdb_block_based_options_set_filter_policy :: Ptr RocksdbBlockBasedTableOptions -> Ptr RocksdbFilterpolicy -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_no_block_cache" c_rocksdb_block_based_options_set_no_block_cache :: Ptr RocksdbBlockBasedTableOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_block_cache" c_rocksdb_block_based_options_set_block_cache :: Ptr RocksdbBlockBasedTableOptions -> Ptr RocksdbCache -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_block_cache_compressed" c_rocksdb_block_based_options_set_block_cache_compressed :: Ptr RocksdbBlockBasedTableOptions -> Ptr RocksdbCache -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_whole_key_filtering" c_rocksdb_block_based_options_set_whole_key_filtering :: Ptr RocksdbBlockBasedTableOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_format_version" c_rocksdb_block_based_options_set_format_version :: Ptr RocksdbBlockBasedTableOptions -> CInt -> IO ()@@ -839,527 +876,553 @@ c_rocksdb_block_based_table_index_type_two_level_index_search = 2 -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_index_type" c_rocksdb_block_based_options_set_index_type :: Ptr RocksdbBlockBasedTableOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_hash_index_allow_collision" c_rocksdb_block_based_options_set_hash_index_allow_collision :: Ptr RocksdbBlockBasedTableOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_cache_index_and_filter_blocks" c_rocksdb_block_based_options_set_cache_index_and_filter_blocks :: Ptr RocksdbBlockBasedTableOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache" c_rocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache :: Ptr RocksdbBlockBasedTableOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_block_based_table_factory" c_rocksdb_options_set_block_based_table_factory :: Ptr RocksdbOptions -> Ptr RocksdbBlockBasedTableOptions -> IO () -foreign import ccall unsafe "rocksdb_cuckoo_options_create"+foreign import ccall interruptible "rocksdb_cuckoo_options_create" c_rocksdb_cuckoo_options_create :: IO (Ptr RocksdbCuckooTableOptions) -foreign import ccall unsafe "rocksdb_cuckoo_options_destroy"+foreign import ccall interruptible "rocksdb_cuckoo_options_destroy" c_rocksdb_cuckoo_options_destroy :: Ptr RocksdbCuckooTableOptions -> IO () -foreign import ccall unsafe "rocksdb_cuckoo_options_set_hash_ratio"+foreign import ccall interruptible+ "rocksdb_cuckoo_options_set_hash_ratio" c_rocksdb_cuckoo_options_set_hash_ratio :: Ptr RocksdbCuckooTableOptions -> CDouble -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_cuckoo_options_set_max_search_depth" c_rocksdb_cuckoo_options_set_max_search_depth :: Ptr RocksdbCuckooTableOptions -> Word32 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_cuckoo_options_set_cuckoo_block_size" c_rocksdb_cuckoo_options_set_cuckoo_block_size :: Ptr RocksdbCuckooTableOptions -> Word32 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_cuckoo_options_set_identity_as_first_hash" c_rocksdb_cuckoo_options_set_identity_as_first_hash :: Ptr RocksdbCuckooTableOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_cuckoo_options_set_use_module_hash" c_rocksdb_cuckoo_options_set_use_module_hash :: Ptr RocksdbCuckooTableOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_cuckoo_table_factory" c_rocksdb_options_set_cuckoo_table_factory :: Ptr RocksdbOptions -> Ptr RocksdbCuckooTableOptions -> IO () -foreign import ccall unsafe "rocksdb_set_options"+foreign import ccall interruptible "rocksdb_set_options" c_rocksdb_set_options :: Ptr Rocksdb -> CInt -> Ptr (Ptr CChar) -> Ptr (Ptr CChar) -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_options_create"+foreign import ccall interruptible "rocksdb_options_create" c_rocksdb_options_create :: IO (Ptr RocksdbOptions) -foreign import ccall unsafe "rocksdb_options_destroy"+foreign import ccall interruptible "rocksdb_options_destroy" c_rocksdb_options_destroy :: Ptr RocksdbOptions -> IO () -foreign import ccall unsafe "rocksdb_options_increase_parallelism"+foreign import ccall interruptible+ "rocksdb_options_increase_parallelism" c_rocksdb_options_increase_parallelism :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_optimize_for_point_lookup" c_rocksdb_options_optimize_for_point_lookup :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_optimize_level_style_compaction" c_rocksdb_options_optimize_level_style_compaction :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_optimize_universal_style_compaction" c_rocksdb_options_optimize_universal_style_compaction :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe "rocksdb_options_set_compaction_filter"+foreign import ccall interruptible+ "rocksdb_options_set_compaction_filter" c_rocksdb_options_set_compaction_filter :: Ptr RocksdbOptions -> Ptr RocksdbCompactionfilter -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_compaction_filter_factory" c_rocksdb_options_set_compaction_filter_factory :: Ptr RocksdbOptions -> Ptr RocksdbCompactionfilterfactory -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_compaction_readahead_size" c_rocksdb_options_compaction_readahead_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_comparator"+foreign import ccall interruptible "rocksdb_options_set_comparator" c_rocksdb_options_set_comparator :: Ptr RocksdbOptions -> Ptr RocksdbComparator -> IO () -foreign import ccall unsafe "rocksdb_options_set_merge_operator"+foreign import ccall interruptible+ "rocksdb_options_set_merge_operator" c_rocksdb_options_set_merge_operator :: Ptr RocksdbOptions -> Ptr RocksdbMergeoperator -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_uint64add_merge_operator" c_rocksdb_options_set_uint64add_merge_operator :: Ptr RocksdbOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_compression_per_level" c_rocksdb_options_set_compression_per_level :: Ptr RocksdbOptions -> Ptr CInt -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_create_if_missing"+foreign import ccall interruptible+ "rocksdb_options_set_create_if_missing" c_rocksdb_options_set_create_if_missing :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_create_missing_column_families" c_rocksdb_options_set_create_missing_column_families :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_error_if_exists"+foreign import ccall interruptible+ "rocksdb_options_set_error_if_exists" c_rocksdb_options_set_error_if_exists :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_paranoid_checks"+foreign import ccall interruptible+ "rocksdb_options_set_paranoid_checks" c_rocksdb_options_set_paranoid_checks :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_db_paths"+foreign import ccall interruptible "rocksdb_options_set_db_paths" c_rocksdb_options_set_db_paths :: Ptr RocksdbOptions -> Ptr (Ptr RocksdbDbpath) -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_env"+foreign import ccall interruptible "rocksdb_options_set_env" c_rocksdb_options_set_env :: Ptr RocksdbOptions -> Ptr RocksdbEnv -> IO () -foreign import ccall unsafe "rocksdb_options_set_info_log"+foreign import ccall interruptible "rocksdb_options_set_info_log" c_rocksdb_options_set_info_log :: Ptr RocksdbOptions -> Ptr RocksdbLogger -> IO () -foreign import ccall unsafe "rocksdb_options_set_info_log_level"+foreign import ccall interruptible+ "rocksdb_options_set_info_log_level" c_rocksdb_options_set_info_log_level :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe "rocksdb_options_set_write_buffer_size"+foreign import ccall interruptible+ "rocksdb_options_set_write_buffer_size" c_rocksdb_options_set_write_buffer_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_db_write_buffer_size" c_rocksdb_options_set_db_write_buffer_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_max_open_files"+foreign import ccall interruptible+ "rocksdb_options_set_max_open_files" c_rocksdb_options_set_max_open_files :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_file_opening_threads" c_rocksdb_options_set_max_file_opening_threads :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_total_wal_size" c_rocksdb_options_set_max_total_wal_size :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_compression_options" c_rocksdb_options_set_compression_options :: Ptr RocksdbOptions -> CInt -> CInt -> CInt -> CInt -> IO () -foreign import ccall unsafe "rocksdb_options_set_prefix_extractor"+foreign import ccall interruptible+ "rocksdb_options_set_prefix_extractor" c_rocksdb_options_set_prefix_extractor :: Ptr RocksdbOptions -> Ptr RocksdbSlicetransform -> IO () -foreign import ccall unsafe "rocksdb_options_set_num_levels"+foreign import ccall interruptible "rocksdb_options_set_num_levels" c_rocksdb_options_set_num_levels :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_level0_file_num_compaction_trigger" c_rocksdb_options_set_level0_file_num_compaction_trigger :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_level0_slowdown_writes_trigger" c_rocksdb_options_set_level0_slowdown_writes_trigger :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_level0_stop_writes_trigger" c_rocksdb_options_set_level0_stop_writes_trigger :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_mem_compaction_level" c_rocksdb_options_set_max_mem_compaction_level :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_target_file_size_base" c_rocksdb_options_set_target_file_size_base :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_target_file_size_multiplier" c_rocksdb_options_set_target_file_size_multiplier :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_bytes_for_level_base" c_rocksdb_options_set_max_bytes_for_level_base :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_level_compaction_dynamic_level_bytes" c_rocksdb_options_set_level_compaction_dynamic_level_bytes :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_bytes_for_level_multiplier" c_rocksdb_options_set_max_bytes_for_level_multiplier :: Ptr RocksdbOptions -> CDouble -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_bytes_for_level_multiplier_additional" c_rocksdb_options_set_max_bytes_for_level_multiplier_additional :: Ptr RocksdbOptions -> Ptr CInt -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_enable_statistics"+foreign import ccall interruptible+ "rocksdb_options_enable_statistics" c_rocksdb_options_enable_statistics :: Ptr RocksdbOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_skip_stats_update_on_db_open" c_rocksdb_options_set_skip_stats_update_on_db_open :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_statistics_get_string"+foreign import ccall interruptible+ "rocksdb_options_statistics_get_string" c_rocksdb_options_statistics_get_string :: Ptr RocksdbOptions -> IO (Ptr CChar) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_write_buffer_number" c_rocksdb_options_set_max_write_buffer_number :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_min_write_buffer_number_to_merge" c_rocksdb_options_set_min_write_buffer_number_to_merge :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_write_buffer_number_to_maintain" c_rocksdb_options_set_max_write_buffer_number_to_maintain :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_background_compactions" c_rocksdb_options_set_max_background_compactions :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_base_background_compactions" c_rocksdb_options_set_base_background_compactions :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_background_flushes" c_rocksdb_options_set_max_background_flushes :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe "rocksdb_options_set_max_log_file_size"+foreign import ccall interruptible+ "rocksdb_options_set_max_log_file_size" c_rocksdb_options_set_max_log_file_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_log_file_time_to_roll" c_rocksdb_options_set_log_file_time_to_roll :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_keep_log_file_num"+foreign import ccall interruptible+ "rocksdb_options_set_keep_log_file_num" c_rocksdb_options_set_keep_log_file_num :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_recycle_log_file_num" c_rocksdb_options_set_recycle_log_file_num :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_soft_rate_limit"+foreign import ccall interruptible+ "rocksdb_options_set_soft_rate_limit" c_rocksdb_options_set_soft_rate_limit :: Ptr RocksdbOptions -> CDouble -> IO () -foreign import ccall unsafe "rocksdb_options_set_hard_rate_limit"+foreign import ccall interruptible+ "rocksdb_options_set_hard_rate_limit" c_rocksdb_options_set_hard_rate_limit :: Ptr RocksdbOptions -> CDouble -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_soft_pending_compaction_bytes_limit" c_rocksdb_options_set_soft_pending_compaction_bytes_limit :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_hard_pending_compaction_bytes_limit" c_rocksdb_options_set_hard_pending_compaction_bytes_limit :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_rate_limit_delay_max_milliseconds" c_rocksdb_options_set_rate_limit_delay_max_milliseconds :: Ptr RocksdbOptions -> CUInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_manifest_file_size" c_rocksdb_options_set_max_manifest_file_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_table_cache_numshardbits" c_rocksdb_options_set_table_cache_numshardbits :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_table_cache_remove_scan_count_limit" c_rocksdb_options_set_table_cache_remove_scan_count_limit :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe "rocksdb_options_set_arena_block_size"+foreign import ccall interruptible+ "rocksdb_options_set_arena_block_size" c_rocksdb_options_set_arena_block_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_use_fsync"+foreign import ccall interruptible "rocksdb_options_set_use_fsync" c_rocksdb_options_set_use_fsync :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe "rocksdb_options_set_db_log_dir"+foreign import ccall interruptible "rocksdb_options_set_db_log_dir" c_rocksdb_options_set_db_log_dir :: Ptr RocksdbOptions -> Ptr CChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_wal_dir"+foreign import ccall interruptible "rocksdb_options_set_wal_dir" c_rocksdb_options_set_wal_dir :: Ptr RocksdbOptions -> Ptr CChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_WAL_ttl_seconds"+foreign import ccall interruptible+ "rocksdb_options_set_WAL_ttl_seconds" c_rocksdb_options_set_WAL_ttl_seconds :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe "rocksdb_options_set_WAL_size_limit_MB"+foreign import ccall interruptible+ "rocksdb_options_set_WAL_size_limit_MB" c_rocksdb_options_set_WAL_size_limit_MB :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_manifest_preallocation_size" c_rocksdb_options_set_manifest_preallocation_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_purge_redundant_kvs_while_flush" c_rocksdb_options_set_purge_redundant_kvs_while_flush :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_allow_mmap_reads"+foreign import ccall interruptible+ "rocksdb_options_set_allow_mmap_reads" c_rocksdb_options_set_allow_mmap_reads :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_allow_mmap_writes"+foreign import ccall interruptible+ "rocksdb_options_set_allow_mmap_writes" c_rocksdb_options_set_allow_mmap_writes :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_use_direct_reads"+foreign import ccall interruptible+ "rocksdb_options_set_use_direct_reads" c_rocksdb_options_set_use_direct_reads :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_use_direct_io_for_flush_and_compaction" c_rocksdb_options_set_use_direct_io_for_flush_and_compaction :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_is_fd_close_on_exec" c_rocksdb_options_set_is_fd_close_on_exec :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_skip_log_error_on_recovery" c_rocksdb_options_set_skip_log_error_on_recovery :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_stats_dump_period_sec" c_rocksdb_options_set_stats_dump_period_sec :: Ptr RocksdbOptions -> CUInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_advise_random_on_open" c_rocksdb_options_set_advise_random_on_open :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_access_hint_on_compaction_start" c_rocksdb_options_set_access_hint_on_compaction_start :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_use_adaptive_mutex" c_rocksdb_options_set_use_adaptive_mutex :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_options_set_bytes_per_sync"+foreign import ccall interruptible+ "rocksdb_options_set_bytes_per_sync" c_rocksdb_options_set_bytes_per_sync :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_allow_concurrent_memtable_write" c_rocksdb_options_set_allow_concurrent_memtable_write :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_enable_write_thread_adaptive_yield" c_rocksdb_options_set_enable_write_thread_adaptive_yield :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_sequential_skip_in_iterations" c_rocksdb_options_set_max_sequential_skip_in_iterations :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_disable_auto_compactions" c_rocksdb_options_set_disable_auto_compactions :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_optimize_filters_for_hits" c_rocksdb_options_set_optimize_filters_for_hits :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_delete_obsolete_files_period_micros" c_rocksdb_options_set_delete_obsolete_files_period_micros :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe "rocksdb_options_prepare_for_bulk_load"+foreign import ccall interruptible+ "rocksdb_options_prepare_for_bulk_load" c_rocksdb_options_prepare_for_bulk_load :: Ptr RocksdbOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_memtable_vector_rep" c_rocksdb_options_set_memtable_vector_rep :: Ptr RocksdbOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_memtable_prefix_bloom_size_ratio" c_rocksdb_options_set_memtable_prefix_bloom_size_ratio :: Ptr RocksdbOptions -> CDouble -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_compaction_bytes" c_rocksdb_options_set_max_compaction_bytes :: Ptr RocksdbOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_hash_skip_list_rep" c_rocksdb_options_set_hash_skip_list_rep :: Ptr RocksdbOptions -> CSize -> Int32 -> Int32 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_hash_link_list_rep" c_rocksdb_options_set_hash_link_list_rep :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_plain_table_factory" c_rocksdb_options_set_plain_table_factory :: Ptr RocksdbOptions -> Word32 -> CInt -> CDouble -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_min_level_to_compress" c_rocksdb_options_set_min_level_to_compress :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_memtable_huge_page_size" c_rocksdb_options_set_memtable_huge_page_size :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_max_successive_merges" c_rocksdb_options_set_max_successive_merges :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe "rocksdb_options_set_bloom_locality"+foreign import ccall interruptible+ "rocksdb_options_set_bloom_locality" c_rocksdb_options_set_bloom_locality :: Ptr RocksdbOptions -> Word32 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_inplace_update_support" c_rocksdb_options_set_inplace_update_support :: Ptr RocksdbOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_inplace_update_num_locks" c_rocksdb_options_set_inplace_update_num_locks :: Ptr RocksdbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_report_bg_io_stats" c_rocksdb_options_set_report_bg_io_stats :: Ptr RocksdbOptions -> CInt -> IO ()@@ -1374,7 +1437,8 @@ c_rocksdb_skip_any_corrupted_records_recovery = 3 -foreign import ccall unsafe "rocksdb_options_set_wal_recovery_mode"+foreign import ccall interruptible+ "rocksdb_options_set_wal_recovery_mode" c_rocksdb_options_set_wal_recovery_mode :: Ptr RocksdbOptions -> CInt -> IO () @@ -1396,9 +1460,9 @@ c_rocksdb_zstd_compression = 7 -foreign import ccall unsafe "rocksdb_options_set_compression"- c_rocksdb_options_set_compression ::- Ptr RocksdbOptions -> CInt -> IO ()+foreign import ccall interruptible+ "rocksdb_options_set_compression" c_rocksdb_options_set_compression+ :: Ptr RocksdbOptions -> CInt -> IO () c_rocksdb_level_compaction, c_rocksdb_universal_compaction, c_rocksdb_fifo_compaction :: CInt@@ -1408,34 +1472,36 @@ c_rocksdb_fifo_compaction = 2 -foreign import ccall unsafe "rocksdb_options_set_compaction_style"+foreign import ccall interruptible+ "rocksdb_options_set_compaction_style" c_rocksdb_options_set_compaction_style :: Ptr RocksdbOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_universal_compaction_options" c_rocksdb_options_set_universal_compaction_options :: Ptr RocksdbOptions -> Ptr RocksdbUniversalCompactionOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_options_set_fifo_compaction_options" c_rocksdb_options_set_fifo_compaction_options :: Ptr RocksdbOptions -> Ptr RocksdbFifoCompactionOptions -> IO () -foreign import ccall unsafe "rocksdb_options_set_ratelimiter"- c_rocksdb_options_set_ratelimiter ::- Ptr RocksdbOptions -> Ptr RocksdbRatelimiter -> IO ()+foreign import ccall interruptible+ "rocksdb_options_set_ratelimiter" c_rocksdb_options_set_ratelimiter+ :: Ptr RocksdbOptions -> Ptr RocksdbRatelimiter -> IO () -foreign import ccall unsafe "rocksdb_ratelimiter_create"+foreign import ccall interruptible "rocksdb_ratelimiter_create" c_rocksdb_ratelimiter_create :: Int64 -> Int64 -> Int32 -> IO (Ptr RocksdbRatelimiter) -foreign import ccall unsafe "rocksdb_ratelimiter_destroy"+foreign import ccall interruptible "rocksdb_ratelimiter_destroy" c_rocksdb_ratelimiter_destroy :: Ptr RocksdbRatelimiter -> IO () -foreign import ccall unsafe "rocksdb_compactionfilter_create"- c_rocksdb_compactionfilter_create ::+foreign import ccall interruptible+ "rocksdb_compactionfilter_create" c_rocksdb_compactionfilter_create+ :: Ptr () -> FunPtr (Ptr () -> IO ()) -> FunPtr@@ -1449,26 +1515,27 @@ FunPtr (Ptr () -> IO (Ptr CChar)) -> IO (Ptr RocksdbCompactionfilter) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactionfilter_set_ignore_snapshots" c_rocksdb_compactionfilter_set_ignore_snapshots :: Ptr RocksdbCompactionfilter -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_compactionfilter_destroy"+foreign import ccall interruptible+ "rocksdb_compactionfilter_destroy" c_rocksdb_compactionfilter_destroy :: Ptr RocksdbCompactionfilter -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactionfiltercontext_is_full_compaction" c_rocksdb_compactionfiltercontext_is_full_compaction :: Ptr RocksdbCompactionfiltercontext -> IO CUChar -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactionfiltercontext_is_manual_compaction" c_rocksdb_compactionfiltercontext_is_manual_compaction :: Ptr RocksdbCompactionfiltercontext -> IO CUChar -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactionfilterfactory_create" c_rocksdb_compactionfilterfactory_create :: Ptr () ->@@ -1481,12 +1548,12 @@ FunPtr (Ptr () -> IO (Ptr CChar)) -> IO (Ptr RocksdbCompactionfilterfactory) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactionfilterfactory_destroy" c_rocksdb_compactionfilterfactory_destroy :: Ptr RocksdbCompactionfilterfactory -> IO () -foreign import ccall unsafe "rocksdb_comparator_create"+foreign import ccall interruptible "rocksdb_comparator_create" c_rocksdb_comparator_create :: Ptr () -> FunPtr (Ptr () -> IO ()) ->@@ -1494,10 +1561,10 @@ (Ptr () -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> IO CInt) -> FunPtr (Ptr () -> IO (Ptr CChar)) -> IO (Ptr RocksdbComparator) -foreign import ccall unsafe "rocksdb_comparator_destroy"+foreign import ccall interruptible "rocksdb_comparator_destroy" c_rocksdb_comparator_destroy :: Ptr RocksdbComparator -> IO () -foreign import ccall unsafe "rocksdb_filterpolicy_create"+foreign import ccall interruptible "rocksdb_filterpolicy_create" c_rocksdb_filterpolicy_create :: Ptr () -> FunPtr (Ptr () -> IO ()) ->@@ -1512,19 +1579,20 @@ FunPtr (Ptr () -> Ptr CChar -> CSize -> IO ()) -> FunPtr (Ptr () -> IO CChar) -> IO (Ptr RocksdbFilterpolicy) -foreign import ccall unsafe "rocksdb_filterpolicy_destroy"+foreign import ccall interruptible "rocksdb_filterpolicy_destroy" c_rocksdb_filterpolicy_destroy :: Ptr RocksdbFilterpolicy -> IO () -foreign import ccall unsafe "rocksdb_filterpolicy_create_bloom"+foreign import ccall interruptible+ "rocksdb_filterpolicy_create_bloom" c_rocksdb_filterpolicy_create_bloom :: CInt -> IO (Ptr RocksdbFilterpolicy) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_filterpolicy_create_bloom_full" c_rocksdb_filterpolicy_create_bloom_full :: CInt -> IO (Ptr RocksdbFilterpolicy) -foreign import ccall unsafe "rocksdb_mergeoperator_create"+foreign import ccall interruptible "rocksdb_mergeoperator_create" c_rocksdb_mergeoperator_create :: Ptr () -> FunPtr (Ptr () -> IO ()) ->@@ -1547,244 +1615,251 @@ FunPtr (Ptr () -> Ptr CChar -> CSize -> IO ()) -> FunPtr (Ptr () -> IO (Ptr CChar)) -> IO (Ptr RocksdbMergeoperator) -foreign import ccall unsafe "rocksdb_mergeoperator_destroy"+foreign import ccall interruptible "rocksdb_mergeoperator_destroy" c_rocksdb_mergeoperator_destroy :: Ptr RocksdbMergeoperator -> IO () -foreign import ccall unsafe "rocksdb_readoptions_create"+foreign import ccall interruptible "rocksdb_readoptions_create" c_rocksdb_readoptions_create :: IO (Ptr RocksdbReadoptions) -foreign import ccall unsafe "rocksdb_readoptions_destroy"+foreign import ccall interruptible "rocksdb_readoptions_destroy" c_rocksdb_readoptions_destroy :: Ptr RocksdbReadoptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_readoptions_set_verify_checksums" c_rocksdb_readoptions_set_verify_checksums :: Ptr RocksdbReadoptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_readoptions_set_fill_cache"+foreign import ccall interruptible+ "rocksdb_readoptions_set_fill_cache" c_rocksdb_readoptions_set_fill_cache :: Ptr RocksdbReadoptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_readoptions_set_snapshot"+foreign import ccall interruptible+ "rocksdb_readoptions_set_snapshot" c_rocksdb_readoptions_set_snapshot :: Ptr RocksdbReadoptions -> Ptr RocksdbSnapshot -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_readoptions_set_iterate_upper_bound" c_rocksdb_readoptions_set_iterate_upper_bound :: Ptr RocksdbReadoptions -> Ptr CChar -> CSize -> IO () -foreign import ccall unsafe "rocksdb_readoptions_set_read_tier"+foreign import ccall interruptible+ "rocksdb_readoptions_set_read_tier" c_rocksdb_readoptions_set_read_tier :: Ptr RocksdbReadoptions -> CInt -> IO () -foreign import ccall unsafe "rocksdb_readoptions_set_tailing"- c_rocksdb_readoptions_set_tailing ::- Ptr RocksdbReadoptions -> CUChar -> IO ()+foreign import ccall interruptible+ "rocksdb_readoptions_set_tailing" c_rocksdb_readoptions_set_tailing+ :: Ptr RocksdbReadoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_readoptions_set_readahead_size" c_rocksdb_readoptions_set_readahead_size :: Ptr RocksdbReadoptions -> CSize -> IO () -foreign import ccall unsafe "rocksdb_readoptions_set_pin_data"+foreign import ccall interruptible+ "rocksdb_readoptions_set_pin_data" c_rocksdb_readoptions_set_pin_data :: Ptr RocksdbReadoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_readoptions_set_total_order_seek" c_rocksdb_readoptions_set_total_order_seek :: Ptr RocksdbReadoptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_writeoptions_create"+foreign import ccall interruptible "rocksdb_writeoptions_create" c_rocksdb_writeoptions_create :: IO (Ptr RocksdbWriteoptions) -foreign import ccall unsafe "rocksdb_writeoptions_destroy"+foreign import ccall interruptible "rocksdb_writeoptions_destroy" c_rocksdb_writeoptions_destroy :: Ptr RocksdbWriteoptions -> IO () -foreign import ccall unsafe "rocksdb_writeoptions_set_sync"+foreign import ccall interruptible "rocksdb_writeoptions_set_sync" c_rocksdb_writeoptions_set_sync :: Ptr RocksdbWriteoptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_writeoptions_disable_WAL"+foreign import ccall interruptible+ "rocksdb_writeoptions_disable_WAL" c_rocksdb_writeoptions_disable_WAL :: Ptr RocksdbWriteoptions -> CInt -> IO () -foreign import ccall unsafe "rocksdb_compactoptions_create"+foreign import ccall interruptible "rocksdb_compactoptions_create" c_rocksdb_compactoptions_create :: IO (Ptr RocksdbCompactoptions) -foreign import ccall unsafe "rocksdb_compactoptions_destroy"+foreign import ccall interruptible "rocksdb_compactoptions_destroy" c_rocksdb_compactoptions_destroy :: Ptr RocksdbCompactoptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactoptions_set_exclusive_manual_compaction" c_rocksdb_compactoptions_set_exclusive_manual_compaction :: Ptr RocksdbCompactoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactoptions_set_change_level" c_rocksdb_compactoptions_set_change_level :: Ptr RocksdbCompactoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_compactoptions_set_target_level" c_rocksdb_compactoptions_set_target_level :: Ptr RocksdbCompactoptions -> CInt -> IO () -foreign import ccall unsafe "rocksdb_flushoptions_create"+foreign import ccall interruptible "rocksdb_flushoptions_create" c_rocksdb_flushoptions_create :: IO (Ptr RocksdbFlushoptions) -foreign import ccall unsafe "rocksdb_flushoptions_destroy"+foreign import ccall interruptible "rocksdb_flushoptions_destroy" c_rocksdb_flushoptions_destroy :: Ptr RocksdbFlushoptions -> IO () -foreign import ccall unsafe "rocksdb_flushoptions_set_wait"+foreign import ccall interruptible "rocksdb_flushoptions_set_wait" c_rocksdb_flushoptions_set_wait :: Ptr RocksdbFlushoptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_cache_create_lru"+foreign import ccall interruptible "rocksdb_cache_create_lru" c_rocksdb_cache_create_lru :: CSize -> IO (Ptr RocksdbCache) -foreign import ccall unsafe "rocksdb_cache_destroy"+foreign import ccall interruptible "rocksdb_cache_destroy" c_rocksdb_cache_destroy :: Ptr RocksdbCache -> IO () -foreign import ccall unsafe "rocksdb_cache_set_capacity"+foreign import ccall interruptible "rocksdb_cache_set_capacity" c_rocksdb_cache_set_capacity :: Ptr RocksdbCache -> CSize -> IO () -foreign import ccall unsafe "rocksdb_cache_get_usage"+foreign import ccall interruptible "rocksdb_cache_get_usage" c_rocksdb_cache_get_usage :: Ptr RocksdbCache -> IO CSize -foreign import ccall unsafe "rocksdb_cache_get_pinned_usage"+foreign import ccall interruptible "rocksdb_cache_get_pinned_usage" c_rocksdb_cache_get_pinned_usage :: Ptr RocksdbCache -> IO CSize -foreign import ccall unsafe "rocksdb_dbpath_create"+foreign import ccall interruptible "rocksdb_dbpath_create" c_rocksdb_dbpath_create :: Ptr CChar -> Word64 -> IO (Ptr RocksdbDbpath) -foreign import ccall unsafe "rocksdb_dbpath_destroy"+foreign import ccall interruptible "rocksdb_dbpath_destroy" c_rocksdb_dbpath_destroy :: Ptr RocksdbDbpath -> IO () -foreign import ccall unsafe "rocksdb_create_default_env"+foreign import ccall interruptible "rocksdb_create_default_env" c_rocksdb_create_default_env :: IO (Ptr RocksdbEnv) -foreign import ccall unsafe "rocksdb_create_mem_env"+foreign import ccall interruptible "rocksdb_create_mem_env" c_rocksdb_create_mem_env :: IO (Ptr RocksdbEnv) -foreign import ccall unsafe "rocksdb_env_set_background_threads"+foreign import ccall interruptible+ "rocksdb_env_set_background_threads" c_rocksdb_env_set_background_threads :: Ptr RocksdbEnv -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_env_set_high_priority_background_threads" c_rocksdb_env_set_high_priority_background_threads :: Ptr RocksdbEnv -> CInt -> IO () -foreign import ccall unsafe "rocksdb_env_join_all_threads"+foreign import ccall interruptible "rocksdb_env_join_all_threads" c_rocksdb_env_join_all_threads :: Ptr RocksdbEnv -> IO () -foreign import ccall unsafe "rocksdb_env_destroy"+foreign import ccall interruptible "rocksdb_env_destroy" c_rocksdb_env_destroy :: Ptr RocksdbEnv -> IO () -foreign import ccall unsafe "rocksdb_envoptions_create"+foreign import ccall interruptible "rocksdb_envoptions_create" c_rocksdb_envoptions_create :: IO (Ptr RocksdbEnvoptions) -foreign import ccall unsafe "rocksdb_envoptions_destroy"+foreign import ccall interruptible "rocksdb_envoptions_destroy" c_rocksdb_envoptions_destroy :: Ptr RocksdbEnvoptions -> IO () -foreign import ccall unsafe "rocksdb_sstfilewriter_create"+foreign import ccall interruptible "rocksdb_sstfilewriter_create" c_rocksdb_sstfilewriter_create :: Ptr RocksdbEnvoptions -> Ptr RocksdbOptions -> IO (Ptr RocksdbSstfilewriter) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_sstfilewriter_create_with_comparator" c_rocksdb_sstfilewriter_create_with_comparator :: Ptr RocksdbEnvoptions -> Ptr RocksdbOptions -> Ptr RocksdbComparator -> IO (Ptr RocksdbSstfilewriter) -foreign import ccall unsafe "rocksdb_sstfilewriter_open"+foreign import ccall interruptible "rocksdb_sstfilewriter_open" c_rocksdb_sstfilewriter_open :: Ptr RocksdbSstfilewriter -> Ptr CChar -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_sstfilewriter_add"+foreign import ccall interruptible "rocksdb_sstfilewriter_add" c_rocksdb_sstfilewriter_add :: Ptr RocksdbSstfilewriter -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_sstfilewriter_put"+foreign import ccall interruptible "rocksdb_sstfilewriter_put" c_rocksdb_sstfilewriter_put :: Ptr RocksdbSstfilewriter -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_sstfilewriter_merge"+foreign import ccall interruptible "rocksdb_sstfilewriter_merge" c_rocksdb_sstfilewriter_merge :: Ptr RocksdbSstfilewriter -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_sstfilewriter_delete"+foreign import ccall interruptible "rocksdb_sstfilewriter_delete" c_rocksdb_sstfilewriter_delete :: Ptr RocksdbSstfilewriter -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_sstfilewriter_finish"+foreign import ccall interruptible "rocksdb_sstfilewriter_finish" c_rocksdb_sstfilewriter_finish :: Ptr RocksdbSstfilewriter -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_sstfilewriter_destroy"+foreign import ccall interruptible "rocksdb_sstfilewriter_destroy" c_rocksdb_sstfilewriter_destroy :: Ptr RocksdbSstfilewriter -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_ingestexternalfileoptions_create" c_rocksdb_ingestexternalfileoptions_create :: IO (Ptr RocksdbIngestexternalfileoptions) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_ingestexternalfileoptions_set_move_files" c_rocksdb_ingestexternalfileoptions_set_move_files :: Ptr RocksdbIngestexternalfileoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_ingestexternalfileoptions_set_snapshot_consistency" c_rocksdb_ingestexternalfileoptions_set_snapshot_consistency :: Ptr RocksdbIngestexternalfileoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_ingestexternalfileoptions_set_allow_global_seqno" c_rocksdb_ingestexternalfileoptions_set_allow_global_seqno :: Ptr RocksdbIngestexternalfileoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_ingestexternalfileoptions_set_allow_blocking_flush" c_rocksdb_ingestexternalfileoptions_set_allow_blocking_flush :: Ptr RocksdbIngestexternalfileoptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_ingestexternalfileoptions_destroy" c_rocksdb_ingestexternalfileoptions_destroy :: Ptr RocksdbIngestexternalfileoptions -> IO () -foreign import ccall unsafe "rocksdb_ingest_external_file"+foreign import ccall interruptible "rocksdb_ingest_external_file" c_rocksdb_ingest_external_file :: Ptr Rocksdb -> Ptr (Ptr CChar) -> CSize -> Ptr RocksdbIngestexternalfileoptions -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_ingest_external_file_cf"- c_rocksdb_ingest_external_file_cf ::+foreign import ccall interruptible+ "rocksdb_ingest_external_file_cf" c_rocksdb_ingest_external_file_cf+ :: Ptr Rocksdb -> Ptr RocksdbColumnFamilyHandle -> Ptr (Ptr CChar) -> CSize -> Ptr RocksdbIngestexternalfileoptions -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_slicetransform_create"+foreign import ccall interruptible "rocksdb_slicetransform_create" c_rocksdb_slicetransform_create :: Ptr () -> FunPtr (Ptr () -> IO ()) ->@@ -1795,16 +1870,17 @@ FunPtr (Ptr () -> Ptr CChar -> CSize -> IO CUChar) -> FunPtr (Ptr () -> IO (Ptr CChar)) -> IO (Ptr RocksdbSlicetransform) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_slicetransform_create_fixed_prefix" c_rocksdb_slicetransform_create_fixed_prefix :: CSize -> IO (Ptr RocksdbSlicetransform) -foreign import ccall unsafe "rocksdb_slicetransform_create_noop"+foreign import ccall interruptible+ "rocksdb_slicetransform_create_noop" c_rocksdb_slicetransform_create_noop :: IO (Ptr RocksdbSlicetransform) -foreign import ccall unsafe "rocksdb_slicetransform_destroy"+foreign import ccall interruptible "rocksdb_slicetransform_destroy" c_rocksdb_slicetransform_destroy :: Ptr RocksdbSlicetransform -> IO () @@ -1814,157 +1890,161 @@ c_rocksdb_total_size_compaction_stop_style = 1 -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_create" c_rocksdb_universal_compaction_options_create :: IO (Ptr RocksdbUniversalCompactionOptions) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_set_size_ratio" c_rocksdb_universal_compaction_options_set_size_ratio :: Ptr RocksdbUniversalCompactionOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_set_min_merge_width" c_rocksdb_universal_compaction_options_set_min_merge_width :: Ptr RocksdbUniversalCompactionOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_set_max_merge_width" c_rocksdb_universal_compaction_options_set_max_merge_width :: Ptr RocksdbUniversalCompactionOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_set_max_size_amplification_percent" c_rocksdb_universal_compaction_options_set_max_size_amplification_percent :: Ptr RocksdbUniversalCompactionOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_set_compression_size_percent" c_rocksdb_universal_compaction_options_set_compression_size_percent :: Ptr RocksdbUniversalCompactionOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_set_stop_style" c_rocksdb_universal_compaction_options_set_stop_style :: Ptr RocksdbUniversalCompactionOptions -> CInt -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_universal_compaction_options_destroy" c_rocksdb_universal_compaction_options_destroy :: Ptr RocksdbUniversalCompactionOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_fifo_compaction_options_create" c_rocksdb_fifo_compaction_options_create :: IO (Ptr RocksdbFifoCompactionOptions) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_fifo_compaction_options_set_max_table_files_size" c_rocksdb_fifo_compaction_options_set_max_table_files_size :: Ptr RocksdbFifoCompactionOptions -> Word64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_fifo_compaction_options_destroy" c_rocksdb_fifo_compaction_options_destroy :: Ptr RocksdbFifoCompactionOptions -> IO () -foreign import ccall unsafe "rocksdb_livefiles_count"+foreign import ccall interruptible "rocksdb_livefiles_count" c_rocksdb_livefiles_count :: Ptr RocksdbLivefiles -> IO CInt -foreign import ccall unsafe "rocksdb_livefiles_name"+foreign import ccall interruptible "rocksdb_livefiles_name" c_rocksdb_livefiles_name :: Ptr RocksdbLivefiles -> CInt -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_livefiles_level"+foreign import ccall interruptible "rocksdb_livefiles_level" c_rocksdb_livefiles_level :: Ptr RocksdbLivefiles -> CInt -> IO CInt -foreign import ccall unsafe "rocksdb_livefiles_size"+foreign import ccall interruptible "rocksdb_livefiles_size" c_rocksdb_livefiles_size :: Ptr RocksdbLivefiles -> CInt -> IO CSize -foreign import ccall unsafe "rocksdb_livefiles_smallestkey"+foreign import ccall interruptible "rocksdb_livefiles_smallestkey" c_rocksdb_livefiles_smallestkey :: Ptr RocksdbLivefiles -> CInt -> Ptr CSize -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_livefiles_largestkey"+foreign import ccall interruptible "rocksdb_livefiles_largestkey" c_rocksdb_livefiles_largestkey :: Ptr RocksdbLivefiles -> CInt -> Ptr CSize -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_livefiles_destroy"+foreign import ccall interruptible "rocksdb_livefiles_destroy" c_rocksdb_livefiles_destroy :: Ptr RocksdbLivefiles -> IO () -foreign import ccall unsafe "rocksdb_get_options_from_string"- c_rocksdb_get_options_from_string ::+foreign import ccall interruptible+ "rocksdb_get_options_from_string" c_rocksdb_get_options_from_string+ :: Ptr RocksdbOptions -> Ptr CChar -> Ptr RocksdbOptions -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_delete_file_in_range"+foreign import ccall interruptible "rocksdb_delete_file_in_range" c_rocksdb_delete_file_in_range :: Ptr Rocksdb -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_delete_file_in_range_cf"- c_rocksdb_delete_file_in_range_cf ::+foreign import ccall interruptible+ "rocksdb_delete_file_in_range_cf" c_rocksdb_delete_file_in_range_cf+ :: Ptr Rocksdb -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transactiondb_create_column_family" c_rocksdb_transactiondb_create_column_family :: Ptr RocksdbTransactiondb -> Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO (Ptr RocksdbColumnFamilyHandle) -foreign import ccall unsafe "rocksdb_transactiondb_open"+foreign import ccall interruptible "rocksdb_transactiondb_open" c_rocksdb_transactiondb_open :: Ptr RocksdbOptions -> Ptr RocksdbTransactiondbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO (Ptr RocksdbTransactiondb) -foreign import ccall unsafe "rocksdb_transactiondb_create_snapshot"+foreign import ccall interruptible+ "rocksdb_transactiondb_create_snapshot" c_rocksdb_transactiondb_create_snapshot :: Ptr RocksdbTransactiondb -> IO (Ptr RocksdbSnapshot) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transactiondb_release_snapshot" c_rocksdb_transactiondb_release_snapshot :: Ptr RocksdbTransactiondb -> Ptr RocksdbSnapshot -> IO () -foreign import ccall unsafe "rocksdb_transaction_begin"+foreign import ccall interruptible "rocksdb_transaction_begin" c_rocksdb_transaction_begin :: Ptr RocksdbTransactiondb -> Ptr RocksdbWriteoptions -> Ptr RocksdbTransactionOptions -> Ptr RocksdbTransaction -> IO (Ptr RocksdbTransaction) -foreign import ccall unsafe "rocksdb_transaction_commit"+foreign import ccall interruptible "rocksdb_transaction_commit" c_rocksdb_transaction_commit :: Ptr RocksdbTransaction -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transaction_rollback"+foreign import ccall interruptible "rocksdb_transaction_rollback" c_rocksdb_transaction_rollback :: Ptr RocksdbTransaction -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transaction_destroy"+foreign import ccall interruptible "rocksdb_transaction_destroy" c_rocksdb_transaction_destroy :: Ptr RocksdbTransaction -> IO () -foreign import ccall unsafe "rocksdb_transaction_get_snapshot"+foreign import ccall interruptible+ "rocksdb_transaction_get_snapshot" c_rocksdb_transaction_get_snapshot :: Ptr RocksdbTransaction -> IO (Ptr RocksdbSnapshot) -foreign import ccall unsafe "rocksdb_transaction_get"+foreign import ccall interruptible "rocksdb_transaction_get" c_rocksdb_transaction_get :: Ptr RocksdbTransaction -> Ptr RocksdbReadoptions -> Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_transaction_get_cf"+foreign import ccall interruptible "rocksdb_transaction_get_cf" c_rocksdb_transaction_get_cf :: Ptr RocksdbTransaction -> Ptr RocksdbReadoptions ->@@ -1972,21 +2052,22 @@ Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_transaction_get_for_update"+foreign import ccall interruptible+ "rocksdb_transaction_get_for_update" c_rocksdb_transaction_get_for_update :: Ptr RocksdbTransaction -> Ptr RocksdbReadoptions -> Ptr CChar -> CSize -> Ptr CSize -> CUChar -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_transactiondb_get"+foreign import ccall interruptible "rocksdb_transactiondb_get" c_rocksdb_transactiondb_get :: Ptr RocksdbTransactiondb -> Ptr RocksdbReadoptions -> Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_transactiondb_get_cf"+foreign import ccall interruptible "rocksdb_transactiondb_get_cf" c_rocksdb_transactiondb_get_cf :: Ptr RocksdbTransactiondb -> Ptr RocksdbReadoptions ->@@ -1994,27 +2075,27 @@ Ptr CChar -> CSize -> Ptr CSize -> Ptr (Ptr CChar) -> IO (Ptr CChar) -foreign import ccall unsafe "rocksdb_transaction_put"+foreign import ccall interruptible "rocksdb_transaction_put" c_rocksdb_transaction_put :: Ptr RocksdbTransaction -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transaction_put_cf"+foreign import ccall interruptible "rocksdb_transaction_put_cf" c_rocksdb_transaction_put_cf :: Ptr RocksdbTransaction -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transactiondb_put"+foreign import ccall interruptible "rocksdb_transactiondb_put" c_rocksdb_transactiondb_put :: Ptr RocksdbTransactiondb -> Ptr RocksdbWriteoptions -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transactiondb_put_cf"+foreign import ccall interruptible "rocksdb_transactiondb_put_cf" c_rocksdb_transactiondb_put_cf :: Ptr RocksdbTransactiondb -> Ptr RocksdbWriteoptions ->@@ -2022,177 +2103,187 @@ Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transactiondb_write"+foreign import ccall interruptible "rocksdb_transactiondb_write" c_rocksdb_transactiondb_write :: Ptr RocksdbTransactiondb -> Ptr RocksdbWriteoptions -> Ptr RocksdbWritebatch -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transaction_merge"+foreign import ccall interruptible "rocksdb_transaction_merge" c_rocksdb_transaction_merge :: Ptr RocksdbTransaction -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transactiondb_merge"+foreign import ccall interruptible "rocksdb_transactiondb_merge" c_rocksdb_transactiondb_merge :: Ptr RocksdbTransactiondb -> Ptr RocksdbWriteoptions -> Ptr CChar -> CSize -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transaction_delete"+foreign import ccall interruptible "rocksdb_transaction_delete" c_rocksdb_transaction_delete :: Ptr RocksdbTransaction -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transaction_delete_cf"+foreign import ccall interruptible "rocksdb_transaction_delete_cf" c_rocksdb_transaction_delete_cf :: Ptr RocksdbTransaction -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transactiondb_delete"+foreign import ccall interruptible "rocksdb_transactiondb_delete" c_rocksdb_transactiondb_delete :: Ptr RocksdbTransactiondb -> Ptr RocksdbWriteoptions -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transactiondb_delete_cf"- c_rocksdb_transactiondb_delete_cf ::+foreign import ccall interruptible+ "rocksdb_transactiondb_delete_cf" c_rocksdb_transactiondb_delete_cf+ :: Ptr RocksdbTransactiondb -> Ptr RocksdbWriteoptions -> Ptr RocksdbColumnFamilyHandle -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO () -foreign import ccall unsafe "rocksdb_transaction_create_iterator"+foreign import ccall interruptible+ "rocksdb_transaction_create_iterator" c_rocksdb_transaction_create_iterator :: Ptr RocksdbTransaction -> Ptr RocksdbReadoptions -> IO (Ptr RocksdbIterator) -foreign import ccall unsafe "rocksdb_transactiondb_create_iterator"+foreign import ccall interruptible+ "rocksdb_transactiondb_create_iterator" c_rocksdb_transactiondb_create_iterator :: Ptr RocksdbTransactiondb -> Ptr RocksdbReadoptions -> IO (Ptr RocksdbIterator) -foreign import ccall unsafe "rocksdb_transactiondb_close"+foreign import ccall interruptible "rocksdb_transactiondb_close" c_rocksdb_transactiondb_close :: Ptr RocksdbTransactiondb -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transactiondb_checkpoint_object_create" c_rocksdb_transactiondb_checkpoint_object_create :: Ptr RocksdbTransactiondb -> Ptr (Ptr CChar) -> IO (Ptr RocksdbCheckpoint) -foreign import ccall unsafe "rocksdb_optimistictransactiondb_open"+foreign import ccall interruptible+ "rocksdb_optimistictransactiondb_open" c_rocksdb_optimistictransactiondb_open :: Ptr RocksdbOptions -> Ptr CChar -> Ptr (Ptr CChar) -> IO (Ptr RocksdbOptimistictransactiondb) -foreign import ccall unsafe "rocksdb_optimistictransaction_begin"+foreign import ccall interruptible+ "rocksdb_optimistictransaction_begin" c_rocksdb_optimistictransaction_begin :: Ptr RocksdbOptimistictransactiondb -> Ptr RocksdbWriteoptions -> Ptr RocksdbOptimistictransactionOptions -> Ptr RocksdbTransaction -> IO (Ptr RocksdbTransaction) -foreign import ccall unsafe "rocksdb_optimistictransactiondb_close"+foreign import ccall interruptible+ "rocksdb_optimistictransactiondb_close" c_rocksdb_optimistictransactiondb_close :: Ptr RocksdbOptimistictransactiondb -> IO () -foreign import ccall unsafe "rocksdb_transactiondb_options_create"+foreign import ccall interruptible+ "rocksdb_transactiondb_options_create" c_rocksdb_transactiondb_options_create :: IO (Ptr RocksdbTransactiondbOptions) -foreign import ccall unsafe "rocksdb_transactiondb_options_destroy"+foreign import ccall interruptible+ "rocksdb_transactiondb_options_destroy" c_rocksdb_transactiondb_options_destroy :: Ptr RocksdbTransactiondbOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transactiondb_options_set_max_num_locks" c_rocksdb_transactiondb_options_set_max_num_locks :: Ptr RocksdbTransactiondbOptions -> Int64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transactiondb_options_set_num_stripes" c_rocksdb_transactiondb_options_set_num_stripes :: Ptr RocksdbTransactiondbOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transactiondb_options_set_transaction_lock_timeout" c_rocksdb_transactiondb_options_set_transaction_lock_timeout :: Ptr RocksdbTransactiondbOptions -> Int64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transactiondb_options_set_default_lock_timeout" c_rocksdb_transactiondb_options_set_default_lock_timeout :: Ptr RocksdbTransactiondbOptions -> Int64 -> IO () -foreign import ccall unsafe "rocksdb_transaction_options_create"+foreign import ccall interruptible+ "rocksdb_transaction_options_create" c_rocksdb_transaction_options_create :: IO (Ptr RocksdbTransactionOptions) -foreign import ccall unsafe "rocksdb_transaction_options_destroy"+foreign import ccall interruptible+ "rocksdb_transaction_options_destroy" c_rocksdb_transaction_options_destroy :: Ptr RocksdbTransactionOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transaction_options_set_set_snapshot" c_rocksdb_transaction_options_set_set_snapshot :: Ptr RocksdbTransactionOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transaction_options_set_deadlock_detect" c_rocksdb_transaction_options_set_deadlock_detect :: Ptr RocksdbTransactionOptions -> CUChar -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transaction_options_set_lock_timeout" c_rocksdb_transaction_options_set_lock_timeout :: Ptr RocksdbTransactionOptions -> Int64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transaction_options_set_expiration" c_rocksdb_transaction_options_set_expiration :: Ptr RocksdbTransactionOptions -> Int64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transaction_options_set_deadlock_detect_depth" c_rocksdb_transaction_options_set_deadlock_detect_depth :: Ptr RocksdbTransactionOptions -> Int64 -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_transaction_options_set_max_write_batch_size" c_rocksdb_transaction_options_set_max_write_batch_size :: Ptr RocksdbTransactionOptions -> CSize -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_optimistictransaction_options_create" c_rocksdb_optimistictransaction_options_create :: IO (Ptr RocksdbOptimistictransactionOptions) -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_optimistictransaction_options_destroy" c_rocksdb_optimistictransaction_options_destroy :: Ptr RocksdbOptimistictransactionOptions -> IO () -foreign import ccall unsafe+foreign import ccall interruptible "rocksdb_optimistictransaction_options_set_set_snapshot" c_rocksdb_optimistictransaction_options_set_set_snapshot :: Ptr RocksdbOptimistictransactionOptions -> CUChar -> IO () -foreign import ccall unsafe "rocksdb_free" c_rocksdb_free ::+foreign import ccall interruptible "rocksdb_free" c_rocksdb_free :: Ptr () -> IO () -foreign import ccall unsafe "rocksdb_get_pinned"+foreign import ccall interruptible "rocksdb_get_pinned" c_rocksdb_get_pinned :: Ptr Rocksdb -> Ptr RocksdbReadoptions -> Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO (Ptr RocksdbPinnableslice) -foreign import ccall unsafe "rocksdb_get_pinned_cf"+foreign import ccall interruptible "rocksdb_get_pinned_cf" c_rocksdb_get_pinned_cf :: Ptr Rocksdb -> Ptr RocksdbReadoptions ->@@ -2200,10 +2291,10 @@ Ptr CChar -> CSize -> Ptr (Ptr CChar) -> IO (Ptr RocksdbPinnableslice) -foreign import ccall unsafe "rocksdb_pinnableslice_destroy"+foreign import ccall interruptible "rocksdb_pinnableslice_destroy" c_rocksdb_pinnableslice_destroy :: Ptr RocksdbPinnableslice -> IO () -foreign import ccall unsafe "rocksdb_pinnableslice_value"+foreign import ccall interruptible "rocksdb_pinnableslice_value" c_rocksdb_pinnableslice_value :: Ptr RocksdbPinnableslice -> Ptr CSize -> IO (Ptr CChar)
src/Database/RocksDB/Options.hs view
@@ -8,8 +8,8 @@ import Database.RocksDB.Internals import Database.RocksDB.Utils-import Foreign-import GHC.ForeignPtr+import Foreign hiding (newForeignPtr)+import Foreign.Concurrent data Options = Options { totalThreads :: !(Maybe Int)@@ -27,4 +27,4 @@ setIntOptions totalThreads $c_rocksdb_options_increase_parallelism opts_p setBoolOptions createIfMissing $ c_rocksdb_options_set_create_if_missing opts_p- newConcForeignPtr opts_p $ c_rocksdb_options_destroy opts_p+ newForeignPtr opts_p $ c_rocksdb_options_destroy opts_p
src/Database/RocksDB/ReadOptions.hs view
@@ -8,8 +8,8 @@ import Database.RocksDB.Internals import Database.RocksDB.Utils-import Foreign-import GHC.ForeignPtr+import Foreign hiding (newForeignPtr)+import Foreign.Concurrent data ReadOptions = ReadOptions { verityChecksums :: !(Maybe Bool)@@ -28,4 +28,4 @@ setBoolOptions verityChecksums $ c_rocksdb_readoptions_set_verify_checksums ropts_p setBoolOptions fillCache $ c_rocksdb_readoptions_set_fill_cache ropts_p- newConcForeignPtr ropts_p $ c_rocksdb_readoptions_destroy ropts_p+ newForeignPtr ropts_p $ c_rocksdb_readoptions_destroy ropts_p
src/Database/RocksDB/Utils.hs view
@@ -1,9 +1,15 @@ module Database.RocksDB.Utils ( setIntOptions , setBoolOptions+ , withErrorMessagePtr ) where +import Control.Exception.Safe+import qualified Data.ByteString as BS import Data.Foldable+import Database.RocksDB.Exceptions+import Foreign+import Foreign.C setIntOptions :: Integral t => Maybe Int -> (t -> IO ()) -> IO () {-# INLINEABLE setIntOptions #-}@@ -17,3 +23,15 @@ if val then 1 else 0++withErrorMessagePtr :: (Ptr (Ptr CChar) -> IO r) -> IO r+{-# INLINEABLE withErrorMessagePtr #-}+withErrorMessagePtr cont =+ alloca $ \p -> do+ r <- cont p+ p' <- peek p+ if p' == nullPtr+ then pure r+ else do+ msg <- BS.packCString p'+ throw $ RocksDBException msg
src/Database/RocksDB/WriteOptions.hs view
@@ -8,8 +8,8 @@ import Database.RocksDB.Internals import Database.RocksDB.Utils-import Foreign-import GHC.ForeignPtr+import Foreign hiding (newForeignPtr)+import Foreign.Concurrent data WriteOptions = WriteOptions { sync :: !(Maybe Bool)@@ -26,4 +26,4 @@ wopts_p <- c_rocksdb_writeoptions_create setBoolOptions sync $ c_rocksdb_writeoptions_set_sync wopts_p setIntOptions disableWAL $ c_rocksdb_writeoptions_disable_WAL wopts_p- newConcForeignPtr wopts_p $ c_rocksdb_writeoptions_destroy wopts_p+ newForeignPtr wopts_p $ c_rocksdb_writeoptions_destroy wopts_p