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>
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 0000000..1171322
--- /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;
+         }