commit:     b1f4a60612395dd8af27ea39b4b72a3827ba1f5f
Author:     Alfred Wingate <parona <AT> protonmail <DOT> com>
AuthorDate: Tue Nov 14 17:20:19 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Nov 14 18:56:39 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b1f4a606

dev-python/pycryptodome: add 3.19.0

Signed-off-by: Alfred Wingate <parona <AT> protonmail.com>
Closes: https://github.com/gentoo/gentoo/pull/33824
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/pycryptodome/Manifest                   |   1 +
 ...ycryptodome-3.19.0-fix-verbosity-in-tests.patch | 120 +++++++++++++++++++++
 dev-python/pycryptodome/pycryptodome-3.19.0.ebuild |  61 +++++++++++
 3 files changed, 182 insertions(+)

diff --git a/dev-python/pycryptodome/Manifest b/dev-python/pycryptodome/Manifest
index 52265221b4a2..7d8268b41a31 100644
--- a/dev-python/pycryptodome/Manifest
+++ b/dev-python/pycryptodome/Manifest
@@ -1 +1,2 @@
 DIST pycryptodome-3.18.0.gh.tar.gz 16720227 BLAKE2B 
dfdc3a7cc0b1aea1e7b7d8f6e8bcf651ca92f0020e2c51849512d00e716283537feb884cacdc655d99a6b992305db9b899172d022bc9ff65d6349ee40b40c4d5
 SHA512 
a30a6b406bfd1d4288169924924636246c36999ca1e14c5cb70bd2f71ce25739dae04726ca97bdaebf7a8b36927cc6f617fbe2599fad48512a2c5e016a528247
+DIST pycryptodome-3.19.0.gh.tar.gz 17153954 BLAKE2B 
5ecaacce490e5eec052d632b1427a4e36ba19a863c28934f53f247b945bb32a1367aeaf1b8669018978bd19d53c28a00f711158c6be014779c47c48f263b2e8c
 SHA512 
1afa71336da38efb32f79d87b442a1d50537a6908ec153be7a087027a8540cebabab12922557c92e501f2d6da5c2f35466d3bbe6a3de44540de7278069691290

diff --git 
a/dev-python/pycryptodome/files/pycryptodome-3.19.0-fix-verbosity-in-tests.patch
 
