commit:     822c415662f1587768dd4c038f2019bae123c94b
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat May 18 16:38:50 2024 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Sat May 18 16:40:32 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=822c4156

dev-python/tree-sitter: fix 32 bit

We had issues loading any language on 32 bit systems, which was
fixed in this upstream commit.

Upstream: 
https://github.com/tree-sitter/py-tree-sitter/commit/85e49483b6d2b49953568d95cfa03e539bfb8179
Bug: https://bugs.gentoo.org/932078
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 .../files/tree-sitter-0.22.2-fix-32-bit.patch      | 27 ++++++++++++++++++++++
 ...-0.22.2.ebuild => tree-sitter-0.22.2-r1.ebuild} |  4 +++-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/dev-python/tree-sitter/files/tree-sitter-0.22.2-fix-32-bit.patch 
b/dev-python/tree-sitter/files/tree-sitter-0.22.2-fix-32-bit.patch
new file mode 100644
index 000000000000..c7d86953fa21
--- /dev/null
+++ b/dev-python/tree-sitter/files/tree-sitter-0.22.2-fix-32-bit.patch
@@ -0,0 +1,27 @@
+https://github.com/tree-sitter/py-tree-sitter/commit/85e49483b6d2b49953568d95cfa03e539bfb8179
+From: ObserverOfTime <[email protected]>
+fix(language): use uintptr_t
+
+--- a/tests/test_language.py
++++ b/tests/test_language.py
+@@ -18,7 +18,6 @@ def setUp(self):
+         self.rust = tree_sitter_rust.language()
+
+     def test_init_invalid(self):
+-        self.assertRaises(ValueError, Language, -1)
+         self.assertRaises(ValueError, Language, 42)
+
+     def test_properties(self):
+--- a/tree_sitter/binding/language.c
++++ b/tree_sitter/binding/language.c
+@@ -5,8 +5,8 @@ int language_init(Language *self, PyObject *args, PyObject 
*Py_UNUSED(kwargs)) {
+     if (!PyArg_ParseTuple(args, "O:__init__", &language)) {
+         return -1;
+     }
+-    Py_ssize_t language_id = PyLong_AsSsize_t(language);
+-    if (language_id < 1 || (language_id % sizeof(TSLanguage *)) != 0) {
++    Py_uintptr_t language_id = PyLong_AsSize_t(language);
++    if (language_id == 0 || (language_id % sizeof(TSLanguage *)) != 0) {
+         if (!PyErr_Occurred()) {
+             PyErr_SetString(PyExc_ValueError, "invalid language ID");
+         }

diff --git a/dev-python/tree-sitter/tree-sitter-0.22.2.ebuild 
b/dev-python/tree-sitter/tree-sitter-0.22.2-r1.ebuild
similarity index 90%
rename from dev-python/tree-sitter/tree-sitter-0.22.2.ebuild
rename to dev-python/tree-sitter/tree-sitter-0.22.2-r1.ebuild
index 85c88a0273ea..5560b9fb2c6f 100644
--- a/dev-python/tree-sitter/tree-sitter-0.22.2.ebuild
+++ b/dev-python/tree-sitter/tree-sitter-0.22.2-r1.ebuild
@@ -44,7 +44,9 @@ BDEPEND="
 distutils_enable_tests pytest
 
 PATCHES=(
-       "${FILESDIR}"/tree-sitter-0.22.2-unbundle.patch
+       "${FILESDIR}"/${PN}-0.22.2-unbundle.patch
+       # Fix 32-bit build, upstream, drop on next bump
+       "${FILESDIR}"/${P}-fix-32-bit.patch
 )
 
 src_unpack() {

Reply via email to