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;
+ }