summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/gmpy')
-rw-r--r--dev-python/gmpy/Manifest4
-rw-r--r--dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch132
-rw-r--r--dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch17
-rw-r--r--dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch12
-rw-r--r--dev-python/gmpy/files/gmpy-2.1.5-mpfr-4.2.1.patch31
-rw-r--r--dev-python/gmpy/gmpy-2.1.0_beta5.ebuild45
-rw-r--r--dev-python/gmpy/gmpy-2.1.5-r2.ebuild51
7 files changed, 85 insertions, 207 deletions
diff --git a/dev-python/gmpy/Manifest b/dev-python/gmpy/Manifest
index 45c5011b8ffe..545491749d8f 100644
--- a/dev-python/gmpy/Manifest
+++ b/dev-python/gmpy/Manifest
@@ -1 +1,3 @@
-DIST gmpy2-2.1.0b5.tar.gz 264742 BLAKE2B 1dd6dc66f9ec8cb2738f449112aa44feb40ba983f6da5f7a0760016e79ffed19037d77d47c0c0b816f9088725207e50ba3bd423349ed4c744ff03059c4c6a19a SHA512 7dc647642d7b61af77258881a7b91ab967dd11a86ba88ff5b7fd41cd4c999d2bb4cfe586511e79cc5f21f0f00d0823bbd2620d69df051c8cead15090423a657a
+DIST gmpy-2.1.5-cache.patch 19769 BLAKE2B 72d61ea00fda608ae92c5319828cb5c0003a69cd4be4bf3cde62574a93987b2316df5334d290eca7d48e44e423227d0b5a22c142c4a95b42aebb4560c3bf7ea6 SHA512 f16dbd78a99f27c6f588b814bb9b307429927eae9828fcea04225f163c1cd28968c2994689c4802dc0b619cdfd7c50401d1ec06c220756268af17499613fda1b
+DIST gmpy-2.1.5-py3.12.patch.gz 1817 BLAKE2B cbea3a9c662d52c5bfddb82ab5e920474a52c1dd715b3b9fecf55e5ee097297168ddb7961b6156e4c1f902e911890c77252d119c3651f345f01cad144ed44127 SHA512 26195e8e9a87147a05fd07fa325f262c2004fcba2b8857dbc87ca7a1e9e5e64b4a47d35be77edc263829e5df1db6a0acda6904307d01529eba832feb4f0f3f71
+DIST gmpy2-2.1.5.tar.gz 261709 BLAKE2B 50958868866fadc49c97534780fa491fadfaaea902f3fd4bd51f4e76a94602a6d030a1ee6685aac742e25b5fbe4865e1419307f7215c8fb553b166761d63607a SHA512 92e16359ee1df63faaeae4a3cbefe8cdbbc576d8eda377f08d59f12b70dfe9337a299686e85d1efee6c2f5b41fc4583643fecc68ea38a500c7f876c56fc169e7
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
deleted file mode 100644
index 38a98579409a..000000000000
--- a/dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-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
deleted file mode 100644
index 9f59a6096fcd..000000000000
--- a/dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-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
deleted file mode 100644
index 16705d917c93..000000000000
--- a/dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-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/files/gmpy-2.1.5-mpfr-4.2.1.patch b/dev-python/gmpy/files/gmpy-2.1.5-mpfr-4.2.1.patch
new file mode 100644
index 000000000000..4bbc9097824e
--- /dev/null
+++ b/dev-python/gmpy/files/gmpy-2.1.5-mpfr-4.2.1.patch
@@ -0,0 +1,31 @@
+From 68a6b489c3d8d95b2658a1ed884fb99f4bd955c1 Mon Sep 17 00:00:00 2001
+From: Sergey B Kirpichev <skirpichev@gmail.com>
+Date: Sun, 3 Sep 2023 02:35:19 +0300
+Subject: [PATCH] Exclude MPFR workaround for MPFR >= 4.2.1
+
+Co-authored-by: Vincent Lefevre <vincent@vinc17.net>
+
+Closes #418
+---
+ src/gmpy2_format.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/gmpy2_format.c b/src/gmpy2_format.c
+index 3e450c96..303bb7bf 100644
+--- a/src/gmpy2_format.c
++++ b/src/gmpy2_format.c
+@@ -592,12 +592,14 @@ GMPy_MPC_Format(PyObject *self, PyObject *args)
+ if (mpcstyle)
+ strcat(tempbuf, " ");
+ else {
++#if MPFR_VERSION < MPFR_VERSION_NUM(4,2,1)
+ /* Need to insert + if imag is nan or +inf. */
+ if (mpfr_nan_p(mpc_imagref(MPC(self))) ||
+ (mpfr_inf_p(mpc_imagref(MPC(self))) &&
+ mpfr_sgn(mpc_imagref(MPC(self))) > 0)) {
+ strcat(tempbuf, "+");
+ }
++#endif
+ }
+ strcat(tempbuf, imagbuf);
+ if (strlen(imagbuf) < 50 &&
diff --git a/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild b/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild
deleted file mode 100644
index 4768bf50c719..000000000000
--- a/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{8..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 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
-
-RDEPEND="
- >=dev-libs/mpc-1.0.2:=
- >=dev-libs/mpfr-3.1.2:=
- dev-libs/gmp:0=
-"
-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_test() {
- cd test || die
- "${EPYTHON}" runtests.py || die "tests failed under ${EPYTHON}"
-}
diff --git a/dev-python/gmpy/gmpy-2.1.5-r2.ebuild b/dev-python/gmpy/gmpy-2.1.5-r2.ebuild
new file mode 100644
index 000000000000..1516736e6849
--- /dev/null
+++ b/dev-python/gmpy/gmpy-2.1.5-r2.ebuild
@@ -0,0 +1,51 @@
+# 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
+PYPI_PN="gmpy2"
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings for GMP, MPC, MPFR and MPIR libraries"
+HOMEPAGE="
+ https://github.com/aleaxit/gmpy/
+ https://pypi.org/project/gmpy2/
+"
+SRC_URI+="
+ https://dev.gentoo.org/~grozin/${P}-py3.12.patch.gz
+ https://github.com/tornaria/void-packages/raw/722b32aa405804b79a74256708de6a511e255b4b/srcpkgs/python3-gmpy2/patches/cleanup-object-caching.patch
+ -> ${P}-cache.patch
+"
+
+LICENSE="LGPL-3+"
+SLOT="2"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+DEPEND="
+ >=dev-libs/mpc-1.0.2:=
+ >=dev-libs/mpfr-3.1.2:=
+ dev-libs/gmp:0=
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+distutils_enable_sphinx docs
+
+PATCHES=(
+ "${WORKDIR}/${P}-py3.12.patch"
+ # https://github.com/aleaxit/gmpy/commit/7351e2eb1abf4b37a47a822eb3f3f29f90c7f854
+ # rebased by Void; needed for mpfr 4.2.1
+ "${DISTDIR}/${P}-cache.patch"
+ # https://github.com/aleaxit/gmpy/commit/68a6b489c3d8d95b2658a1ed884fb99f4bd955c1
+ "${FILESDIR}/${P}-mpfr-4.2.1.patch"
+)
+
+python_test() {
+ cd test || die
+ "${EPYTHON}" runtests.py || die "tests failed under ${EPYTHON}"
+}