From e13d364d7f4e49a7c051e1d0a5435370ea3b0b53 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Thu, 11 Nov 2021 13:57:19 +0000 Subject: python3-dtc: port to Python 3.10 Signed-off-by: Ross Burton Signed-off-by: Bruce Ashfield --- recipes-kernel/dtc/files/ssize.patch | 35 +++++++++++++++++++++++++++++++++ recipes-kernel/dtc/python3-dtc_1.6.1.bb | 3 ++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 recipes-kernel/dtc/files/ssize.patch diff --git a/recipes-kernel/dtc/files/ssize.patch b/recipes-kernel/dtc/files/ssize.patch new file mode 100644 index 00000000..3156896c --- /dev/null +++ b/recipes-kernel/dtc/files/ssize.patch @@ -0,0 +1,35 @@ +Python 3.10 has made it mandatory that the 'string+length` formats use ssize_t +instead of int, so define the magic symbol and upcast the ints from the libfdt +API to ssize_t. + +Upstream-Status: Pending +Signed-off-by: Ross Burton + +diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i +index 51ee801..075ef70 100644 +--- a/pylibfdt/libfdt.i ++++ b/pylibfdt/libfdt.i +@@ -1044,9 +1044,9 @@ typedef uint32_t fdt32_t; + $result = Py_None; + else + %#if PY_VERSION_HEX >= 0x03000000 +- $result = Py_BuildValue("y#", $1, *arg4); ++ $result = Py_BuildValue("y#", $1, (Py_ssize_t)*arg4); + %#else +- $result = Py_BuildValue("s#", $1, *arg4); ++ $result = Py_BuildValue("s#", $1, (Py_ssize_t)*arg4); + %#endif + } + +diff --git a/pylibfdt/setup.py b/pylibfdt/setup.py +index ef40f15..88ff7d1 100755 +--- a/pylibfdt/setup.py ++++ b/pylibfdt/setup.py +@@ -42,6 +42,7 @@ def get_version(): + libfdt_module = Extension( + '_libfdt', + sources=[os.path.join(srcdir, 'libfdt.i')], ++ define_macros=[('PY_SSIZE_T_CLEAN', None)], + include_dirs=[os.path.join(srcdir, '../libfdt')], + libraries=['fdt'], + library_dirs=[os.path.join(top_builddir, 'libfdt')], diff --git a/recipes-kernel/dtc/python3-dtc_1.6.1.bb b/recipes-kernel/dtc/python3-dtc_1.6.1.bb index 293c8d3e..d7d45a41 100644 --- a/recipes-kernel/dtc/python3-dtc_1.6.1.bb +++ b/recipes-kernel/dtc/python3-dtc_1.6.1.bb @@ -6,7 +6,8 @@ LICENSE = "GPLv2 | BSD-2-Clause" DEPENDS = "flex-native bison-native swig-native libyaml dtc" -SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=master" +SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=master \ + file://ssize.patch" UPSTREAM_CHECK_GITTAGREGEX = "v(?P\d+(\.\d+)+)" -- cgit v1.2.3-54-g00ecf