mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-10 00:10:19 +03:00
Disable the wraparound bug check that triggers an exception since bcrypt no longer permits implicit truncation. The bug probably does not apply to any recent dev-python/bcrypt versions anyway (it returned False with 4.0.1). Bug: https://foss.heptapod.net/python-libs/passlib/-/issues/196 Signed-off-by: Michał Górny <mgorny@gentoo.org>
82 lines
2.1 KiB
Bash
82 lines
2.1 KiB
Bash
# Copyright 1999-2025 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
DISTUTILS_USE_PEP517=setuptools
|
|
PYTHON_COMPAT=( python3_{11..14} pypy3_11 )
|
|
|
|
inherit distutils-r1 optfeature pypi
|
|
|
|
DESCRIPTION="Password hashing framework supporting over 20 schemes"
|
|
HOMEPAGE="
|
|
https://foss.heptapod.net/python-libs/passlib/-/wikis/home
|
|
https://pypi.org/project/passlib/
|
|
"
|
|
|
|
LICENSE="BSD-2"
|
|
SLOT="0"
|
|
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
|
|
IUSE="doc test-rust"
|
|
|
|
BDEPEND="
|
|
test? (
|
|
dev-python/scrypt[${PYTHON_USEDEP}]
|
|
test-rust? (
|
|
dev-python/bcrypt[${PYTHON_USEDEP}]
|
|
dev-python/cryptography[${PYTHON_USEDEP}]
|
|
)
|
|
)"
|
|
|
|
EPYTEST_PLUGINS=()
|
|
EPYTEST_XDIST=1
|
|
distutils_enable_tests pytest
|
|
|
|
src_prepare() {
|
|
local PATCHES=(
|
|
# combined bcrypt compatibility fixes
|
|
# https://foss.heptapod.net/python-libs/passlib/-/issues/190
|
|
# https://foss.heptapod.net/python-libs/passlib/-/issues/196
|
|
"${FILESDIR}/${P}-bcrypt.patch"
|
|
)
|
|
|
|
distutils-r1_src_prepare
|
|
}
|
|
|
|
python_test() {
|
|
local EPYTEST_DESELECT=(
|
|
# broken all the time by new django releases
|
|
passlib/tests/test_ext_django.py
|
|
|
|
# bcrypt now disallows implicit password truncation
|
|
passlib/tests/test_handlers_bcrypt.py::bcrypt_bcrypt_test::test_70_hashes
|
|
passlib/tests/test_handlers_bcrypt.py::bcrypt_bcrypt_test::test_secret_w_truncate_size
|
|
passlib/tests/test_handlers_django.py::django_bcrypt_test::test_secret_w_truncate_size
|
|
)
|
|
|
|
case ${EPYTHON} in
|
|
python3.13*|python3.14*)
|
|
EPYTEST_DESELECT+=(
|
|
# crypt module has been removed, so the platform backend
|
|
# does not work anymore
|
|
passlib/tests/test_handlers.py::{des,md5,sha256,sha512}_crypt_os_crypt_test
|
|
)
|
|
;;
|
|
esac
|
|
|
|
# skip fuzzing tests, they are very slow
|
|
epytest -k "not fuzz_input"
|
|
}
|
|
|
|
python_install_all() {
|
|
distutils-r1_python_install_all
|
|
use doc && dodoc docs/{*.rst,requirements.txt,lib/*.rst}
|
|
}
|
|
|
|
pkg_postinst() {
|
|
optfeature "Argon2 support" dev-python/argon2-cffi
|
|
optfeature "bcrypt support" dev-python/bcrypt
|
|
optfeature "scrypt support" dev-python/scrypt
|
|
optfeature "Time-based One-Time Password (TOTP) support" dev-python/cryptography
|
|
}
|