diff options
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | PKGBUILD | 9 | ||||
-rw-r--r-- | fix-gcc-8-warnings.patch | 164 |
3 files changed, 175 insertions, 6 deletions
@@ -1,6 +1,6 @@ pkgbase = rocksdb-static pkgdesc = Embedded key-value store for fast storage (static library) - pkgver = 5.12.2 + pkgver = 5.12.4 pkgrel = 1 url = http://rocksdb.org arch = i686 @@ -13,8 +13,10 @@ pkgbase = rocksdb-static depends = lz4 depends = snappy depends = gcc-libs - source = https://github.com/facebook/rocksdb/archive/v5.12.2.zip - sha256sums = a855b6dec88d1596cc78e03ab21027cf664d385e25fa7693a5813c84cec89a41 + source = https://github.com/facebook/rocksdb/archive/v5.12.4.zip + source = fix-gcc-8-warnings.patch + sha256sums = d54b1870ed343f80f96326b7de7fd798e8ddd11f05ef413c0e3357219f08ac67 + sha256sums = 2c5d96fbf1638d899da84b4a80ad3c6060b774ed80148f443ae40672d31df9d3 pkgname = rocksdb-static @@ -1,7 +1,7 @@ # Maintainer: Tony <tony@criticalstack.com> pkgname=rocksdb-static -pkgver=5.12.2 +pkgver=5.12.4 pkgrel=1 pkgdesc='Embedded key-value store for fast storage (static library)' arch=(i686 x86_64) @@ -9,8 +9,10 @@ url='http://rocksdb.org' license=('Apache') depends=(gperftools zlib bzip2 lz4 snappy gcc-libs) checkdepends=(python2) -source=(https://github.com/facebook/rocksdb/archive/v$pkgver.zip) -sha256sums=('a855b6dec88d1596cc78e03ab21027cf664d385e25fa7693a5813c84cec89a41') +source=(https://github.com/facebook/rocksdb/archive/v$pkgver.zip + fix-gcc-8-warnings.patch) +sha256sums=('d54b1870ed343f80f96326b7de7fd798e8ddd11f05ef413c0e3357219f08ac67' + '2c5d96fbf1638d899da84b4a80ad3c6060b774ed80148f443ae40672d31df9d3') prepare() { cd rocksdb-$pkgver @@ -18,6 +20,7 @@ prepare() { if [ "$CARCH" == "armv6h" ]; then sed -e 's/-momit-leaf-frame-pointer//' -i Makefile fi + patch -Np1 -i ../fix-gcc-8-warnings.patch } build() { diff --git a/fix-gcc-8-warnings.patch b/fix-gcc-8-warnings.patch new file mode 100644 index 000000000000..7b9243623e4b --- /dev/null +++ b/fix-gcc-8-warnings.patch @@ -0,0 +1,164 @@ +diff --git a/db/c.cc b/db/c.cc +index 0f77949d3f..1c32ee69cb 100644 +--- a/db/c.cc ++++ b/db/c.cc +@@ -1407,23 +1407,24 @@ void rocksdb_writebatch_put_log_data( + b->rep.PutLogData(Slice(blob, len)); + } + ++class H : public WriteBatch::Handler { ++ public: ++ void* state_; ++ void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen); ++ void (*deleted_)(void*, const char* k, size_t klen); ++ virtual void Put(const Slice& key, const Slice& value) override { ++ (*put_)(state_, key.data(), key.size(), value.data(), value.size()); ++ } ++ virtual void Delete(const Slice& key) override { ++ (*deleted_)(state_, key.data(), key.size()); ++ } ++}; ++ + void rocksdb_writebatch_iterate( + rocksdb_writebatch_t* b, + void* state, + void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen), + void (*deleted)(void*, const char* k, size_t klen)) { +- class H : public WriteBatch::Handler { +- public: +- void* state_; +- void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen); +- void (*deleted_)(void*, const char* k, size_t klen); +- virtual void Put(const Slice& key, const Slice& value) override { +- (*put_)(state_, key.data(), key.size(), value.data(), value.size()); +- } +- virtual void Delete(const Slice& key) override { +- (*deleted_)(state_, key.data(), key.size()); +- } +- }; + H handler; + handler.state_ = state; + handler.put_ = put; +@@ -1668,18 +1669,6 @@ void rocksdb_writebatch_wi_iterate( + void* state, + void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen), + void (*deleted)(void*, const char* k, size_t klen)) { +- class H : public WriteBatch::Handler { +- public: +- void* state_; +- void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen); +- void (*deleted_)(void*, const char* k, size_t klen); +- virtual void Put(const Slice& key, const Slice& value) override { +- (*put_)(state_, key.data(), key.size(), value.data(), value.size()); +- } +- virtual void Delete(const Slice& key) override { +- (*deleted_)(state_, key.data(), key.size()); +- } +- }; + H handler; + handler.state_ = state; + handler.put_ = put; +@@ -3298,20 +3287,21 @@ void rocksdb_slicetransform_destroy(rocksdb_slicetransform_t* st) { + delete st; + } + ++struct Wrapper : public rocksdb_slicetransform_t { ++ const SliceTransform* rep_; ++ ~Wrapper() { delete rep_; } ++ const char* Name() const override { return rep_->Name(); } ++ Slice Transform(const Slice& src) const override { ++ return rep_->Transform(src); ++ } ++ bool InDomain(const Slice& src) const override { ++ return rep_->InDomain(src); ++ } ++ bool InRange(const Slice& src) const override { return rep_->InRange(src); } ++ static void DoNothing(void*) { } ++}; ++ + rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t prefixLen) { +- struct Wrapper : public rocksdb_slicetransform_t { +- const SliceTransform* rep_; +- ~Wrapper() { delete rep_; } +- const char* Name() const override { return rep_->Name(); } +- Slice Transform(const Slice& src) const override { +- return rep_->Transform(src); +- } +- bool InDomain(const Slice& src) const override { +- return rep_->InDomain(src); +- } +- bool InRange(const Slice& src) const override { return rep_->InRange(src); } +- static void DoNothing(void*) { } +- }; + Wrapper* wrapper = new Wrapper; + wrapper->rep_ = rocksdb::NewFixedPrefixTransform(prefixLen); + wrapper->state_ = nullptr; +@@ -3320,19 +3310,6 @@ rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t pref + } + + rocksdb_slicetransform_t* rocksdb_slicetransform_create_noop() { +- struct Wrapper : public rocksdb_slicetransform_t { +- const SliceTransform* rep_; +- ~Wrapper() { delete rep_; } +- const char* Name() const override { return rep_->Name(); } +- Slice Transform(const Slice& src) const override { +- return rep_->Transform(src); +- } +- bool InDomain(const Slice& src) const override { +- return rep_->InDomain(src); +- } +- bool InRange(const Slice& src) const override { return rep_->InRange(src); } +- static void DoNothing(void*) { } +- }; + Wrapper* wrapper = new Wrapper; + wrapper->rep_ = rocksdb::NewNoopTransform(); + wrapper->state_ = nullptr; +diff --git a/memtable/inlineskiplist.h b/memtable/inlineskiplist.h +index efcb93c85b..d3ee1f70e6 100644 +--- a/memtable/inlineskiplist.h ++++ b/memtable/inlineskiplist.h +@@ -287,7 +287,7 @@ struct InlineSkipList<Comparator>::Node { + // next_[0]. This is used for passing data from AllocateKey to Insert. + void StashHeight(const int height) { + assert(sizeof(int) <= sizeof(next_[0])); +- memcpy(&next_[0], &height, sizeof(int)); ++ memcpy(static_cast<void*>(&next_[0]), &height, sizeof(int)); + } + + // Retrieves the value passed to StashHeight. Undefined after a call +@@ -307,30 +307,30 @@ struct InlineSkipList<Comparator>::Node { + assert(n >= 0); + // Use an 'acquire load' so that we observe a fully initialized + // version of the returned Node. +- return (next_[-n].load(std::memory_order_acquire)); ++ return ((&next_[0] - n)->load(std::memory_order_acquire)); + } + + void SetNext(int n, Node* x) { + assert(n >= 0); + // Use a 'release store' so that anybody who reads through this + // pointer observes a fully initialized version of the inserted node. +- next_[-n].store(x, std::memory_order_release); ++ (&next_[0] - n)->store(x, std::memory_order_release); + } + + bool CASNext(int n, Node* expected, Node* x) { + assert(n >= 0); +- return next_[-n].compare_exchange_strong(expected, x); ++ return (&next_[0] - n)->compare_exchange_strong(expected, x); + } + + // No-barrier variants that can be safely used in a few locations. + Node* NoBarrier_Next(int n) { + assert(n >= 0); +- return next_[-n].load(std::memory_order_relaxed); ++ return (&next_[0] - n)->load(std::memory_order_relaxed); + } + + void NoBarrier_SetNext(int n, Node* x) { + assert(n >= 0); +- next_[-n].store(x, std::memory_order_relaxed); ++ (&next_[0] - n)->store(x, std::memory_order_relaxed); + } + + // Insert node after prev on specific level. |