diff mbox series

[1/3] package/lmdb: new package

Message ID 20240403085424.1650628-1-francois.perrad@gadz.org
State Superseded
Headers show
Series [1/3] package/lmdb: new package | expand

Commit Message

Francois Perrad April 3, 2024, 8:54 a.m. UTC
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
 DEVELOPERS             |  1 +
 package/Config.in      |  1 +
 package/lmdb/Config.in | 13 +++++++++++++
 package/lmdb/lmdb.hash |  3 +++
 package/lmdb/lmdb.mk   | 35 +++++++++++++++++++++++++++++++++++
 5 files changed, 53 insertions(+)
 create mode 100644 package/lmdb/Config.in
 create mode 100644 package/lmdb/lmdb.hash
 create mode 100644 package/lmdb/lmdb.mk

Comments

Yann E. MORIN April 3, 2024, 8:57 p.m. UTC | #1
François, All,

+Mauro for pyhon-lmdb
+Emile for python-zlmdb

On 2024-04-03 10:54 +0200, Francois Perrad spake thusly:
> Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
[--SNIP--]
> diff --git a/package/lmdb/Config.in b/package/lmdb/Config.in
> new file mode 100644
> index 0000000000..f4ae9f3103
> --- /dev/null
> +++ b/package/lmdb/Config.in
> @@ -0,0 +1,13 @@
> +config BR2_PACKAGE_LMDB
> +	bool "lmdb"
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	help
> +	  OpenLDAP Lightning Memory-Mapped Database
> +
> +	  LMDB is compact, fast, powerful, and robust and implements
> +	  a simplified variant of the BerkeleyDB (BDB) API.
> +
> +	  https://symas.com/lmdb/
> +
> +comment "lmdb needs a toolchain w/ threads"
> +	depends on !BR2_TOOLCHAIN_HAS_THREADS

Mauro, Emile: python-lmdb bundles a copy of lmdb, but it is possible to
configure it to use the system-provided library instead [0]. Do you know
if there would be adverse effects to do so in Buildroot? Indeed, we
prefer to configure packages to use system libraries rather than use
there bundled copy whenever possible...

[0] https://lmdb.readthedocs.io/en/release/#installation-unix

I haven't looked at python-zlmdb, though...

[--SNIP--]
> diff --git a/package/lmdb/lmdb.mk b/package/lmdb/lmdb.mk
> new file mode 100644
> index 0000000000..5e2ad2d05a
> --- /dev/null
> +++ b/package/lmdb/lmdb.mk
> @@ -0,0 +1,35 @@
> +################################################################################
> +#
> +# lmdb
> +#
> +################################################################################
> +
> +LMDB_VERSION = 0.9.31
> +LMDB_SITE = $(call github,LMDB,lmdb,LMDB_$(LMDB_VERSION))
> +LMDB_LICENSE = OpenLDAP Public License

I think we want to use the SPDX short tag here: OLDAP-2.8. Incidentally,
this is also what is already used for python-lmdb.

> +LMDB_LICENSE_FILES = libraries/liblmdb/LICENSE
> +LMDB_INSTALL_STAGING = YES
> +
> +define LMDB_BUILD_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
> +		CC="$(TARGET_CC)" \
> +		XCFLAGS="$(TARGET_CFLAGS)" \
> +		AR="$(TARGET_CROSS)ar" \

Why not use $(TARGET_CONFIGURE_OPTS) and just add the special XCFLAGS?

> +		all

'all' is usually the default target, for being the first in the
Makefile, which is also the cae here, so there is no reason to specify
it.

> +endef
> +
> +define LMDB_INSTALL_STAGING_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
> +		DESTDIR="$(STAGING_DIR)" \
> +		prefix=/usr \
> +		install
> +endef
> +
> +define LMDB_INSTALL_TARGET_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
> +		DESTDIR="$(TARGET_DIR)" \
> +		prefix=/usr \
> +		install
> +endef
> +
> +$(eval $(generic-package))
> -- 
> 2.39.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Emile Cormier April 3, 2024, 9:17 p.m. UTC | #2
Hi,

My only interest in python-zlmdb was to be able to build a more recent
version of Crossbar, and I didn't even use that database component of
Crossbar that depended on ZLMDB.

