[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#66761: [PATCH] gnu: Add guile-ts.
From: |
Andrew Tropin |
Subject: |
bug#66761: [PATCH] gnu: Add guile-ts. |
Date: |
Fri, 27 Oct 2023 16:24:44 +0400 |
On 2023-10-26 23:03, Zheng Junjie wrote:
> * gnu/packages/guile-xyz.scm (guile-ts): New variable.
>
> Change-Id: Icb681b6f2e5f2318291e5a4a4ff05d2cbbcf1856
> ---
> gnu/packages/guile-xyz.scm | 46 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 46 insertions(+)
>
> diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
> index 90f51cf741..0a2e0a04ae 100644
> --- a/gnu/packages/guile-xyz.scm
> +++ b/gnu/packages/guile-xyz.scm
> @@ -119,6 +119,7 @@ (define-module (gnu packages guile-xyz)
> #:use-module (gnu packages tex)
> #:use-module (gnu packages texinfo)
> #:use-module (gnu packages tls)
> + #:use-module (gnu packages tree-sitter)
> #:use-module (gnu packages version-control)
> #:use-module (gnu packages webkit)
> #:use-module (gnu packages xdisorg)
> @@ -4588,6 +4589,51 @@ (define-public guile-torrent
> according to Bitorrent BEP003.")
> (license license:gpl3+)))
>
> +(define-public guile-ts
> + (package
> + (name "guile-ts")
> + (version "0.1.0")
> + (source (origin (method git-fetch)
> + (uri (git-reference
> + (url
> + "https://github.com/Z572/guile-ts")
> + (commit (string-append "v" version))))
> + (file-name (git-file-name name version))
> + (sha256
> + (base32
> +
> "0xmq2d3mv921m0g1hqw6bjzh4m622g2c7pal11ks7vjn0m8d4bxj"))))
> + (build-system gnu-build-system)
> + (arguments
> + (list #:make-flags #~(list "GUILE_AUTO_COMPILE=0")
> + #:phases
> + #~(modify-phases %standard-phases
> + (add-after 'unpack 'set-extension-path
> + (lambda* (#:key outputs #:allow-other-keys)
> + (substitute*
> + (find-files "." ".*\\.scm")
> + (("\\(load-extension \"libguile_ts\" *\"(.*)\"\\)" _ o)
> + (string-append
> + (object->string
> + `(or (false-if-exception
> + (load-extension "libguile_ts" ,o))
> + (load-extension
> + ,(string-append
> + #$output
> + "/lib/libguile_ts.so")
> + ,o)))))))))))
> + (native-inputs
> + (list autoconf automake
> + libtool
> + texinfo
> + pkg-config
> + guile-3.0))
> + (inputs (list guile-3.0 tree-sitter))
> + (synopsis "Guile bindings to the Tree-sitter parsing library")
> + (description "This package provides Guile bindings to the Tree-sitter
> +parsing library.")
> + (home-page "https://github.com/Z572/guile-ts")
> + (license license:gpl3+)))
> +
> (define-public guile-irc
> (let ((commit "7d08ce6fdcb87ac668c5d3bfd5584247805507bb")
> (revision "1"))
>
> base-commit: 33f5b747b4a0a508e1ffc94a5bf425cff707c6e3
Tested the package with a following snippet of code:
--8<---------------cut here---------------start------------->8---
(use-modules (ts) (oop goops))
(define json-language
(get-ts-language-from-file
;; Can be obtained automatically from TREE_SITTER_GRAMMAR_PATH
"/gnu/store/537371mad55g34lkmzs3fzp33wh6kidk-profile/lib/tree-sitter/libtree-sitter-json.so"
"tree_sitter_json"))
(display (ts-language-version json-language))
(let* ((parser (make <ts-parser> #:language json-language))
(tree (ts-parser-parse-string parser #f "[1,null, \"hi\"]")))
(format #t "~s\n" (ts-node-sexp (ts-tree-root-node tree))))
--8<---------------cut here---------------end--------------->8---
guix shell guile guile-ts tree-sitter-json -- guile -s tmp.scm
Added native-search-paths to the package, so if it's installed in the
profile with tree-sitter grammars they are added to respective
environment variable.
--8<---------------cut here---------------start------------->8---
(native-search-paths
(list (search-path-specification
(variable "TREE_SITTER_GRAMMAR_PATH")
(files '("lib/tree-sitter")))))
--8<---------------cut here---------------end--------------->8---
Thank you for working on tree-sitter bindings, appreciate it very much!
Applied, slightly modified, pushed:
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=fca99c89b8
--
Best regards,
Andrew Tropin
signature.asc
Description: PGP signature