From: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
To: openembedded-core@lists.openembedded.org
Cc: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
Subject: [PATCH v4 4/4] python3-dtc: fix build with swig 4.5.0
Date: Tue, 11 Aug 2026 15:52:00 +0200 [thread overview]
Message-ID: <20260811135200.18942-5-jaipaul.cheernam@est.tech> (raw)
In-Reply-To: <20260811135200.18942-1-jaipaul.cheernam@est.tech>
SWIG 4.5.0 removed Python 2 compatibility macros (PyInt_*, PyString_*)
from its runtime. Backport the upstream fix to replace them with
Python 3 equivalents.
Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
---
...-removed-SWIG-Python-2-compatibility.patch | 57 +++++++++++++++++++
.../python/python3-dtc_1.8.1.bb | 1 +
2 files changed, 58 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-dtc/0001-pylibfdt-Replace-removed-SWIG-Python-2-compatibility.patch
diff --git a/meta/recipes-devtools/python/python3-dtc/0001-pylibfdt-Replace-removed-SWIG-Python-2-compatibility.patch b/meta/recipes-devtools/python/python3-dtc/0001-pylibfdt-Replace-removed-SWIG-Python-2-compatibility.patch
new file mode 100644
index 0000000000..877aea3a8d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtc/0001-pylibfdt-Replace-removed-SWIG-Python-2-compatibility.patch
@@ -0,0 +1,57 @@
+From 32378d7b4383a79d13da9005035600d8f0c8c29d Mon Sep 17 00:00:00 2001
+From: Jitka Plesnikova <jplesnik@redhat.com>
+Date: Tue, 29 Jul 2026 05:55:56 +0000
+Subject: [PATCH] pylibfdt: Replace removed SWIG Python 2 compatibility macros
+
+SWIG 4.5.0 removed Python 2 compatibility macros (PyInt_*, PyString_*)
+from its runtime header pyhead.swg (see commit 79f7a2b7cb7d). Replace
+them with their Python 3 C API equivalents:
+
+- PyString_FromString -> PyUnicode_FromString
+- PyString_AsString -> PyBytes_AsString
+- PyInt_AsLong -> PyLong_AsLong
+
+The replacements are safe since the macros were already aliased to
+these exact functions in SWIG's Python 3 code path.
+
+Signed-off-by: Jitka Plesnikova <jplesnik@redhat.com>
+Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
+Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
+(cherry picked from commit 5008d1d6a356b8d0a78060da2e1021507d529cff)
+
+Upstream-Status: Backport [https://github.com/dgibson/dtc/commit/5008d1d6a356b8d0a78060da2e1021507d529cff]
+
+Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
+---
+ pylibfdt/libfdt.i | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
+index 1f9c0471..b1cb9873 100644
+--- a/pylibfdt/libfdt.i
++++ b/pylibfdt/libfdt.i
+@@ -1136,7 +1136,7 @@ typedef uint32_t fdt32_t;
+ PyObject *buff;
+
+ if ($1) {
+- resultobj = PyString_FromString(
++ resultobj = PyUnicode_FromString(
+ fdt_string(fdt1, fdt32_to_cpu($1->nameoff)));
+ buff = PyByteArray_FromStringAndSize(
+ (const char *)($1 + 1), fdt32_to_cpu($1->len));
+@@ -1169,13 +1169,13 @@ typedef uint32_t fdt32_t;
+ }
+ $1 = PyBytes_AsString($input);
+ %#else
+- $1 = PyString_AsString($input); /* char *str */
++ $1 = PyBytes_AsString($input); /* char *str */
+ %#endif
+ }
+
+ /* typemaps used for fdt_next_node() */
+ %typemap(in, numinputs=1) int *depth (int depth) {
+- depth = (int) PyInt_AsLong($input);
++ depth = (int) PyLong_AsLong($input);
+ $1 = &depth;
+ }
+
diff --git a/meta/recipes-devtools/python/python3-dtc_1.8.1.bb b/meta/recipes-devtools/python/python3-dtc_1.8.1.bb
index 51abf3640a..915cd6a730 100644
--- a/meta/recipes-devtools/python/python3-dtc_1.8.1.bb
+++ b/meta/recipes-devtools/python/python3-dtc_1.8.1.bb
@@ -7,6 +7,7 @@ LICENSE = "BSD-2-Clause OR GPL-2.0-only"
DEPENDS = "flex-native bison-native swig-native python3-setuptools-scm-native libyaml dtc"
SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=main;protocol=https;tag=v${PV} \
+ file://0001-pylibfdt-Replace-removed-SWIG-Python-2-compatibility.patch \
"
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
prev parent reply other threads:[~2026-08-11 13:56 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-10 15:45 [PATCH] swig: upgrade 4.4.1 -> 4.5.0 Jaipaul Cheernam
2026-08-10 21:02 ` [OE-core] " Richard Purdie
2026-08-11 6:12 ` [PATCH v2 0/2] " Jaipaul Cheernam
2026-08-11 6:12 ` [PATCH v2 1/2] " Jaipaul Cheernam
2026-08-11 10:25 ` [OE-core] " Richard Purdie
2026-08-11 11:15 ` Jaipaul Cheernam
2026-08-11 6:12 ` [PATCH v2 2/2] babeltrace2: fix build with swig 4.5.0 Jaipaul Cheernam
2026-08-11 11:11 ` [PATCH v3 0/4] swig: upgrade 4.4.1 -> 4.5.0 Jaipaul Cheernam
2026-08-11 11:11 ` [PATCH v3 1/4] " Jaipaul Cheernam
2026-08-11 11:11 ` [PATCH v3 2/4] babeltrace2: fix build with swig 4.5.0 Jaipaul Cheernam
2026-08-11 11:11 ` [PATCH v3 3/4] u-boot-tools: fix pylibfdt " Jaipaul Cheernam
2026-08-11 12:58 ` [OE-core] " Mathieu Dubois-Briand
2026-08-11 13:38 ` Quentin Schulz
2026-08-11 11:11 ` [PATCH v3 4/4] python3-dtc: fix " Jaipaul Cheernam
2026-08-11 13:51 ` [PATCH v4 0/4] swig: upgrade 4.4.1 -> 4.5.0 Jaipaul Cheernam
2026-08-11 13:51 ` [PATCH v4 1/4] " Jaipaul Cheernam
2026-08-11 13:51 ` [PATCH v4 2/4] babeltrace2: fix build with swig 4.5.0 Jaipaul Cheernam
2026-08-11 13:51 ` [PATCH v4 3/4] u-boot-tools: fix pylibfdt " Jaipaul Cheernam
2026-08-11 13:52 ` Jaipaul Cheernam [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260811135200.18942-5-jaipaul.cheernam@est.tech \
--to=jaipaul.cheernam@est.tech \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.