I no longer use Crossbar (I'm developing my own C++ WAMP router), so I've
lost interest in those packages long ago.

Sorry, but I don't remember much about what I did concerning Crossbar and
Buildroot. I can tell you that the philosophy behind Crossbar's build is
not to rely too much on installed system packages.

Unless someone is still actively using it, you may want to consider
dropping Crossbar support in Buildroot because the amount of work needed to
be able to build the latest version in Buildroot is monumental.

Cheers,
Emile Cormier

On Wed, Apr 3, 2024 at 5:57 PM Yann E. MORIN <yann.morin.1998@free.fr>
wrote:

> François, All,
>
> +Mauro for pyhon-lmdb
> +Emile for python-zlmdb
>
> On 2024-04-03 10:54 +0200, Francois Perrad spake thusly:
> > Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
> [--SNIP--]
> > diff --git a/package/lmdb/Config.in b/package/lmdb/Config.in
> > new file mode 100644
> > index 0000000000..f4ae9f3103
> > --- /dev/null
> > +++ b/package/lmdb/Config.in
> > @@ -0,0 +1,13 @@
> > +config BR2_PACKAGE_LMDB
> > +     bool "lmdb"
> > +     depends on BR2_TOOLCHAIN_HAS_THREADS
> > +     help
> > +       OpenLDAP Lightning Memory-Mapped Database
> > +
> > +       LMDB is compact, fast, powerful, and robust and implements
> > +       a simplified variant of the BerkeleyDB (BDB) API.
> > +
> > +       https://symas.com/lmdb/
> > +
> > +comment "lmdb needs a toolchain w/ threads"
> > +     depends on !BR2_TOOLCHAIN_HAS_THREADS
>
> Mauro, Emile: python-lmdb bundles a copy of lmdb, but it is possible to
> configure it to use the system-provided library instead [0]. Do you know
> if there would be adverse effects to do so in Buildroot? Indeed, we
> prefer to configure packages to use system libraries rather than use
> there bundled copy whenever possible...
>
> [0] https://lmdb.readthedocs.io/en/release/#installation-unix
>
> I haven't looked at python-zlmdb, though...
>
> [--SNIP--]
> > diff --git a/package/lmdb/lmdb.mk b/package/lmdb/lmdb.mk
> > new file mode 100644
> > index 0000000000..5e2ad2d05a
> > --- /dev/null
> > +++ b/package/lmdb/lmdb.mk
> > @@ -0,0 +1,35 @@
> >
> +################################################################################
> > +#
> > +# lmdb
> > +#
> >
> +################################################################################
> > +
> > +LMDB_VERSION = 0.9.31
> > +LMDB_SITE = $(call github,LMDB,lmdb,LMDB_$(LMDB_VERSION))
> > +LMDB_LICENSE = OpenLDAP Public License
>
> I think we want to use the SPDX short tag here: OLDAP-2.8. Incidentally,
> this is also what is already used for python-lmdb.
>
> > +LMDB_LICENSE_FILES = libraries/liblmdb/LICENSE
> > +LMDB_INSTALL_STAGING = YES
> > +
> > +define LMDB_BUILD_CMDS
> > +     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
> > +             CC="$(TARGET_CC)" \
> > +             XCFLAGS="$(TARGET_CFLAGS)" \
> > +             AR="$(TARGET_CROSS)ar" \
>
> Why not use $(TARGET_CONFIGURE_OPTS) and just add the special XCFLAGS?
>
> > +             all
>
> 'all' is usually the default target, for being the first in the
> Makefile, which is also the cae here, so there is no reason to specify
> it.
>
> > +endef
> > +
> > +define LMDB_INSTALL_STAGING_CMDS
> > +     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
> > +             DESTDIR="$(STAGING_DIR)" \
> > +             prefix=/usr \
> > +             install
> > +endef
> > +
> > +define LMDB_INSTALL_TARGET_CMDS
> > +     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
> > +             DESTDIR="$(TARGET_DIR)" \
> > +             prefix=/usr \
> > +             install
> > +endef
> > +
> > +$(eval $(generic-package))
> > --
> > 2.39.2
> >
> > _______________________________________________
> > buildroot mailing list
> > buildroot@buildroot.org
> > https://lists.buildroot.org/mailman/listinfo/buildroot
>
> --
>
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics'
> conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___
>      |
> | +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is
> no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v
>  conspiracy.  |
>
> '------------------------------^-------^------------------^--------------------'
>
Yann E. MORIN April 3, 2024, 9:25 p.m. UTC | #3
Emile, All,

On 2024-04-03 18:17 -0300, Emile Cormier spake thusly:
> My only interest in python-zlmdb was to be able to build a more recent version
> of Crossbar, and I didn't even use that database component of Crossbar that
> depended on ZLMDB.
[--SNIP--]
> Unless someone is still actively using it, you may want to consider dropping
> Crossbar support in Buildroot because the amount of work needed to be able to
> build the latest version in Buildroot is monumental.

We've already removed crossbar a little while ago, as it is not
python-3.12 compatible, and it did not seem to be on the radar
upstream...

As for python-zlmdb, unless it gets broken, there is no reason to drop
it for now.

Thanks for your quick reply providing some useful context! :-)

