diff options
Diffstat (limited to 'dev-python')
-rw-r--r-- | dev-python/Manifest.gz | bin | 270044 -> 270035 bytes | |||
-rw-r--r-- | dev-python/pyarrow/Manifest | 3 | ||||
-rw-r--r-- | dev-python/pyarrow/files/pyarrow-15.0.1-32bit.patch | 325 | ||||
-rw-r--r-- | dev-python/pyarrow/pyarrow-15.0.1.ebuild | 87 | ||||
-rw-r--r-- | dev-python/tpm2-pytss/Manifest | 7 | ||||
-rw-r--r-- | dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-internal-crypto-fix-_MyRSAPrivateNumbers-with-crypto.patch | 73 | ||||
-rw-r--r-- | dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-add-check-for-renamed-cryptography-types.patch | 45 | ||||
-rw-r--r-- | dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-disable-pcr_set_auth_value-and-pcr_set_auth_pol.patch | 40 | ||||
-rw-r--r-- | dev-python/tpm2-pytss/tpm2-pytss-2.2.1.ebuild (renamed from dev-python/tpm2-pytss/tpm2-pytss-2.1.0-r2.ebuild) | 30 |
9 files changed, 430 insertions, 180 deletions
diff --git a/dev-python/Manifest.gz b/dev-python/Manifest.gz Binary files differindex c94a1e026e72..13e8a371cb26 100644 --- a/dev-python/Manifest.gz +++ b/dev-python/Manifest.gz diff --git a/dev-python/pyarrow/Manifest b/dev-python/pyarrow/Manifest index 1d74599a5412..b04214cc2946 100644 --- a/dev-python/pyarrow/Manifest +++ b/dev-python/pyarrow/Manifest @@ -1,3 +1,6 @@ +AUX pyarrow-15.0.1-32bit.patch 14620 BLAKE2B 122653b940b855fe7eb8b4b0defa586e233a983f9291643aeabbca061cae503ae4dc4583135b69cc523cf6e73bffbd2fe11308b99e8177ea499426b5e5e273d2 SHA512 9dd83089a4b6cb03ea9e714baa8099e7ed943261428adf8f632ad311e95b45b03bdcd9d6f73c8deaf301783166dc8f99d77992f38836b6f854fdc5dc4abb55a6 DIST apache-arrow-15.0.0.tar.gz 21491996 BLAKE2B 55709d1d181ed5c1482e1eadc9031c692bbd39434ccad17be8c0f3f5af47e3b3d5f262903d1ce09c39442497e14c22c80d7b30215e4de830a4ac82a1b3db34fb SHA512 d5dccaa0907b0e6f2a460e32ae75091942dcb70b51db4aefe2767ee8d99882694607b723a9c06898dda3938d8eb498258d7f9aad11054665b6ea9c2fbaeafa74 +DIST apache-arrow-15.0.1.tar.gz 21499849 BLAKE2B 5f8f91932941105e753b7b7812bf132bd99501ccfac0574b8072e638764cb46694062bcdb8568a474f50de008ede9259b70f16ba7f33ada0f6ec763c21b1c25a SHA512 b426421336c6bc3757626b2743a039d3c7030ad257c3bcf3247a236462dbc140b7eff4476cb727f4d048144a90c1368740c139318f8237d6cc20e87d3efdaf74 EBUILD pyarrow-15.0.0.ebuild 2048 BLAKE2B ff86094c8341eab743497b8d3cf06bb705e25a6457f52b13b82221a32c376998d563aa137acbbc5636f3ea39efc549f4c6bbf15a4d2dce10c8fbb1ee56ec1d0a SHA512 b00882d7e182a2903e5fc07707e40a174ab8188aaef3d5e190a947488d7d94c4a8bc6d3582089b407129df0be03c26c875c3623ee92ca3cb722cf855d76b7045 +EBUILD pyarrow-15.0.1.ebuild 2141 BLAKE2B 29597bcabaaa9b0dd03d545614cdb1f8f96ea691bf5a3f0286ec13732fb4d7585d794549c859a7a627a3c0c702938ce96bad27700f6df31c1b86746cf0f26ae6 SHA512 2e5329d6271033ea846e5d9e10cab4c899b51332e0b7b8f3abd39592e446ce5b35f63c2e114b08fda6f638cc1f2c30469f12fbc3dd6b720cad038fcf34621448 MISC metadata.xml 555 BLAKE2B 5683205ece2b0266e5792f42ebd515c1822563d2705f046ebcabd1de71efc67800616303b2fc83ea8cac3395303178f13e859b7390adfcef23da8d687fc8d6a3 SHA512 61d8f5bcbdbe92b858d0aab3040cd3e8dcb33ba0c45808649e032a165d6826c1a489ae2cfbf8dca52eda82d5b24b4c3f74a9abd6f87d5ff72f6578cf7535c797 diff --git a/dev-python/pyarrow/files/pyarrow-15.0.1-32bit.patch b/dev-python/pyarrow/files/pyarrow-15.0.1-32bit.patch new file mode 100644 index 000000000000..0b54deaf2c33 --- /dev/null +++ b/dev-python/pyarrow/files/pyarrow-15.0.1-32bit.patch @@ -0,0 +1,325 @@ +diff --git a/pyarrow/array.pxi b/pyarrow/array.pxi +index 1416f5f43..058e0eec0 100644 +--- a/pyarrow/array.pxi ++++ b/pyarrow/array.pxi +@@ -1573,7 +1573,7 @@ cdef class Array(_PandasConvertible): + # decoding the dictionary will make sure nulls are correctly handled. + # Decoding a dictionary does imply a copy by the way, + # so it can't be done if the user requested a zero_copy. +- c_options.decode_dictionaries = not zero_copy_only ++ c_options.decode_dictionaries = True + c_options.zero_copy_only = zero_copy_only + c_options.to_numpy = True + +@@ -1585,9 +1585,6 @@ cdef class Array(_PandasConvertible): + # always convert to numpy array without pandas dependency + array = PyObject_to_object(out) + +- if isinstance(array, dict): +- array = np.take(array['dictionary'], array['indices']) +- + if writable and not array.flags.writeable: + # if the conversion already needed to a copy, writeable is True + array = array.copy() +diff --git a/pyarrow/io.pxi b/pyarrow/io.pxi +index 1897e76ef..b57980b3d 100644 +--- a/pyarrow/io.pxi ++++ b/pyarrow/io.pxi +@@ -1987,7 +1987,7 @@ def foreign_buffer(address, size, base=None): + Object that owns the referenced memory. + """ + cdef: +- intptr_t c_addr = address ++ uintptr_t c_addr = address + int64_t c_size = size + shared_ptr[CBuffer] buf + +diff --git a/pyarrow/lib.pxd b/pyarrow/lib.pxd +index 58ec34add..91c7633a7 100644 +--- a/pyarrow/lib.pxd ++++ b/pyarrow/lib.pxd +@@ -285,6 +285,8 @@ cdef class Tensor(_Weakrefable): + + cdef readonly: + DataType type ++ bytes _ssize_t_shape ++ bytes _ssize_t_strides + + cdef void init(self, const shared_ptr[CTensor]& sp_tensor) + +diff --git a/pyarrow/src/arrow/python/arrow_to_pandas.cc b/pyarrow/src/arrow/python/arrow_to_pandas.cc +index e979342b8..8354812ea 100644 +--- a/pyarrow/src/arrow/python/arrow_to_pandas.cc ++++ b/pyarrow/src/arrow/python/arrow_to_pandas.cc +@@ -2499,6 +2499,8 @@ Status ConvertChunkedArrayToPandas(const PandasOptions& options, + std::shared_ptr<ChunkedArray> arr, PyObject* py_ref, + PyObject** out) { + if (options.decode_dictionaries && arr->type()->id() == Type::DICTIONARY) { ++ // XXX we should return an error as below if options.zero_copy_only ++ // is true, but that would break compatibility with existing tests. + const auto& dense_type = + checked_cast<const DictionaryType&>(*arr->type()).value_type(); + RETURN_NOT_OK(DecodeDictionaries(options.pool, dense_type, &arr)); +diff --git a/pyarrow/src/arrow/python/io.cc b/pyarrow/src/arrow/python/io.cc +index 43f8297c5..197f8b9d3 100644 +--- a/pyarrow/src/arrow/python/io.cc ++++ b/pyarrow/src/arrow/python/io.cc +@@ -92,9 +92,12 @@ class PythonFile { + Status Seek(int64_t position, int whence) { + RETURN_NOT_OK(CheckClosed()); + ++ // NOTE: `long long` is at least 64 bits in the C standard, the cast below is ++ // therefore safe. ++ + // whence: 0 for relative to start of file, 2 for end of file +- PyObject* result = cpp_PyObject_CallMethod(file_.obj(), "seek", "(ni)", +- static_cast<Py_ssize_t>(position), whence); ++ PyObject* result = cpp_PyObject_CallMethod(file_.obj(), "seek", "(Li)", ++ static_cast<long long>(position), whence); + Py_XDECREF(result); + PY_RETURN_IF_ERROR(StatusCode::IOError); + return Status::OK(); +@@ -103,16 +106,16 @@ class PythonFile { + Status Read(int64_t nbytes, PyObject** out) { + RETURN_NOT_OK(CheckClosed()); + +- PyObject* result = cpp_PyObject_CallMethod(file_.obj(), "read", "(n)", +- static_cast<Py_ssize_t>(nbytes)); ++ PyObject* result = cpp_PyObject_CallMethod(file_.obj(), "read", "(L)", ++ static_cast<long long>(nbytes)); + PY_RETURN_IF_ERROR(StatusCode::IOError); + *out = result; + return Status::OK(); + } + + Status ReadBuffer(int64_t nbytes, PyObject** out) { +- PyObject* result = cpp_PyObject_CallMethod(file_.obj(), "read_buffer", "(n)", +- static_cast<Py_ssize_t>(nbytes)); ++ PyObject* result = cpp_PyObject_CallMethod(file_.obj(), "read_buffer", "(L)", ++ static_cast<long long>(nbytes)); + PY_RETURN_IF_ERROR(StatusCode::IOError); + *out = result; + return Status::OK(); +diff --git a/pyarrow/tensor.pxi b/pyarrow/tensor.pxi +index 1afce7f4a..c674663dc 100644 +--- a/pyarrow/tensor.pxi ++++ b/pyarrow/tensor.pxi +@@ -15,6 +15,9 @@ + # specific language governing permissions and limitations + # under the License. + ++# Avoid name clash with `pa.struct` function ++import struct as _struct ++ + + cdef class Tensor(_Weakrefable): + """ +@@ -31,7 +34,6 @@ cdef class Tensor(_Weakrefable): + shape: (2, 3) + strides: (12, 4) + """ +- + def __init__(self): + raise TypeError("Do not call Tensor's constructor directly, use one " + "of the `pyarrow.Tensor.from_*` functions instead.") +@@ -40,6 +42,14 @@ cdef class Tensor(_Weakrefable): + self.sp_tensor = sp_tensor + self.tp = sp_tensor.get() + self.type = pyarrow_wrap_data_type(self.tp.type()) ++ self._ssize_t_shape = self._make_shape_or_strides_buffer(self.shape) ++ self._ssize_t_strides = self._make_shape_or_strides_buffer(self.strides) ++ ++ def _make_shape_or_strides_buffer(self, values): ++ """ ++ Make a bytes object holding an array of `values` cast to `Py_ssize_t`. ++ """ ++ return _struct.pack(f"{len(values)}n", *values) + + def __repr__(self): + return """<pyarrow.Tensor> +@@ -282,10 +292,8 @@ strides: {0.strides}""".format(self) + buffer.readonly = 0 + else: + buffer.readonly = 1 +- # NOTE: This assumes Py_ssize_t == int64_t, and that the shape +- # and strides arrays lifetime is tied to the tensor's +- buffer.shape = <Py_ssize_t *> &self.tp.shape()[0] +- buffer.strides = <Py_ssize_t *> &self.tp.strides()[0] ++ buffer.shape = <Py_ssize_t *> cp.PyBytes_AsString(self._ssize_t_shape) ++ buffer.strides = <Py_ssize_t *> cp.PyBytes_AsString(self._ssize_t_strides) + buffer.suboffsets = NULL + + +diff --git a/pyarrow/tests/test_gdb.py b/pyarrow/tests/test_gdb.py +index d0d241cc5..0d12d710d 100644 +--- a/pyarrow/tests/test_gdb.py ++++ b/pyarrow/tests/test_gdb.py +@@ -885,32 +885,61 @@ def test_arrays_heap(gdb_arrow): + ("arrow::DurationArray of type arrow::duration" + "(arrow::TimeUnit::NANO), length 2, offset 0, null count 1 = {" + "[0] = null, [1] = -1234567890123456789ns}")) +- check_heap_repr( +- gdb_arrow, "heap_timestamp_array_s", +- ("arrow::TimestampArray of type arrow::timestamp" +- "(arrow::TimeUnit::SECOND), length 4, offset 0, null count 1 = {" +- "[0] = null, [1] = 0s [1970-01-01 00:00:00], " +- "[2] = -2203932304s [1900-02-28 12:34:56], " +- "[3] = 63730281600s [3989-07-14 00:00:00]}")) +- check_heap_repr( +- gdb_arrow, "heap_timestamp_array_ms", +- ("arrow::TimestampArray of type arrow::timestamp" +- "(arrow::TimeUnit::MILLI), length 3, offset 0, null count 1 = {" +- "[0] = null, [1] = -2203932303877ms [1900-02-28 12:34:56.123], " +- "[2] = 63730281600789ms [3989-07-14 00:00:00.789]}")) +- check_heap_repr( +- gdb_arrow, "heap_timestamp_array_us", +- ("arrow::TimestampArray of type arrow::timestamp" +- "(arrow::TimeUnit::MICRO), length 3, offset 0, null count 1 = {" +- "[0] = null, " +- "[1] = -2203932303345679us [1900-02-28 12:34:56.654321], " +- "[2] = 63730281600456789us [3989-07-14 00:00:00.456789]}")) +- check_heap_repr( +- gdb_arrow, "heap_timestamp_array_ns", +- ("arrow::TimestampArray of type arrow::timestamp" +- "(arrow::TimeUnit::NANO), length 2, offset 0, null count 1 = {" +- "[0] = null, " +- "[1] = -2203932303012345679ns [1900-02-28 12:34:56.987654321]}")) ++ if sys.maxsize > 2**32: ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_s", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::SECOND), length 4, offset 0, null count 1 = {" ++ "[0] = null, [1] = 0s [1970-01-01 00:00:00], " ++ "[2] = -2203932304s [1900-02-28 12:34:56], " ++ "[3] = 63730281600s [3989-07-14 00:00:00]}")) ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_ms", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::MILLI), length 3, offset 0, null count 1 = {" ++ "[0] = null, [1] = -2203932303877ms [1900-02-28 12:34:56.123], " ++ "[2] = 63730281600789ms [3989-07-14 00:00:00.789]}")) ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_us", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::MICRO), length 3, offset 0, null count 1 = {" ++ "[0] = null, " ++ "[1] = -2203932303345679us [1900-02-28 12:34:56.654321], " ++ "[2] = 63730281600456789us [3989-07-14 00:00:00.456789]}")) ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_ns", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::NANO), length 2, offset 0, null count 1 = {" ++ "[0] = null, " ++ "[1] = -2203932303012345679ns [1900-02-28 12:34:56.987654321]}")) ++ else: ++ # Python's datetime is limited to smaller timestamps on 32-bit platforms ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_s", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::SECOND), length 4, offset 0, null count 1 = {" ++ "[0] = null, [1] = 0s [1970-01-01 00:00:00], " ++ "[2] = -2203932304s [too large to represent], " ++ "[3] = 63730281600s [too large to represent]}")) ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_ms", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::MILLI), length 3, offset 0, null count 1 = {" ++ "[0] = null, [1] = -2203932303877ms [too large to represent], " ++ "[2] = 63730281600789ms [too large to represent]}")) ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_us", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::MICRO), length 3, offset 0, null count 1 = {" ++ "[0] = null, " ++ "[1] = -2203932303345679us [too large to represent], " ++ "[2] = 63730281600456789us [too large to represent]}")) ++ check_heap_repr( ++ gdb_arrow, "heap_timestamp_array_ns", ++ ("arrow::TimestampArray of type arrow::timestamp" ++ "(arrow::TimeUnit::NANO), length 2, offset 0, null count 1 = {" ++ "[0] = null, " ++ "[1] = -2203932303012345679ns [too large to represent]}")) + + # Decimal + check_heap_repr( +diff --git a/pyarrow/tests/test_io.py b/pyarrow/tests/test_io.py +index 5a495aa80..17eab871a 100644 +--- a/pyarrow/tests/test_io.py ++++ b/pyarrow/tests/test_io.py +@@ -36,7 +36,7 @@ from pyarrow import Codec + import pyarrow as pa + + +-def check_large_seeks(file_factory): ++def check_large_seeks(file_factory, expected_error=None): + if sys.platform in ('win32', 'darwin'): + pytest.skip("need sparse file support") + try: +@@ -45,11 +45,16 @@ def check_large_seeks(file_factory): + f.truncate(2 ** 32 + 10) + f.seek(2 ** 32 + 5) + f.write(b'mark\n') +- with file_factory(filename) as f: +- assert f.seek(2 ** 32 + 5) == 2 ** 32 + 5 +- assert f.tell() == 2 ** 32 + 5 +- assert f.read(5) == b'mark\n' +- assert f.tell() == 2 ** 32 + 10 ++ if expected_error: ++ with expected_error: ++ file_factory(filename) ++ else: ++ with file_factory(filename) as f: ++ assert f.size() == 2 ** 32 + 10 ++ assert f.seek(2 ** 32 + 5) == 2 ** 32 + 5 ++ assert f.tell() == 2 ** 32 + 5 ++ assert f.read(5) == b'mark\n' ++ assert f.tell() == 2 ** 32 + 10 + finally: + os.unlink(filename) + +@@ -1137,7 +1142,14 @@ def test_memory_zero_length(tmpdir): + + + def test_memory_map_large_seeks(): +- check_large_seeks(pa.memory_map) ++ if sys.maxsize >= 2**32: ++ expected_error = None ++ else: ++ expected_error = pytest.raises( ++ pa.ArrowCapacityError, ++ match="Requested memory map length 4294967306 " ++ "does not fit in a C size_t") ++ check_large_seeks(pa.memory_map, expected_error=expected_error) + + + def test_memory_map_close_remove(tmpdir): +diff --git a/pyarrow/tests/test_pandas.py b/pyarrow/tests/test_pandas.py +index 8fd4b3041..168ed7e42 100644 +--- a/pyarrow/tests/test_pandas.py ++++ b/pyarrow/tests/test_pandas.py +@@ -2601,8 +2601,9 @@ class TestConvertStructTypes: + ('yy', np.bool_)])), + ('y', np.int16), + ('z', np.object_)]) +- # Note: itemsize is not a multiple of sizeof(object) +- assert dt.itemsize == 12 ++ # Note: itemsize is not necessarily a multiple of sizeof(object) ++ # object_ is 8 bytes on 64-bit systems, 4 bytes on 32-bit systems ++ assert dt.itemsize == (12 if sys.maxsize > 2**32 else 8) + ty = pa.struct([pa.field('x', pa.struct([pa.field('xx', pa.int8()), + pa.field('yy', pa.bool_())])), + pa.field('y', pa.int16()), +diff --git a/pyarrow/tests/test_schema.py b/pyarrow/tests/test_schema.py +index fa75fcea3..8793c9e77 100644 +--- a/pyarrow/tests/test_schema.py ++++ b/pyarrow/tests/test_schema.py +@@ -681,7 +681,8 @@ def test_schema_sizeof(): + pa.field('bar', pa.string()), + ]) + +- assert sys.getsizeof(schema) > 30 ++ # Note: pa.schema is twice as large on 64-bit systems ++ assert sys.getsizeof(schema) > (30 if sys.maxsize > 2**32 else 15) + + schema2 = schema.with_metadata({"key": "some metadata"}) + assert sys.getsizeof(schema2) > sys.getsizeof(schema) diff --git a/dev-python/pyarrow/pyarrow-15.0.1.ebuild b/dev-python/pyarrow/pyarrow-15.0.1.ebuild new file mode 100644 index 000000000000..07163984e450 --- /dev/null +++ b/dev-python/pyarrow/pyarrow-15.0.1.ebuild @@ -0,0 +1,87 @@ +# Copyright 2023-2024 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} ) + +inherit distutils-r1 multiprocessing + +DESCRIPTION="Python library for Apache Arrow" +HOMEPAGE=" + https://arrow.apache.org/ + https://github.com/apache/arrow/ + https://pypi.org/project/pyarrow/ +" +SRC_URI="mirror://apache/arrow/arrow-${PV}/apache-arrow-${PV}.tar.gz" +S="${WORKDIR}/apache-arrow-${PV}/python" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~hppa ~riscv" +IUSE="parquet snappy ssl" + +RDEPEND=" + ~dev-libs/apache-arrow-${PV}[compute,dataset,json,parquet?,re2,snappy?,ssl?] + dev-python/numpy[${PYTHON_USEDEP}] +" +BDEPEND=" + test? ( + dev-python/hypothesis[${PYTHON_USEDEP}] + dev-python/pandas[${PYTHON_USEDEP}] + <dev-python/pytest-8.1[${PYTHON_USEDEP}] + dev-libs/apache-arrow[lz4,zlib] + ) +" + +distutils_enable_tests pytest + +PATCHES=( + # upstream backports + "${FILESDIR}/${PN}-15.0.1-32bit.patch" +) + +src_prepare() { + # cython's -Werror + sed -i -e '/--warning-errors/d' CMakeLists.txt || die + distutils-r1_src_prepare +} + +src_compile() { + export PYARROW_PARALLEL="$(makeopts_jobs)" + export PYARROW_BUILD_VERBOSE=1 + export PYARROW_CXXFLAGS="${CXXFLAGS}" + export PYARROW_BUNDLE_ARROW_CPP_HEADERS=0 + export PYARROW_CMAKE_GENERATOR=Ninja + export PYARROW_WITH_HDFS=1 + if use parquet; then + export PYARROW_WITH_DATASET=1 + export PYARROW_WITH_PARQUET=1 + use ssl && export PYARROW_WITH_PARQUET_ENCRYPTION=1 + fi + if use snappy; then + export PYARROW_WITH_SNAPPY=1 + fi + + distutils-r1_src_compile +} + +python_test() { + local EPYTEST_DESELECT=( + # wtf? + tests/test_fs.py::test_localfs_errors + # these require apache-arrow with jemalloc that doesn't seem + # to be supported by the Gentoo package + tests/test_memory.py::test_env_var + tests/test_memory.py::test_specific_memory_pools + tests/test_memory.py::test_supported_memory_backends + # pandas changed, i guess + tests/test_pandas.py::test_array_protocol_pandas_extension_types + tests/test_table.py::test_table_factory_function_args_pandas + ) + + cd "${T}" || die + epytest --pyargs pyarrow +} diff --git a/dev-python/tpm2-pytss/Manifest b/dev-python/tpm2-pytss/Manifest index d94f249ee59d..63c74c07ecff 100644 --- a/dev-python/tpm2-pytss/Manifest +++ b/dev-python/tpm2-pytss/Manifest @@ -1,6 +1,3 @@ -AUX tpm2-pytss-2.1.0-internal-crypto-fix-_MyRSAPrivateNumbers-with-crypto.patch 2494 BLAKE2B 98250351f74b43bb03c714fe208e7ceeae295b5341426527e09ceabd7138b354b765fe8630b50ba37b0e0c157761ac4b8aa5cd7a516a5af3e81a2fc6fd94b989 SHA512 b4a67e42e91af48282648ca673e949380b1df32df2ff9595de387720ee0537c6c350d2bb836b320f6fadee6c6a83d52e3d97708a0797f5d699959e611e1c2995 -AUX tpm2-pytss-2.1.0-test-add-check-for-renamed-cryptography-types.patch 1556 BLAKE2B a3346aa7a685514b2dab15c713ae1661e8edbfc91414a2c2d0cfe939fa7761c551095a03156119bcb73cbe8605abf80446f6fbc9ee7efdafd45f39cc88074679 SHA512 68746d0f71141ea4f8add786aec8f04d50e4b2fb5883d7cecea5e9eab13682bee4bf177bf9351f9a7caa9494430e608c4eb70aa9ca82bf42c379dfe6ddcbe1d5 -AUX tpm2-pytss-2.1.0-test-disable-pcr_set_auth_value-and-pcr_set_auth_pol.patch 1491 BLAKE2B bc39ba520ad03ff22b573f6e93bb6e4cea5d776ca667abad79e3ca09b88116c61e458743f954f2676503a488e5003b78eeb45b3bfb942988651018a83c94c80e SHA512 1ddd469ed5775b742461a2d7a48e692871c6c1a5d9696ae7dadf531707f003a0679dc618d1231b25147b3b744d57130804c4dedeb3ce20a9855a3a2813fe18f8 -DIST tpm2-pytss-2.1.0.tar.gz 203244 BLAKE2B f960fc08c12d10835ec7127e47842ea82b760e2de4fb3060a2f55f9bab5396cbe6f8edd07cb35b98d90ba8ec22c2d3ff287acbad47feac05f02df38b154f2132 SHA512 b4d8b3a0124e67278f08ff72d3635221e84ae26b6a5489ee159e641931aa9045b4b5111ed02d5ff86d69bd89b8460b2592a3fdb94742562351e41783c78184ba -EBUILD tpm2-pytss-2.1.0-r2.ebuild 1230 BLAKE2B 13c672d69ea01f1f89e6bb43773134a8b867e89ad8adcd25c0b88a82f59139af1cd2f3d040506ad54146874ddfe0e16edfd30e01bb8e443a2ac94a02cad8ea0b SHA512 656c63c9c2da8f1b4856fc91b8d7b441a1d30baadb1208148a8a7e1a43b4042ac867e55749cfddd7ee7530547cb7c0fa67492bfe94c455ba94149695040b9000 +DIST tpm2-pytss-2.2.1.tar.gz 208114 BLAKE2B fe07f38a6c19bc2b2baf079184f39d3ef28268900a35e14bfa22abb61dd956fdb286560ab6d35d66160147296e590fa3dac3d015f9919e1966f43179c1bdcdb1 SHA512 0acaa37d118d71edb123c5e88ef5af5dd78a73b0f8db15500866b6799d98e4c6107f9da1b8c1bce1c9061e9df85d735a39d9335cea65cac0e058db83aed8ad06 +EBUILD tpm2-pytss-2.2.1.ebuild 941 BLAKE2B 5d249a0c5a214281fd8d846fd6e946e506580e7dac30054afbae57bf450624726db3a8293f47bf535cd091e61361bf8b32322571465636a7a9b2db7be34ab47f SHA512 07ef46e0fc35711c3cb89fbde64f16af34ab598cd175a1a228cf475a205ecc10792723c0de02c97a7137d2d4a573920b8fe39e922a78e33035b20749024f0639 MISC metadata.xml 648 BLAKE2B e4de9aae579210454f1a71043de7073c1aa7ead9c5acdea48ec2c8ebf5665ebb6837f198b6de49f7ae58bd1f5062ed4f8ca7092df56d8904aecd16bc226d95cd SHA512 dd87ec10b28530281c08d57d86a5004178e4eda729a43690ad4ab84effe246b34d777ec56c66d61a1e0335d2b9c1599366aa55bc58477f7c2dfa4eec5ab7d9ac diff --git a/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-internal-crypto-fix-_MyRSAPrivateNumbers-with-crypto.patch b/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-internal-crypto-fix-_MyRSAPrivateNumbers-with-crypto.patch deleted file mode 100644 index 4aaecd935c22..000000000000 --- a/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-internal-crypto-fix-_MyRSAPrivateNumbers-with-crypto.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 0fbb9d099370c0a7031dd13990986538f586836a Mon Sep 17 00:00:00 2001 -From: Erik Larsson <who+github@cnackers.org> -Date: Fri, 26 Jan 2024 12:01:41 +0100 -Subject: [PATCH 3/3] internal/crypto: fix _MyRSAPrivateNumbers with - cryptograpy >= 42.0.1 - -RSAPrivateNumbers was moved to a rust implementation in 42.0.1. -So inheritance is no longer possible, so turn the class into a -wrapper instead of a subclass. - -Fixes #561 - -Signed-off-by: Erik Larsson <who+github@cnackers.org> ---- - src/tpm2_pytss/internal/crypto.py | 21 +++++++++------------ - 1 file changed, 9 insertions(+), 12 deletions(-) - -diff --git a/src/tpm2_pytss/internal/crypto.py b/src/tpm2_pytss/internal/crypto.py -index 93e5181..42030c5 100644 ---- a/src/tpm2_pytss/internal/crypto.py -+++ b/src/tpm2_pytss/internal/crypto.py -@@ -23,7 +23,7 @@ from cryptography.hazmat.primitives.ciphers.algorithms import AES, Camellia - from cryptography.hazmat.primitives.ciphers import modes, Cipher, CipherAlgorithm - from cryptography.hazmat.backends import default_backend - from cryptography.exceptions import UnsupportedAlgorithm, InvalidSignature --from typing import Tuple, Type -+from typing import Tuple, Type, Any - import secrets - import sys - -@@ -220,7 +220,7 @@ def public_to_key(obj): - return key - - --class _MyRSAPrivateNumbers(rsa.RSAPrivateNumbers): -+class _MyRSAPrivateNumbers: - def __init__(self, p: int, n: int, e: int, pubnums: rsa.RSAPublicNumbers): - - q = n // p -@@ -231,7 +231,12 @@ class _MyRSAPrivateNumbers(rsa.RSAPrivateNumbers): - dmq1 = rsa.rsa_crt_dmq1(d, q) - iqmp = rsa.rsa_crt_iqmp(p, q) - -- super().__init__(p, q, d, dmp1, dmq1, iqmp, pubnums) -+ self._private_numbers = rsa.RSAPrivateNumbers( -+ p, q, d, dmp1, dmq1, iqmp, pubnums -+ ) -+ -+ def private_key(self, *args: Any, **kwargs: Any) -> rsa.RSAPrivateKey: -+ return self._private_numbers.private_key(*args, **kwargs) - - @staticmethod - def _xgcd(a: int, b: int) -> Tuple[int, int, int]: -@@ -251,15 +256,7 @@ class _MyRSAPrivateNumbers(rsa.RSAPrivateNumbers): - # - @staticmethod - def _modinv(a, m): -- -- if sys.version_info < (3, 8): -- g, x, y = _MyRSAPrivateNumbers._xgcd(a, m) -- if g != 1: -- raise Exception("modular inverse does not exist") -- else: -- return x % m -- else: -- return pow(a, -1, m) -+ return pow(a, -1, m) - - @staticmethod - def _generate_d(p, q, e, n): --- -2.43.0 - diff --git a/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-add-check-for-renamed-cryptography-types.patch b/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-add-check-for-renamed-cryptography-types.patch deleted file mode 100644 index c1aeaee4dcd1..000000000000 --- a/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-add-check-for-renamed-cryptography-types.patch +++ /dev/null @@ -1,45 +0,0 @@ -From e4006e6066c015d9ed55befa9b98247fbdcafd7d Mon Sep 17 00:00:00 2001 -From: Erik Larsson <who+github@cnackers.org> -Date: Mon, 26 Jun 2023 12:15:41 +0200 -Subject: [PATCH] test: add check for renamed cryptography types - -Some types have changed their names in newer cryptography release, so add them to the tests - -Signed-off-by: Erik Larsson <who+github@cnackers.org> ---- - test/test_crypto.py | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - -diff --git a/test/test_crypto.py b/test/test_crypto.py -index 92cda00..7d7466e 100644 ---- a/test/test_crypto.py -+++ b/test/test_crypto.py -@@ -596,11 +596,23 @@ class CryptoTest(TSS2_EsapiTest): - - with self.assertRaises(ValueError) as e: - TPMT_SENSITIVE.from_pem(der) -- self.assertEqual(str(e.exception), "unsupported key type: _DSAPrivateKey") -+ self.assertIn( -+ str(e.exception), -+ ( -+ "unsupported key type: _DSAPrivateKey", -+ "unsupported key type: DSAPrivateKey", -+ ), -+ ) - - with self.assertRaises(ValueError) as e: - TPMT_PUBLIC.from_pem(dsa_public_key) -- self.assertEqual(str(e.exception), "unsupported key type: _DSAPublicKey") -+ self.assertIn( -+ str(e.exception), -+ ( -+ "unsupported key type: _DSAPublicKey", -+ "unsupported key type: DSAPublicKey", -+ ), -+ ) - - def test_from_pem_with_symmetric(self): - sym = TPMT_SYM_DEF_OBJECT(algorithm=TPM2_ALG.AES) --- -2.41.0 - diff --git a/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-disable-pcr_set_auth_value-and-pcr_set_auth_pol.patch b/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-disable-pcr_set_auth_value-and-pcr_set_auth_pol.patch deleted file mode 100644 index 6e99688b76ba..000000000000 --- a/dev-python/tpm2-pytss/files/tpm2-pytss-2.1.0-test-disable-pcr_set_auth_value-and-pcr_set_auth_pol.patch +++ /dev/null @@ -1,40 +0,0 @@ -From c55775c30c06bf3a3066b4047cb51cb42f1e403d Mon Sep 17 00:00:00 2001 -From: Erik Larsson <who+github@cnackers.org> -Date: Sat, 6 Jan 2024 06:25:54 +0100 -Subject: [PATCH 2/3] test: disable pcr_set_auth_value and pcr_set_auth_policy - tests for swtpm - -Since [commit][1] in libtpms setting auth values/policies for PCRs are no longer supported. - -[1]: https://github.com/stefanberger/libtpms/commit/af4fc0e66df6d012c61aee7c418148fb261d77a9 - -Signed-off-by: Erik Larsson <who+github@cnackers.org> ---- - test/test_esapi.py | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/test/test_esapi.py b/test/test_esapi.py -index 269a43b..e0b6d35 100644 ---- a/test/test_esapi.py -+++ b/test/test_esapi.py -@@ -3585,6 +3585,8 @@ class TestEsys(TSS2_EsapiTest): - self.ectx.pcr_allocate(pcrsels, session3=object()) - - def test_pcr_set_auth_policy(self): -+ if getattr(self.tcti, "name", "") == "swtpm": -+ self.skipTest("pcr_set_auth_policy not supported by swtpm") - - policy = b"0123456789ABCDEF0123456789ABCDEF" - self.ectx.pcr_set_auth_policy(policy, TPM2_ALG.SHA256, ESYS_TR.PCR20) -@@ -3630,6 +3632,8 @@ class TestEsys(TSS2_EsapiTest): - ) - - def test_pcr_set_auth_value(self): -+ if getattr(self.tcti, "name", "") == "swtpm": -+ self.skipTest("pcr_set_auth_value not supported by swtpm") - - self.ectx.pcr_set_auth_value(ESYS_TR.PCR20, b"password") - self.ectx.tr_set_auth(ESYS_TR.PCR20, b"password") --- -2.43.0 - diff --git a/dev-python/tpm2-pytss/tpm2-pytss-2.1.0-r2.ebuild b/dev-python/tpm2-pytss/tpm2-pytss-2.2.1.ebuild index 0ec096900a00..aa01cc807256 100644 --- a/dev-python/tpm2-pytss/tpm2-pytss-2.1.0-r2.ebuild +++ b/dev-python/tpm2-pytss/tpm2-pytss-2.2.1.ebuild @@ -1,5 +1,6 @@ # Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 + EAPI=8 DISTUTILS_EXT=1 @@ -11,37 +12,32 @@ inherit distutils-r1 pypi DESCRIPTION="Python bindings for TSS" HOMEPAGE=" - https://pypi.org/project/tpm2-pytss - https://github.com/tpm2-software/tpm2-pytss + https://pypi.org/project/tpm2-pytss/ + https://github.com/tpm2-software/tpm2-pytss/ " LICENSE="BSD-2" SLOT="0" KEYWORDS="~amd64" - IUSE="+fapi test" -RDEPEND="${PYTHON_DEPS} +DEPEND=" app-crypt/tpm2-tss:=[fapi=] fapi? ( >=app-crypt/tpm2-tss-3.0.3:= ) + test? ( app-crypt/swtpm ) +" +RDEPEND=" + ${DEPEND} dev-python/cffi[${PYTHON_USEDEP}] dev-python/asn1crypto[${PYTHON_USEDEP}] dev-python/cryptography[${PYTHON_USEDEP}] dev-python/pycparser[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}]" - -DEPEND="${RDEPEND} - test? ( app-crypt/swtpm )" - -BDEPEND="${PYTHON_DEPS} + dev-python/pyyaml[${PYTHON_USEDEP}] +" +BDEPEND=" + dev-python/pkgconfig[${PYTHON_USEDEP}] dev-python/setuptools-scm[${PYTHON_USEDEP}] - dev-python/pkgconfig[${PYTHON_USEDEP}]" - -PATCHES=( - "${FILESDIR}/${PN}-2.1.0-test-add-check-for-renamed-cryptography-types.patch" - "${FILESDIR}/${PN}-2.1.0-internal-crypto-fix-_MyRSAPrivateNumbers-with-crypto.patch" - "${FILESDIR}/${PN}-2.1.0-test-disable-pcr_set_auth_value-and-pcr_set_auth_pol.patch" - ) +" export SETUPTOOLS_SCM_PRETEND_VERSION=${PV} |