From patchwork Fri Nov 27 13:47:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?0JvQtdC+0L3QuNC0INCu0YDRjNC10LIgKExlb25pZCBZdXJpZXYp?= X-Patchwork-Id: 1407226 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=yuriev.ru Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=yuriev-ru.20150623.gappssmtp.com header.i=@yuriev-ru.20150623.gappssmtp.com header.a=rsa-sha256 header.s=20150623 header.b=nEJd31ox; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CjGCw2FZWz9s1l for ; Sat, 28 Nov 2020 00:47:56 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 0AA5887CA0; Fri, 27 Nov 2020 13:47:53 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id M3vH9RBwOoxg; Fri, 27 Nov 2020 13:47:50 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 7C44787BD0; Fri, 27 Nov 2020 13:47:50 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id AD2571BF39E for ; Fri, 27 Nov 2020 13:47:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id A72C087233 for ; Fri, 27 Nov 2020 13:47:49 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 87R--shsVDkW for ; Fri, 27 Nov 2020 13:47:47 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 914838208A for ; Fri, 27 Nov 2020 13:47:46 +0000 (UTC) Received: by mail-lf1-f42.google.com with SMTP id v14so7155275lfo.3 for ; Fri, 27 Nov 2020 05:47:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yuriev-ru.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=s3wFyPpxCa5ghI0mTW8q6yryeU/WSD4wY0AAEgNqm5Y=; b=nEJd31oxps2dYiuTWz/4KSoNW6uZ7LF0lp6oQFcrpLCm9Ci/RAuMJ8CEcYFWbeBDM0 WxImax+eDfJFJEEi4qwKaTYZgNpC09LHu9slTVb7ixUi3ZYyTvzSeU3V7/bO89GthgUd irPL2TOBxavVid9lv+PIH4acD/4t4wuQaPNy1miFoqgpKS5EZp8YlgwcACsNepK+qjkt Zwsbsc2NdqvA72Uf6YO3q1i8FHgtXduL9rAHE4erEPbIECPAxo5ZHojuOPXti6beSO7O TbVVHeFcdEqVz4lUmAB74WGNwgiHhvj8vZw8dgdHesptHecSUOfbihU5LGRCO0PW6eaU /HBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=s3wFyPpxCa5ghI0mTW8q6yryeU/WSD4wY0AAEgNqm5Y=; b=lLZqFNngJmYSAVS1Mblqr9aJzHZ6E4plK3BUB4fKU12b8u8w5+PkXtkNhZW0yPq34L xuUVYjIEh8X7WtTLK9ysrJfFdXX0v8ho2fiGujTm0nL3JyP1gC23IXdMAJeB1Fh4yWvi lrmvUK6uOImzISaGzAIdoTlzLCIzdCSkAnFdiz4gVuqNeuSeINPrXHEkgZDXJtUA3t/n Pt3YR5pcWgif/G5v9W3I+sxFldR8lC/1bZHkppAldli1h06rEXlAdpshgdmS2FeRwxsY k+Rx3N8m2RlgGgNMmgRCprlMtV6WF3rWC1lOOaGyIbVvM3RCw3ZjSAJ2dJgRkNOeFYoj hhwg== X-Gm-Message-State: AOAM5314yKoqEp82tAz3L62ZbW+29x5/pS/EIpkKbp/62PcpU5F/hS8P K2/UYeOpcUMvOOnTUIoeOCZrimRDKJx78w== X-Google-Smtp-Source: ABdhPJxBZztYAlfHoNtrX+hOUG4+L4b8h5bJL7Ip2gb4bgTI78ohF/yTfy1AoRc/0nnsrc7VMigVyQ== X-Received: by 2002:a19:4090:: with SMTP id n138mr3201802lfa.297.1606484863857; Fri, 27 Nov 2020 05:47:43 -0800 (PST) Received: from ly-ThinkPad-X1-Carbon-2nd.ptsecurity.com ([31.130.36.33]) by smtp.gmail.com with ESMTPSA id q26sm711677lfd.260.2020.11.27.05.47.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Nov 2020 05:47:43 -0800 (PST) From: Leonid Yuriev To: buildroot@buildroot.org Date: Fri, 27 Nov 2020 16:47:12 +0300 Message-Id: <20201127134713.1103936-2-leo@yuriev.ru> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201127134713.1103936-1-leo@yuriev.ru> References: <20201006192709.8265-2-leo@yuriev.ru> MIME-Version: 1.0 Subject: [Buildroot] [PATCH v5 1/1] package/libmdbx: new package (library/database). X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Leonid Yuriev , Heiko Thiery , Thomas Petazzoni Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" 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 --- 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 ). - added dependence of BR2_TOOLCHAIN_HAS_SYNC_4 (suggested by Thomas Petazzoni ). - added dependence of !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 (suggested by Thomas Petazzoni ). - take in account the BR2_SHARED_STATIC_LIBS (suggested by Thomas Petazzoni ). 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 | 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 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..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))