summaryrefslogtreecommitdiff
path: root/gnu/packages/python-crypto.scm
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2018-06-26 23:58:00 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2018-07-02 23:12:40 +0200
commit929d4d2f4ad8f7d1c04793ac2e436e7e0c14edd5 (patch)
tree4ad3a1d87d87bbc785f4e25b9e112400b932a936 /gnu/packages/python-crypto.scm
parent84be0e9a74e08b33e6a89caf61ec179308e7347e (diff)
downloadguix-patches-929d4d2f4ad8f7d1c04793ac2e436e7e0c14edd5.tar
guix-patches-929d4d2f4ad8f7d1c04793ac2e436e7e0c14edd5.tar.gz
gnu: python-pylibscrypt: Improve speed.
* gnu/packages/python-crypto.scm (python-pylibscrypt): Use "libscrypt" implementation instead of "openssl". "hashlib.scrypt" requires Python 3.6+ and OpenSSL 1.1+. Since Python is built with OpenSSL 1.0, the library is unavailable. "pylibscrypt" defaults to a slow pure Python implementation. Instead, rely on the much faster "libscrypt".
Diffstat (limited to 'gnu/packages/python-crypto.scm')
-rw-r--r--gnu/packages/python-crypto.scm21
1 files changed, 18 insertions, 3 deletions
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 1d1e495d9f..80875ad45a 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -884,14 +884,29 @@ through the Engine interface.")
"1b3rgzl6dbzs08vhv41b6y4n5189wv7lr27acxn104hs45745abs"))))
(build-system python-build-system)
(arguments
- `(#:tests? #f)) ;FIXME: unable to find libraries
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'hard-code-path-to-libscrypt
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((libscrypt (assoc-ref inputs "libscrypt")))
+ (substitute* "pylibscrypt/pylibscrypt.py"
+ (("find_library\\('scrypt'\\)")
+ (string-append "'" libscrypt "/lib/libscrypt.so'")))
+ #t))))
+ ;; The library can use various scrypt implementations and tests all of
+ ;; them. Since we only provide a single implementation, most tests
+ ;; fail. Simply skip them.
+ #:tests? #f))
+ ;; FIXME: Using "libscrypt" is the second best choice. The best one
+ ;; requires "hashlib.scrypt", provided by Python 3.6+ built with OpenSSL
+ ;; 1.1+. Use that as soon as Guix provides it.
(inputs
- `(("openssl" ,openssl)))
+ `(("libscrypt" ,libscrypt)))
(home-page "https://github.com/jvarho/pylibscrypt")
(synopsis "Scrypt for Python")
(description "There are a lot of different scrypt modules for Python, but
none of them have everything that I'd like, so here's one more. It uses
-hashlib.scrypt on Python 3.6 and OpenSSL 1.1.")
+@code{libscrypt}.")
(license license:isc)))
(define-public python-libnacl