python312Packages.tree-sitter: patch segfaulting code, enable tests
This commit is contained in:
parent
271bbf8f6e
commit
c31e83ecd2
@ -28,6 +28,11 @@ buildPythonPackage rec {
|
|||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# see https://github.com/tree-sitter/py-tree-sitter/issues/330#issuecomment-2629403946
|
||||||
|
patches = lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [
|
||||||
|
./segfault-patch.diff
|
||||||
|
];
|
||||||
|
|
||||||
build-system = [ setuptools ];
|
build-system = [ setuptools ];
|
||||||
|
|
||||||
nativeCheckInputs = [
|
nativeCheckInputs = [
|
||||||
@ -51,14 +56,11 @@ buildPythonPackage rec {
|
|||||||
"test_dot_graphs"
|
"test_dot_graphs"
|
||||||
];
|
];
|
||||||
|
|
||||||
# Segfaults explosively for some reason, but dependents seem to work?
|
meta = {
|
||||||
doCheck = !stdenv.hostPlatform.isAarch64;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Python bindings to the Tree-sitter parsing library";
|
description = "Python bindings to the Tree-sitter parsing library";
|
||||||
homepage = "https://github.com/tree-sitter/py-tree-sitter";
|
homepage = "https://github.com/tree-sitter/py-tree-sitter";
|
||||||
changelog = "https://github.com/tree-sitter/py-tree-sitter/releases/tag/${src.tag}";
|
changelog = "https://github.com/tree-sitter/py-tree-sitter/releases/tag/${src.tag}";
|
||||||
license = licenses.mit;
|
license = lib.licenses.mit;
|
||||||
maintainers = with maintainers; [ fab ];
|
maintainers = with lib.maintainers; [ fab ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
--- i/tree_sitter/core/lib/src/parser.c
|
||||||
|
+++ w/tree_sitter/core/lib/src/parser.c
|
||||||
|
@@ -2084,6 +2084,10 @@ void ts_parser_reset(TSParser *self) {
|
||||||
|
self->parse_state = (TSParseState) {0};
|
||||||
|
}
|
||||||
|
|
||||||
|
+// FIXME: see tree-sitter/py-tree-sitter#330
|
||||||
|
+#if __GNUC__ >= 14 && defined(__aarch64__) && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__)
|
||||||
|
+__attribute__((optimize(2)))
|
||||||
|
+#endif
|
||||||
|
TSTree *ts_parser_parse(
|
||||||
|
TSParser *self,
|
||||||
|
const TSTree *old_tree,
|
||||||
Loading…
x
Reference in New Issue
Block a user