summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-12-11 17:26:00 +0100
committerLudovic Courtès <ludo@gnu.org>2020-01-04 23:44:25 +0100
commitd67fa5c824828dd27e3e14427e85e2c3e8160dae (patch)
treed41562ed5671d9d773a293b49e57c54f7b000601
parentf851fd6b2b4f8e23445aba863f2f063a251f2d9a (diff)
downloadguix-d67fa5c824828dd27e3e14427e85e2c3e8160dae.tar.gz
gnu: Add guile-hashing.
* gnu/packages/guile-xyz.scm (guile-hashing): New variable.
-rw-r--r--gnu/packages/guile-xyz.scm51
1 files changed, 51 insertions, 0 deletions
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index fa612b66e9..f720679329 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2740,3 +2740,54 @@ tests being run, resulting clearer and more specific output.")
 comparing, and writing Semantic Versions.  It also includes ranges in
 the style of the Node Package Manager (NPM).")
     (license license:gpl3+)))
+
+(define-public guile-hashing
+  (package
+    (name "guile-hashing")
+    (version "1.2.0")
+    (home-page "https://github.com/weinholt/hashing")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1362d3lmpv7slmv1zmr9wy8panq9sjr9787gc2hagd646mpsfpkl"))))
+    (build-system guile-build-system)
+    (arguments
+     `(#:modules ((guix build guile-build-system)
+                  (guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw))
+       #:implicit-inputs? #f                      ;needs nothing but Guile
+       #:phases (modify-phases %standard-phases
+                  (add-before 'build 'move-sls-files
+                    (lambda _
+                      ;; Move the source under hashing/ in order to match
+                      ;; module names, and rename .sls files to .scm.
+                      (define (target file)
+                        (string-append "hashing/" file))
+
+                      (define (sls->scm sls)
+                        (string-append (string-drop-right sls 4)
+                                       ".scm"))
+
+                      (mkdir "hashing")
+                      (for-each (lambda (file)
+                                  (rename-file file (sls->scm file)))
+                                (find-files "." "\\.sls$"))
+                      (for-each (lambda (file)
+                                  (rename-file file (target file)))
+                                (scandir "." (cut string-suffix? ".scm" <>)))
+                      (rename-file "private" "hashing/private")
+                      #t)))))
+    (native-inputs
+     `(("guile" ,guile-2.2)))
+    (synopsis "Cryprographic hash functions implemented in Scheme")
+    (description
+     "The @code{(hashing @dots{})} modules implement cryptographic hash
+functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
+SHA-512).")
+    (license license:expat)))