diff --git a/python-immutables.changes b/python-immutables.changes index 8fd9b87..d685b4b 100644 --- a/python-immutables.changes +++ b/python-immutables.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Aug 14 20:48:16 UTC 2023 - Dirk Müller + +- add python312.patch to fix build with python 3.12 + ------------------------------------------------------------------- Thu Jun 22 15:25:56 UTC 2023 - Dirk Müller diff --git a/python-immutables.spec b/python-immutables.spec index 053bcc6..9e7d555 100644 --- a/python-immutables.spec +++ b/python-immutables.spec @@ -24,6 +24,8 @@ Summary: Immutable collections for Python License: Apache-2.0 URL: https://github.com/MagicStack/immutables Source: https://files.pythonhosted.org/packages/source/i/immutables/immutables-%{version}.tar.gz +# PATCH-FIX-UPSTREAM: https://github.com/MagicStack/immutables/commit/f7978225ea562e128b07cae936acd7926d9e64e7 +Patch1: python312.patch BuildRequires: %{python_module devel >= 3.8} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} diff --git a/python312.patch b/python312.patch new file mode 100644 index 0000000..ebded2a --- /dev/null +++ b/python312.patch @@ -0,0 +1,86 @@ +From f7978225ea562e128b07cae936acd7926d9e64e7 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus +Date: Fri, 21 Jul 2023 15:30:33 -0700 +Subject: [PATCH] Python 3.12 compatibility (#105) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Also, drop 3.6 and 3.7 as unsupported. + +Fixes: #104 +Closes: #97 +Closes: #100 +Closes: #103 + +Co-authored-by: Petr Vaněk +Co-authored-by: Anton Agestam +--- a/immutables/_map.c ++++ b/immutables/_map.c +@@ -529,10 +529,10 @@ _map_dump_format(_PyUnicodeWriter *writer, const char *format, ...) + int ret; + + va_list vargs; +-#ifdef HAVE_STDARG_PROTOTYPES +- va_start(vargs, format); +-#else ++#if PY_VERSION_HEX < 0x030C00A1 && !defined(HAVE_STDARG_PROTOTYPES) + va_start(vargs); ++#else ++ va_start(vargs, format); + #endif + msg = PyUnicode_FromFormatV(format, vargs); + va_end(vargs); +@@ -1247,7 +1247,7 @@ map_node_bitmap_dealloc(MapNode_Bitmap *self) + Py_ssize_t i; + + PyObject_GC_UnTrack(self); +- Py_TRASHCAN_SAFE_BEGIN(self) ++ Py_TRASHCAN_BEGIN(self, map_node_bitmap_dealloc) + + if (len > 0) { + i = len; +@@ -1257,7 +1257,7 @@ map_node_bitmap_dealloc(MapNode_Bitmap *self) + } + + Py_TYPE(self)->tp_free((PyObject *)self); +- Py_TRASHCAN_SAFE_END(self) ++ Py_TRASHCAN_END + } + + static int +@@ -1664,7 +1664,7 @@ map_node_collision_dealloc(MapNode_Collision *self) + Py_ssize_t len = Py_SIZE(self); + + PyObject_GC_UnTrack(self); +- Py_TRASHCAN_SAFE_BEGIN(self) ++ Py_TRASHCAN_BEGIN(self, map_node_collision_dealloc) + + if (len > 0) { + +@@ -1674,7 +1674,7 @@ map_node_collision_dealloc(MapNode_Collision *self) + } + + Py_TYPE(self)->tp_free((PyObject *)self); +- Py_TRASHCAN_SAFE_END(self) ++ Py_TRASHCAN_END + } + + static int +@@ -2083,14 +2083,14 @@ map_node_array_dealloc(MapNode_Array *self) + Py_ssize_t i; + + PyObject_GC_UnTrack(self); +- Py_TRASHCAN_SAFE_BEGIN(self) ++ Py_TRASHCAN_BEGIN(self, map_node_array_dealloc) + + for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) { + Py_XDECREF(self->a_array[i]); + } + + Py_TYPE(self)->tp_free((PyObject *)self); +- Py_TRASHCAN_SAFE_END(self) ++ Py_TRASHCAN_END + } + + static int