diff mbox series

[bug#45601] gnu: Add wyhash.

Message ID 20210101211926.29943-1-rprior@protonmail.com
State Under Review
Headers show
Series [bug#45601] gnu: Add wyhash. | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Ryan Prior Jan. 1, 2021, 9:19 p.m. UTC
* gnu/packages/datastructures.scm (wyhash): New variable.
---
 gnu/packages/digest.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

Comments

Leo Famulari Jan. 4, 2021, 2:07 a.m. UTC | #1
On Fri, Jan 01, 2021 at 09:19:29PM +0000, Ryan Prior via Guix-patches via wrote:
> * gnu/packages/datastructures.scm (wyhash): New variable.

Thanks!

Pushed as 4a829b2d55bc9b0ad5a335c8228a7d2371fa1d9a with the following
changes...

I corrected the commit message (changing "datastructures.scm" to
"digest.scm"), tweaked the logic of the builder to be more idiomatic,
and removed the period at the end of the synopsis (`guix lint`
complained).

> +       #:builder
> +       (begin
> +         (use-modules (guix build utils))
> +         (let* ((out (string-append (assoc-ref %outputs "out")))
> +                (src (string-append out "/include"))
> +                (doc (string-append out "/share/doc/" ,name "-" ,version)))
> +           (mkdir-p src)
> +           (mkdir-p doc)
> +           (chdir (assoc-ref %build-inputs "source"))
> +           (install-file "wyhash.h" src)
> +           (install-file "LICENSE" doc)
> +           (install-file "README.md" doc))
> +         #t)))

Regarding the builder:

1) install-file does mkdir-p [0], so that can be omitted.
2) I think it's more clear to use "include" rather than "src" when
binding the output's include directory
3) Using with-directory-excursion instead of chdir is more in tune with
a functional coding style [1], in my opinion

[0]
https://git.savannah.gnu.org/cgit/guix.git/tree/guix/build/utils.scm?h=version-1.2.0#n310

[1]
https://guix.gnu.org/manual/en/html_node/Programming-Paradigm.html
diff mbox series

Patch

diff --git a/gnu/packages/digest.scm b/gnu/packages/digest.scm
index a33e238362..0b7977c2a5 100644
--- a/gnu/packages/digest.scm
+++ b/gnu/packages/digest.scm
@@ -1,5 +1,6 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Ryan Prior <rprior@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,9 +22,45 @@ 
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (guix utils)
   #:use-module (ice-9 match))
 
+(define-public wyhash
+  (package
+    (name "wyhash")
+    (version "5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/wangyi-fudan/wyhash")
+                    (commit (string-append "wyhash_v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "03ljs5iw9zrm3bydwggjvpwrcwmsd75h3dv1j4am4hw3h22cjdjc"))))
+    (build-system trivial-build-system) ;; source-only package
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (string-append (assoc-ref %outputs "out")))
+                (src (string-append out "/include"))
+                (doc (string-append out "/share/doc/" ,name "-" ,version)))
+           (mkdir-p src)
+           (mkdir-p doc)
+           (chdir (assoc-ref %build-inputs "source"))
+           (install-file "wyhash.h" src)
+           (install-file "LICENSE" doc)
+           (install-file "README.md" doc))
+         #t)))
+    (home-page "https://github.com/wangyi-fudan/wyhash")
+    (synopsis "Embeddable hash function and random number generator.")
+    (description "This package provides a portable hash function and random
+number generator suitable for use in data structures.  Provided by default in
+Zig, V, and Nim programming language standard libraries.")
+    (license license:unlicense)))
+
 (define-public xxhash
   (package
     (name "xxhash")