From 40efe497b511c322470aa9c084fe4c1759788c57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Sun, 27 Oct 2024 22:34:19 +0300 Subject: [PATCH 1/1] package/libmdbx: new package (library/database). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch adds libmdbx: - 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. - more information at https://gitflic.ru/project/erthink/libmdbx The 0.12.12 "Dollezhal" is stable release of _libmdbx_ branch in memory of the Soviet energy scientist Nikolai Antonovich Dollezhal on the 125th anniversary of his birth. The complete ChangeLog: https://gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md Signed-off-by: Леонид Юрьев (Leonid Yuriev) --- DEVELOPERS | 3 +++ package/Config.in | 1 + package/libmdbx/Config.in | 45 ++++++++++++++++++++++++++++++++++++ package/libmdbx/libmdbx.hash | 5 ++++ package/libmdbx/libmdbx.mk | 42 +++++++++++++++++++++++++++++++++ 5 files changed, 96 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 F: board/olimex/a10_olinuxino F: configs/olimex_a10_olinuxino_lime_defconfig +N: Leonid Yuriev +F: package/libmdbx/ + N: Lionel Flandrin 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..a9a4ac45c5 --- /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://libmdbx.dqdkfa.ru + +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..222e7caf5c --- /dev/null +++ b/package/libmdbx/libmdbx.hash @@ -0,0 +1,5 @@ +# Hashes from: https://libmdbx.dqdkfa.ru/release/SHA256SUMS +sha256 19c0eb33e1ed43ca2a94dceb06dd31946432d16f30a9751d3701c67efa22eb1a libmdbx-amalgamated-0.12.12.tar.xz + +# Locally calculated +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 LICENSE diff --git a/package/libmdbx/libmdbx.mk b/package/libmdbx/libmdbx.mk new file mode 100644 index 0000000000..da4a53913f --- /dev/null +++ b/package/libmdbx/libmdbx.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# libmdbx +# +################################################################################ + +LIBMDBX_VERSION = 0.12.12 +LIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.xz +LIBMDBX_SITE = https://libmdbx.dqdkfa.ru/release +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 + +# Set CMAKE_BUILD_TYPE to Release to remove -Werror and avoid a build failure +# with glibc < 2.12 +LIBMDBX_CONF_OPTS = \ + -DCMAKE_BUILD_TYPE=Release \ + -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.47.0