# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 CARGO_OPTIONAL=yes DISTUTILS_EXT=1 DISTUTILS_USE_PEP517=maturin PYTHON_COMPAT=( python3_{10..13} pypy3 ) PYTHON_REQ_USE="threads(+)" CRATES=" asn1@0.16.2 asn1_derive@0.16.2 autocfg@1.3.0 base64@0.22.1 bitflags@2.6.0 cc@1.1.6 cfg-if@1.0.0 foreign-types-shared@0.1.1 foreign-types@0.3.2 heck@0.5.0 indoc@2.0.5 libc@0.2.155 memoffset@0.9.1 once_cell@1.19.0 openssl-macros@0.1.1 openssl-sys@0.9.103 openssl@0.10.66 pem@3.0.4 pkg-config@0.3.30 portable-atomic@1.7.0 proc-macro2@1.0.86 pyo3-build-config@0.22.2 pyo3-ffi@0.22.2 pyo3-macros-backend@0.22.2 pyo3-macros@0.22.2 pyo3@0.22.2 quote@1.0.36 self_cell@1.0.4 syn@2.0.71 target-lexicon@0.12.15 unicode-ident@1.0.12 unindent@0.2.3 vcpkg@0.2.15 " inherit cargo distutils-r1 flag-o-matic multiprocessing pypi VEC_P=cryptography_vectors-$(ver_cut 1-3) DESCRIPTION="Library providing cryptographic recipes and primitives" HOMEPAGE=" https://github.com/pyca/cryptography/ https://pypi.org/project/cryptography/ " SRC_URI+=" ${CARGO_CRATE_URIS} test? ( $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") ) " LICENSE="|| ( Apache-2.0 BSD ) PSF-2" # Dependent crate licenses LICENSE+=" Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-DFS-2016 " SLOT="0" KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ~ppc64 ~riscv ~s390 sparc x86" RDEPEND=" >=dev-libs/openssl-1.0.2o-r6:0= $(python_gen_cond_dep ' >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] ' 'python*') " DEPEND=" ${RDEPEND} " # XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass # and replace it with ${RUST_DEPEND} BDEPEND=" dev-python/setuptools[${PYTHON_USEDEP}] >=virtual/rust-1.56.0 test? ( dev-python/certifi[${PYTHON_USEDEP}] >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] dev-python/iso8601[${PYTHON_USEDEP}] dev-python/pretend[${PYTHON_USEDEP}] dev-python/pyasn1-modules[${PYTHON_USEDEP}] dev-python/pytest-subtests[${PYTHON_USEDEP}] dev-python/pytest-xdist[${PYTHON_USEDEP}] dev-python/pytz[${PYTHON_USEDEP}] ) " # Files built without CFLAGS/LDFLAGS, acceptable for rust QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" distutils_enable_tests pytest src_unpack() { cargo_src_unpack } src_prepare() { local PATCHES=( # https://github.com/pyca/cryptography/pull/11324 "${FILESDIR}/${P}-rust-openssl-crash.patch" ) default sed -i -e 's:--benchmark-disable::' pyproject.toml || die # work around availability macros not supported in GCC (yet) if [[ ${CHOST} == *-darwin* ]] ; then local darwinok=0 if [[ ${CHOST##*-darwin} -ge 16 ]] ; then darwinok=1 fi sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ src/_cffi_src/openssl/src/osrandom_engine.c || die fi } python_configure_all() { filter-lto # bug #903908 export UNSAFE_PYO3_SKIP_VERSION_CHECK=1 } python_test() { local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" local EPYTEST_IGNORE=( tests/bench ) epytest -n "$(makeopts_jobs)" }