* [bug#63906] [PATCH] gnu: Add python-tree-sitter.
@ 2023-06-05 11:54 Nicolas Graves via Guix-patches via
2023-06-05 13:51 ` Jean Pierre De Jesus DIAZ via Guix-patches via
2023-06-06 8:35 ` [bug#63906] [PATCH v2] " Nicolas Graves via Guix-patches via
0 siblings, 2 replies; 4+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2023-06-05 11:54 UTC (permalink / raw)
To: 63906; +Cc: ngraves
* gnu/packages/tree-sitter.scm (python-tree-sitter): New variable.
---
gnu/packages/tree-sitter.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 853507be2d..2887fa823b 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2022 muradm <mail@muradm.net>
;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
;;; Copyright © 2023 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -29,12 +30,32 @@ (define-module (gnu packages tree-sitter)
#:use-module (gnu packages node)
#:use-module (guix build-system cargo)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system pyproject)
+ #:use-module ((guix build-system python) #:select (pypi-uri))
#:use-module (guix build-system tree-sitter)
#:use-module (guix gexp)
#:use-module (guix git-download)
+ #:use-module (guix download)
#:use-module (guix packages)
#:use-module (guix utils))
+(define-public python-tree-sitter
+ (package
+ (name "python-tree-sitter")
+ (version "0.20.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "tree_sitter" version))
+ (sha256
+ (base32
+ "03f6xqpnjh4g28d9g219w9n4l07bap91ws2xzfy4jrjxahn0hgz9"))))
+ (build-system pyproject-build-system)
+ (home-page "https://github.com/tree-sitter/py-tree-sitter")
+ (synopsis "Python bindings to the Tree-sitter parsing library")
+ (description "This package provides Python bindings to the
+Tree-sitter parsing library.")
+ (license license:expat)))
+
(define-public tree-sitter
(package
(name "tree-sitter")
base-commit: eed55a6544d5bda2245ec853e5fa4b28e1865bea
prerequisite-patch-id: a057b35ab55298bad50caab186b3e692a25230e1
prerequisite-patch-id: fb9054f780e6f97b92f00fdbe56058d1188ccf0a
prerequisite-patch-id: ca2f2591980b80c5cf27846e59e323bdc5a06b00
prerequisite-patch-id: ae5ad13b181ebb3c31d529af50622e3b78641442
prerequisite-patch-id: 34ed6acb0a1e5f79b5f6d18a6d4ef70cd97bf7ad
prerequisite-patch-id: 10d52b209b6e9c771050eef67ce566e79ab55c49
prerequisite-patch-id: e78e2a6daf59564caf5d2affe04ea7dde07f76c6
prerequisite-patch-id: 6aad4df7b83bfd5c2da38d9c2f80fba749f607b5
prerequisite-patch-id: da6a2d63ebb0ba1abb0b7c569d353724d900f95f
prerequisite-patch-id: 6279cff75e76e262f6ec82518db1fdf4c1810303
prerequisite-patch-id: 44453fcf2f2c38212a47d45d43ddcfa98167fabe
prerequisite-patch-id: 641eae2fa3842045ebe6072ad78214002f818221
prerequisite-patch-id: c19de9ee8c57210cbffc79945e69a858639f39bf
prerequisite-patch-id: 9833a747398a641803e203f8293382f55ad24ed1
prerequisite-patch-id: 94d5340918e3626726b6d32d93bf47425751898f
prerequisite-patch-id: e18164416e2c070b0b71f770c90d4c04af2635c1
prerequisite-patch-id: 31e98ea035053a965e87ad0164030cf909922d9e
prerequisite-patch-id: a1cf1f5c4a0ff2804fac986a69ffbc0328300afe
prerequisite-patch-id: 2a54e276f79fb57113a0be11e1ea2c07fdc2727d
prerequisite-patch-id: a463de1ba17ecb39588dfbd46c3bc5f9e0fb1b1c
prerequisite-patch-id: 3188de66dfc4bcb71f90601822428701528f4a98
prerequisite-patch-id: 6c93f771a1eca0747fd92a770fe750e2f15d8e52
prerequisite-patch-id: 12b76e9c2751da73ed64c9489b15f74ff17568cf
prerequisite-patch-id: eb618ab7b10483d917c308a38792af98baa517e2
prerequisite-patch-id: a471a4b7839bfb0ee9a3fd53ed962d729d38bd94
prerequisite-patch-id: 5e58202cc87a257c78033dafa62ffae4383e3718
prerequisite-patch-id: da6f4e25ed77113effc398694478bb392c4306ac
prerequisite-patch-id: febce01ba95d8c8f22e2088ab605ffd6959036ba
prerequisite-patch-id: caf73ad8377b81dd6f8e328bcaae935680df30ce
prerequisite-patch-id: 779a2f8d2ffa699e3c0029fde8dea22f5cce15b0
prerequisite-patch-id: a2dfb2fba1e1a3c8e270823022b6f462d27f17c8
prerequisite-patch-id: 843773f53ca319821185f9f9bc43ad905f081ee7
prerequisite-patch-id: cd7f69695aa47b7e1b1160841fe842a3acd160e7
--
2.40.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [bug#63906] [PATCH] gnu: Add python-tree-sitter.
2023-06-05 11:54 [bug#63906] [PATCH] gnu: Add python-tree-sitter Nicolas Graves via Guix-patches via
@ 2023-06-05 13:51 ` Jean Pierre De Jesus DIAZ via Guix-patches via
2023-06-06 8:35 ` [bug#63906] [PATCH v2] " Nicolas Graves via Guix-patches via
1 sibling, 0 replies; 4+ messages in thread
From: Jean Pierre De Jesus DIAZ via Guix-patches via @ 2023-06-05 13:51 UTC (permalink / raw)
To: 63906@debbugs.gnu.org; +Cc: ngraves@ngraves.fr
Hello Nicholas,
I took a look at the package and it bundles the tree-sitter code and
compiles it from source code. As tree-sitter is already packaged in
GNU Guix the setup.py script could be patched to instead build the
bindings and link with the system tree-sitter.
So the `origin' should contain a `snippet' to remove the bundled
code and on the build phases `setup.py' (and any other files) should
be patched to use the system tree-sitter.
Cheers,
—
Jean-Pierre De Jesus DIAZ
^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug#63906] [PATCH v2] gnu: Add python-tree-sitter.
2023-06-05 11:54 [bug#63906] [PATCH] gnu: Add python-tree-sitter Nicolas Graves via Guix-patches via
2023-06-05 13:51 ` Jean Pierre De Jesus DIAZ via Guix-patches via
@ 2023-06-06 8:35 ` Nicolas Graves via Guix-patches via
2023-07-01 21:37 ` bug#63906: [PATCH] " Ludovic Courtès
1 sibling, 1 reply; 4+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2023-06-06 8:35 UTC (permalink / raw)
To: 63906; +Cc: ngraves
* gnu/packages/tree-sitter.scm (python-tree-sitter): New variable.
---
gnu/packages/tree-sitter.scm | 58 ++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 853507be2d..20bd4466cc 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2022 muradm <mail@muradm.net>
;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
;;; Copyright © 2023 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,6 +23,7 @@
(define-module (gnu packages tree-sitter)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages graphviz)
@@ -29,13 +31,69 @@ (define-module (gnu packages tree-sitter)
#:use-module (gnu packages node)
#:use-module (guix build-system cargo)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system pyproject)
#:use-module (guix build-system tree-sitter)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix utils))
+(define-public python-tree-sitter
+ (package
+ (name "python-tree-sitter")
+ (version "0.20.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tree-sitter/py-tree-sitter")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1rc8zqiry4n52xlf7pwx4s56ka9vwjzwgn7blwbkiscqdwvsai92"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-tree-sitter-lib-path
+ (lambda _
+ (let ((tree-sitter #$(this-package-input "tree-sitter")))
+ (substitute* "setup.py"
+ (((string-append
+ "( *)\\[\"tree_sitter\\/core\\/lib\\/src\\/lib\\.c\", "
+ "\"tree_sitter\\/binding\\.c\"\\],") all tabs)
+ (string-append
+ tabs "[\"tree_sitter/binding.c\"],\n"
+ tabs "library_dirs=[\"" tree-sitter "/lib\"],\n"
+ tabs "libraries=[\"tree-sitter\"],"))
+ (("include_dirs=.*")
+ (string-append
+ "include_dirs=[\"" tree-sitter "/include\"],\n"))))))
+ (add-before 'check 'set-test-lib-paths
+ (lambda _
+ (let ((py #$(this-package-native-input "tree-sitter-python"))
+ (js #$(this-package-native-input "tree-sitter-javascript")))
+ (substitute* "tests/test_tree_sitter.py"
+ (("Language\\.build_library")
+ "_ =")
+ (("LIB_PATH(, \"python\")" all name)
+ (string-append
+ "\"" py "/lib/tree-sitter/libtree-sitter-python.so\"" name))
+ (("LIB_PATH(, \"javascript\")" all name)
+ (string-append
+ "\"" js "/lib/tree-sitter/libtree-sitter-javascript.so\""
+ name)))))))))
+ (inputs (list tree-sitter))
+ (native-inputs
+ (list tree-sitter-python tree-sitter-javascript))
+ (home-page "https://github.com/tree-sitter/py-tree-sitter")
+ (synopsis "Python bindings to the Tree-sitter parsing library")
+ (description "This package provides Python bindings to the
+Tree-sitter parsing library.")
+ (license license:expat)))
+
(define-public tree-sitter
(package
(name "tree-sitter")
--
2.40.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* bug#63906: [PATCH] gnu: Add python-tree-sitter.
2023-06-06 8:35 ` [bug#63906] [PATCH v2] " Nicolas Graves via Guix-patches via
@ 2023-07-01 21:37 ` Ludovic Courtès
0 siblings, 0 replies; 4+ messages in thread
From: Ludovic Courtès @ 2023-07-01 21:37 UTC (permalink / raw)
To: Nicolas Graves; +Cc: 63906-done, Jean-Pierre De Jesus DIAZ
Hi,
Nicolas Graves <ngraves@ngraves.fr> skribis:
> * gnu/packages/tree-sitter.scm (python-tree-sitter): New variable.
Applied! Thanks, Jean-Pierre, for reviewing.
I wondered whether ‘tree_sitter/binding.c’ is a generated file. If you
search carefully though, there are comments (few of them!) that appear
to be written by human beings. So I guess it’s fine.
Thank you!
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-07-01 21:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-05 11:54 [bug#63906] [PATCH] gnu: Add python-tree-sitter Nicolas Graves via Guix-patches via
2023-06-05 13:51 ` Jean Pierre De Jesus DIAZ via Guix-patches via
2023-06-06 8:35 ` [bug#63906] [PATCH v2] " Nicolas Graves via Guix-patches via
2023-07-01 21:37 ` bug#63906: [PATCH] " Ludovic Courtès
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
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.