From 51412a8eb2c2a1de49807a4d004cb85943f90963 Mon Sep 17 00:00:00 2001 From: Tee KOBAYASHI Date: Fri, 28 Jan 2022 23:34:04 +0900 Subject: [PATCH] new package: librocksdb --- packages/librocksdb/build.sh | 28 +++++++++++++++++++ packages/librocksdb/env-fs_posix.cc.patch | 13 +++++++++ packages/librocksdb/toku_time.h.patch | 13 +++++++++ .../librocksdb/tools-db_bench_tool.cc.patch | 11 ++++++++ .../librocksdb/tools-rdb-unit_test.js.patch | 11 ++++++++ 5 files changed, 76 insertions(+) create mode 100644 packages/librocksdb/build.sh create mode 100644 packages/librocksdb/env-fs_posix.cc.patch create mode 100644 packages/librocksdb/toku_time.h.patch create mode 100644 packages/librocksdb/tools-db_bench_tool.cc.patch create mode 100644 packages/librocksdb/tools-rdb-unit_test.js.patch diff --git a/packages/librocksdb/build.sh b/packages/librocksdb/build.sh new file mode 100644 index 000000000..de5bb561d --- /dev/null +++ b/packages/librocksdb/build.sh @@ -0,0 +1,28 @@ +TERMUX_PKG_HOMEPAGE=https://rocksdb.org/ +TERMUX_PKG_DESCRIPTION="A persistent key-value store for flash and RAM storage" +TERMUX_PKG_LICENSE="GPL-2.0, Apache-2.0, BSD 3-Clause" +TERMUX_PKG_LICENSE_FILE="COPYING, LICENSE.Apache, LICENSE.leveldb" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=6.27.3 +TERMUX_PKG_SRCURL=https://github.com/facebook/rocksdb/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz +TERMUX_PKG_SHA256=ee29901749b9132692b26f0a6c1d693f47d1a9ed8e3771e60556afe80282bf58 +TERMUX_PKG_DEPENDS="gflags, libc++" +TERMUX_PKG_BUILD_DEPENDS="gflags-static" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" +-DFAIL_ON_WARNINGS=OFF +-DPORTABLE=ON +" +termux_step_pre_configure() { + _NEED_DUMMY_LIBPTHREAD_A= + _LIBPTHREAD_A=$TERMUX_PREFIX/lib/libpthread.a + if [ ! -e $_LIBPTHREAD_A ]; then + _NEED_DUMMY_LIBPTHREAD_A=true + echo '!' > $_LIBPTHREAD_A + fi +} + +termux_step_post_make_install() { + if [ $_NEED_DUMMY_LIBPTHREAD_A ]; then + rm -f $_LIBPTHREAD_A + fi +} diff --git a/packages/librocksdb/env-fs_posix.cc.patch b/packages/librocksdb/env-fs_posix.cc.patch new file mode 100644 index 000000000..cbe8abc90 --- /dev/null +++ b/packages/librocksdb/env-fs_posix.cc.patch @@ -0,0 +1,13 @@ +--- a/env/fs_posix.cc ++++ b/env/fs_posix.cc +@@ -905,8 +905,8 @@ + if (env && env[0] != '\0') { + *result = env; + } else { +- char buf[100]; +- snprintf(buf, sizeof(buf), "/tmp/rocksdbtest-%d", int(geteuid())); ++ char buf[] = "@TERMUX_PREFIX@/tmp/rocksdbtest-XXXXXXXXXXX"; ++ snprintf(buf, sizeof(buf), "@TERMUX_PREFIX@/tmp/rocksdbtest-%d", int(geteuid())); + *result = buf; + } + // Directory may already exist diff --git a/packages/librocksdb/toku_time.h.patch b/packages/librocksdb/toku_time.h.patch new file mode 100644 index 000000000..fe2ce5569 --- /dev/null +++ b/packages/librocksdb/toku_time.h.patch @@ -0,0 +1,13 @@ +--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h ++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +@@ -131,6 +131,10 @@ + uint64_t result; + __asm __volatile__("mrs %[rt], cntvct_el0" : [ rt ] "=r"(result)); + return result; ++#elif defined(__arm__) ++ uint32_t lo, hi; ++ __asm__ __volatile__("mrrc p15, 1, %0, %1, c14" : "=r"(lo), "=r"(hi)); ++ return (uint64_t)hi << 32 | lo; + #elif defined(__powerpc__) + return __ppc_get_timebase(); + #elif defined(__s390x__) diff --git a/packages/librocksdb/tools-db_bench_tool.cc.patch b/packages/librocksdb/tools-db_bench_tool.cc.patch new file mode 100644 index 000000000..975ec19ea --- /dev/null +++ b/packages/librocksdb/tools-db_bench_tool.cc.patch @@ -0,0 +1,11 @@ +--- a/tools/db_bench_tool.cc ++++ b/tools/db_bench_tool.cc +@@ -6442,7 +6442,7 @@ + // Pick a Iterator to use + size_t db_idx_to_use = + (db_.db == nullptr) +- ? (size_t{thread->rand.Next()} % multi_dbs_.size()) ++ ? (size_t{static_cast(thread->rand.Next())} % multi_dbs_.size()) + : 0; + std::unique_ptr single_iter; + Iterator* iter_to_use; diff --git a/packages/librocksdb/tools-rdb-unit_test.js.patch b/packages/librocksdb/tools-rdb-unit_test.js.patch new file mode 100644 index 000000000..6926a8b0e --- /dev/null +++ b/packages/librocksdb/tools-rdb-unit_test.js.patch @@ -0,0 +1,11 @@ +--- a/tools/rdb/unit_test.js ++++ b/tools/rdb/unit_test.js +@@ -4,7 +4,7 @@ + exec = require('child_process').exec + util = require('util') + +-DB_NAME = '/tmp/rocksdbtest-' + process.getuid() ++DB_NAME = '@TERMUX_PREFIX@/tmp/rocksdbtest-' + process.getuid() + + a = RDB() + assert.equal(a.open(DB_NAME, ['b']), false)