guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: gnu: python-pylibscrypt: Improve speed.


From: Nicolas Goaziou
Subject: 02/02: gnu: python-pylibscrypt: Improve speed.
Date: Mon, 2 Jul 2018 17:13:59 -0400 (EDT)

ngz pushed a commit to branch master
in repository guix.

commit 929d4d2f4ad8f7d1c04793ac2e436e7e0c14edd5
Author: Nicolas Goaziou <address@hidden>
Date:   Tue Jun 26 23:58:00 2018 +0200

    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".
---
 gnu/packages/python-crypto.scm | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 1d1e495..80875ad 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.")
address@hidden")
     (license license:isc)))
 
 (define-public python-libnacl



reply via email to

[Prev in Thread] Current Thread [Next in Thread]