Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
nixpkgs pkgs development python-modules python-zbar 0001-python-enum-fix-build-for-Python-3.11.patch
2.1 kB · 61 lines
at litex
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162From 64de7911d2938fc3601fec39c08008465b9d4f6f Mon Sep 17 00:00:00 2001From: Nick Cao <nickcao@nichi.co>Date: Tue, 7 Feb 2023 17:12:50 +0800Subject: [PATCH] python: enum: fix build for Python 3.11MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bit
Python 3.9 introduced Py_SET_SIZE function to set size instead ofrelying on Py_SIZE() as a macro [3.9].
Python 3.10 started to encourage to use Py_SET_SIZE instead ofassigning into return value of Py_SIZE [3.10].
Python 3.11 flips the switch, turn Py_SIZE into a function [3.11],thus Py_SIZE(obj) will be a rvalue. We need to use Py_SET_SIZEto set size now.
[3.9]: https://docs.python.org/3.9/c-api/structures.html#c.Py_SET_SIZE[3.10]: https://docs.python.org/3.10/c-api/structures.html#c.Py_SIZE[3.11]: https://docs.python.org/3.11/c-api/structures.html#c.Py_SIZE
Adapted from https://github.com/mchehab/zbar/pull/231
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>Signed-off-by: Nick Cao <nickcao@nichi.co>--- python/enum.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/python/enum.c b/python/enum.cindex dfe1b1e..4833a20 100644--- a/python/enum.c+++ b/python/enum.c@@ -52,7 +52,11 @@ enumitem_new (PyTypeObject *type, /* we assume the "fast path" for a single-digit ints (see longobject.c) */ /* this also holds if we get a small_int preallocated long */+#if PY_VERSION_HEX >= 0x030900A4+ Py_SET_SIZE(&self->val, Py_SIZE(longval));+#else Py_SIZE(&self->val) = Py_SIZE(longval);+#endif self->val.ob_digit[0] = longval->ob_digit[0]; Py_DECREF(longval); #else@@ -143,7 +147,11 @@ zbarEnumItem_New (PyObject *byname, /* we assume the "fast path" for a single-digit ints (see longobject.c) */ /* this also holds if we get a small_int preallocated long */+#if PY_VERSION_HEX >= 0x030900A4+ Py_SET_SIZE(&self->val, Py_SIZE(longval));+#else Py_SIZE(&self->val) = Py_SIZE(longval);+#endif self->val.ob_digit[0] = longval->ob_digit[0]; Py_DECREF(longval); -- 2.39.1