From 150cf64b04dcb370124e02a5bb347e0617bae20c Mon Sep 17 00:00:00 2001 From: Maxime Devos Date: Wed, 18 Aug 2021 00:43:16 +0200 Subject: gnu: python-pycryptodome: Unbundle libtomcrypt. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-crypto.scm (pycryptodome-unbundle-tomcrypt-snippet): New variable. (python-pycryptodome)[source]{snippet}: Unbundle libtomcrypt. (python-pycryptodome)[source]{modules}: Add (guix build utils). Signed-off-by: Ludovic Courtès --- gnu/packages/python-crypto.scm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'gnu/packages/python-crypto.scm') diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 6c25e0dd36..6d50ae682f 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -25,6 +25,7 @@ ;;; Copyright © 2020 Justus Winter ;;; Copyright © 2020 Vinicius Monego ;;; Copyright © 2021 Maxim Cournoyer +;;; Copyright © 2021 Maxime Devos ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,6 +45,7 @@ (define-module (gnu packages python-crypto) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix build-system python) #:use-module (gnu packages) @@ -938,6 +940,22 @@ protocol (Javascript Object Signing and Encryption).") (define-public python2-josepy (package-with-python2 python-josepy)) +(define pycryptodome-unbundle-tomcrypt-snippet + #~(begin + ;; Unbundle libtomcrypt. + (delete-file-recursively "src/libtom") + (substitute* "src/DES.c" + (("#include \"libtom/tomcrypt_des.c\"") + "#include ")) + (substitute* "setup.py" + (("include_dirs=\\['src/', 'src/libtom/'\\]") + ;; FIXME: why does '-ltomcrypt' need to be added + ;; manually, even when 'tomcrypt' is added to 'libraries'? + ;; This behaviour is not documented at + ;; . + "include_dirs=['src/'], libraries=['tomcrypt', 'tommath'], + extra_link_args=['-ltomcrypt', '-ltommath']")))) + (define-public python-pycryptodome (package (name "python-pycryptodome") @@ -948,8 +966,13 @@ protocol (Javascript Object Signing and Encryption).") (uri (pypi-uri "pycryptodome" version)) (sha256 (base32 - "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li")))) + "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li")) + (modules '((guix build utils))) + (snippet pycryptodome-unbundle-tomcrypt-snippet))) (build-system python-build-system) + (inputs + `(("libtomcrypt" ,libtomcrypt) + ("libtommath" ,libtommath))) (home-page "https://www.pycryptodome.org") (synopsis "Low-level cryptographic Python library") (description -- cgit v1.2.3