summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2
diff options
context:
space:
mode:
authorPatrick Williams <patrick@stwcx.xyz>2024-01-12 18:51:57 +0300
committerPatrick Williams <patrick@stwcx.xyz>2024-01-12 22:30:46 +0300
commit705982a51d24e74df1786f60cc99d1106de626df (patch)
tree4e81a89c017c50483d786294ea823752b5f55017 /meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2
parentad3455d69e100ba61b43c715039b793ce936527b (diff)
downloadopenbmc-705982a51d24e74df1786f60cc99d1106de626df.tar.xz
subtree updates
meta-openembedded: 7d8115d550..098dc606f9: Alex Kiernan (2): c-ares: Filter out "Live" tests ptest-packagelists-meta-oe.inc Add c-ares to PTESTS_SLOW_META_OE Alexander Kanavin (25): fontforge: add a readline PACKAGECONFIG volume-key: disable python bindings audit: disable python bindings as incompatible with python 3.12 cmpi-bindings: update 1.0.1 -> 1.0.4 libpwquality: backport a python 3.12 compatibility patch mycroft: do not depend on python3-xmlrunner python3-xmlrunner: remove the recipe system-config-printer: rely on setuptools to obtain distutils copy python3-gmpy2: fix python 3.12 issues python3-custom-inherit: fix python 3.12 builds python3-jsonrpcserver: remove python3-oslash: remove nmap: disable ndiff wireshark: update 4.0.10 -> 4.2.0 openipmi: update 2.0.32 -> 2.0.34 libsigrokdecode: add python 3.12 support cockpit: add setuptools dependency to bring in distutils copy mongodb: skip until python 3.12 fixes are available. mercurial: ensure setuptools is present as distutils is no longer (mercurial tries both) rwmem: fix python modules packaging upm: get disutils copy via setuptools python3-kmod: remove the recipe hplip: provide setuptools for the distutils copy audit: reenable python bindings and bring in distutils via setuptools (needed with python 3.12) python3-h5py: backport a cython 3.x compatibility patch Christophe Vu-Brugier (1): nvme-cli: upgrade 2.6 -> 2.7.1 Enrico Scholz (1): krb5: use PACKAGE_BEFORE_PN Fabio Estevam (2): i2cdev_git: Remove AUTHOR field picocom: Update to 2023-04 Ilya A. Kriveshko (1): srecord: fix install prefix Jordan Crouse (2): collectd: Remove rrdtool from DEPENDS keepalived: Move the sample configuration files to a separate package Jose Quaresma (1): layer.conf: Add libdevmapper-native PREFERRED_RPROVIDER Khem Raj (8): mraa: Update to latest tip of trunk libcppkafka: Update to tip of trunk python3-pydantic-core: Rename the cpython module on musl libtinyxml2: Package needed resources to run ptests python3-pylint: Ignore failing ptests libconfig-general-perl: Enable on musl targets tgt: Fix build with musl kernel-selftest: remove Wno-alloc-size-larger-than from scripts/Makefile.extrawarn Leon Anavi (5): ssd1306_git.bb: Add ssd1306_linux ssd1306: Update and remove patch python3-webargs: Upgrade 8.3.0 -> 8.4.0 python3-wtforms: Upgrade 3.1.1 -> 3.1.2 python3-kivy: Upgrade 2.2.1 -> 2.3.0 Markus Volk (9): luajit: upgrade 2.1beta -> 2.1 gnome-terminal: fix search_provider build libplist: make sure rm doesn't fail on nonexistent file imagemagick: upgrade 7.1.1-8 -> 7.1.1.26 mutter: update 45.1 -> 45.3 gnome-shell: update 45.1 -> 45.3 gnome-control-center: update 45.1 -> 45.2 gnome-software: update 45.1 -> 45.3 gnome-shell-extensions: update 45.1 -> 45.2 Martin Jansa (1): libpwquality: respect PYTHONSITEDIR Michael Haener (1): mdio-tools: upgrade 1.3.0 -> 1.3.1 Mingli Yu (2): usleep: Make the version consistent ipmitool: Make the version consistent Peter Marko (1): protobuf-c: upgrade 1.4.1 -> 1.5.0 Richard Leitner (1): python3-pytest-cov: add missing python3-coverage dependency Robert Yang (1): v4l-utils: Add PACKAGECONFIG for v4l2-tracer to fix determinstic build Wang Mingyu (52): cglm: upgrade 0.9.1 -> 0.9.2 ctags: upgrade 6.0.20231224.0 -> 6.1.20231231.0 exiftool: upgrade 12.71 -> 12.72 feh: upgrade 3.10.1 -> 3.10.2 libssh: upgrade 0.10.5 -> 0.10.6 squid: upgrade 6.5 -> 6.6 imapfilter: upgrade 2.8.1 -> 2.8.2 redis-plus-plus: upgrade 1.3.10 -> 1.3.11 python3-netaddr: upgrade 0.9.0 -> 0.10.0 plocate: upgrade 1.1.19 -> 1.1.20 python3-cantools: upgrade 39.4.1 -> 39.4.2 python3-coverage: upgrade 7.3.4 -> 7.4.0 python3-flask: upgrade 2.3.3 -> 3.0.0 python3-gspread: upgrade 5.12.3 -> 5.12.4 python3-pydot: upgrade 1.4.2 -> 2.0.0 qpdf: upgrade 11.6.4 -> 11.7.0 thingsboard-gateway: upgrade 3.4.3.1 -> 3.4.4 python3-pydantic-core: upgrade 2.14.5 -> 2.14.6 libtinyxml2: upgrade 9.0.0 -> 10.0.0 adw-gtk3: upgrade 5.1 -> 5.2 dialog: upgrade 1.3-20231002 -> 1.3-20240101 ghex: upgrade 45.0 -> 45.1 jwt-cpp: upgrade 0.6.0 -> 0.7.0 libcloudproviders: upgrade 0.3.4 -> 0.3.5 libgedit-gtksourceview: upgrade 299.0.4 -> 299.0.5 libjcat: upgrade 0.1.14 -> 0.2.0 libraw: upgrade 0.21.1 -> 0.21.2 libsass: upgrade 3.6.5 -> 3.6.6 chrony: upgrade 4.4 -> 4.5 tgt: upgrade 1.0.83 -> 1.0.90 lapack: upgrade 3.10.1 -> 3.12.0 libio-pty-perl: upgrade 1.17 -> 1.20 webkitgtk3: upgrade 2.42.3 -> 2.42.4 xmlsec1: upgrade 1.3.2 -> 1.3.3 python3-argh: upgrade 0.30.5 -> 0.31.0 python3-cvxopt: upgrade 1.2.7 -> 1.3.2 python3-sqlalchemy: upgrade 2.0.24 -> 2.0.25 python3-aiohttp-jinja2: upgrade 1.5.1 -> 1.6 python3-bitarray: upgrade 2.9.1 -> 2.9.2 python3-google-api-python-client: upgrade 2.111.0 -> 2.112.0 python3-google-auth: upgrade 2.25.2 -> 2.26.1 python3-lz4: upgrade 4.3.2 -> 4.3.3 python3-pdm: upgrade 2.11.1 -> 2.11.2 python3-pyflakes: upgrade 3.1.0 -> 3.2.0 python3-pymisp: upgrade 2.4.182 -> 2.4.183 python3-pytest-asyncio: upgrade 0.23.2 -> 0.23.3 python3-traitlets: upgrade 5.14.0 -> 5.14.1 traceroute: upgrade 2.1.3 -> 2.1.5 wolfssl: upgrade 5.6.4 -> 5.6.6 xerces-c: upgrade 3.2.4 -> 3.2.5 zenity: upgrade 4.0.0 -> 4.0.1 daq: Fix install conflict when enable multilib. Yi Zhao (6): vsomeip: upgrade 3.3.8 -> 3.4.10 libtdb: upgrade 1.4.8 -> 1.4.9 libtalloc: upgrade 2.4.0 -> 2.4.1 libtevent: upgrade 0.14.1 -> 0.16.0 libldb: upgrade 2.7.2 -> 2.8.0 samba: upgrade 4.18.9 -> 4.19.3 alperak (10): libnvme: upgrade 1.6 -> 1.7.1 libpaper: upgrade 2.1.0 -> 2.1.2 onig: upgrade 6.9.8 -> 6.9.9 clinfo: upgrade 3.0.21.02.21 -> 3.0.23.01.25 opensc: upgrade 0.23.0 -> 0.24.0 pcsc-lite: upgrade 2.0.0 -> 2.0.1 pcsc-tools: upgrade 1.6.2 -> 1.7.1 wavpack: upgrade 5.1.0 -> 5.6.0 nginx: fix CVE-2023-44487 grpc: upgrade 1.59.2 -> 1.60.0 meta-arm: 4d22f982bc..5712422011: Emekcan Aras (1): arm-bsp/linux-yocto: corstone1000: bump to v6.6% Jon Mason (8): arm-bsp/trusted-firmware-m: update libmetal and open-amp to a release arm-bsp/trusted-firmware-m: update libmetal and open-amp to 2023.04.0 arm: modify patches to have email headers and correct date fields arm-bsp/optee-os: remove unused 3.18 files arm/optee-os: use sysroot in CFLAGS arm/optee-os: remove unneeded clang patches arm/scp-firmware: update git repository to new location arm-bsp/u-boot: rebase patches for v2024.01 Ross Burton (1): arm-bsp/linux-yocto: add linux-yocto 6.5 temporarily meta-raspberrypi: 4c033eb074..b859bc3eca: Leon Anavi (1): bcm2835: update 1.71 -> 1.73 poky: 4675bbb757..61182659c2: Adrian Freihofer (1): ref-manual: document cmake-qemu class Alassane Yattara (7): bitbake: toaster/tests: Bug-fix on TestProjectConfigTab::test_image_recipe_show_rows bitbake: toaster/tests: Bug-fix element click intercepted bitbake: toaster/tests: Delay driver first action on create new project page bitbake: toaster/tests: Setup delay after driver action self.get(url) bitbake: toaster/tests: bug-fix "#hint-error-project-name" should be visible bitbake: toaster/tests: Bug-fix "element not interactable" in TestLayerDetailsPage::test_edit_layerdetails bitbake: toaster/tests: Bug-fix ToasterTable show_rows testcases Alexander Kanavin (16): speexdsp: enable native variant devtool/standard: correctly escape \ bitbake: fetch/checkstatus(): do not print the URI twice in FetchError exception bitbake: fetch/wget/checkstatus(): include the URL in debugging output about status check failure bitbake: bitbake/runqueue: rework 'bitbake -S printdiff' logic selftest/sstatetests: fix up printdiff test to match rework of printdiff logic selftest/sstatetest: re-enable gcc printdiff test python3-pyyaml: make compatible with cython 3.x python3-cython: update 0.29.36 -> 3.0.7 taglib: fix upstream version check libpcre2: fix upstream version check icon-naming-utils: take tarball from debian selftest/sstatetests: include fetcher diagnostics into CDN test failure message selftest/SStatePrintdiff: ensure all base signatures are present in sstate in test_image_minimal_vs_base_do_configure shadow: update 4.13 -> 4.14.2 shadow: link executables statically for -native variant Chen Qi (5): gawk: upgrade from 5.2.2 to 5.3.0 systemd-bootchart: upgrade from 234 to 235 dbus-wait: bump srcrev sudo: upgrade from 1.9.15p2 to 1.9.15p5 util-linux/util-linux-libuuid: ugprade from 2.39.2 to 2.39.3 Corentin Guillevic (1): systemd: add udev-bash-completion package Enguerrand de Ribaucourt (1): manuals: document VSCode extension Fabio Estevam (5): libusb1: Do not match on -rc versions usbutils: Update to version 017 u-boot: Upgrade to 2024.01 kmscube: Change header file to <GLES3/gl3.h> kmscube: Add package version Ilya A. Kriveshko (1): dev-manual: update license manifest path Jamin Lin (1): devtool: modify: fix exception Joshua Watt (1): syslinux: Allow mtools to be optional Jörg Sommer (1): documentation: Add UBOOT_BINARY, extend UBOOT_CONFIG Khem Raj (6): connman: Fix build with musl rpm: Fix build with musl gawk: Add coreutils to rdeps for ptests package tcl: Fix prepending to run-ptest script coreutils: Ignore line-bytes.sh and no-allocate tests on musl opkg-utils: Backport fix to drop --numeric-owner parameter Lee Chee Yang (1): migration-guide: add release notes for 4.3.2 Mark Asselstine (2): bitbake: server/process: catch and expand multiprocessing connection exceptions bitbake: ui/knotty: properly handle exceptions when calling runCommand() Maxin B. John (1): ref-manual: classes: remove insserv bbclass Michael Opdenacker (2): contributor-guide: use "apt" instead of "aptitude" ref-manual: update tested and supported distros Mikko Rapeli (1): oeqa systemd.py: settle() using "running" or "degraded" state Ming Liu (1): qemu.bbclass: fix a python TypeError Mingli Yu (2): openssh: Add PACKAGECONFIG option to customize sshd mode gptfdisk: Make the version consistent Richard Purdie (2): bitbake: ast: Fix EXPORT_FUNCTIONS bug bitbake: runqueue: Fix runall all bug Robert Yang (2): bitbake: bitbake: event: Inject empty lines to make code match lineno in filename bitbake: bitbake: tests/event: Add test_lineno_in_eventhandler Rodrigo M. Duarte (1): linux-firmware: Fix the linux-firmware-bcm4373 FILES variable Ross Burton (12): glib-2.0: no need to depend on target gtk-doc autotools: append to EXTRA_AUTORECONF autotools: don't exclude gtkdocize gtk-doc: fix DEPENDS gtk-doc: remove obsolete logic gtk-doc: don't use docdir set in environment in gtkdocize gtk-doc: don't manually call gtkdocize kmod: fix configure with autopoint calling gtkdocize util-linux: enable gtk-doc meson: use pkg-config in the cross files cairo: upgrade to 1.18.0 xmlcatalog: limit to native recipes only Simone Weiß (2): dev-manual: start.rst: update use of Download page glibc: Set status for CVE-2023-5156 & CVE-2023-0687 Tim Orling (2): python3-bcrypt: upgrade 4.1.1 -> 4.1.2 python3-attrs: enable ptest Wang Mingyu (13): ffmpeg: upgrade 6.1 -> 6.1.1 meson: upgrade 1.3.0 -> 1.3.1 ccache: upgrade 4.8.3 -> 4.9 mesa: upgrade 23.3.1 -> 23.3.2 subversion: upgrade 1.14.2 -> 1.14.3 python3-dbusmock: upgrade 0.30.1 -> 0.30.2 python3-hatch-fancy-pypi-readme: upgrade 23.1.0 -> 24.1.0 python3-hypothesis: upgrade 6.92.1 -> 6.92.2 python3-pycryptodome: upgrade 3.19.0 -> 3.19.1 python3-pycryptodomex: upgrade 3.19.0 -> 3.19.1 python3-pytest: upgrade 7.4.3 -> 7.4.4 python3-attrs: upgrade 22.1.0 -> 23.2.0 python3-lxml: upgrade 4.9.4 -> 45.0.0 William Lyu (1): elfutils: Update license information Yang Xu (1): rootfs.py: check depmodwrapper execution result Yi Zhao (2): libcap-ng: upgrade 0.8.3 -> 0.8.4 libcap-ng-python: upgrade 0.8.3 -> 0.8.4 david d zuhn (1): rng-tools: remove obsolete build time dependency on sysfsutils Change-Id: I43eda44bb889eedb45fae65caf2e5ed8d2c9de39 Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Diffstat (limited to 'meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2')
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2/0001-src-fix-python-3.12-builds.patch263
1 files changed, 263 insertions, 0 deletions
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2/0001-src-fix-python-3.12-builds.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2/0001-src-fix-python-3.12-builds.patch
new file mode 100644
index 0000000000..1171322e26
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2/0001-src-fix-python-3.12-builds.patch
@@ -0,0 +1,263 @@
+From 43f132103cedfd92b85173bcdacfbabd5916d9fc Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Wed, 27 Dec 2023 14:52:16 +0100
+Subject: [PATCH] src: fix python 3.12 builds
+
+This is a backport for 3.1.x versions provided separately in https://github.com/aleaxit/gmpy/issues/446
+
+Upstream-Status: Inappropriate [can be dropped when 2.2.x is released]
+
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/gmpy2_convert.h | 21 +++++++
+ src/gmpy2_convert_gmp.c | 129 +++++++++++++-------------------------
+ src/gmpy2_convert_utils.c | 2 +-
+ 3 files changed, 65 insertions(+), 87 deletions(-)
+
+diff --git a/src/gmpy2_convert.h b/src/gmpy2_convert.h
+index f887d47..3e8cb2b 100644
+--- a/src/gmpy2_convert.h
++++ b/src/gmpy2_convert.h
+@@ -142,6 +142,27 @@ extern "C" {
+ #define IS_TYPE_COMPLEX_ONLY(x) ((x > OBJ_TYPE_REAL) && \
+ (x < OBJ_TYPE_COMPLEX))
+
++/* Compatibility macros (to work with PyLongObject internals).
++ */
++
++#if PY_VERSION_HEX >= 0x030C0000
++# define TAG_FROM_SIGN_AND_SIZE(is_neg, size) ((is_neg?2:(size==0)) | (((size_t)size) << 3))
++# define _PyLong_SetSignAndDigitCount(obj, is_neg, size) (obj->long_value.lv_tag = TAG_FROM_SIGN_AND_SIZE(is_neg, size))
++#elif PY_VERSION_HEX >= 0x030900A4
++# define _PyLong_SetSignAndDigitCount(obj, is_neg, size) (Py_SET_SIZE(obj, (is_neg?-1:1)*size))
++#else
++# define _PyLong_SetSignAndDigitCount(obj, is_neg, size) (Py_SIZE(obj) = (is_neg?-1:1)*size)
++#endif
++
++#if PY_VERSION_HEX >= 0x030C0000
++# define GET_OB_DIGIT(obj) obj->long_value.ob_digit
++# define _PyLong_IsNegative(obj) ((obj->long_value.lv_tag & 3) == 2)
++# define _PyLong_DigitCount(obj) (obj->long_value.lv_tag >> 3)
++#else
++# define GET_OB_DIGIT(obj) obj->ob_digit
++# define _PyLong_IsNegative(obj) (Py_SIZE(obj) < 0)
++# define _PyLong_DigitCount(obj) (_PyLong_IsNegative(obj)? -Py_SIZE(obj):Py_SIZE(obj))
++#endif
+
+ /* Since the macros are used in gmpy2's codebase, these functions are skipped
+ * until they are needed for the C API in the future.
+diff --git a/src/gmpy2_convert_gmp.c b/src/gmpy2_convert_gmp.c
+index cf0891e..8b8df81 100644
+--- a/src/gmpy2_convert_gmp.c
++++ b/src/gmpy2_convert_gmp.c
+@@ -59,33 +59,24 @@ GMPy_MPZ_From_PyIntOrLong(PyObject *obj, CTXT_Object *context)
+ }
+ #endif
+
+- switch (Py_SIZE(templong)) {
+- case -1:
+- mpz_set_si(result->z, -(sdigit)templong->ob_digit[0]);
++ len = _PyLong_DigitCount(templong);
++ negative = _PyLong_IsNegative(templong);
++
++ switch (len) {
++ case 1:
++ mpz_set_si(result->z, (sdigit)GET_OB_DIGIT(templong)[0]);
+ break;
+ case 0:
+ mpz_set_si(result->z, 0);
+ break;
+- case 1:
+- mpz_set_si(result->z, templong->ob_digit[0]);
+- break;
+ default:
+- mpz_set_si(result->z, 0);
+-
+- if (Py_SIZE(templong) < 0) {
+- len = - Py_SIZE(templong);
+- negative = 1;
+- } else {
+- len = Py_SIZE(templong);
+- negative = 0;
+- }
+-
+- mpz_import(result->z, len, -1, sizeof(templong->ob_digit[0]), 0,
+- sizeof(templong->ob_digit[0])*8 - PyLong_SHIFT, templong->ob_digit);
++ mpz_import(result->z, len, -1, sizeof(GET_OB_DIGIT(templong)[0]), 0,
++ sizeof(GET_OB_DIGIT(templong)[0])*8 - PyLong_SHIFT,
++ GET_OB_DIGIT(templong));
++ }
+
+- if (negative) {
+- mpz_neg(result->z, result->z);
+- }
++ if (negative) {
++ mpz_neg(result->z, result->z);
+ }
+ return result;
+ }
+@@ -105,33 +96,24 @@ mpz_set_PyIntOrLong(mpz_t z, PyObject *obj)
+ }
+ #endif
+
+- switch (Py_SIZE(templong)) {
+- case -1:
+- mpz_set_si(z, -(sdigit)templong->ob_digit[0]);
++ len = _PyLong_DigitCount(templong);
++ negative = _PyLong_IsNegative(templong);
++
++ switch (len) {
++ case 1:
++ mpz_set_si(z, (sdigit)GET_OB_DIGIT(templong)[0]);
+ break;
+ case 0:
+ mpz_set_si(z, 0);
+ break;
+- case 1:
+- mpz_set_si(z, templong->ob_digit[0]);
+- break;
+ default:
+- mpz_set_si(z, 0);
+-
+- if (Py_SIZE(templong) < 0) {
+- len = - Py_SIZE(templong);
+- negative = 1;
+- } else {
+- len = Py_SIZE(templong);
+- negative = 0;
+- }
+-
+- mpz_import(z, len, -1, sizeof(templong->ob_digit[0]), 0,
+- sizeof(templong->ob_digit[0])*8 - PyLong_SHIFT, templong->ob_digit);
++ mpz_import(z, len, -1, sizeof(GET_OB_DIGIT(templong)[0]), 0,
++ sizeof(GET_OB_DIGIT(templong)[0])*8 - PyLong_SHIFT,
++ GET_OB_DIGIT(templong));
++ }
+
+- if (negative) {
+- mpz_neg(z, z);
+- }
++ if (negative) {
++ mpz_neg(z, z);
+ }
+ return;
+ }
+@@ -186,12 +168,7 @@ GMPy_PyLong_From_MPZ(MPZ_Object *obj, CTXT_Object *context)
+
+ /* Assume gmp uses limbs as least as large as the builtin longs do */
+
+- if (mpz_sgn(obj->z) < 0) {
+- negative = 1;
+- } else {
+- negative = 0;
+- }
+-
++ negative = mpz_sgn(obj->z) < 0;
+ size = (mpz_sizeinbase(obj->z, 2) + PyLong_SHIFT - 1) / PyLong_SHIFT;
+
+ if (!(result = _PyLong_New(size))) {
+@@ -200,31 +177,20 @@ GMPy_PyLong_From_MPZ(MPZ_Object *obj, CTXT_Object *context)
+ /* LCOV_EXCL_STOP */
+ }
+
+- mpz_export(result->ob_digit, &count, -1, sizeof(result->ob_digit[0]), 0,
+- sizeof(result->ob_digit[0])*8 - PyLong_SHIFT, obj->z);
++ mpz_export(GET_OB_DIGIT(result), &count, -1, sizeof(GET_OB_DIGIT(result)[0]), 0,
++ sizeof(GET_OB_DIGIT(result)[0])*8 - PyLong_SHIFT, obj->z);
+
+ if (count == 0) {
+- result->ob_digit[0] = 0;
++ GET_OB_DIGIT(result)[0] = 0;
+ }
+
+ /* long_normalize() is file-static so we must reimplement it */
+ /* longobjp = long_normalize(longobjp); */
+- while ((size>0) && (result->ob_digit[size-1] == 0)) {
++ while ((size>0) && (GET_OB_DIGIT(result)[size-1] == 0)) {
+ size--;
+ }
+-#if PY_VERSION_HEX >= 0x030900A4
+- Py_SET_SIZE(result, size);
+-#else
+- Py_SIZE(result) = size;
+-#endif
+
+- if (negative) {
+-#if PY_VERSION_HEX >= 0x030900A4
+- Py_SET_SIZE(result, - Py_SIZE(result));
+-#else
+- Py_SIZE(result) = - Py_SIZE(result);
+-#endif
+- }
++ _PyLong_SetSignAndDigitCount(result, negative, size);
+ return (PyObject*)result;
+ }
+
+@@ -476,33 +442,24 @@ GMPy_XMPZ_From_PyIntOrLong(PyObject *obj, CTXT_Object *context)
+ }
+ #endif
+
+- switch (Py_SIZE(templong)) {
+- case -1:
+- mpz_set_si(result->z, -(sdigit)templong->ob_digit[0]);
++ len = _PyLong_DigitCount(templong);
++ negative = _PyLong_IsNegative(templong);
++
++ switch (len) {
++ case 1:
++ mpz_set_si(result->z, (sdigit)GET_OB_DIGIT(templong)[0]);
+ break;
+ case 0:
+ mpz_set_si(result->z, 0);
+ break;
+- case 1:
+- mpz_set_si(result->z, templong->ob_digit[0]);
+- break;
+ default:
+- mpz_set_si(result->z, 0);
+-
+- if (Py_SIZE(templong) < 0) {
+- len = - Py_SIZE(templong);
+- negative = 1;
+- } else {
+- len = Py_SIZE(templong);
+- negative = 0;
+- }
+-
+- mpz_import(result->z, len, -1, sizeof(templong->ob_digit[0]), 0,
+- sizeof(templong->ob_digit[0])*8 - PyLong_SHIFT, templong->ob_digit);
++ mpz_import(result->z, len, -1, sizeof(GET_OB_DIGIT(templong)[0]), 0,
++ sizeof(GET_OB_DIGIT(templong)[0])*8 - PyLong_SHIFT,
++ GET_OB_DIGIT(templong));
++ }
+
+- if (negative) {
+- mpz_neg(result->z, result->z);
+- }
++ if (negative) {
++ mpz_neg(result->z, result->z);
+ }
+ return result;
+ }
+@@ -639,7 +596,7 @@ GMPy_MPQ_From_PyStr(PyObject *s, int base, CTXT_Object *context)
+ }
+
+ cp = PyBytes_AsString(ascii_str);
+-
++
+ {
+ char *whereslash = strchr((char*)cp, '/');
+ char *wheredot = strchr((char*)cp, '.');
+diff --git a/src/gmpy2_convert_utils.c b/src/gmpy2_convert_utils.c
+index d676eaf..8908d17 100644
+--- a/src/gmpy2_convert_utils.c
++++ b/src/gmpy2_convert_utils.c
+@@ -123,7 +123,7 @@ static unsigned long
+ GMPy_Integer_AsUnsignedLongWithType_v2(PyObject *x, int xtype)
+ {
+ if IS_TYPE_PyInteger(xtype) {
+- if (Py_SIZE(x) < 0) {
++ if (_PyLong_IsNegative(((PyLongObject*)x))) {
+ VALUE_ERROR("n must be > 0");
+ return (unsigned long)-1;
+ }