Regards,
Yann E. MORIN.

> Cheers,
> Emile Cormier
> 
> On Wed, Apr 3, 2024 at 5:57 PM Yann E. MORIN <[1]yann.morin.1998@free.fr>
> wrote:
> 
>     François, All,
> 
>     +Mauro for pyhon-lmdb
>     +Emile for python-zlmdb
> 
>     On 2024-04-03 10:54 +0200, Francois Perrad spake thusly:
>     > Signed-off-by: Francois Perrad <[2]francois.perrad@gadz.org>
>     [--SNIP--]
>     > diff --git a/package/lmdb/Config.in b/package/lmdb/Config.in
>     > new file mode 100644
>     > index 0000000000..f4ae9f3103
>     > --- /dev/null
>     > +++ b/package/lmdb/Config.in
>     > @@ -0,0 +1,13 @@
>     > +config BR2_PACKAGE_LMDB
>     > +     bool "lmdb"
>     > +     depends on BR2_TOOLCHAIN_HAS_THREADS
>     > +     help
>     > +       OpenLDAP Lightning Memory-Mapped Database
>     > +
>     > +       LMDB is compact, fast, powerful, and robust and implements
>     > +       a simplified variant of the BerkeleyDB (BDB) API.
>     > +
>     > +       [3]https://symas.com/lmdb/
>     > +
>     > +comment "lmdb needs a toolchain w/ threads"
>     > +     depends on !BR2_TOOLCHAIN_HAS_THREADS
> 
>     Mauro, Emile: python-lmdb bundles a copy of lmdb, but it is possible to
>     configure it to use the system-provided library instead [0]. Do you know
>     if there would be adverse effects to do so in Buildroot? Indeed, we
>     prefer to configure packages to use system libraries rather than use
>     there bundled copy whenever possible...
> 
>     [0] [4]https://lmdb.readthedocs.io/en/release/#installation-unix
> 
>     I haven't looked at python-zlmdb, though...
> 
>     [--SNIP--]
>     > diff --git a/package/lmdb/[5]lmdb.mk b/package/lmdb/[6]lmdb.mk
>     > new file mode 100644
>     > index 0000000000..5e2ad2d05a
>     > --- /dev/null
>     > +++ b/package/lmdb/[7]lmdb.mk
>     > @@ -0,0 +1,35 @@
>     > +########################################################################
>     ########
>     > +#
>     > +# lmdb
>     > +#
>     > +########################################################################
>     ########
>     > +
>     > +LMDB_VERSION = 0.9.31
>     > +LMDB_SITE = $(call github,LMDB,lmdb,LMDB_$(LMDB_VERSION))
>     > +LMDB_LICENSE = OpenLDAP Public License
> 
>     I think we want to use the SPDX short tag here: OLDAP-2.8. Incidentally,
>     this is also what is already used for python-lmdb.
> 
>     > +LMDB_LICENSE_FILES = libraries/liblmdb/LICENSE
>     > +LMDB_INSTALL_STAGING = YES
>     > +
>     > +define LMDB_BUILD_CMDS
>     > +     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
>     > +             CC="$(TARGET_CC)" \
>     > +             XCFLAGS="$(TARGET_CFLAGS)" \
>     > +             AR="$(TARGET_CROSS)ar" \
> 
>     Why not use $(TARGET_CONFIGURE_OPTS) and just add the special XCFLAGS?
> 
>     > +             all
> 
>     'all' is usually the default target, for being the first in the
>     Makefile, which is also the cae here, so there is no reason to specify
>     it.
> 
>     > +endef
>     > +
>     > +define LMDB_INSTALL_STAGING_CMDS
>     > +     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
>     > +             DESTDIR="$(STAGING_DIR)" \
>     > +             prefix=/usr \
>     > +             install
>     > +endef
>     > +
>     > +define LMDB_INSTALL_TARGET_CMDS
>     > +     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
>     > +             DESTDIR="$(TARGET_DIR)" \
>     > +             prefix=/usr \
>     > +             install
>     > +endef
>     > +
>     > +$(eval $(generic-package))
>     > --
>     > 2.39.2
>     >
>     > _______________________________________________
>     > buildroot mailing list
>     > [8]buildroot@buildroot.org
>     > [9]https://lists.buildroot.org/mailman/listinfo/buildroot
> 
>     --
>     .-----------------.--------------------.------------------.--------------------.
>     |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics'
>     conspiracy: |
>     | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___           
>        |
>     | +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is
>     no  |
>     | [10]http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v 
>      conspiracy.  |
>     '------------------------------^-------^------------------^
>     --------------------'
> 
> 
> References:
> 
> [1] mailto:yann.morin.1998@free.fr
> [2] mailto:francois.perrad@gadz.org
> [3] https://symas.com/lmdb/
> [4] https://lmdb.readthedocs.io/en/release/#installation-unix
> [5] http://lmdb.mk/
> [6] http://lmdb.mk/
> [7] http://lmdb.mk/
> [8] mailto:buildroot@buildroot.org
> [9] https://lists.buildroot.org/mailman/listinfo/buildroot
> [10] http://ymorin.is-a-geek.org/

> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 904c7ebf2d..5b47ee4e29 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1126,6 +1126,7 @@  F:	package/libwpe/
 F:	package/linenoise/
 F:	package/ljlinenoise/
 F:	package/lua-inotify/
+F:	package/lmdb/
 F:	package/lpeg/
 F:	package/lpty/
 F:	package/lrandom/
diff --git a/package/Config.in b/package/Config.in
index 5a3410d758..4473169544 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1556,6 +1556,7 @@  menu "Database"
 	source "package/libodb-mysql/Config.in"
 	source "package/libodb-pgsql/Config.in"
 	source "package/libpqxx/Config.in"
+	source "package/lmdb/Config.in"
 	source "package/mongodb/Config.in"
 	source "package/mysql/Config.in"
 	source "package/postgresql/Config.in"
diff --git a/package/lmdb/Config.in b/package/lmdb/Config.in
new file mode 100644
index 0000000000..f4ae9f3103
--- /dev/null
+++ b/package/lmdb/Config.in
@@ -0,0 +1,13 @@ 
+config BR2_PACKAGE_LMDB
+	bool "lmdb"
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	help
+	  OpenLDAP Lightning Memory-Mapped Database
+
+	  LMDB is compact, fast, powerful, and robust and implements
+	  a simplified variant of the BerkeleyDB (BDB) API.
+
+	  https://symas.com/lmdb/
+
+comment "lmdb needs a toolchain w/ threads"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/lmdb/lmdb.hash b/package/lmdb/lmdb.hash
new file mode 100644
index 0000000000..d72c66aace
--- /dev/null
+++ b/package/lmdb/lmdb.hash
@@ -0,0 +1,3 @@ 
+# Locally computed
+sha256  dd70a8c67807b3b8532b3e987b0a4e998962ecc28643e1af5ec77696b081c9b0  lmdb-0.9.31.tar.gz
+sha256  310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569  libraries/liblmdb/LICENSE
diff --git a/package/lmdb/lmdb.mk b/package/lmdb/lmdb.mk
new file mode 100644
index 0000000000..5e2ad2d05a
--- /dev/null
+++ b/package/lmdb/lmdb.mk
@@ -0,0 +1,35 @@ 
+################################################################################
+#
+# lmdb
+#
+################################################################################
+
+LMDB_VERSION = 0.9.31
+LMDB_SITE = $(call github,LMDB,lmdb,LMDB_$(LMDB_VERSION))
+LMDB_LICENSE = OpenLDAP Public License
+LMDB_LICENSE_FILES = libraries/liblmdb/LICENSE
+LMDB_INSTALL_STAGING = YES
+
+define LMDB_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
+		CC="$(TARGET_CC)" \
+		XCFLAGS="$(TARGET_CFLAGS)" \
+		AR="$(TARGET_CROSS)ar" \
+		all
+endef
+
+define LMDB_INSTALL_STAGING_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
+		DESTDIR="$(STAGING_DIR)" \
+		prefix=/usr \
+		install
+endef
+
+define LMDB_INSTALL_TARGET_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libraries/liblmdb \
+		DESTDIR="$(TARGET_DIR)" \
+		prefix=/usr \
+		install
+endef
+
+$(eval $(generic-package))