From e61aa0261b90e6d3a939e6658d7a35b167e3266a Mon Sep 17 00:00:00 2001 From: John Sully Date: Fri, 6 Dec 2019 17:33:18 -0500 Subject: [PATCH] Initial standup of RocksDB dependency Former-commit-id: 19bb40ffdc794cf9cafa9f4132a0facf1e074101 --- .gitmodules | 3 +++ deps/Makefile | 7 +++++++ deps/rocksdb | 1 + src/Makefile | 18 ++++++++++++------ 4 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 .gitmodules create mode 160000 deps/rocksdb diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..de9111043 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "deps/rocksdb"] + path = deps/rocksdb + url = https://github.com/facebook/rocksdb.git diff --git a/deps/Makefile b/deps/Makefile index bacc8f48e..93936f725 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -37,6 +37,7 @@ distclean: -(cd linenoise && $(MAKE) clean) > /dev/null || true -(cd lua && $(MAKE) clean) > /dev/null || true -(cd jemalloc && [ -f Makefile ] && $(MAKE) distclean) > /dev/null || true + -(cd rocksdb && $(MAKE) clean) > /dev/null || true -(rm -f .make-*) .PHONY: distclean @@ -86,3 +87,9 @@ jemalloc: .make-prerequisites cd jemalloc && $(MAKE) CFLAGS="$(JEMALLOC_CFLAGS)" LDFLAGS="$(JEMALLOC_LDFLAGS)" lib/libjemalloc.a .PHONY: jemalloc + +rocksdb: .make-prerequisites + @printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) + cd rocksdb && $(MAKE) shared_lib + +.PHONY: rocksdb diff --git a/deps/rocksdb b/deps/rocksdb new file mode 160000 index 000000000..e3169e3ea --- /dev/null +++ b/deps/rocksdb @@ -0,0 +1 @@ +Subproject commit e3169e3ea8762d2f34880742106858a23c8dc8b7 diff --git a/src/Makefile b/src/Makefile index a4046b66f..c2c1e603b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -16,7 +16,7 @@ release_hdr := $(shell sh -c './mkreleasehdr.sh') uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not') OPTIMIZATION?=-O2 -DEPENDENCY_TARGETS=hiredis linenoise lua +DEPENDENCY_TARGETS=hiredis linenoise lua rocksdb NODEPS:=clean distclean # Default settings @@ -158,7 +158,7 @@ endif endif # Include paths to dependencies FINAL_CFLAGS+= -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -FINAL_CXXFLAGS+= -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src +FINAL_CXXFLAGS+= -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -I../deps/rocksdb/include/ ifeq ($(MALLOC),tcmalloc) FINAL_CFLAGS+= -DUSE_TCMALLOC @@ -201,13 +201,14 @@ ENDCOLOR="\033[0m" ifndef V QUIET_CC = @printf ' %b %b\n' $(CCCOLOR)CC$(ENDCOLOR) $(SRCCOLOR)$@$(ENDCOLOR) 1>&2; +QUIET_CP = @printf ' %b %b\n' $(CCCOLOR)COPY$(ENDCOLOR) $(SRCCOLOR)$@$(ENDCOLOR) 1>&2; QUIET_LINK = @printf ' %b %b\n' $(LINKCOLOR)LINK$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) 1>&2; QUIET_INSTALL = @printf ' %b %b\n' $(LINKCOLOR)INSTALL$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) 1>&2; endif REDIS_SERVER_NAME=keydb-server REDIS_SENTINEL_NAME=keydb-sentinel -REDIS_SERVER_OBJ=adlist.o quicklist.o ae.o anet.o dict.o server.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking.o util.o object.o db.o replication.o rdb.o t_string.o t_list.o t_set.o t_zset.o t_hash.o config.o aof.o pubsub.o multi.o debug.o sort.o intset.o syncio.o cluster.o crc16.o endianconv.o slowlog.o scripting.o bio.o rio.o rand.o memtest.o crc64.o bitops.o sentinel.o notify.o setproctitle.o blocked.o hyperloglog.o latency.o sparkline.o redis-check-rdb.o redis-check-aof.o geo.o lazyfree.o module.o evict.o expire.o geohash.o geohash_helper.o childinfo.o defrag.o siphash.o rax.o t_stream.o listpack.o localtime.o acl.o storage.o rdb-s3.o fastlock.o new.o tracking.o AsyncWorkQueue.o snapshot.o $(ASM_OBJ) +REDIS_SERVER_OBJ=adlist.o quicklist.o ae.o anet.o dict.o server.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking.o util.o object.o db.o replication.o rdb.o t_string.o t_list.o t_set.o t_zset.o t_hash.o config.o aof.o pubsub.o multi.o debug.o sort.o intset.o syncio.o cluster.o crc16.o endianconv.o slowlog.o scripting.o bio.o rio.o rand.o memtest.o crc64.o bitops.o sentinel.o notify.o setproctitle.o blocked.o hyperloglog.o latency.o sparkline.o redis-check-rdb.o redis-check-aof.o geo.o lazyfree.o module.o evict.o expire.o geohash.o geohash_helper.o childinfo.o defrag.o siphash.o rax.o t_stream.o listpack.o localtime.o acl.o storage.o rdb-s3.o fastlock.o new.o tracking.o AsyncWorkQueue.o snapshot.o storage/rocksdb.o $(ASM_OBJ) REDIS_CLI_NAME=keydb-cli REDIS_CLI_OBJ=anet.o adlist.o dict.o redis-cli.o redis-cli-cpphelper.o zmalloc.o release.o anet.o ae.o crc64.o siphash.o crc16.o storage-lite.o fastlock.o new.o $(ASM_OBJ) REDIS_BENCHMARK_NAME=keydb-benchmark @@ -257,8 +258,8 @@ endif @touch $@ # keydb-server -$(REDIS_SERVER_NAME): $(REDIS_SERVER_OBJ) - $(REDIS_LD) -o $@ $^ ../deps/hiredis/libhiredis.a ../deps/lua/src/liblua.a $(FINAL_LIBS) +$(REDIS_SERVER_NAME): $(REDIS_SERVER_OBJ) librocksdb.so + $(REDIS_LD) -o $@ $^ ../deps/hiredis/libhiredis.a ../deps/lua/src/liblua.a librocksdb.so -Wl,-rpath . $(FINAL_LIBS) # keydb-sentinel $(REDIS_SENTINEL_NAME): $(REDIS_SERVER_NAME) @@ -290,19 +291,24 @@ dict-benchmark: dict.cpp zmalloc.cpp sds.c siphash.c $(REDIS_CC) -c $< %.o: %.cpp .make-prerequisites - $(REDIS_CXX) -c $< + $(REDIS_CXX) -o $@ -c $< %.o: %.asm .make-prerequisites $(KEYDB_AS) $< -o $@ +librocksdb.so: .make-prerequisites + $(QUIET_CP)cp --preserve=mode ../deps/rocksdb/librocksdb.so* ./ + clean: rm -rf $(REDIS_SERVER_NAME) $(REDIS_SENTINEL_NAME) $(REDIS_CLI_NAME) $(REDIS_BENCHMARK_NAME) $(REDIS_CHECK_RDB_NAME) $(REDIS_CHECK_AOF_NAME) *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark + rm -rf librocksdb.so* .PHONY: clean distclean: clean -(cd ../deps && $(MAKE) distclean) -(cd modules && $(MAKE) clean) + -(cd modules && $(MAKE) clean) -(rm -f .make-*) .PHONY: distclean