[PATCH] gnu: Add guile-lmdb.

  • Done
  • quality assurance status badge
Details
2 participants
  • Artyom Bologov
  • Sharlatan Hellseher
Owner
unassigned
Submitted by
Artyom Bologov
Severity
normal

Debbugs page

Artyom Bologov wrote 1 years ago
(name . Guix patches)(address . guix-patches@gnu.org)
87le8eedrb.fsf@aartaka.me
Hello Guix,

This patch adds guile-lmdb module.
From 9d67b6438d8e5c42d6d4e9c8eca46038c80f05ea Mon Sep 17 00:00:00 2001
From: Artyom Bologov <aartaka@protonmail.com>
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 | 41 ++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)

Toggle diff (54 lines)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 9c4c308d05..08f4a67d07 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2012,6 +2012,47 @@ (define-public guile-dbd-mysql
for MySQL.")
(license license:gpl2+)))
+(define-public guile-lmdb
+ (package
+ (name "guile-lmdb")
+ (version "0.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/aartaka/guile-lmdb")
+ (commit "438143ca9ba157faec6f4c2740092c31c733fbfe")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0p43c8ppbhzpi944in0z2jqr7acl8pm7s1x0p5f0idqda6n6f828"))))
+ (build-system guile-build-system)
+ (arguments
+ '(#:source-directory "modules"
+ #:phases (modify-phases %standard-phases
+ (add-before 'build 'substitute-lmdb-so
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((lmdb (string-append (assoc-ref inputs "lmdb")
+ "/lib/liblmdb.so")))
+ (substitute*
+ '("modules/lmdb/lmdb.scm")
+ (("liblmdb.so")
+ lmdb))
+ #t))))))
+ (native-inputs (list guile-3.0))
+ (inputs (list guile-3.0 lmdb))
+ (home-page "https://github.com/aartaka/guile-lmdb")
+ (synopsis "Bindings for LMDB (Lightning Memory-Mapped Database) in Guile.")
+ (description "Scheme wrapper around liblmdb.so.
+Most name 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\n")
+ (license license:gpl3+)))
+
(define-public guile-config
(package
(name "guile-config")
--
2.41.0
Thanks,
--
Artyom Bologov
Sharlatan Hellseher wrote 1 years ago
(name . Artyom Bologov)(address . mail@aartaka.me)(address . 68696@debbugs.gnu.org)
87sf2ljc1j.fsf@gmail.com
Hi,

Thank you for patch!

Toggle quote (12 lines)
>+ (package
>+ (name "guile-lmdb")
>+ (version "0.0.1")
>+ (source (origin
>+ (method git-fetch)
>+ (uri (git-reference
>+ (url "https://github.com/aartaka/guile-lmdb")
>+ (commit "438143ca9ba157faec6f4c2740092c31c733fbfe")))
>+ (file-name (git-file-name name version))
>+ (sha256
>+ (base32
>+ "0p43c8ppbhzpi944in0z2jqr7acl8pm7s1x0p5f0idqda6n6f828"))))
As this project has no version tags, take a look at how the package
style may be altered in this case. (gnu packages lisp-xyz) contains
quite a lot of examples without releases.

Toggle snippet (15 lines)
(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"))))
- revision :: bumps on every package update in guix, starting from 0.

Toggle quote (12 lines)
> + (arguments
> + '(#:source-directory "modules"
> + #:phases (modify-phases %standard-phases
> + (add-before 'build 'substitute-lmdb-so
> + (lambda* (#:key inputs #:allow-other-keys)
> + (let ((lmdb (string-append (assoc-ref inputs "lmdb")
> + "/lib/liblmdb.so")))
> + (substitute*
> + '("modules/lmdb/lmdb.scm")
> + (("liblmdb.so")
> + lmdb))
> + #t))))))
You may simplify this part a little by using G-Expressions:

Toggle snippet (12 lines)
(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))))))))
- this-package-input commonly used replacement for (string-append
(assoc-ref inputs ...
- lambdas in phases don't need trailing #t.

Toggle quote (1 lines)
> + (synopsis "Bindings for LMDB (Lightning Memory-Mapped Database) in Guile.")
You need to drop full stop in the end of synopsis, and may use full
description instead of acronym+description.

Toggle quote (1 lines)
> (description "Scheme wrapper around liblmdb.so.
It may be rephrased as "This package provides a scheme wrapper for liblmdb.so."

Toggle quote (1 lines)
> +@end itemize\n")
You may drop \n here.

Please take a look at review points, and apply guix lint in the end.
Looking forward for V2!

Thans,
Oleg
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEmEeB3micIcJkGAhndtcnv/Ys0rUFAmWy3UgACgkQdtcnv/Ys
0rW3oxAAquUyTZbU29/sSgcUEDkQB9su5C/CTGkYnyne5kQi/mflMhYyauxWWWsH
3LQpmvLtBdDtoAN9+Fe0lgdFlvRHiNhaxHU+dVQnf7/dMANyY9tdXsVmjOmB6JXx
Gg0WeL6gWHfCkZ1wZnAcUUZ46eMfPbP8palERZuj/dhZLrK/IX6sLSNRpmXGFQRu
553UbD3aeER3cw6WX8n47HTnLWpczaQGl2P5m+IAxd5+7UdUiOmMjzXoyB2KTvx9
Vn05sHSWdlGdYM3wB5dC3zhjipBbdQJz+8tVNs51JyeVUVLRC/syb89CyOqW9PJY
NzY7jggwoUYDvSgdWtk7cuPdVbrdE3Zcq+jXyQG/CygDgCB0wCnqf+buKMwOhz/9
TRsvV74brsHXMlMQV2j8gU2Z+98F/L2he4ZbS8qB/XdT78ZuuqzI0GywKJYUCImc
mifGK+DuJUna1jAR27Cxzw+w4HcENV8uoocwDlrQjGMJ/4vO+gJ1Oi1PfSQxRbO1
LGHfRnLvf62QP0qCUlkjK97pm6SumCfI+5GlSkvaPjBMHyYV8dg0Y2Jm4Xfr1/9u
A+KK2g6GILeLzrRvH4cGzlfhbzolDzaT7CN2b0U0uKavsFEKBNuTnEo5caWidyGK
TolloX0yOUKCFbEn8DSt1d6j18YoJz/IeIq/dyVmfgCfAfZhKXg=
=fIx5
-----END PGP SIGNATURE-----

Artyom Bologov wrote 1 years ago
(name . Sharlatan Hellseher)(address . sharlatanus@gmail.com)
87jznwxf9q.fsf@aartaka.me
Hi Oleg,

Thanks for your patience in this review! I addressed most of comments
and ran guix lint on the installed package (not sure how exactly that
should work, but it didn't error at least). Find the new patch attached.
From 3f708d6977e238616e73f0aa11f7de66487754b3 Mon Sep 17 00:00:00 2001
From: Artyom Bologov <mail@aartaka.me>
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(+)

Toggle diff (55 lines)
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
Toggle quote (2 lines)
> You may simplify this part a little by using G-Expressions:

That's on my learning TODO list, haven't got to them yet!

Toggle quote (2 lines)
> You may drop \n here.

Did it out of pure mimicking for other packages. Nice that I don't need
to cargo-cult it 😃

Thanks,
--
Artyom.
Sharlatan Hellseher wrote 1 years ago
[PATCH] gnu: Add guile-lmdb.
(address . 68696-done@debbugs.gnu.org)
87bk97kadn.fsf@gmail.com
Pushed as d9d97e26c152d7b5ff13f8aa7a030fee2004bf79 to master.

Thanks,
Oleg
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEmEeB3micIcJkGAhndtcnv/Ys0rUFAmW0L3QACgkQdtcnv/Ys
0rUiRA//a9jknS94cVWqPIxFXdlQqdE5wdK9DruEPZpIJU07Ky/rEGM4uu9u0lIF
3NpBdZyxnLbYiZGO4TUPi43LP2tZXm0DmwN0BDGzv1vaCNIo0egTWTNqebbrGsju
d9+8l+K5/BU4uwvbzFfKbhB2DYexoNENqCveU0VbFpMegYKctvZHh5lwJJf1a/vx
VBezbPN6PDd8+4v0LDKHyKtEHsO4K+Bgmq84LJ2rAwdoKOGdl2JXEboE5+/F0DY4
3Q6fGObQbjZILCTnuFApQtGYyn/oENXlD9vbho+sXdu1Rd2QZPj7zzkaW0Zph84K
Q2lzOp/hVKCOnWEe2BaNWmWfjKlnrv1vtdqLCoNASrPC7yQgSpb7W5njXTM4virX
YWdc/i8xttN4TWOlyFxEUUOB6vl81gCxAZ9Vmj9jeD9ZgtQ/orE4c2/DJv/dnp/f
1JzZPArNMaaxH+tWKPdtY//ZxBmmBpDqI6JqQ7PF+ItYAEoOeRVgGB31mHXZou56
97lZZc3NSEnXOFkfYRFvl3wna0b/GmNayyovDHTAlaxuBbDTLT5ANdd3sb52ITMp
dHG+mWqSklYKGaznu+RSXlVx9EwiAhnO2RUsxZ+OPRz6c5obTlDPez33aCUeODr9
uIh5GANpXHP+Ia+vivmtfbzygXzK5BrMJVFTvDYSnc8puH9/dvg=
=rCLW
-----END PGP SIGNATURE-----

Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 68696@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 68696
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help