diff options
Diffstat (limited to 'dev-python/gmpy')
-rw-r--r-- | dev-python/gmpy/Manifest | 5 | ||||
-rw-r--r-- | dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch | 132 | ||||
-rw-r--r-- | dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch | 17 | ||||
-rw-r--r-- | dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch | 12 | ||||
-rw-r--r-- | dev-python/gmpy/gmpy-2.1.0_beta5.ebuild | 53 |
5 files changed, 219 insertions, 0 deletions
diff --git a/dev-python/gmpy/Manifest b/dev-python/gmpy/Manifest index 16dc5d3d2e79..765851b09522 100644 --- a/dev-python/gmpy/Manifest +++ b/dev-python/gmpy/Manifest @@ -1,5 +1,10 @@ AUX gmpy-2.0.8-fix-mpir-types.patch 636 BLAKE2B 3f9a73390cab39ac02c9cdbf6c78381a14e861b15c4e0194e9727b3e801817111b6ece399a2479c0880f84d542816b2e388ad15e8f9786e2ab63b5e893f31cc1 SHA512 701e985b1d8f1d3ed0efa48a9ee225bfb9a06f5a19f53a8a1ec6c525e74fb2b6fd006f1bba28188926f77faec6cbc456985b810b7c774aef1699a0ab2c07896d AUX gmpy-2.0.8-test-exit-status.patch 1482 BLAKE2B 5fce4170ce1993cf7e44077b81ecf45b4c8d3b779cb8744c6deef6444cc728a4cf7831aac0cc31a0b6315518bead442ce232e0052e72229f397691c21afb5890 SHA512 bbb708c0323167cf86c60ef6d398a588adc9a7ccc96eb1cee9d36c38b34c69c896a7df99f50611b29ba6ccb79f77408d274074bd4878e86b8f3bfc38675b74d6 +AUX gmpy-2.1.0_beta5-failed-tests.patch 4756 BLAKE2B 1258a1b0dd5d0a86ffde979c8766e4829d35ef91c9c829c2d2b433ac5811d45995bdf089b3dc2dc6b58d9b3a10f0283b22d52551b06da4f7709d4f78c8366240 SHA512 a4478447e966292db24e208b763ac11463e7684372e7df5d2115e5908ca6fd88718005c3f8169dc0171e22160d10d3dac034106f50680bc7e1d86d96cc3bde11 +AUX gmpy-2.1.0_beta5-pyhash-nan.patch 379 BLAKE2B 2703f8fc891bb2742d8159834ae252014071745f5097b54990393ca560b804d1cf21b540efd71fea7d4371bb76f040d76596bc73f12f998554b58ae1a77c0051 SHA512 133d1c825f0af2108131ea9e702b5499e1970eef027fc63ee6516fea6cbe5a684aca2a3b8c09c20e3cbdbad87478d692d664bde75a04bae58feed63b8148e6bb +AUX gmpy-2.1.0_beta5-test-input.patch 436 BLAKE2B c0cea44d17b1a44470c13893500dbad327b9f1b694eeeb65a62a307dadfcae06ad57450aeddfd410432a04d7d877dc14c330c0174c49784c676d4079b628f9ea SHA512 9647d199be4017495e1525223e6b40bef50655bc86ce348fd0db78ea56b832795925848ad6897c7c83f7ae92e0a683105a16ad8fcb312c5676005ddb6d35c7dc DIST gmpy2-2.0.8.zip 280551 BLAKE2B b73c48b739ae6972231672ad28598c09e00db6348cd281d190c6dfcf49b0e977563baabe84825658d78bf1e2ac4927ad1882787b6d4efd19f28a4f7fd6a061b4 SHA512 090f449641f378c73eb166831b1d956c6cee3da83e42fde8741f18aa0fa687e37927fc3b045d4b35e3a3b75570e6b1074150d8bc29d16119ab5c717bcfcf9fb4 +DIST gmpy2-2.1.0b5.tar.gz 264742 BLAKE2B 1dd6dc66f9ec8cb2738f449112aa44feb40ba983f6da5f7a0760016e79ffed19037d77d47c0c0b816f9088725207e50ba3bd423349ed4c744ff03059c4c6a19a SHA512 7dc647642d7b61af77258881a7b91ab967dd11a86ba88ff5b7fd41cd4c999d2bb4cfe586511e79cc5f21f0f00d0823bbd2620d69df051c8cead15090423a657a EBUILD gmpy-2.0.8-r2.ebuild 1716 BLAKE2B 85e9237fcdedc534b93243109f28754577f34328602317fb6a7d599f33839c5c3b019973e2a73974211d6e96e93653942de09946031ad87d996f66c90c1fc0d4 SHA512 195083630391eed0b1b392116d6a34722bbf4a1e40dc94448a0683d3b149a3f2f65937a95456879ce961fde2ee9da39370392599af5112f3ff913000369d6b50 +EBUILD gmpy-2.1.0_beta5.ebuild 1469 BLAKE2B 2257bc9017aef226eb904ecbb7dc7b56bf33d199566e68df2dca5912f57ead6069ae391fdc8aa481c7f636b9959859ff4da737389d9f78270a825ff19e106abe SHA512 fc9ad98b190d044e769c4ba0f96026f43502f32cd5e67523aa4fcfd1ce1ebb2d04bddb528ba0d66e68e8a881042a07f8023905beefc5d3bddb85c8ad41f2f07d MISC metadata.xml 795 BLAKE2B df987c466b2666db915c405dea507c17f90181c2e2948885292a6de44ba0c4bec640fe25bea3b8b8105d035c3ff999750b747cfd7f4caaab561f459056823eb5 SHA512 e7f8324cdacceed22f28e27a224668f59955fb5a639d26376da037b0d21437ef57708c7c325e00c771df9e11050be8dc423a3d4b631599da2cc1ef3f97cf3795 diff --git a/dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch b/dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch new file mode 100644 index 000000000000..38a98579409a --- /dev/null +++ b/dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch @@ -0,0 +1,132 @@ +diff --git a/src/gmpy2_mpz.c b/src/gmpy2_mpz.c +index e5087fa..66a297a 100644 +--- a/src/gmpy2_mpz.c ++++ b/src/gmpy2_mpz.c +@@ -69,7 +69,7 @@ static PyNumberMethods GMPy_MPZ_number_methods = + (binaryfunc) GMPy_MPZ_ISub_Slot, /* nb_inplace_subtract */ + (binaryfunc) GMPy_MPZ_IMul_Slot, /* nb_inplace_multiply */ + (binaryfunc) GMPy_MPZ_IRem_Slot, /* nb_inplace_remainder */ +- (ternaryfunc) GMPy_MPZ_IPow_Slot, /* nb_inplace_power */ ++ 0, /* nb_inplace_power */ + (binaryfunc) GMPy_MPZ_ILshift_Slot, /* nb_inplace_lshift */ + (binaryfunc) GMPy_MPZ_IRshift_Slot, /* nb_inplace_rshift */ + 0, /* nb_inplace_and */ +@@ -113,7 +113,7 @@ static PyNumberMethods GMPy_MPZ_number_methods = + (binaryfunc) GMPy_MPZ_IMul_Slot, /* nb_inplace_multiply */ + 0, /* nb_inplace_divide */ + (binaryfunc) GMPy_MPZ_IRem_Slot, /* nb_inplace_remainder */ +- (ternaryfunc) GMPy_MPZ_IPow_Slot, /* nb_inplace_power */ ++ 0, /* nb_inplace_power */ + (binaryfunc) GMPy_MPZ_ILshift_Slot, /* nb_inplace_lshift */ + (binaryfunc) GMPy_MPZ_IRshift_Slot, /* nb_inplace_rshift */ + 0, /* nb_inplace_and */ +@@ -229,4 +229,3 @@ static PyTypeObject MPZ_Type = + GMPy_MPZ_NewInit, /* tp_new */ + 0, /* tp_free */ + }; +- +diff --git a/src/gmpy2_pow.c b/src/gmpy2_pow.c +index ddcb43a..cf96470 100644 +--- a/src/gmpy2_pow.c ++++ b/src/gmpy2_pow.c +@@ -98,8 +98,11 @@ GMPy_Integer_Pow(PyObject *b, PyObject *e, PyObject *m, CTXT_Object *context) + unsigned long el; + + if (mpz_sgn(tempe->z) < 0) { +- VALUE_ERROR("pow() exponent cannot be negative"); +- goto err; ++ Py_DECREF((PyObject*)result); ++ Py_DECREF((PyObject*)tempb); ++ Py_DECREF((PyObject*)tempe); ++ ++ return GMPy_Real_Pow(b, e, m, context); + } + + /* Catch -1, 0, 1 getting raised to large exponents. */ +diff --git a/src/gmpy2_xmpz_inplace.c b/src/gmpy2_xmpz_inplace.c +index bbcd977..e5bbf09 100644 +--- a/src/gmpy2_xmpz_inplace.c ++++ b/src/gmpy2_xmpz_inplace.c +@@ -271,14 +271,14 @@ GMPy_XMPZ_IPow_Slot(PyObject *self, PyObject *other, PyObject *mod) + mp_bitcnt_t exp; + + exp = mp_bitcnt_t_From_Integer(other); +- if (exp == (mp_bitcnt_t)(-1) && PyErr_Occurred()) { +- PyErr_Clear(); +- Py_RETURN_NOTIMPLEMENTED; +- } ++ if (exp == (mp_bitcnt_t)(-1) && PyErr_Occurred()) ++ return NULL; + + mpz_pow_ui(MPZ(self), MPZ(self), exp); + Py_INCREF((PyObject*)self); + return (PyObject*)self; ++ ++ Py_RETURN_NOTIMPLEMENTED; + } + + /* Inplace xmpz and. +@@ -346,4 +346,3 @@ GMPy_XMPZ_IIor_Slot(PyObject *self, PyObject *other) + + Py_RETURN_NOTIMPLEMENTED; + } +- +diff --git a/test/test_gmpy2_mpz_inplace.txt b/test/test_gmpy2_mpz_inplace.txt +index e7a8b96..147118c 100644 +--- a/test/test_gmpy2_mpz_inplace.txt ++++ b/test/test_gmpy2_mpz_inplace.txt +@@ -147,18 +147,16 @@ Test ipow operator + mpz(25) + >>> x **= xmpz(2); x + mpz(625) +->>> x **= -2 +-Traceback (most recent call last): +- File "<stdin>", line 1, in <module> +-TypeError: unsupported operand type(s) for ** or pow(): 'mpz' and 'int' ++>>> x **= -2; x ++mpfr('2.5600000000000001e-06') ++>>> x = mpz(625) + >>> x **= 2; x + mpz(390625) +->>> x **= mpfr(2) +-Traceback (most recent call last): +- File "<stdin>", line 1, in <module> +-TypeError: unsupported operand type(s) for ** or pow(): 'mpz' and 'mpfr' +->>> 1 +-1 ++>>> x **= mpfr(2); x ++mpfr('152587890625.0') ++>>> x = mpz(390625) ++>>> x **= mpfr(-2); x ++mpfr('6.5535999999999999e-12') + + Test iand operator + ------------------ +diff --git a/test/test_gmpy2_pow.txt b/test/test_gmpy2_pow.txt +index 89bd876..d5b1f45 100644 +--- a/test/test_gmpy2_pow.txt ++++ b/test/test_gmpy2_pow.txt +@@ -15,9 +15,7 @@ mpz(25) + >>> ctx.pow(z1, z2) + mpz(25) + >>> z1 ** -z2 +-Traceback (most recent call last): +- File "<stdin>", line 1, in <module> +-ValueError: pow() exponent cannot be negative ++mpfr('0.040000000000000001') + >>> z1 ** 0 + mpz(1) + >>> mpz(0) ** 32 +diff --git a/test/test_gmpy2_xmpz_inplace.txt b/test/test_gmpy2_xmpz_inplace.txt +index 94f86b7..c02f966 100644 +--- a/test/test_gmpy2_xmpz_inplace.txt ++++ b/test/test_gmpy2_xmpz_inplace.txt +@@ -135,7 +135,7 @@ xmpz(625) + >>> x **= -2 + Traceback (most recent call last): + File "<stdin>", line 1, in <module> +-TypeError: unsupported operand type(s) for ** or pow(): 'xmpz' and 'int' ++ValueError: a non-negative value is required + >>> x **= 2; x + xmpz(390625) + >>> x **= mpfr(2) diff --git a/dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch b/dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch new file mode 100644 index 000000000000..9f59a6096fcd --- /dev/null +++ b/dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch @@ -0,0 +1,17 @@ +diff --git a/src/gmpy2_hash.c b/src/gmpy2_hash.c +index f276a42..1d2bfd1 100644 +--- a/src/gmpy2_hash.c ++++ b/src/gmpy2_hash.c +@@ -147,7 +147,12 @@ _mpfr_hash(mpfr_t f) + } + } + else { ++#if PY_VERSION_HEX >= 0x030A00A0 ++ // Python 3.10 ++ return _Py_HashPointer(f); ++#else + return _PyHASH_NAN; ++#endif + } + } + diff --git a/dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch b/dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch new file mode 100644 index 000000000000..16705d917c93 --- /dev/null +++ b/dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch @@ -0,0 +1,12 @@ +diff --git a/test/runtests.py b/test/runtests.py +index 5e5842d..7d64e52 100644 +--- a/test/runtests.py ++++ b/test/runtests.py +@@ -81,7 +81,6 @@ if sys.version.startswith('3.1.'): + print("with Python 3.1. The doctest module in Python 3.2 and later does not") + print("have this issue.") + print() +- input("Press ENTER to continue.. ") + print() + + mpz_doctests = ["test_mpz_create.txt", "test_mpz.txt", "test_mpz_io.txt", diff --git a/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild b/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild new file mode 100644 index 000000000000..739475e74e0a --- /dev/null +++ b/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild @@ -0,0 +1,53 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{7..10} ) +inherit distutils-r1 + +MY_PN="${PN}2" +MY_P="${MY_PN}-${PV/_beta/b}" + +DESCRIPTION="Python bindings for GMP, MPC, MPFR and MPIR libraries" +HOMEPAGE="https://github.com/aleaxit/gmpy" +SRC_URI="mirror://pypi/${PN:0:1}/${MY_PN}/${MY_P}.tar.gz" +S="${WORKDIR}"/${MY_P} + +LICENSE="LGPL-3+" +SLOT="2" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" +IUSE="mpir" + +RDEPEND=" + >=dev-libs/mpc-1.0.2:= + >=dev-libs/mpfr-3.1.2:= + !mpir? ( dev-libs/gmp:0= ) + mpir? ( sci-libs/mpir:= )" +DEPEND="${RDEPEND}" + +PATCHES=( + # In python 3.10 _PyHASH_NAN was removed and its usage replaced with _Py_HashPointer + # see https://github.com/python/cpython/blob/3.10/Python/pyhash.c + # https://github.com/aleaxit/gmpy/pull/297 + "${FILESDIR}"/${P}-pyhash-nan.patch + # The tests program asks for input when running, disable that + "${FILESDIR}"/${P}-test-input.patch + # Based on this commit: + # https://github.com/aleaxit/gmpy/commit/db7ce2ef46fab84e7b9c32b05725e9b02e8cf206 + "${FILESDIR}"/${P}-failed-tests.patch +) + +distutils_enable_sphinx docs + +python_configure_all() { + mydistutilsargs=( + # GMP is the default, add mpir if the USE flag is set + $(usex mpir --mpir "") + ) +} + +python_test() { + cd test || die + "${EPYTHON}" runtests.py || die "tests failed under ${EPYTHON}" +} |