mirror of
https://github.com/isar/libmdbx.git
synced 2024-12-30 01:44:13 +08:00
9e5ea95f0f
Change-Id: I27c1ad3843d712823258da1067f9fd79fa255853
188 lines
6.7 KiB
Diff
188 lines
6.7 KiB
Diff
From 7834ae8fc834f5f7b98d45703079cd94e5402ed6 Mon Sep 17 00:00:00 2001
|
|
From: Leonid Yuriev <leo@yuriev.ru>
|
|
Date: Fri, 27 Nov 2020 16:31:12 +0300
|
|
Cc: Heiko Thiery <heiko.thiery@gmail.com>, Thomas Petazzoni <thomas.petazzoni@bootlin.com>, Leonid Yuriev <leo@yuriev.ru
|
|
Subject: [PATCH v5 1/1] package/libmdbx: new package (library/database).
|
|
|
|
This patch adds libmdbx v0.9.2:
|
|
- libmdbx is one of the fastest compact embeddable key-value ACID database.
|
|
- libmdbx has a specific set of properties and capabilities,
|
|
focused on creating unique lightweight solutions.
|
|
- libmdbx surpasses the legendary LMDB (Lightning Memory-Mapped Database)
|
|
in terms of reliability, features and performance.
|
|
- https://github.com/erthink/libmdbx
|
|
|
|
Signed-off-by: Leonid Yuriev <leo@yuriev.ru>
|
|
|
|
---
|
|
Changes v1 -> v2:
|
|
- libmdbx version v0.8.2 -> v0.9.1 (released 2020-09-30)
|
|
|
|
Changes v2 -> v3:
|
|
- removed outcommented stuff (suggested by Heiko Thiery).
|
|
- cleaned up and simplified the makefile (suggested by Heiko Thiery).
|
|
- added patch for C++ header installation.
|
|
- added patch with fix minor copy&paste typo.
|
|
- added patch with pthread workaround for buggy toolchain/cmake/buildroot.
|
|
- added patch for `pthread_yield()`.
|
|
- passed `utils/check-package package/libmdbx/*` (suggested by Heiko Thiery)
|
|
- passed `utils/test-pkg -a -p libmdbx`,
|
|
except w/o threads & w/o MMU (suggested by Heiko Thiery).
|
|
|
|
Changes v3 -> v4:
|
|
- fix passing BR2_PACKAGE_LIBMDBX_TOOLS option to cmake.
|
|
- fix using `depend on` instead of `select`,
|
|
and add `comment` for C++ toolchain (suggested by Heiko Thiery).
|
|
- fix minor help typo.
|
|
|
|
Changes v4 -> v5:
|
|
- libmdbx version v0.9.1 -> v0.9.2 (released 2020-11-27)
|
|
- dropped all patch since not needed.
|
|
- cosmetic changes (suggested by Thomas Petazzoni <thomas.petazzoni@bootlin.com>).
|
|
- added dependence of BR2_TOOLCHAIN_HAS_SYNC_4 (suggested by Thomas Petazzoni <thomas.petazzoni@bootlin.com>).
|
|
- added dependence of !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 (suggested by Thomas Petazzoni <thomas.petazzoni@bootlin.com>).
|
|
- take in account the BR2_SHARED_STATIC_LIBS (suggested by Thomas Petazzoni <thomas.petazzoni@bootlin.com>).
|
|
|
|
Signed-off-by: Leonid Yuriev <leo@yuriev.ru>
|
|
---
|
|
DEVELOPERS | 3 +++
|
|
package/Config.in | 1 +
|
|
package/libmdbx/Config.in | 45 ++++++++++++++++++++++++++++++++++++
|
|
package/libmdbx/libmdbx.hash | 5 ++++
|
|
package/libmdbx/libmdbx.mk | 33 ++++++++++++++++++++++++++
|
|
5 files changed, 87 insertions(+)
|
|
create mode 100644 package/libmdbx/Config.in
|
|
create mode 100644 package/libmdbx/libmdbx.hash
|
|
create mode 100644 package/libmdbx/libmdbx.mk
|
|
|
|
diff --git a/DEVELOPERS b/DEVELOPERS
|
|
index 9ab1e125f4..758ff6a2d5 100644
|
|
--- a/DEVELOPERS
|
|
+++ b/DEVELOPERS
|
|
@@ -1482,6 +1482,9 @@ N: Leon Anavi <leon.anavi@konsulko.com>
|
|
F: board/olimex/a10_olinuxino
|
|
F: configs/olimex_a10_olinuxino_lime_defconfig
|
|
|
|
+N: Leonid Yuriev <leo@yuriev.ru>
|
|
+F: package/libmdbx/
|
|
+
|
|
N: Lionel Flandrin <lionel@svkt.org>
|
|
F: package/python-babel/
|
|
F: package/python-daemonize/
|
|
diff --git a/package/Config.in b/package/Config.in
|
|
index 016a99ed1a..a6f95bfaa9 100644
|
|
--- a/package/Config.in
|
|
+++ b/package/Config.in
|
|
@@ -1372,6 +1372,7 @@ menu "Database"
|
|
source "package/kompexsqlite/Config.in"
|
|
source "package/leveldb/Config.in"
|
|
source "package/libgit2/Config.in"
|
|
+ source "package/libmdbx/Config.in"
|
|
source "package/libodb/Config.in"
|
|
source "package/libodb-boost/Config.in"
|
|
source "package/libodb-mysql/Config.in"
|
|
diff --git a/package/libmdbx/Config.in b/package/libmdbx/Config.in
|
|
new file mode 100644
|
|
index 0000000000..d13f73938f
|
|
--- /dev/null
|
|
+++ b/package/libmdbx/Config.in
|
|
@@ -0,0 +1,45 @@
|
|
+config BR2_PACKAGE_LIBMDBX
|
|
+ bool "libmdbx"
|
|
+ depends on BR2_USE_MMU
|
|
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4
|
|
+ depends on BR2_TOOLCHAIN_HAS_THREADS
|
|
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
|
|
+ help
|
|
+ One of the fastest compact key-value ACID database
|
|
+ without WAL. libmdbx has a specific set of properties
|
|
+ and capabilities, focused on creating unique lightweight
|
|
+ solutions.
|
|
+
|
|
+ libmdbx surpasses the legendary LMDB in terms of
|
|
+ reliability, features and performance.
|
|
+
|
|
+ https://github.com/erthink/libmdbx
|
|
+
|
|
+if BR2_PACKAGE_LIBMDBX
|
|
+
|
|
+config BR2_PACKAGE_LIBMDBX_TOOLS
|
|
+ bool "install tools"
|
|
+ help
|
|
+ Install libmdbx tools for checking, dump, restore
|
|
+ and show statistics of databases.
|
|
+
|
|
+config BR2_PACKAGE_LIBMDBX_CXX
|
|
+ bool "C++ API"
|
|
+ depends on BR2_INSTALL_LIBSTDCPP
|
|
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
|
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735
|
|
+ help
|
|
+ Enable modern C++11/14/17/20 API for libmdbx.
|
|
+
|
|
+comment "libmdbx C++ support needs a toolchain w/ C++11, gcc >= 4.8 w/o bug#64735"
|
|
+ depends on !BR2_INSTALL_LIBSTDCPP || \
|
|
+ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \
|
|
+ BR2_TOOLCHAIN_HAS_GCC_BUG_64735
|
|
+
|
|
+endif
|
|
+
|
|
+comment "libmdbx needs MMU, a toolchain w/ threads, gcc >= 4.4 w/ 4-byte atomics"
|
|
+ depends on BR2_USE_MMU
|
|
+ depends on !BR2_TOOLCHAIN_HAS_THREADS || \
|
|
+ !BR2_TOOLCHAIN_HAS_SYNC_4 || \
|
|
+ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
|
|
diff --git a/package/libmdbx/libmdbx.hash b/package/libmdbx/libmdbx.hash
|
|
new file mode 100644
|
|
index 0000000000..0d3501f1d9
|
|
--- /dev/null
|
|
+++ b/package/libmdbx/libmdbx.hash
|
|
@@ -0,0 +1,5 @@
|
|
+# Hashes from: https://github.com/erthink/libmdbx/releases/
|
|
+sha256 c35cc53d66d74ebfc86e39441ba26276541ac7892bf91dba1e70c83665a02767 libmdbx-amalgamated-0.9.2.tar.gz
|
|
+
|
|
+# Locally calculated
|
|
+sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 LICENSE
|
|
diff --git a/package/libmdbx/libmdbx.mk b/package/libmdbx/libmdbx.mk
|
|
new file mode 100644
|
|
index 0000000000..f3720130ec
|
|
--- /dev/null
|
|
+++ b/package/libmdbx/libmdbx.mk
|
|
@@ -0,0 +1,33 @@
|
|
+################################################################################
|
|
+#
|
|
+# libmdbx
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+LIBMDBX_VERSION = 0.9.2
|
|
+LIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.gz
|
|
+LIBMDBX_SITE = https://github.com/erthink/libmdbx/releases/download/v$(LIBMDBX_VERSION)
|
|
+LIBMDBX_SUPPORTS_IN_SOURCE_BUILD = NO
|
|
+LIBMDBX_LICENSE = OLDAP-2.8
|
|
+LIBMDBX_LICENSE_FILES = LICENSE
|
|
+LIBMDBX_REDISTRIBUTE = YES
|
|
+LIBMDBX_STRIP_COMPONENTS = 0
|
|
+LIBMDBX_INSTALL_STAGING = YES
|
|
+
|
|
+LIBMDBX_CONF_OPTS = -DMDBX_INSTALL_MANPAGES=OFF -DBUILD_FOR_NATIVE_CPU=OFF \
|
|
+ -DMDBX_BUILD_CXX=$(if $(BR2_PACKAGE_LIBMDBX_CXX),ON,OFF) \
|
|
+ -DMDBX_BUILD_TOOLS=$(if $(BR2_PACKAGE_LIBMDBX_TOOLS),ON,OFF)
|
|
+
|
|
+ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)
|
|
+LIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=ON
|
|
+else
|
|
+LIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=OFF
|
|
+endif
|
|
+
|
|
+ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)
|
|
+LIBMDBX_CONF_OPTS += -DMDBX_BUILD_SHARED_LIBRARY=ON -DMDBX_LINK_TOOLS_NONSTATIC=ON
|
|
+else
|
|
+LIBMDBX_CONF_OPTS += -DMDBX_BUILD_SHARED_LIBRARY=OFF -DMDBX_LINK_TOOLS_NONSTATIC=OFF
|
|
+endif
|
|
+
|
|
+$(eval $(cmake-package))
|
|
--
|
|
2.29.2
|
|
|