python-gmpy2 fails to build with Python 3.10.0b1: gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -I./src -I/usr/include/python3.10 -c src/gmpy2.c -o build/temp.linux-x86_64-3.10/src/gmpy2.o -DSHARED=1 In file included from src/gmpy2.c:461: src/gmpy2.h:446: warning: "Py_RETURN_NOTIMPLEMENTED" redefined 446 | #define Py_RETURN_NOTIMPLEMENTED \ | In file included from /usr/include/python3.10/Python.h:78, from src/gmpy2.c:445: /usr/include/python3.10/object.h:623: note: this is the location of the previous definition 623 | #define Py_RETURN_NOTIMPLEMENTED return Py_NewRef(Py_NotImplemented) | In file included from src/gmpy2.c:593: src/gmpy2_hash.c: In function ‘_mpfr_hash’: src/gmpy2_hash.c:150:20: error: ‘_PyHASH_NAN’ undeclared (first use in this function); did you mean ‘Py_IS_NAN’? 150 | return _PyHASH_NAN; | ^~~~~~~~~~~ | Py_IS_NAN src/gmpy2_hash.c:150:20: note: each undeclared identifier is reported only once for each function it appears in error: command '/usr/bin/gcc' failed with exit code 1 For the build logs, see: https://copr-be.cloud.fedoraproject.org/results/@python/python3.10/fedora-rawhide-x86_64/02174953-python-gmpy2/ For all our attempts to build python-gmpy2 with Python 3.10, see: https://copr.fedorainfracloud.org/coprs/g/python/python3.10/package/python-gmpy2/ Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.10: https://copr.fedorainfracloud.org/coprs/g/python/python3.10/ Let us know here if you have any questions. Python 3.10 will be included in Fedora 35. To make that update smoother, we're building Fedora packages with early pre-releases of Python 3.10. A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon. We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.
_PyHASH_NAN was removed from pyhash.h in Python 3.10. Since it has the value zero in previous python releases, I replaced the name with zero.
Upstream, I would recommend to add a test to check that `sys.hash_info.nan` is still zero. (Getting the value from C is not very pleasant, since there's no public C API specfically for this.)