Subject: [PATCH] gnu: Add guile-ts.

From: Zheng Junjie <[email-masked]>
Date: Thu, 26 Oct 2023 23:03:19 +0800

* 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
-- 
2.41.0