gnu: python-cryptography: Update to 43.0.3.

* gnu/packages/python-crypto.scm (python-cryptography): Update to
43.0.3.
[source]: Add snippet to ease building with maturin.
[build-system]: Switch to cargo-build-system.
[arguments]: Remove custom 'disable-rust-extension-build phase.  Replace
new cargo-build-system 'build, 'check and 'install phases with phases
from the pyproject-build-system.
[cargo-inputs]: New field.
[inputs]: Remove python-cryptography-rust.  Add maturin, python-wrapper.
(python-cryptography-rust): Remove variable.

Change-Id: I6523f00964b8e82a93ed8a1f8b2e1f49ddd1ddbc

squash python-cryptography to 43.0.3

Change-Id: If8497f64265afab1d5d47a8aa017be908f612d3d
This commit is contained in:
Efraim Flashner 2024-12-15 15:44:01 +02:00
parent a6fdd8099b
commit 97aa14a222
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351

View file

@ -72,7 +72,7 @@ (define-module (gnu packages python-crypto)
#:use-module (gnu packages python-compression)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages swig)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
@ -543,33 +543,61 @@ (define-public python-cryptography-vectors
(define-public python-cryptography
(package
(name "python-cryptography")
(version "42.0.5")
(version "43.0.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography" version))
(sha256
(base32
"1qdz0yk5smi0dnywbxmanccwizilmnzgbbihjpmpgm6zjpn7xq3g"))))
(build-system pyproject-build-system)
"01d8anh4crjvpa0s044rxkdi9cjnz4w15dj3yipjljba4q0r0nri"))
(snippet
#~(begin (use-modules (guix build utils))
;; Help the configure phase. Remove this next release.
(with-output-to-file "Cargo.toml"
(lambda () (newline)))
(for-each delete-file
(find-files "." "Cargo\\.lock$"))
(substitute* "pyproject.toml"
(("locked = true") "offline = true"))))))
(build-system cargo-build-system)
(arguments
(list
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'disable-rust-extension-build
(lambda _
;; The Rust extension is built separately as
;; 'python-cryptography-rust', so there's no need
;; to build it here.
(substitute* "pyproject.toml"
(("\\s+\\\"setuptools-rust.*") ""))))
(add-before 'check 'symlink-rust-library
(lambda* (#:key inputs outputs #:allow-other-keys)
(symlink (search-input-file
inputs "lib/libcryptography_rust.so")
(string-append (site-packages inputs outputs)
"/cryptography/hazmat/bindings/"
"_rust.abi3.so")))))))
#:imported-modules `(,@%cargo-build-system-modules
,@%pyproject-build-system-modules)
#:modules '((guix build cargo-build-system)
((guix build pyproject-build-system) #:prefix py:)
(guix build utils))
#:cargo-inputs
(list rust-asn1-0.16
rust-cc-1
rust-cfg-if-1
rust-foreign-types-0.3
rust-foreign-types-shared-0.1
rust-once-cell-1
rust-openssl-0.10
rust-openssl-sys-0.9
rust-pem-3
rust-pyo3-0.22
rust-self-cell-1)
#:install-source? #false
#:phases
#~(modify-phases %standard-phases
(add-after 'configure 'dont-vendor-self
(lambda* (#:key vendor-dir #:allow-other-keys)
;; Don't keep the whole tarball in the vendor directory
(delete-file-recursively
(string-append vendor-dir "/cryptography-" #$version ".tar.zst"))))
(replace 'build
(assoc-ref py:%standard-phases 'build))
(delete 'check)
(add-after 'install 'check
(lambda* (#:key tests? inputs outputs #:allow-other-keys)
(when tests?
(py:add-installed-pythonpath inputs outputs)
(invoke "python" "-m" "pytest" "tests"))))
(replace 'install
(assoc-ref py:%standard-phases 'install)))))
(native-inputs
(list python-certifi
python-cryptography-vectors
@ -580,7 +608,7 @@ (define-public python-cryptography
python-pytest-subtests
python-setuptools
python-wheel))
(inputs (list python-cryptography-rust))
(inputs (list maturin openssl python-wrapper))
(propagated-inputs (list python-cffi))
(home-page "https://github.com/pyca/cryptography")
(synopsis "Cryptographic recipes and primitives for Python")
@ -593,62 +621,6 @@ (define-public python-cryptography
;; Distributed under either BSD-3 or ASL2.0
(license (list license:bsd-3 license:asl2.0))))
;;; This is the Rust component of the python-cryptography library, extracted
;;; as a separate package to ease the Rust build.
(define-public python-cryptography-rust
(package
(inherit python-cryptography)
(name "python-cryptography-rust")
(build-system cargo-build-system)
(arguments
(list
#:modules '((guix build cargo-build-system)
(guix build utils)
(srfi srfi-1)
(ice-9 match))
#:install-source? #f
;; As seen in noxfile.py
#:cargo-test-flags ''("--release" "--no-default-features")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
(chdir "src/rust")))
(replace 'unpack-rust-crates
;; This is to avoid the non-crate source from being erroneously
;; unpacked by this phase, causing an error.
(lambda* (#:key inputs #:allow-other-keys #:rest args)
(apply (assoc-ref %standard-phases 'unpack-rust-crates)
(append args
(list #:inputs (alist-delete "source" inputs))))))
(replace 'configure
(lambda* (#:key inputs #:allow-other-keys #:rest args)
(apply (assoc-ref %standard-phases 'configure)
(append args
(list #:inputs (alist-delete "source" inputs))))))
(add-after 'install 'install-shared-library
(lambda _
(install-file "target/release/libcryptography_rust.so"
(string-append #$output "/lib")))))
#:cargo-inputs
`(("rust-asn1" ,rust-asn1-0.15)
("rust-cc" ,rust-cc-1)
("rust-cfg-if" ,rust-cfg-if-1)
("rust-foreign-types" ,rust-foreign-types-0.3)
("rust-foreign-types-shared" ,rust-foreign-types-shared-0.1)
("rust-once-cell" ,rust-once-cell-1)
("rust-openssl" ,rust-openssl-0.10)
("rust-openssl-sys" ,rust-openssl-sys-0.9)
("rust-pem" ,rust-pem-3)
("rust-pyo3" ,rust-pyo3-0.20)
("rust-self-cell" ,rust-self-cell-1))))
(native-inputs (list pkg-config python python-cffi))
;; XXX: Adding rust-openssl-sys-0.9 is needed because #:cargo-inputs
;; doesn't honor propagated-inputs.
(inputs (list python rust-openssl-sys-0.9))
(propagated-inputs '())
(synopsis "Core implementation of the Cryptography Python library")))
(define-public python-pyopenssl
(package
(name "python-pyopenssl")