summaryrefslogtreecommitdiff
path: root/dev-libs/leveldb
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
commit8376ef56580626e9c0f796d5b85b53a0a1c7d5f5 (patch)
tree7681bbd4e8b05407772df40a4bf04cbbc8afc3fa /dev-libs/leveldb
parent30a9caf154332f12ca60756e1b75d2f0e3e1822d (diff)
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-libs/leveldb')
-rw-r--r--dev-libs/leveldb/Manifest20
-rw-r--r--dev-libs/leveldb/files/leveldb-1.18-configure.patch52
-rw-r--r--dev-libs/leveldb/files/leveldb-1.18-mips.patch48
-rw-r--r--dev-libs/leveldb/files/leveldb-1.20-memenv-so.patch33
-rw-r--r--dev-libs/leveldb/files/leveldb-1.9.0-configure.patch35
-rw-r--r--dev-libs/leveldb/files/leveldb-1.9.0-forwardcompat.patch81
-rw-r--r--dev-libs/leveldb/files/leveldb-1.9.0-memenv-so.patch60
-rw-r--r--dev-libs/leveldb/leveldb-1.15.0-r1.ebuild59
-rw-r--r--dev-libs/leveldb/leveldb-1.15.0.ebuild52
-rw-r--r--dev-libs/leveldb/leveldb-1.17.ebuild68
-rw-r--r--dev-libs/leveldb/leveldb-1.18-r2.ebuild72
-rw-r--r--dev-libs/leveldb/leveldb-1.18.ebuild65
-rw-r--r--dev-libs/leveldb/leveldb-1.20.ebuild63
-rw-r--r--dev-libs/leveldb/leveldb-1.9.0-r5.ebuild56
-rw-r--r--dev-libs/leveldb/leveldb-1.9.0-r6.ebuild57
-rw-r--r--dev-libs/leveldb/metadata.xml15
16 files changed, 836 insertions, 0 deletions
diff --git a/dev-libs/leveldb/Manifest b/dev-libs/leveldb/Manifest
new file mode 100644
index 000000000000..5bd09b070dc5
--- /dev/null
+++ b/dev-libs/leveldb/Manifest
@@ -0,0 +1,20 @@
+AUX leveldb-1.18-configure.patch 1452 BLAKE2B d67c8a226fe8640a5c19d7e7d8e293d0ef31dd01c4813794640ca7f40be8e0c09a084205a6dc954748b2877d8fac1b419ddc9d2461a894bf9de8e53b48852926 SHA512 86bae8c8d5d722435bedc68333c97f318847c93503368d815157a46ab15ad1795f8a585027dcecb7a94c338d25eeb69f94df87f2da2cd9f5805838f0a29dc08e
+AUX leveldb-1.18-mips.patch 1399 BLAKE2B ea9bf52ce2c6482c8a43116c5782b2219af3d8a7eafb39a7d0742695b144f50c5f53e33c85ec562c690b78313146eef7a1edf41eb178bb6b9d8e179d87d72576 SHA512 8d968371007d163cbbb87546cbfe246e399f083bacea415f2d8b68355a5d3363df51f34e9bd29ee558ae475414b3c331b7473ef2d7e432ebfa786d55a08b2e54
+AUX leveldb-1.20-memenv-so.patch 1877 BLAKE2B fa75c48f438248ec73765d959bbe746b3b4887d1fbfe1b33287a81a9a3fcb5ffabc5eacc350e214dfc40b78c8df7e6246bbf5a889b5d2fded5101da5a8fb72c0 SHA512 31fd9cafe226ceb83cb9a0b526ef4941e29406a182e366521ba2d78dba9ed3e7f32a088362ff9b751a82e30b12a12acd8f4d38808dde288116170417e4de8200
+AUX leveldb-1.9.0-configure.patch 990 BLAKE2B 8e658003078100ee071d79709532e37edec29aca816cd5864faea8f2cbad6d4212da09a268dec767b695823557f0d38744d13932eb0fcb50dee7ad065018ed92 SHA512 28f08e257d0f067d93ea88ee30719c092660ab7d220a55d4fa1cec5c5fd8195465e374670aa46c7a125f218ae3a689f3bb58ce66ddc720a2fc1caed552ed27e5
+AUX leveldb-1.9.0-forwardcompat.patch 3464 BLAKE2B 628e0898b9648d14bdd8a043b0646d8af0300310b9b03d7224e52b5be2a2be60d39934b1885bb602334aa64f5f3dbcd7d0ed32e936f3575047005f0d27e03438 SHA512 d55d4469a9cb118688233b82df3f19d08a8fb3f53a3d1d990d485a0cb91872eb2fd3699288369a96ee59739be730ce9437f9d1f8b51d095dd014adf475de7824
+AUX leveldb-1.9.0-memenv-so.patch 1957 BLAKE2B b26ddad37bba050ae2626aad164a3e403fc8ff3a050f79b08d11c19aff27d729bbcb51b35489badc4981f6ceee518482b9d8ceb30585dcc28a1a21f86d097413 SHA512 fbd1e43dba18b9dc8717651052323ea71182a758eccc3637f3ab1aade1a5de5b00f6a54ea0a8f34e2b9a91173b72eb23530ae77bc2b1ac0e454e0e2dfffcfd75
+DIST leveldb-1.15.0.tar.gz 205691 BLAKE2B 29ebe99ba8b2c44943a2c07c6c0e3a2136c53e15cbbb1fb807cb198b8849433c84ee5c4976fd898a84f2bddb38e543a0e45aedfabc1a46029ca23d39f8b0103e SHA512 af5b18a7750ac553659075c1c34aa2fddf6322b6837f096589cf5908c7050fd19053cd98d19fd7097e0840392b318f0166360d3a0595adcaaabcfdf393246775
+DIST leveldb-1.17.tar.gz 207037 BLAKE2B edeb366b9b17fec1a2bc0c0ca8636068bdd65dd1c017a4508c787714da0a202912d1283de9c77c94c9d34784fe552ab344e671fa351ec14f775b1e1037ffbef0 SHA512 d35401a92fa2b59c46e97ab94a9c70d0d5f97dbc7868a75354e088489338c078f47feaa3371489c481317b45ace6bd207d29676f5c18076ced86aa3f9fa44e58
+DIST leveldb-1.18.tar.gz 209376 BLAKE2B 08d63fe8aed45d38befd29caddee5a229ff847d254b30be55715793a621e840641d53af47e4fd93286ff0445d6001be26aa00063c075681659f7ceb692184249 SHA512 3d9c55a7bf8692914784ec33c273704ce9978496b071c7b661708f049d0d4ccd51a44441f50c3e536725caeb9896575192f52708a4bb1c0222cecdeec89919a3
+DIST leveldb-1.20.tar.gz 223141 BLAKE2B 57ab5cb191679b8fbfaa28fa0a61ee1dcd757bb9c70215dd325daebfd93b30aa9bbe3c993a1758aa9804a7cd6f2c31df7cf98bdf98320cd1aebc14f5eb77d9a5 SHA512 c59258f2f58ce2d5680e9ab3da4ab0923d91cd4648dcf63cdaa26cdde92bf45e094544539ad11d8e09a4a4813435286143ed0e86c21c6c31a0596903ed4744d2
+DIST leveldb-1.9.0.tar.gz 203872 BLAKE2B 5fa6d361d82bd386a722b24f52b851791555c6cf77939bd6b55feaa75f0db0e216f84b2b3d23f4cac3bf522fb5fcbbf8b7adb46e4731d0ba161c82124cde9abf SHA512 47b0a3272eef2d677ddeb8d0c973e59a1be4bff580528c3bc3f83a654f41485ecc86892d9124ce21ef747c220f98cdad687436849dc978adfd42f8c8c05b9160
+EBUILD leveldb-1.15.0-r1.ebuild 1434 BLAKE2B 9f38a16de6c75e7f6d0b4ac8172d7c7abbc6b95da6729c3ad67977dc17702486d1f5b10b28a7259ee8d7a32b9c6891666113f90e9fa797654bf068ad15314ee0 SHA512 686476d32f6922e79672b07c934662b09a2b9615b6014b9048dee4398fde71c8c26e46a47ee048c258568d5cd723ca6857db2fd046c846f187092b04e6dd15d8
+EBUILD leveldb-1.15.0.ebuild 1230 BLAKE2B bbaa78014b6f36a8c6d8e5a71ff56995b95f9fd195c54cb4fcc50d1ae5327eff1d4f116b60b79e03a4a2d561bd592eda2a5ad91c3dc09ba1e1d778ec9a50a296 SHA512 0b235df8d0bc8559a1e9b79498c2a3009134683a6edfe671abeb29e6a1517817622e03989e9d0c3a6e59aa6127b74a0f86ea6bb08c28974f1ca1dfb742c80033
+EBUILD leveldb-1.17.ebuild 1720 BLAKE2B 683381ebc3ae11d8844e52fb2c7161348a6495f4f83bd29369f991d4169619d526ae6bd1ed878bae9269715da5a9d7f80efc298253fa78c35aa1c7eea9b98bd5 SHA512 a59df720d900c7da98a4e0c9c865f5cb962b1843461289cd0a4e78cbcb5bcfff93b0d4213fde486df0a9f5d2dc7bfe86ecfec757c83513932fb1ab02859feb25
+EBUILD leveldb-1.18-r2.ebuild 1878 BLAKE2B 8a31c57e1e5e6015b549e55b83277c47be0b882f695f3af8f2295ea801380cb02ac0e0691a2a9113bccbb39e4a505a9ceeeaa2c0f9be3644afb1eb4c5949d7b3 SHA512 865cc8d9fa5b956e3b31863d3ce4d18624bda106aa06c0176ff514c7cc3b7016edb0dd34dd5724b5fe4a9ef231ceaf2b59ef47ac9589c66ca4979254b4703075
+EBUILD leveldb-1.18.ebuild 1647 BLAKE2B 65c40aea5784964fcdf7550ff41f20980b61e3eae2e69ea790d1e1db1c3b152abb18c7ec679bbdaca21c2c91ace348e7b8a8bee53fa5c39528f1b0c1ac76108c SHA512 5a8feaeca45690fbb5d6f7ecfe7074e176532765900cb343107da542b32e61935bb0832a6682550d57a7e74bc20fec0469a7b0b20a1de9636f628fafd3de4193
+EBUILD leveldb-1.20.ebuild 1742 BLAKE2B c8056fe84b4af769dc00fd4e0a78df77a38fbd88de69d9a854322644a699738a7f58e126092f64f6fcc2a4a13d5e53bcec6d9b2f049e72c181c9eebfcaecc83b SHA512 a5b8b296dd67fef075e71bbdf48d0c70ae8f723f8f7087b396ec8d3f44a552ec43674a9054ccfa19488ee7e5b3af4c43e61cf0742d5e566a07640360d7e5a1de
+EBUILD leveldb-1.9.0-r5.ebuild 1223 BLAKE2B 7bbb2958034b96f22b3bb5e55fd9f1383e2cd01b7a523dc32ead090b31cefcf4299d581e85430dbec267746ded520ed21ddb89a5fad9c40a1f6a652677961ecd SHA512 a97ee6357c3e37208d7900f216e4d4270bd7b6c9add1449e3a0c52d49755a1be88f6008e9ae9bb6a021d3345fa57db18e3751073a63ccc8e4270e7ba684216ea
+EBUILD leveldb-1.9.0-r6.ebuild 1277 BLAKE2B 9e581129c37d33f46037eeef50916c5ce6916e6f671f01144b9f0f7cffed096dff724076f36261d552df6cd8f396a38725ee476258211a1cdbf42af9bef6b289 SHA512 ca4965119338028813e0cdb5d1b303c88ef2e2450f471f4d58e16a276485fcb001d6c4818097f5b0c47eb66ce1b23b561ad37809415654c4cee771d0ac17137a
+MISC metadata.xml 487 BLAKE2B 33632d0f2ef6a0ed11b059a6245ec9582b1e977622a9a755e4ae98cd1f8dd8f853c0ed0aea919b11451c57c576699f4e9a22bd1303148eacec6fc2770f47492f SHA512 61c9350d750209e948d6aa51a3594546837e425c49dede490c0171771e7ff5a2e03932f5052ee90b36e477a20153bde3c265036839e2723703677414bd77d0d3
diff --git a/dev-libs/leveldb/files/leveldb-1.18-configure.patch b/dev-libs/leveldb/files/leveldb-1.18-configure.patch
new file mode 100644
index 000000000000..ba30fc731ad5
--- /dev/null
+++ b/dev-libs/leveldb/files/leveldb-1.18-configure.patch
@@ -0,0 +1,52 @@
+we'll handle configure ourselves in src_configure
+
+--- a/Makefile
++++ b/Makefile
+@@ -14,9 +14,6 @@ OPT ?= -O2 -DNDEBUG
+ # OPT ?= -O2 -g2 -DNDEBUG
+ #-----------------------------------------------
+
+-# detect what platform we're building on
+-$(shell CC="$(CC)" CXX="$(CXX)" TARGET_OS="$(TARGET_OS)" \
+- ./build_detect_platform build_config.mk ./)
+ # this file is generated by the previous line to set build flags and sources
+ include build_config.mk
+
+
+control snappy/tcmalloc explicitly
+
+--- a/build_detect_platform
++++ a/build_detect_platform
+@@ -190,6 +190,7 @@
+ COMMON_FLAGS="$COMMON_FLAGS -DLEVELDB_PLATFORM_POSIX"
+ fi
+
++if [ "${USE_SNAPPY:-auto}" = "auto" ]; then
+ # Test whether Snappy library is installed
+ # http://code.google.com/p/snappy/
+ $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT 2>/dev/null <<EOF
+@@ -197,15 +198,24 @@
+ int main() {}
+ EOF
+ if [ "$?" = 0 ]; then
++ USE_SNAPPY="yes"
++ fi
++fi
++ if [ "$USE_SNAPPY" = "yes" ]; then
+ COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY"
+ PLATFORM_LIBS="$PLATFORM_LIBS -lsnappy"
+ fi
+
++if [ "${USE_TCMALLOC:-auto}" = "auto" ]; then
+ # Test whether tcmalloc is available
+ $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -ltcmalloc 2>/dev/null <<EOF
+ int main() {}
+ EOF
+ if [ "$?" = 0 ]; then
++ USE_TCMALLOC="yes"
++ fi
++fi
++ if [ "$USE_TCMALLOC" = "yes" ]; then
+ PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc"
+ fi
+
diff --git a/dev-libs/leveldb/files/leveldb-1.18-mips.patch b/dev-libs/leveldb/files/leveldb-1.18-mips.patch
new file mode 100644
index 000000000000..379223d210b6
--- /dev/null
+++ b/dev-libs/leveldb/files/leveldb-1.18-mips.patch
@@ -0,0 +1,48 @@
+https://github.com/google/leveldb/pull/272
+
+From f216400e702a51c900f2ce0285fdd6a21d3dd87b Mon Sep 17 00:00:00 2001
+From: Ben Chan <benchan@chromium.org>
+Date: Thu, 11 Sep 2014 21:38:48 -0700
+Subject: [PATCH] CHROMIUMOS: Add memory barrier implementation for MIPS.
+
+This CL is based on the patch authored by David Turner <digit@google.com>,
+see https://code.google.com/p/leveldb/issues/detail?id=109
+
+BUG=chromium:413517
+TEST=`emerge-{x86,amd64,arm,mipsel-o32}-generic leveldb`
+
+Reviewed-on: https://chromium-review.googlesource.com/217834
+---
+ port/atomic_pointer.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/port/atomic_pointer.h b/port/atomic_pointer.h
+index 35ae550..341909e 100644
+--- a/port/atomic_pointer.h
++++ b/port/atomic_pointer.h
+@@ -36,6 +36,8 @@
+ #define ARCH_CPU_X86_FAMILY 1
+ #elif defined(__ARMEL__)
+ #define ARCH_CPU_ARM_FAMILY 1
++#elif defined(__mips__)
++#define ARCH_CPU_MIPS_FAMILY 1
+ #elif defined(__ppc__) || defined(__powerpc__) || defined(__powerpc64__)
+ #define ARCH_CPU_PPC_FAMILY 1
+ #endif
+@@ -83,6 +85,13 @@ inline void MemoryBarrier() {
+ }
+ #define LEVELDB_HAVE_MEMORY_BARRIER
+
++// MIPS
++#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(__GNUC__)
++inline void MemoryBarrier() {
++ __asm__ __volatile__("sync" : : : "memory");
++}
++#define LEVELDB_HAVE_MEMORY_BARRIER
++
+ #endif
+
+ // AtomicPointer built using platform-specific MemoryBarrier()
+--
+2.3.0
+
diff --git a/dev-libs/leveldb/files/leveldb-1.20-memenv-so.patch b/dev-libs/leveldb/files/leveldb-1.20-memenv-so.patch
new file mode 100644
index 000000000000..d443ef0ad262
--- /dev/null
+++ b/dev-libs/leveldb/files/leveldb-1.20-memenv-so.patch
@@ -0,0 +1,33 @@
+# Create libmemenv.so and don't compile programs by default
+# Add a static_programs target to compile test programs
+--- a/Makefile 2018-06-03 16:52:28.839614213 +0200
++++ b/Makefile 2018-06-03 16:52:18.209544310 +0200
+@@ -128,15 +128,27 @@
+ ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB1)
+ $(SHARED_OUTDIR)/$(SHARED_LIB2): $(SHARED_OUTDIR)/$(SHARED_LIB3)
+ ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB2)
++SHARED_MEMENV_LIB1 = libmemenv.$(PLATFORM_SHARED_EXT)
++SHARED_MEMENV_LIB2 = $(SHARED_MEMENV_LIB1).$(SHARED_VERSION_MAJOR)
++SHARED_MEMENV_LIB3 = $(SHARED_MEMENV_LIB1).$(SHARED_VERSION_MAJOR).$(SHARED_VERSION_MINOR)
++SHARED_MEMENV_LIBS = $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB1) $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB2) $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB3)
++$(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB1): $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB3)
++ ln -fs $(SHARED_MEMENV_LIB3) $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB1)
++$(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB2): $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB3)
++ ln -fs $(SHARED_MEMENV_LIB3) $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB2)
+ SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.a
+ endif
+
+ $(SHARED_OUTDIR)/$(SHARED_LIB3): $(SHARED_LIBOBJECTS)
+ $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(SHARED_LIB2) $(SHARED_LIBOBJECTS) -o $(SHARED_OUTDIR)/$(SHARED_LIB3) $(LIBS)
++$(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB3): $(SHARED_MEMENVOBJECTS)
++ $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(SHARED_MEMENV_LIB2) $(SHARED_MEMENVOBJECTS) -o $(SHARED_OUTDIR)/$(SHARED_MEMENV_LIB3) $(LIBS)
+
+ endif # PLATFORM_SHARED_EXT
+
+-all: $(SHARED_LIBS) $(SHARED_PROGRAMS) $(STATIC_OUTDIR)/libleveldb.a $(STATIC_OUTDIR)/libmemenv.a $(STATIC_PROGRAMS)
++all: $(SHARED_LIBS) $(SHARED_MEMENV_LIBS)
++
++static_programs: $(STATIC_PROGRAMS)
+
+ check: $(STATIC_PROGRAMS)
+ for t in $(notdir $(TESTS)); do echo "***** Running $$t"; $(STATIC_OUTDIR)/$$t || exit 1; done
diff --git a/dev-libs/leveldb/files/leveldb-1.9.0-configure.patch b/dev-libs/leveldb/files/leveldb-1.9.0-configure.patch
new file mode 100644
index 000000000000..d25fe01f6835
--- /dev/null
+++ b/dev-libs/leveldb/files/leveldb-1.9.0-configure.patch
@@ -0,0 +1,35 @@
+diff --git a/build_detect_platform b/build_detect_platform
+index 5801d20..4b4bb0d 100755
+--- a/build_detect_platform
++++ b/build_detect_platform
+@@ -169,20 +169,30 @@ EOF
+
+ # Test whether Snappy library is installed
+ # http://code.google.com/p/snappy/
++if [ "${USE_SNAPPY:-auto}" = "auto" ]; then
+ $CXX $CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
+ #include <snappy.h>
+ int main() {}
+ EOF
+ if [ "$?" = 0 ]; then
++ USE_SNAPPY="yes"
++ fi
++fi
++ if [ "$USE_SNAPPY" = "yes" ]; then
+ COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY"
+ PLATFORM_LIBS="$PLATFORM_LIBS -lsnappy"
+ fi
+
+ # Test whether tcmalloc is available
++if [ "${USE_TCMALLOC:-auto}" = "auto" ]; then
+ $CXX $CXXFLAGS -x c++ - -o /dev/null -ltcmalloc 2>/dev/null <<EOF
+ int main() {}
+ EOF
+ if [ "$?" = 0 ]; then
++ USE_TCMALLOC="yes"
++ fi
++fi
++ if [ "$USE_TCMALLOC" = "yes" ]; then
+ PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc"
+ fi
+ fi
diff --git a/dev-libs/leveldb/files/leveldb-1.9.0-forwardcompat.patch b/dev-libs/leveldb/files/leveldb-1.9.0-forwardcompat.patch
new file mode 100644
index 000000000000..1c21dbe09ff5
--- /dev/null
+++ b/dev-libs/leveldb/files/leveldb-1.9.0-forwardcompat.patch
@@ -0,0 +1,81 @@
+diff -ur leveldb-1.9.0.orig/db/db_test.cc leveldb-1.9.0/db/db_test.cc
+--- leveldb-1.9.0.orig/db/db_test.cc 2013-01-07 21:07:29.000000000 +0000
++++ leveldb-1.9.0/db/db_test.cc 2014-03-28 22:58:59.000000000 +0000
+@@ -139,7 +139,7 @@
+
+ Status s = target()->NewWritableFile(f, r);
+ if (s.ok()) {
+- if (strstr(f.c_str(), ".sst") != NULL) {
++ if (strstr(f.c_str(), ".sst") != NULL || strstr(f.c_str(), ".ldb") != NULL) {
+ *r = new SSTableFile(this, *r);
+ } else if (strstr(f.c_str(), "MANIFEST") != NULL) {
+ *r = new ManifestFile(this, *r);
+diff -ur leveldb-1.9.0.orig/db/filename.cc leveldb-1.9.0/db/filename.cc
+--- leveldb-1.9.0.orig/db/filename.cc 2013-01-07 21:07:29.000000000 +0000
++++ leveldb-1.9.0/db/filename.cc 2014-03-28 23:07:48.000000000 +0000
+@@ -34,6 +34,11 @@
+ return MakeFileName(name, number, "sst");
+ }
+
++std::string LDBTableFileName(const std::string& name, uint64_t number) {
++ assert(number > 0);
++ return MakeFileName(name, number, "ldb");
++}
++
+ std::string DescriptorFileName(const std::string& dbname, uint64_t number) {
+ assert(number > 0);
+ char buf[100];
+@@ -106,7 +111,7 @@
+ Slice suffix = rest;
+ if (suffix == Slice(".log")) {
+ *type = kLogFile;
+- } else if (suffix == Slice(".sst")) {
++ } else if (suffix == Slice(".sst") || suffix == Slice(".ldb")) {
+ *type = kTableFile;
+ } else if (suffix == Slice(".dbtmp")) {
+ *type = kTempFile;
+diff -ur leveldb-1.9.0.orig/db/filename.h leveldb-1.9.0/db/filename.h
+--- leveldb-1.9.0.orig/db/filename.h 2013-01-07 21:07:29.000000000 +0000
++++ leveldb-1.9.0/db/filename.h 2014-03-28 23:07:43.000000000 +0000
+@@ -36,6 +36,7 @@
+ // in the db named by "dbname". The result will be prefixed with
+ // "dbname".
+ extern std::string TableFileName(const std::string& dbname, uint64_t number);
++extern std::string LDBTableFileName(const std::string& dbname, uint64_t number);
+
+ // Return the name of the descriptor file for the db named by
+ // "dbname" and the specified incarnation number. The result will be
+diff -ur leveldb-1.9.0.orig/db/repair.cc leveldb-1.9.0/db/repair.cc
+--- leveldb-1.9.0.orig/db/repair.cc 2013-01-07 21:07:29.000000000 +0000
++++ leveldb-1.9.0/db/repair.cc 2014-03-28 23:13:28.000000000 +0000
+@@ -263,6 +263,14 @@
+ std::string fname = TableFileName(dbname_, t->meta.number);
+ int counter = 0;
+ Status status = env_->GetFileSize(fname, &t->meta.file_size);
++ if (!status.ok()) {
++ // Try alternate file name.
++ fname = LDBTableFileName(dbname_, t->meta.number);
++ Status s2 = env_->GetFileSize(fname, &t->meta.file_size);
++ if (s2.ok()) {
++ status = Status::OK();
++ }
++ }
+ if (status.ok()) {
+ Iterator* iter = table_cache_->NewIterator(
+ ReadOptions(), t->meta.number, t->meta.file_size);
+diff -ur leveldb-1.9.0.orig/db/table_cache.cc leveldb-1.9.0/db/table_cache.cc
+--- leveldb-1.9.0.orig/db/table_cache.cc 2013-01-07 21:07:29.000000000 +0000
++++ leveldb-1.9.0/db/table_cache.cc 2014-03-28 23:12:39.000000000 +0000
+@@ -54,6 +54,12 @@
+ RandomAccessFile* file = NULL;
+ Table* table = NULL;
+ s = env_->NewRandomAccessFile(fname, &file);
++ if (!s.ok()) {
++ std::string ldb_fname = LDBTableFileName(dbname_, file_number);
++ if (env_->NewRandomAccessFile(ldb_fname, &file).ok()) {
++ s = Status::OK();
++ }
++ }
+ if (s.ok()) {
+ s = Table::Open(*options_, file, file_size, &table);
+ }
diff --git a/dev-libs/leveldb/files/leveldb-1.9.0-memenv-so.patch b/dev-libs/leveldb/files/leveldb-1.9.0-memenv-so.patch
new file mode 100644
index 000000000000..0df587a3f9c9
--- /dev/null
+++ b/dev-libs/leveldb/files/leveldb-1.9.0-memenv-so.patch
@@ -0,0 +1,60 @@
+--- leveldb-1.9.0.orig/Makefile 2013-01-07 21:07:29.000000000 +0000
++++ leveldb-1.9.0/Makefile 2014-03-28 22:11:05.000000000 +0000
+@@ -61,37 +61,45 @@
+ # Should we build shared libraries?
+ ifneq ($(PLATFORM_SHARED_EXT),)
+
++SHARED1 = $(PLATFORM_SHARED_EXT)
++
+ ifneq ($(PLATFORM_SHARED_VERSIONED),true)
+-SHARED1 = libleveldb.$(PLATFORM_SHARED_EXT)
+ SHARED2 = $(SHARED1)
+ SHARED3 = $(SHARED1)
+-SHARED = $(SHARED1)
++SHARED=%.$(SHARED1)
+ else
+ # Update db.h if you change these.
+ SHARED_MAJOR = 1
+ SHARED_MINOR = 9
+-SHARED1 = libleveldb.$(PLATFORM_SHARED_EXT)
+ SHARED2 = $(SHARED1).$(SHARED_MAJOR)
+ SHARED3 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR)
+-SHARED = $(SHARED1) $(SHARED2) $(SHARED3)
+-$(SHARED1): $(SHARED3)
+- ln -fs $(SHARED3) $(SHARED1)
+-$(SHARED2): $(SHARED3)
+- ln -fs $(SHARED3) $(SHARED2)
++SHARED=%.$(SHARED1) %.$(SHARED2) %.$(SHARED3)
++%.$(SHARED1): %.$(SHARED3)
++ ln -fs $< $@
++%.$(SHARED2): %.$(SHARED3)
++ ln -fs $< $@
+ endif
+
+-$(SHARED3):
+- $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(SHARED2) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(SOURCES) -o $(SHARED3) $(LIBS)
++%.SHARED: $(SHARED)
++ @true
++
++%.$(SHARED3):
++ $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$*.$(SHARED2) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $^ -o $@ $(LIBS)
++
++libleveldb.$(SHARED3): $(SOURCES)
++libmemenv.$(SHARED3): $(MEMENV_SOURCES)
++
++.SECONDARY: $(subst %,libleveldb,$(SHARED)) $(subst %,libmemenv,$(SHARED))
+
+ endif # PLATFORM_SHARED_EXT
+
+-all: $(SHARED) $(LIBRARY)
++all: libleveldb.SHARED $(LIBRARY)
+
+ check: all $(PROGRAMS) $(TESTS)
+ for t in $(TESTS); do echo "***** Running $$t"; ./$$t || exit 1; done
+
+ clean:
+- -rm -f $(PROGRAMS) $(BENCHMARKS) $(LIBRARY) $(SHARED) $(MEMENVLIBRARY) */*.o */*/*.o ios-x86/*/*.o ios-arm/*/*.o build_config.mk
++ -rm -f $(PROGRAMS) $(BENCHMARKS) $(LIBRARY) $(subst %,libleveldb,$(SHARED)) $(MEMENVLIBRARY) */*.o */*/*.o ios-x86/*/*.o ios-arm/*/*.o build_config.mk
+ -rm -rf ios-x86/* ios-arm/*
+
+ $(LIBRARY): $(LIBOBJECTS)
diff --git a/dev-libs/leveldb/leveldb-1.15.0-r1.ebuild b/dev-libs/leveldb/leveldb-1.15.0-r1.ebuild
new file mode 100644
index 000000000000..f2ea73b72f90
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.15.0-r1.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+
+inherit eutils multilib toolchain-funcs
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="https://github.com/google/leveldb"
+SRC_URI="https://${PN}.googlecode.com/files/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm ~ppc ~ppc64 x86 ~amd64-linux ~x86-linux"
+IUSE="+snappy static-libs +tcmalloc"
+
+DEPEND="tcmalloc? ( dev-util/google-perftools )
+ snappy? (
+ app-arch/snappy
+ static-libs? ( app-arch/snappy[static-libs] )
+ )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ cp "${FILESDIR}/${PN}-1.9.0-memenv-so.patch" "${S}/patch"
+ sed -i 's/\(^ SHARED_MINOR =\).*/\1 15/' "${S}/patch"
+ epatch "${S}/patch"
+}
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ # which the Makefile runs for us automatically.
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+ # Probably needs more filling out
+ export TARGET_OS
+ case ${CHOST} in
+ *) TARGET_OS="Linux";;
+ esac
+ export USE_SNAPPY=$(usex snappy)
+ export USE_TCMALLOC=no
+}
+
+src_compile() {
+ emake $(usex static-libs '' 'LIBRARY=') all libmemenv.a libmemenv.SHARED
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/* helpers/memenv/memenv.h
+ dolib.so libleveldb*$(get_libname)*
+ use static-libs && dolib.a libleveldb.a
+ dolib.a libmemenv.a
+ dolib.so libmemenv*$(get_libname)*
+}
diff --git a/dev-libs/leveldb/leveldb-1.15.0.ebuild b/dev-libs/leveldb/leveldb-1.15.0.ebuild
new file mode 100644
index 000000000000..0b1c19884483
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.15.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+
+inherit eutils multilib toolchain-funcs
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="https://github.com/google/leveldb"
+SRC_URI="https://${PN}.googlecode.com/files/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+snappy static-libs +tcmalloc"
+
+DEPEND="tcmalloc? ( dev-util/google-perftools )
+ snappy? (
+ app-arch/snappy
+ static-libs? ( app-arch/snappy[static-libs] )
+ )"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ # which the Makefile runs for us automatically.
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+ # Probably needs more filling out
+ export TARGET_OS
+ case ${CHOST} in
+ *) TARGET_OS="Linux";;
+ esac
+ export USE_SNAPPY=$(usex snappy)
+ export USE_TCMALLOC=no
+}
+
+src_compile() {
+ emake $(usex static-libs '' 'LIBRARY=') all libmemenv.a
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/* helpers/memenv/memenv.h
+ dolib.so libleveldb*$(get_libname)*
+ use static-libs && dolib.a libleveldb.a
+ dolib.a libmemenv.a
+}
diff --git a/dev-libs/leveldb/leveldb-1.17.ebuild b/dev-libs/leveldb/leveldb-1.17.ebuild
new file mode 100644
index 000000000000..932d7cd196df
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.17.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils multilib toolchain-funcs versionator
+
+GITCRAP="e353fbc7ea81"
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="https://github.com/google/leveldb"
+#SRC_URI="https://${PN}.googlecode.com/archive/${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI="https://dev.gentoo.org/~floppym/dist/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+snappy static-libs +tcmalloc"
+
+DEPEND="tcmalloc? ( dev-util/google-perftools )
+ snappy? (
+ app-arch/snappy
+ static-libs? ( app-arch/snappy[static-libs] )
+ )"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${PN}-${GITCRAP}"
+
+src_prepare() {
+ local SHARED_MINOR=$(get_version_component_range 2)
+ cp "${FILESDIR}/${PN}-1.9.0-memenv-so.patch" "${S}/patch"
+ sed -i "s/\(^ SHARED_MINOR =\).*/\1 ${SHARED_MINOR}/" "${S}/patch"
+ epatch "${S}/patch"
+
+ # lacks execution bit
+ chmod +x "${S}"/build_detect_platform || die
+}
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ # which the Makefile runs for us automatically.
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+ # Probably needs more filling out
+ export TARGET_OS
+ case ${CHOST} in
+ *) TARGET_OS="Linux";;
+ esac
+ export USE_SNAPPY=$(usex snappy)
+ export USE_TCMALLOC=no
+}
+
+src_compile() {
+ emake $(usex static-libs '' 'LIBRARY=') all libmemenv.a libmemenv.SHARED
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/* helpers/memenv/memenv.h
+ dolib.so libleveldb*$(get_libname)*
+ use static-libs && dolib.a libleveldb.a
+ dolib.a libmemenv.a
+ dolib.so libmemenv*$(get_libname)*
+}
diff --git a/dev-libs/leveldb/leveldb-1.18-r2.ebuild b/dev-libs/leveldb/leveldb-1.18-r2.ebuild
new file mode 100644
index 000000000000..3cc929118ec6
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.18-r2.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils multilib toolchain-funcs versionator
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="http://leveldb.org/ https://github.com/google/leveldb"
+SRC_URI="https://github.com/google/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm ~arm64 ~mips ppc ppc64 x86 ~amd64-fbsd ~amd64-linux ~x86-linux"
+IUSE="+snappy static-libs +tcmalloc kernel_FreeBSD"
+
+DEPEND="tcmalloc? ( dev-util/google-perftools )
+ snappy? (
+ app-arch/snappy:=
+ static-libs? ( app-arch/snappy[static-libs] )
+ )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.18-mips.patch
+ epatch "${FILESDIR}"/${PN}-1.18-configure.patch #541186
+
+ local SHARED_MINOR=$(get_version_component_range 2)
+ sed \
+ -e "s/\(^ SHARED_MINOR =\).*/\1 ${SHARED_MINOR}/" \
+ "${FILESDIR}/${PN}-1.9.0-memenv-so.patch" > memenv-so.patch
+ epatch memenv-so.patch
+}
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ # which the Makefile runs for us automatically.
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+ local targetos
+ if use kernel_FreeBSD; then
+ targetos="FreeBSD"
+ else
+ targetos="Linux"
+ fi
+
+ TARGET_OS=${targetos} \
+ USE_SNAPPY=$(usex snappy) \
+ USE_TCMALLOC=no \
+ TMPDIR=${T} \
+ sh -x ./build_detect_platform build_config.mk ./
+}
+
+src_compile() {
+ emake $(usex static-libs 'libmemenv.a' 'LIBRARY=') all libmemenv.SHARED
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/*
+ # This matches the path Debian picked. Upstream provides no guidance.
+ insinto /usr/include/leveldb/helpers
+ doins helpers/memenv/memenv.h
+
+ dolib.so libleveldb*$(get_libname)*
+ use static-libs && dolib.a libleveldb.a libmemenv.a
+ dolib.so libmemenv*$(get_libname)*
+}
diff --git a/dev-libs/leveldb/leveldb-1.18.ebuild b/dev-libs/leveldb/leveldb-1.18.ebuild
new file mode 100644
index 000000000000..4d12e3776624
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.18.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils multilib toolchain-funcs versionator
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="https://github.com/google/leveldb"
+SRC_URI="https://github.com/google/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+snappy static-libs +tcmalloc"
+
+DEPEND="tcmalloc? ( dev-util/google-perftools )
+ snappy? (
+ app-arch/snappy
+ static-libs? ( app-arch/snappy[static-libs] )
+ )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.18-mips.patch
+
+ local SHARED_MINOR=$(get_version_component_range 2)
+ sed \
+ -e "s/\(^ SHARED_MINOR =\).*/\1 ${SHARED_MINOR}/" \
+ "${FILESDIR}/${PN}-1.9.0-memenv-so.patch" > memenv-so.patch
+ epatch memenv-so.patch
+
+ # lacks execution bit
+ chmod +x build_detect_platform || die
+}
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ # which the Makefile runs for us automatically.
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+ # Probably needs more filling out
+ export TARGET_OS
+ case ${CHOST} in
+ *) TARGET_OS="Linux";;
+ esac
+ export USE_SNAPPY=$(usex snappy)
+ export USE_TCMALLOC=no
+}
+
+src_compile() {
+ emake $(usex static-libs 'libmemenv.a' 'LIBRARY=') all libmemenv.SHARED
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/* helpers/memenv/memenv.h
+ dolib.so libleveldb*$(get_libname)*
+ use static-libs && dolib.a libleveldb.a libmemenv.a
+ dolib.so libmemenv*$(get_libname)*
+}
diff --git a/dev-libs/leveldb/leveldb-1.20.ebuild b/dev-libs/leveldb/leveldb-1.20.ebuild
new file mode 100644
index 000000000000..e8b13b5798a1
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.20.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit multilib toolchain-funcs
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="http://leveldb.org/ https://github.com/google/leveldb"
+SRC_URI="https://github.com/google/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+# https://github.com/google/leveldb/issues/536
+SLOT="0/1"
+KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-fbsd ~amd64-linux ~x86-linux"
+IUSE="+snappy static-libs kernel_FreeBSD +tcmalloc test"
+
+DEPEND="tcmalloc? ( dev-util/google-perftools )
+ snappy? (
+ app-arch/snappy:=
+ )"
+RDEPEND="${DEPEND}"
+
+# https://bugs.gentoo.org/651604
+REQUIRED_USE="snappy? ( !static-libs )"
+
+# https://github.com/google/leveldb/issues/234
+# https://github.com/google/leveldb/issues/236
+PATCHES=( "${FILESDIR}"/{${PN}-1.18-configure.patch,${P}-memenv-so.patch} )
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+
+ TARGET_OS=$(usex kernel_FreeBSD FreeBSD Linux) \
+ USE_SNAPPY=$(usex snappy) \
+ USE_TCMALLOC=no \
+ TMPDIR=${T} \
+ sh -x ./build_detect_platform build_config.mk ./ || die
+}
+
+src_compile() {
+ default
+ usex static-libs && emake out-static/lib{leveldb,memenv}.a
+ use test && emake static_programs
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/.
+ # This matches the path Debian picked. Upstream provides no guidance.
+ insinto /usr/include/leveldb/helpers
+ doins helpers/memenv/memenv.h
+
+ dolib.so out-shared/libleveldb*$(get_libname)*
+ use static-libs && dolib.a out-static/lib{leveldb,memenv}.a
+ dolib.so out-shared/libmemenv*$(get_libname)*
+}
diff --git a/dev-libs/leveldb/leveldb-1.9.0-r5.ebuild b/dev-libs/leveldb/leveldb-1.9.0-r5.ebuild
new file mode 100644
index 000000000000..6a25a27fc933
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.9.0-r5.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+
+inherit eutils multilib toolchain-funcs
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="https://github.com/google/leveldb"
+SRC_URI="https://${PN}.googlecode.com/files/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm ~ppc ~ppc64 x86"
+IUSE="+snappy static-libs"
+
+DEPEND="
+ snappy? (
+ app-arch/snappy
+ static-libs? ( app-arch/snappy[static-libs] )
+ )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.9.0-configure.patch
+}
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ # which the Makefile runs for us automatically.
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+ # Probably needs more filling out
+ export TARGET_OS
+ case ${CHOST} in
+ *) TARGET_OS="Linux";;
+ esac
+ export USE_SNAPPY=$(usex snappy)
+ export USE_TCMALLOC=no
+}
+
+src_compile() {
+ emake $(usex static-libs '' 'LIBRARY=') all libmemenv.a
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/* helpers/memenv/memenv.h
+ dolib.so libleveldb*$(get_libname)*
+ use static-libs && dolib.a libleveldb.a
+ dolib.a libmemenv.a
+}
diff --git a/dev-libs/leveldb/leveldb-1.9.0-r6.ebuild b/dev-libs/leveldb/leveldb-1.9.0-r6.ebuild
new file mode 100644
index 000000000000..397354b0f635
--- /dev/null
+++ b/dev-libs/leveldb/leveldb-1.9.0-r6.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+
+inherit eutils multilib toolchain-funcs
+
+DESCRIPTION="a fast key-value storage library written at Google"
+HOMEPAGE="https://github.com/google/leveldb"
+SRC_URI="https://${PN}.googlecode.com/files/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm ~ppc ~ppc64 x86"
+IUSE="+snappy static-libs"
+
+DEPEND="
+ snappy? (
+ app-arch/snappy
+ static-libs? ( app-arch/snappy[static-libs] )
+ )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.9.0-configure.patch
+ epatch "${FILESDIR}"/${PN}-1.9.0-forwardcompat.patch
+}
+
+src_configure() {
+ # These vars all get picked up by build_detect_platform
+ # which the Makefile runs for us automatically.
+ tc-export AR CC CXX
+ export OPT="-DNDEBUG ${CPPFLAGS}"
+ # Probably needs more filling out
+ export TARGET_OS
+ case ${CHOST} in
+ *) TARGET_OS="Linux";;
+ esac
+ export USE_SNAPPY=$(usex snappy)
+ export USE_TCMALLOC=no
+}
+
+src_compile() {
+ emake $(usex static-libs '' 'LIBRARY=') all libmemenv.a
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ insinto /usr/include
+ doins -r include/* helpers/memenv/memenv.h
+ dolib.so libleveldb*$(get_libname)*
+ use static-libs && dolib.a libleveldb.a
+ dolib.a libmemenv.a
+}
diff --git a/dev-libs/leveldb/metadata.xml b/dev-libs/leveldb/metadata.xml
new file mode 100644
index 000000000000..056bf21ff538
--- /dev/null
+++ b/dev-libs/leveldb/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>patrick@gentoo.org</email>
+ <name>Patrick Lauer</name>
+ </maintainer>
+ <use>
+ <flag name="snappy">support the snappy compression library</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">google/leveldb</remote-id>
+ <bugs-to>https://github.com/google/leveldb/issues</bugs-to>
+ </upstream>
+</pkgmetadata>