From 3f708d6977e238616e73f0aa11f7de66487754b3 Mon Sep 17 00:00:00 2001 From: Artyom Bologov Date: Wed, 24 Jan 2024 23:20:52 +0400 Subject: [PATCH] gnu: Add guile-lmdb. * gnu/packages/guile-xyz.scm (guile-lmdb): New variable. --- gnu/packages/guile-xyz.scm | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 9c4c308d05..b175a16c41 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -2012,6 +2012,48 @@ (define-public guile-dbd-mysql for MySQL.") (license license:gpl2+))) +(define-public guile-lmdb + (let ((commit "438143ca9ba157faec6f4c2740092c31c733fbfe") + (revision "0")) + (package + (name "guile-lmdb") + (version (git-version "0.0.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aartaka/guile-lmdb") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0p43c8ppbhzpi944in0z2jqr7acl8pm7s1x0p5f0idqda6n6f828")))) + (build-system guile-build-system) + (arguments + (list + #:source-directory "modules" + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'substitute-lmdb-so + (lambda _ + (let ((lmdb (string-append + #$(this-package-input "lmdb") "/lib/liblmdb.so"))) + (substitute* "modules/lmdb/lmdb.scm" + (("liblmdb.so") lmdb)))))))) + (native-inputs (list guile-3.0)) + (inputs (list guile-3.0 lmdb)) + (home-page "https://github.com/aartaka/guile-lmdb") + (synopsis "Bindings for Lightning Memory-Mapped Database in Guile") + (description "This package provides a Scheme wrapper around liblmdb.so. +Most names are the same as LMDB ones, except for prefix absence. +Several conveniences are added on top: +@itemize +@item @code{call-with-env-and-txn} and @code{call-with-cursor} wrappers. +@item @code{for-cursor} procedure for cursor iteration. +@item @code{val} and @code{stat} types. +@item Error signaling instead of integer return values. +@end itemize") + (license license:gpl3+)))) + (define-public guile-config (package (name "guile-config") -- 2.41.0