package/libmdbx: new package (library/database).
authorLeonid Yuriev <leo@yuriev.ru>
Fri, 27 Nov 2020 13:51:43 +0000 (16:51 +0300)
committerYann E. MORIN <yann.morin.1998@free.fr>
Thu, 31 Dec 2020 13:53:15 +0000 (14:53 +0100)
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>
[yann.morin.1998@free.fr: split long lines]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
DEVELOPERS
package/Config.in
package/libmdbx/Config.in [new file with mode: 0644]
package/libmdbx/libmdbx.hash [new file with mode: 0644]
package/libmdbx/libmdbx.mk [new file with mode: 0644]

index bf0716aadb70a4f3ba900ac8bd21d36ac84c1963..263b57c3087e37090c5dd4d9c77e257c40523ec6 100644 (file)
@@ -1487,6 +1487,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/
index 2dd477d1c619c0fd91dd1f9124f979b4117915ed..30bb5814d2edffd106055de4d5987ede19a90dc7 100644 (file)
@@ -1380,6 +1380,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 (file)
index 0000000..d13f739
--- /dev/null
@@ -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 (file)
index 0000000..0d3501f
--- /dev/null
@@ -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 (file)
index 0000000..878ea87
--- /dev/null
@@ -0,0 +1,39 @@
+################################################################################
+#
+# 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))