summaryrefslogtreecommitdiff
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)
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)))