b/dev-python/pycryptodome/files/pycryptodome-3.19.0-fix-verbosity-in-tests.patch
new file mode 100644
index 000000000000..7d54e5e4c2a7
--- /dev/null
+++ 
b/dev-python/pycryptodome/files/pycryptodome-3.19.0-fix-verbosity-in-tests.patch
@@ -0,0 +1,120 @@
+https://github.com/Legrandin/pycryptodome/issues/765
+https://github.com/Legrandin/pycryptodome/commit/87ff66373a5b80cddc9b0dd76e9bb8c15f6a8e50
+
+From 87ff66373a5b80cddc9b0dd76e9bb8c15f6a8e50 Mon Sep 17 00:00:00 2001
+From: Helder Eijs <[email protected]>
+Date: Sun, 17 Sep 2023 23:32:02 +0200
+Subject: [PATCH] Fix verbosity problem in tests
+
+--- a/lib/Crypto/SelfTest/Protocol/test_ecdh.py
++++ b/lib/Crypto/SelfTest/Protocol/test_ecdh.py
+@@ -72,6 +72,8 @@ def ecdh_test_rev(self,
+ 
+ class TestVectorsECDHWycheproof(unittest.TestCase):
+ 
++    desc = "Wycheproof ECDH tests"
++
+     def add_tests(self, filename):
+ 
+         def curve(g):
+@@ -107,7 +109,6 @@ def shortDescription(self):
+         return self.desc
+ 
+     def test_verify(self, tv):
+-        self._id = "Wycheproof ECDH Verify Test #%d (%s, %s)" % (tv.id, 
tv.comment, tv.filename)
+ 
+         if len(tv.public) == 0:
+             return
+@@ -138,7 +139,7 @@ def test_verify(self, tv):
+ 
+     def runTest(self):
+         for tv in self.tv:
+-            self.desc = "Test #%d (%s) - %s" % (tv.id, tv.filename, 
tv.comment)
++            self.desc = "Wycheproof ECDH Verify Test #%d (%s, %s)" % (tv.id, 
tv.comment, tv.filename)
+             self.test_verify(tv)
+ 
+ 
+--- a/lib/Crypto/SelfTest/__init__.py
++++ b/lib/Crypto/SelfTest/__init__.py
+@@ -28,18 +28,19 @@
+ application runs.
+ """
+ 
+-__revision__ = "$Id$"
+-
+ import sys
+ import unittest
++from importlib import import_module
+ from Crypto.Util.py3compat import StringIO
+ 
++
+ class SelfTestError(Exception):
+     def __init__(self, message, result):
+         Exception.__init__(self, message, result)
+         self.message = message
+         self.result = result
+ 
++
+ def run(module=None, verbosity=0, stream=None, tests=None, config=None, 
**kwargs):
+     """Execute self-tests.
+ 
+@@ -77,21 +78,25 @@ def run(module=None, verbosity=0, stream=None, tests=None, 
config=None, **kwargs
+         raise SelfTestError("Self-test failed", result)
+     return result
+ 
++
+ def get_tests(config={}):
+     tests = []
+-    from Crypto.SelfTest import Cipher; tests += 
Cipher.get_tests(config=config)
+-    from Crypto.SelfTest import Hash;   tests += Hash.get_tests(config=config)
+-    from Crypto.SelfTest import Protocol; tests += 
Protocol.get_tests(config=config)
+-    from Crypto.SelfTest import PublicKey; tests += 
PublicKey.get_tests(config=config)
+-    from Crypto.SelfTest import Random; tests += 
Random.get_tests(config=config)
+-    from Crypto.SelfTest import Util;   tests += Util.get_tests(config=config)
+-    from Crypto.SelfTest import Signature;   tests += 
Signature.get_tests(config=config)
+-    from Crypto.SelfTest import IO;   tests += IO.get_tests(config=config)
+-    from Crypto.SelfTest import Math;   tests += Math.get_tests(config=config)
++
++    module_names = [
++        "Cipher", "Hash", "Protocol", "PublicKey", "Random",
++        "Util", "Signature", "IO", "Math",
++        ]
++
++    for name in module_names:
++        module = import_module("Crypto.SelfTest." + name)
++        tests += module.get_tests(config=config)
++
+     return tests
+ 
++
+ if __name__ == '__main__':
+-    suite = lambda: unittest.TestSuite(get_tests())
++    def suite():
++        return unittest.TestSuite(get_tests())
+     unittest.main(defaultTest='suite')
+ 
+ # vim:set ts=4 sw=4 sts=4 expandtab:
+--- a/lib/Crypto/SelfTest/__main__.py
++++ b/lib/Crypto/SelfTest/__main__.py
+@@ -26,7 +26,7 @@
+ 
+ from Crypto import SelfTest
+ 
+-slow_tests = not "--skip-slow-tests" in sys.argv
++slow_tests = not ("--skip-slow-tests" in sys.argv)
+ if not slow_tests:
+     print("Skipping slow tests")
+ 
+@@ -34,5 +34,10 @@
+ if wycheproof_warnings:
+     print("Printing Wycheproof warnings")
+ 
+-config = {'slow_tests' : slow_tests, 'wycheproof_warnings' : 
wycheproof_warnings }
+-SelfTest.run(stream=sys.stdout, verbosity=1, config=config)
++if "-v" in sys.argv:
++    verbosity=2
++else:
++    verbosity=1
++
++config = {'slow_tests': slow_tests, 'wycheproof_warnings': 
wycheproof_warnings}
++SelfTest.run(stream=sys.stdout, verbosity=verbosity, config=config)

diff --git a/dev-python/pycryptodome/pycryptodome-3.19.0.ebuild 
b/dev-python/pycryptodome/pycryptodome-3.19.0.ebuild
new file mode 100644
index 000000000000..f7c07f2ea6a3
--- /dev/null
+++ b/dev-python/pycryptodome/pycryptodome-3.19.0.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="A self-contained cryptographic library for Python"
+HOMEPAGE="
+       https://www.pycryptodome.org/
+       https://github.com/Legrandin/pycryptodome/
+       https://pypi.org/project/pycryptodome/
+"
+SRC_URI="
+       https://github.com/Legrandin/pycryptodome/archive/v${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD-2 Unlicense"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos 
~x64-macos ~x64-solaris"
+
+DEPEND="
+       dev-libs/gmp:=
+       >=dev-libs/libtomcrypt-1.18.2-r1:=
+"
+BDEPEND="
+       $(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*')
+"
+RDEPEND="
+       ${DEPEND}
+       ${BDEPEND}
+"
+
+PATCHES=(
+       "${FILESDIR}/pycryptodome-3.10.1-system-libtomcrypt.patch"
+       "${FILESDIR}/pycryptodome-3.19.0-fix-verbosity-in-tests.patch"
+)
+
+python_prepare_all() {
+       # make sure we're unbundling it correctly
+       rm -r src/libtom || die
+
+       distutils-r1_python_prepare_all
+}
+
+python_test() {
+       local -x PYTHONPATH=${S}/test_vectors:${PYTHONPATH}
+       "${EPYTHON}" - <<-EOF || die
+               import sys
+               from Crypto import SelfTest
+               SelfTest.run(verbosity=2, stream=sys.stdout)
+       EOF
+
+       # TODO: run cmake tests from src/test?
+}

Reply via email to