From 6ba45b8496696587d5fb0d0ecc2fa6dc9dd289e2 Mon Sep 17 00:00:00 2001 From: Ziyang Hu Date: Fri, 21 Oct 2022 23:14:09 +0800 Subject: [PATCH] build rocksdb with build script --- Cargo.lock | 156 ++------------- cozorocks/Cargo.toml | 12 +- cozorocks/README.md | 5 + cozorocks/build.rs | 301 +++++++++++++++++++++++++++-- cozorocks/build_version.cc | 81 ++++++++ cozorocks/rocksdb_lib_sources.txt | 310 ++++++++++++++++++++++++++++++ 6 files changed, 707 insertions(+), 158 deletions(-) create mode 100644 cozorocks/README.md create mode 100644 cozorocks/build_version.cc create mode 100644 cozorocks/rocksdb_lib_sources.txt diff --git a/Cargo.lock b/Cargo.lock index c4351aa6..6d0f366d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -129,25 +129,6 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" -[[package]] -name = "bindgen" -version = "0.60.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -224,17 +205,6 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - [[package]] name = "casey" version = "0.3.3" @@ -253,15 +223,6 @@ dependencies = [ "jobserver", ] -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" version = "0.1.10" @@ -317,17 +278,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e" -[[package]] -name = "clang-sys" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" version = "3.2.22" @@ -431,11 +381,15 @@ dependencies = [ name = "cozorocks" version = "0.1.0" dependencies = [ + "cc", "cxx", "cxx-build", - "librocksdb-sys", + "libc", + "lz4-sys", "miette", "pkg-config", + "tikv-jemalloc-sys", + "zstd-sys", ] [[package]] @@ -677,12 +631,6 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" - [[package]] name = "gzip-header" version = "1.0.0" @@ -838,56 +786,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.135" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" -[[package]] -name = "libloading" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" -dependencies = [ - "cfg-if 1.0.0", - "winapi", -] - -[[package]] -name = "librocksdb-sys" -version = "0.8.0+7.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611804e4666a25136fcc5f8cf425ab4d26c7f74ea245ffe92ea23b85b6420b5d" -dependencies = [ - "bindgen", - "bzip2-sys", - "cc", - "glob", - "libc", - "libz-sys", - "pkg-config", - "tikv-jemalloc-sys", - "zstd-sys", -] - -[[package]] -name = "libz-sys" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] - [[package]] name = "link-cplusplus" version = "1.0.7" @@ -906,6 +810,16 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "lz4-sys" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "matrixmultiply" version = "0.3.2" @@ -977,12 +891,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.5.4" @@ -1050,16 +958,6 @@ dependencies = [ "syn", ] -[[package]] -name = "nom" -version = "7.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "num-complex" version = "0.4.2" @@ -1169,12 +1067,6 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "percent-encoding" version = "2.2.0" @@ -1513,12 +1405,6 @@ version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustls" version = "0.20.7" @@ -1622,12 +1508,6 @@ dependencies = [ "digest", ] -[[package]] -name = "shlex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" - [[package]] name = "simba" version = "0.7.2" @@ -1987,12 +1867,6 @@ dependencies = [ "serde", ] -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "version_check" version = "0.9.4" diff --git a/cozorocks/Cargo.toml b/cozorocks/Cargo.toml index e396d2d0..c171439f 100644 --- a/cozorocks/Cargo.toml +++ b/cozorocks/Cargo.toml @@ -2,19 +2,23 @@ name = "cozorocks" version = "0.1.0" edition = "2021" -license = "AGPL-3.0-or-later" +license = "MIT/Apache-2.0/BSD-3-Clause" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] cxx = "1.0.69" miette = "5.3.0" -librocksdb-sys = { version = "=0.8.0", features = ["lz4", "zstd"] } +libc = "0.2" +tikv-jemalloc-sys = { version = "0.5", features = ["unprefixed_malloc_on_supported_platforms"], optional = true } +lz4-sys = { version = "1.9" } +zstd-sys = { version = "2.0", features = ["zdict_builder"] } [features] -jemalloc = ["librocksdb-sys/jemalloc"] -io-uring = ["librocksdb-sys/io-uring", "pkg-config"] +jemalloc = ["tikv-jemalloc-sys"] +io-uring = ["pkg-config"] [build-dependencies] cxx-build = "1.0.69" pkg-config = { version = "0.3.25", optional = true } +cc = { version = "1.0", features = ["parallel"] } diff --git a/cozorocks/README.md b/cozorocks/README.md new file mode 100644 index 00000000..8142393a --- /dev/null +++ b/cozorocks/README.md @@ -0,0 +1,5 @@ +# Cozorocks + +Bindings to RocksDB's C++ API. + +Much of the build script is built upon https://github.com/rust-rocksdb/rust-rocksdb/tree/master/librocksdb-sys. \ No newline at end of file diff --git a/cozorocks/build.rs b/cozorocks/build.rs index 9469ff37..aa234325 100644 --- a/cozorocks/build.rs +++ b/cozorocks/build.rs @@ -1,12 +1,42 @@ -use std::env::var; +use std::path::Path; +use std::{env, fs, process::Command}; fn main() { - let target = var("TARGET").unwrap(); + if !Path::new("rocksdb/AUTHORS").exists() { + update_submodules(); + } + + if !try_to_find_and_link_lib("ROCKSDB") { + println!("cargo:rerun-if-changed=rocksdb/"); + fail_on_empty_directory("rocksdb"); + build_rocksdb(); + } else { + let target = env::var("TARGET").unwrap(); + // according to https://github.com/alexcrichton/cc-rs/blob/master/src/lib.rs#L2189 + if target.contains("apple") || target.contains("freebsd") || target.contains("openbsd") { + println!("cargo:rustc-link-lib=dylib=c++"); + } else if target.contains("linux") { + println!("cargo:rustc-link-lib=dylib=stdc++"); + } + } + + // Allow dependent crates to locate the sources and output directory of + // this crate. Notably, this allows a dependent crate to locate the RocksDB + // sources and built archive artifacts provided by this crate. + println!( + "cargo:cargo_manifest_dir={}", + env::var("CARGO_MANIFEST_DIR").unwrap() + ); + println!("cargo:out_dir={}", env::var("OUT_DIR").unwrap()); + + + + let target = env::var("TARGET").unwrap(); let mut builder = cxx_build::bridge("src/bridge/mod.rs"); builder .files(["bridge/status.cpp", "bridge/db.cpp", "bridge/tx.cpp"]) - .include("rocksdb/include") + .include(rocksdb_include_dir()) .include("bridge"); if target.contains("msvc") { builder.flag_if_supported("-EHsc"); @@ -73,17 +103,8 @@ fn main() { println!("cargo:rerun-if-changed=bridge/tx.cpp"); } -fn cxx_standard() -> String { - var("ROCKSDB_CXX_STD").map_or("-std=c++17".to_owned(), |cxx_std| { - if !cxx_std.starts_with("-std=") { - format!("-std={}", cxx_std) - } else { - cxx_std - } - }) -} - fn link(name: &str, bundled: bool) { + use std::env::var; let target = var("TARGET").unwrap(); let target: Vec<_> = target.split('-').collect(); if target.get(2) == Some(&"windows") { @@ -93,4 +114,258 @@ fn link(name: &str, bundled: bool) { println!("cargo:rustc-link-search=native={}/{}", dir, target[0]); } } +} + +fn fail_on_empty_directory(name: &str) { + if fs::read_dir(name).unwrap().count() == 0 { + println!( + "The `{}` directory is empty, did you forget to pull the submodules?", + name + ); + println!("Try `git submodule update --init --recursive`"); + panic!(); + } +} + +fn rocksdb_include_dir() -> String { + match env::var("ROCKSDB_INCLUDE_DIR") { + Ok(val) => val, + Err(_) => "rocksdb/include".to_string(), + } +} + +fn build_rocksdb() { + let target = env::var("TARGET").unwrap(); + + let mut config = cc::Build::new(); + config.include("rocksdb/include/"); + config.include("rocksdb/"); + config.include("rocksdb/third-party/gtest-1.8.1/fused-src/"); + + config.define("LZ4", Some("1")); + if let Some(path) = env::var_os("DEP_LZ4_INCLUDE") { + config.include(path); + } + + config.define("ZSTD", Some("1")); + if let Some(path) = env::var_os("DEP_ZSTD_INCLUDE") { + config.include(path); + } + + config.include("."); + config.define("NDEBUG", Some("1")); + + let mut lib_sources = include_str!("rocksdb_lib_sources.txt") + .trim() + .split('\n') + .map(str::trim) + // We have a pre-generated a version of build_version.cc in the local directory + .filter(|file| !matches!(*file, "util/build_version.cc")) + .collect::>(); + + if target.contains("x86_64") { + // This is needed to enable hardware CRC32C. Technically, SSE 4.2 is + // only available since Intel Nehalem (about 2010) and AMD Bulldozer + // (about 2011). + let target_feature = env::var("CARGO_CFG_TARGET_FEATURE").unwrap(); + let target_features: Vec<_> = target_feature.split(',').collect(); + if target_features.contains(&"sse2") { + config.flag_if_supported("-msse2"); + } + if target_features.contains(&"sse4.1") { + config.flag_if_supported("-msse4.1"); + } + if target_features.contains(&"sse4.2") { + config.flag_if_supported("-msse4.2"); + config.define("HAVE_SSE42", Some("1")); + } + // Pass along additional target features as defined in + // build_tools/build_detect_platform. + if target_features.contains(&"avx2") { + config.flag_if_supported("-mavx2"); + config.define("HAVE_AVX2", Some("1")); + } + if target_features.contains(&"bmi1") { + config.flag_if_supported("-mbmi"); + config.define("HAVE_BMI", Some("1")); + } + if target_features.contains(&"lzcnt") { + config.flag_if_supported("-mlzcnt"); + config.define("HAVE_LZCNT", Some("1")); + } + if !target.contains("android") && target_features.contains(&"pclmulqdq") { + config.define("HAVE_PCLMUL", Some("1")); + config.flag_if_supported("-mpclmul"); + } + } + + if target.contains("apple-ios") { + config.define("OS_MACOSX", None); + + config.define("IOS_CROSS_COMPILE", None); + config.define("PLATFORM", "IOS"); + config.define("NIOSTATS_CONTEXT", None); + config.define("NPERF_CONTEXT", None); + config.define("ROCKSDB_PLATFORM_POSIX", None); + config.define("ROCKSDB_LIB_IO_POSIX", None); + + env::set_var("IPHONEOS_DEPLOYMENT_TARGET", "11.0"); + } else if target.contains("darwin") { + config.define("OS_MACOSX", None); + config.define("ROCKSDB_PLATFORM_POSIX", None); + config.define("ROCKSDB_LIB_IO_POSIX", None); + } else if target.contains("android") { + config.define("OS_ANDROID", None); + config.define("ROCKSDB_PLATFORM_POSIX", None); + config.define("ROCKSDB_LIB_IO_POSIX", None); + } else if target.contains("linux") { + config.define("OS_LINUX", None); + config.define("ROCKSDB_PLATFORM_POSIX", None); + config.define("ROCKSDB_LIB_IO_POSIX", None); + } else if target.contains("freebsd") { + config.define("OS_FREEBSD", None); + config.define("ROCKSDB_PLATFORM_POSIX", None); + config.define("ROCKSDB_LIB_IO_POSIX", None); + } else if target.contains("windows") { + link("rpcrt4", false); + link("shlwapi", false); + config.define("DWIN32", None); + config.define("OS_WIN", None); + config.define("_MBCS", None); + config.define("WIN64", None); + config.define("NOMINMAX", None); + config.define("ROCKSDB_WINDOWS_UTF8_FILENAMES", None); + + if &target == "x86_64-pc-windows-gnu" { + // Tell MinGW to create localtime_r wrapper of localtime_s function. + config.define("_POSIX_C_SOURCE", Some("1")); + // Tell MinGW to use at least Windows Vista headers instead of the ones of Windows XP. + // (This is minimum supported version of rocksdb) + config.define("_WIN32_WINNT", Some("_WIN32_WINNT_VISTA")); + } + + // Remove POSIX-specific sources + lib_sources = lib_sources + .iter() + .cloned() + .filter(|file| { + !matches!( + *file, + "port/port_posix.cc" + | "env/env_posix.cc" + | "env/fs_posix.cc" + | "env/io_posix.cc" + ) + }) + .collect::>(); + + // Add Windows-specific sources + lib_sources.extend([ + "port/win/env_default.cc", + "port/win/port_win.cc", + "port/win/xpress_win.cc", + "port/win/io_win.cc", + "port/win/win_thread.cc", + "port/win/env_win.cc", + "port/win/win_logger.cc", + ]); + + if cfg!(feature = "jemalloc") { + lib_sources.push("port/win/win_jemalloc.cc"); + } + } + + config.define("ROCKSDB_SUPPORT_THREAD_LOCAL", None); + + if cfg!(feature = "jemalloc") { + config.define("WITH_JEMALLOC", "ON"); + } + + #[cfg(feature = "io-uring")] + if target.contains("linux") { + pkg_config::probe_library("liburing") + .expect("The io-uring feature was requested but the library is not available"); + config.define("ROCKSDB_IOURING_PRESENT", Some("1")); + } + + if target.contains("msvc") { + config.flag("-EHsc"); + config.flag("-std:c++17"); + } else { + config.flag(&cxx_standard()); + // matches the flags in CMakeLists.txt from rocksdb + config.define("HAVE_UINT128_EXTENSION", Some("1")); + config.flag("-Wsign-compare"); + config.flag("-Wshadow"); + config.flag("-Wno-unused-parameter"); + config.flag("-Wno-unused-variable"); + config.flag("-Woverloaded-virtual"); + config.flag("-Wnon-virtual-dtor"); + config.flag("-Wno-missing-field-initializers"); + config.flag("-Wno-strict-aliasing"); + config.flag("-Wno-invalid-offsetof"); + } + + for file in lib_sources { + config.file(&format!("rocksdb/{file}")); + } + + config.file("build_version.cc"); + + config.cpp(true); + config.flag_if_supported("-std=c++17"); + config.compile("librocksdb.a"); +} + +fn try_to_find_and_link_lib(lib_name: &str) -> bool { + println!("cargo:rerun-if-env-changed={}_COMPILE", lib_name); + if let Ok(v) = env::var(&format!("{}_COMPILE", lib_name)) { + if v.to_lowercase() == "true" || v == "1" { + return false; + } + } + + println!("cargo:rerun-if-env-changed={}_LIB_DIR", lib_name); + println!("cargo:rerun-if-env-changed={}_STATIC", lib_name); + + if let Ok(lib_dir) = env::var(&format!("{}_LIB_DIR", lib_name)) { + println!("cargo:rustc-link-search=native={}", lib_dir); + let mode = match env::var_os(&format!("{}_STATIC", lib_name)) { + Some(_) => "static", + None => "dylib", + }; + println!("cargo:rustc-link-lib={}={}", mode, lib_name.to_lowercase()); + return true; + } + false +} + +fn cxx_standard() -> String { + env::var("ROCKSDB_CXX_STD").map_or("-std=c++17".to_owned(), |cxx_std| { + if !cxx_std.starts_with("-std=") { + format!("-std={}", cxx_std) + } else { + cxx_std + } + }) +} + +fn update_submodules() { + let program = "git"; + let dir = "../"; + let args = ["submodule", "update", "--init"]; + println!( + "Running command: \"{} {}\" in dir: {}", + program, + args.join(" "), + dir + ); + let ret = Command::new(program).current_dir(dir).args(args).status(); + + match ret.map(|status| (status.success(), status.code())) { + Ok((true, _)) => (), + Ok((false, Some(c))) => panic!("Command failed with error code {}", c), + Ok((false, None)) => panic!("Command got killed"), + Err(e) => panic!("Command failed with error: {}", e), + } } \ No newline at end of file diff --git a/cozorocks/build_version.cc b/cozorocks/build_version.cc new file mode 100644 index 00000000..a2fabfd1 --- /dev/null +++ b/cozorocks/build_version.cc @@ -0,0 +1,81 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + +#include + +#include "rocksdb/version.h" +#include "rocksdb/utilities/object_registry.h" +#include "util/string_util.h" + +// The build script may replace these values with real values based +// on whether or not GIT is available and the platform settings +static const std::string rocksdb_build_git_sha = "eb9a80fe1f18017b4d7f4084e8f2554f12234822"; +static const std::string rocksdb_build_git_tag = "rocksdb_build_git_tag:v7.7.3"; +#define HAS_GIT_CHANGES 0 +#if HAS_GIT_CHANGES == 0 +// If HAS_GIT_CHANGES is 0, the GIT date is used. +// Use the time the branch/tag was last modified +static const std::string rocksdb_build_date = "rocksdb_build_date:2022-10-11 08:49:59"; +#else +// If HAS_GIT_CHANGES is > 0, the branch/tag has modifications. +// Use the time the build was created. +static const std::string rocksdb_build_date = "rocksdb_build_date:2022-07-19 08:49:59"; +#endif + +#ifndef ROCKSDB_LITE +extern "C" { + +} // extern "C" + +std::unordered_map ROCKSDB_NAMESPACE::ObjectRegistry::builtins_ = { + +}; +#endif //ROCKSDB_LITE + +namespace ROCKSDB_NAMESPACE { +static void AddProperty(std::unordered_map *props, const std::string& name) { + size_t colon = name.find(":"); + if (colon != std::string::npos && colon > 0 && colon < name.length() - 1) { + // If we found a "@:", then this property was a build-time substitution that failed. Skip it + size_t at = name.find("@", colon); + if (at != colon + 1) { + // Everything before the colon is the name, after is the value + (*props)[name.substr(0, colon)] = name.substr(colon + 1); + } + } +} + +static std::unordered_map* LoadPropertiesSet() { + auto * properties = new std::unordered_map(); + AddProperty(properties, rocksdb_build_git_sha); + AddProperty(properties, rocksdb_build_git_tag); + AddProperty(properties, rocksdb_build_date); + return properties; +} + +const std::unordered_map& GetRocksBuildProperties() { + static std::unique_ptr> props(LoadPropertiesSet()); + return *props; +} + +std::string GetRocksVersionAsString(bool with_patch) { + std::string version = std::to_string(ROCKSDB_MAJOR) + "." + std::to_string(ROCKSDB_MINOR); + if (with_patch) { + return version + "." + std::to_string(ROCKSDB_PATCH); + } else { + return version; + } +} + +std::string GetRocksBuildInfoAsString(const std::string& program, bool verbose) { + std::string info = program + " (RocksDB) " + GetRocksVersionAsString(true); + if (verbose) { + for (const auto& it : GetRocksBuildProperties()) { + info.append("\n "); + info.append(it.first); + info.append(": "); + info.append(it.second); + } + } + return info; +} +} // namespace ROCKSDB_NAMESPACE diff --git a/cozorocks/rocksdb_lib_sources.txt b/cozorocks/rocksdb_lib_sources.txt new file mode 100644 index 00000000..7c25ead2 --- /dev/null +++ b/cozorocks/rocksdb_lib_sources.txt @@ -0,0 +1,310 @@ +cache/cache.cc +cache/cache_entry_roles.cc +cache/cache_key.cc +cache/cache_reservation_manager.cc +cache/charged_cache.cc +cache/clock_cache.cc +cache/fast_lru_cache.cc +cache/lru_cache.cc +cache/compressed_secondary_cache.cc +cache/sharded_cache.cc +db/arena_wrapped_db_iter.cc +db/blob/blob_contents.cc +db/blob/blob_fetcher.cc +db/blob/blob_file_addition.cc +db/blob/blob_file_builder.cc +db/blob/blob_file_cache.cc +db/blob/blob_file_garbage.cc +db/blob/blob_file_meta.cc +db/blob/blob_file_reader.cc +db/blob/blob_garbage_meter.cc +db/blob/blob_log_format.cc +db/blob/blob_log_sequential_reader.cc +db/blob/blob_log_writer.cc +db/blob/blob_source.cc +db/blob/prefetch_buffer_collection.cc +db/builder.cc +db/c.cc +db/column_family.cc +db/compaction/compaction.cc +db/compaction/compaction_iterator.cc +db/compaction/compaction_job.cc +db/compaction/compaction_picker.cc +db/compaction/compaction_picker_fifo.cc +db/compaction/compaction_picker_level.cc +db/compaction/compaction_picker_universal.cc +db/compaction/compaction_service_job.cc +db/compaction/compaction_state.cc +db/compaction/compaction_outputs.cc +db/compaction/sst_partitioner.cc +db/compaction/subcompaction_state.cc +db/convenience.cc +db/db_filesnapshot.cc +db/db_impl/compacted_db_impl.cc +db/db_impl/db_impl.cc +db/db_impl/db_impl_compaction_flush.cc +db/db_impl/db_impl_debug.cc +db/db_impl/db_impl_experimental.cc +db/db_impl/db_impl_files.cc +db/db_impl/db_impl_open.cc +db/db_impl/db_impl_readonly.cc +db/db_impl/db_impl_secondary.cc +db/db_impl/db_impl_write.cc +db/db_info_dumper.cc +db/db_iter.cc +db/dbformat.cc +db/error_handler.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/import_column_family_job.cc +db/internal_stats.cc +db/logs_with_prep_tracker.cc +db/log_reader.cc +db/log_writer.cc +db/malloc_stats.cc +db/memtable.cc +db/memtable_list.cc +db/merge_helper.cc +db/merge_operator.cc +db/output_validator.cc +db/periodic_task_scheduler.cc +db/range_del_aggregator.cc +db/range_tombstone_fragmenter.cc +db/repair.cc +db/seqno_to_time_mapping.cc +db/snapshot_impl.cc +db/table_cache.cc +db/table_properties_collector.cc +db/transaction_log_impl.cc +db/trim_history_scheduler.cc +db/version_builder.cc +db/version_edit.cc +db/version_edit_handler.cc +db/version_set.cc +db/wal_edit.cc +db/wal_manager.cc +db/wide/wide_column_serialization.cc +db/wide/wide_columns.cc +db/write_batch.cc +db/write_batch_base.cc +db/write_controller.cc +db/write_thread.cc +env/composite_env.cc +env/env.cc +env/env_chroot.cc +env/env_encryption.cc +env/env_posix.cc +env/file_system.cc +env/fs_posix.cc +env/fs_remap.cc +env/file_system_tracer.cc +env/io_posix.cc +env/mock_env.cc +env/unique_id_gen.cc +file/delete_scheduler.cc +file/file_prefetch_buffer.cc +file/file_util.cc +file/filename.cc +file/line_file_reader.cc +file/random_access_file_reader.cc +file/read_write_util.cc +file/readahead_raf.cc +file/sequence_file_reader.cc +file/sst_file_manager_impl.cc +file/writable_file_writer.cc +logging/auto_roll_logger.cc +logging/event_logger.cc +logging/log_buffer.cc +memory/arena.cc +memory/concurrent_arena.cc +memory/jemalloc_nodump_allocator.cc +memory/memkind_kmem_allocator.cc +memory/memory_allocator.cc +memtable/alloc_tracker.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/in_memory_stats_history.cc +monitoring/instrumented_mutex.cc +monitoring/iostats_context.cc +monitoring/perf_context.cc +monitoring/perf_level.cc +monitoring/persistent_stats_history.cc +monitoring/statistics.cc +monitoring/thread_status_impl.cc +monitoring/thread_status_updater.cc +monitoring/thread_status_updater_debug.cc +monitoring/thread_status_util.cc +monitoring/thread_status_util_debug.cc +options/cf_options.cc +options/configurable.cc +options/customizable.cc +options/db_options.cc +options/options.cc +options/options_helper.cc +options/options_parser.cc +port/port_posix.cc +port/win/env_default.cc +port/win/env_win.cc +port/win/io_win.cc +port/win/port_win.cc +port/win/win_logger.cc +port/win/win_thread.cc +port/stack_trace.cc +table/adaptive/adaptive_table_factory.cc +table/block_based/binary_search_index_reader.cc +table/block_based/block.cc +table/block_based/block_based_table_builder.cc +table/block_based/block_based_table_factory.cc +table/block_based/block_based_table_iterator.cc +table/block_based/block_based_table_reader.cc +table/block_based/block_builder.cc +table/block_based/block_prefetcher.cc +table/block_based/block_prefix_index.cc +table/block_based/data_block_hash_index.cc +table/block_based/data_block_footer.cc +table/block_based/filter_block_reader_common.cc +table/block_based/filter_policy.cc +table/block_based/flush_block_policy.cc +table/block_based/full_filter_block.cc +table/block_based/hash_index_reader.cc +table/block_based/index_builder.cc +table/block_based/index_reader_common.cc +table/block_based/parsed_full_filter_block.cc +table/block_based/partitioned_filter_block.cc +table/block_based/partitioned_index_iterator.cc +table/block_based/partitioned_index_reader.cc +table/block_based/reader_common.cc +table/block_based/uncompression_dict_reader.cc +table/block_fetcher.cc +table/cuckoo/cuckoo_table_builder.cc +table/cuckoo/cuckoo_table_factory.cc +table/cuckoo/cuckoo_table_reader.cc +table/format.cc +table/get_context.cc +table/iterator.cc +table/merging_iterator.cc +table/meta_blocks.cc +table/persistent_cache_helper.cc +table/plain/plain_table_bloom.cc +table/plain/plain_table_builder.cc +table/plain/plain_table_factory.cc +table/plain/plain_table_index.cc +table/plain/plain_table_key_coding.cc +table/plain/plain_table_reader.cc +table/sst_file_dumper.cc +table/sst_file_reader.cc +table/sst_file_writer.cc +table/table_factory.cc +table/table_properties.cc +table/two_level_iterator.cc +table/unique_id.cc +test_util/sync_point.cc +test_util/sync_point_impl.cc +test_util/transaction_test_util.cc +tools/dump/db_dump_tool.cc +trace_replay/trace_record_handler.cc +trace_replay/trace_record_result.cc +trace_replay/trace_record.cc +trace_replay/trace_replay.cc +trace_replay/block_cache_tracer.cc +trace_replay/io_tracer.cc +util/async_file_reader.cc +util/build_version.cc +util/cleanable.cc +util/coding.cc +util/compaction_job_stats_impl.cc +util/comparator.cc +util/compression.cc +util/compression_context_cache.cc +util/concurrent_task_limiter_impl.cc +util/crc32c.cc +util/crc32c_arm64.cc +util/dynamic_bloom.cc +util/hash.cc +util/murmurhash.cc +util/random.cc +util/rate_limiter.cc +util/ribbon_config.cc +util/slice.cc +util/file_checksum_helper.cc +util/status.cc +util/stderr_logger.cc +util/string_util.cc +util/thread_local.cc +util/threadpool_imp.cc +util/xxhash.cc +utilities/agg_merge/agg_merge.cc +utilities/backup/backup_engine.cc +utilities/blob_db/blob_compaction_filter.cc +utilities/blob_db/blob_db.cc +utilities/blob_db/blob_db_impl.cc +utilities/blob_db/blob_db_impl_filesnapshot.cc +utilities/blob_db/blob_file.cc +utilities/cache_dump_load.cc +utilities/cache_dump_load_impl.cc +utilities/cassandra/cassandra_compaction_filter.cc +utilities/cassandra/format.cc +utilities/cassandra/merge_operator.cc +utilities/checkpoint/checkpoint_impl.cc +utilities/compaction_filters.cc +utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +utilities/convenience/info_log_finder.cc +utilities/counted_fs.cc +utilities/debug.cc +utilities/env_mirror.cc +utilities/env_timed.cc +utilities/fault_injection_env.cc +utilities/fault_injection_fs.cc +utilities/fault_injection_secondary_cache.cc +utilities/leveldb_options/leveldb_options.cc +utilities/memory/memory_util.cc +utilities/merge_operators.cc +utilities/merge_operators/max.cc +utilities/merge_operators/put.cc +utilities/merge_operators/sortlist.cc +utilities/merge_operators/string_append/stringappend.cc +utilities/merge_operators/string_append/stringappend2.cc +utilities/merge_operators/uint64add.cc +utilities/merge_operators/bytesxor.cc +utilities/object_registry.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/simulator_cache/cache_simulator.cc +utilities/simulator_cache/sim_cache.cc +utilities/table_properties_collectors/compact_on_deletion_collector.cc +utilities/trace/file_trace_reader_writer.cc +utilities/trace/replayer_impl.cc +utilities/transactions/lock/lock_manager.cc +utilities/transactions/lock/point/point_lock_tracker.cc +utilities/transactions/lock/point/point_lock_manager.cc +utilities/transactions/optimistic_transaction.cc +utilities/transactions/optimistic_transaction_db_impl.cc +utilities/transactions/pessimistic_transaction.cc +utilities/transactions/pessimistic_transaction_db.cc +utilities/transactions/snapshot_checker.cc +utilities/transactions/transaction_base.cc +utilities/transactions/transaction_db_mutex_impl.cc +utilities/transactions/transaction_util.cc +utilities/transactions/write_prepared_txn.cc +utilities/transactions/write_prepared_txn_db.cc +utilities/transactions/write_unprepared_txn.cc +utilities/transactions/write_unprepared_txn_db.cc +utilities/ttl/db_ttl_impl.cc +utilities/wal_filter.cc +utilities/write_batch_with_index/write_batch_with_index.cc +utilities/write_batch_with_index/write_batch_with_index_internal.cc