Commit 44336118 authored by zhangjinpeng1987's avatar zhangjinpeng1987 Committed by Jay

rocksdb c wrapper (#67)

parent 8b9257a0
......@@ -14,3 +14,6 @@ static-link = []
# portable doesn't require static link, though it's meaningless
# when not using with static-link right now in this crate.
portable = []
[build-dependencies]
gcc = "0.3"
extern crate gcc;
use std::{env, fs, str};
use std::path::PathBuf;
use std::process::Command;
......@@ -11,8 +14,20 @@ macro_rules! t {
fn main() {
if !cfg!(feature = "static-link") {
gcc::Config::new()
.cpp(true)
.file("crocksdb/c.cc")
.flag("-std=c++11")
.flag("-fPIC")
.flag("-O2")
.compile("libcrocksdb.a");
println!("cargo:rustc-link-lib=static=crocksdb");
println!("cargo:rustc-link-lib=rocksdb");
return;
}
if !cfg!(target_os = "linux") && !cfg!(target_os = "macos") {
// only linux and apple support static link right now
return;
......@@ -24,7 +39,9 @@ fn main() {
t!(fs::create_dir_all(&build));
let fest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
let p = PathBuf::from(fest_dir).join("build.sh");
let p = PathBuf::from(fest_dir.clone()).join("build.sh");
let crocksdb_path = PathBuf::from(fest_dir).join("crocksdb");
env::set_var("CROCKSDB_PATH", crocksdb_path.to_str().unwrap());
for lib in &["z", "snappy", "bz2", "lz4", "rocksdb"] {
let lib_name = format!("lib{}.a", lib);
let src = build.join(&lib_name);
......
......@@ -114,10 +114,13 @@ function compile_rocksdb() {
tar xf rocksdb-$version.tar.gz
wd=`pwd`
cd rocksdb-$vernum
cp $CROCKSDB_PATH/c.cc ./db/c.cc
cp $CROCKSDB_PATH/rocksdb/c.h ./include/rocksdb/c.h
export EXTRA_CFLAGS="-fPIC -I${wd}/zlib-1.2.8 -I${wd}/bzip2-1.0.6 -I${wd}/snappy-1.1.1 -I${wd}/lz4-r131/lib"
export EXTRA_CXXFLAGS="-DZLIB -DBZIP2 -DSNAPPY -DLZ4 $EXTRA_CFLAGS"
make static_lib -j $con
mv librocksdb.a ../
cd ..
}
function find_library() {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
use libc::{c_void, c_char, c_int, size_t};
use rocksdb_ffi::{self, DBCompactionFilter};
use crocksdb_ffi::{self, DBCompactionFilter};
use std::ffi::CString;
use std::slice;
......@@ -61,7 +61,7 @@ pub struct CompactionFilterHandle {
impl Drop for CompactionFilterHandle {
fn drop(&mut self) {
unsafe {
rocksdb_ffi::rocksdb_compactionfilter_destroy(self.inner);
crocksdb_ffi::crocksdb_compactionfilter_destroy(self.inner);
}
}
}
......@@ -74,10 +74,10 @@ pub unsafe fn new_compaction_filter(c_name: CString,
name: c_name,
filter: f,
}));
let filter = rocksdb_ffi::rocksdb_compactionfilter_create(proxy as *mut c_void,
let filter = crocksdb_ffi::crocksdb_compactionfilter_create(proxy as *mut c_void,
destructor,
filter,
name);
rocksdb_ffi::rocksdb_compactionfilter_set_ignore_snapshots(filter, ignore_snapshots);
crocksdb_ffi::crocksdb_compactionfilter_set_ignore_snapshots(filter, ignore_snapshots);
Ok(CompactionFilterHandle { inner: filter })
}
......@@ -28,7 +28,7 @@ mod compaction_filter;
pub use compaction_filter::CompactionFilter;
pub use librocksdb_sys::{DBCompactionStyle, DBCompressionType, DBRecoveryMode, new_bloom_filter,
self as rocksdb_ffi};
self as crocksdb_ffi};
pub use merge_operator::MergeOperands;
pub use rocksdb::{DB, DBIterator, DBVector, Kv, SeekKey, Writable, WriteBatch, CFHandle, Range,
BackupEngine};
......
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment