From patchwork Fri Nov 25 01:21:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierre Langlois X-Patchwork-Id: 44805 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id D70FB27BBED; Fri, 25 Nov 2022 01:23:13 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id B2FD027BBE9 for ; Fri, 25 Nov 2022 01:23:11 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oyNQq-0005nI-BQ; Thu, 24 Nov 2022 20:23:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oyNQp-0005mF-6G for guix-patches@gnu.org; Thu, 24 Nov 2022 20:23:07 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oyNQo-0004Tc-TS for guix-patches@gnu.org; Thu, 24 Nov 2022 20:23:06 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oyNQo-0000P4-Q9 for guix-patches@gnu.org; Thu, 24 Nov 2022 20:23:06 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#49946] [PATCH v7 05/32] gnu: Add tree-sitter-cli. Resent-From: Pierre Langlois Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 25 Nov 2022 01:23:06 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49946 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 49946@debbugs.gnu.org Cc: Pierre Langlois Received: via spool by 49946-submit@debbugs.gnu.org id=B49946.16693393491317 (code B ref 49946); Fri, 25 Nov 2022 01:23:06 +0000 Received: (at 49946) by debbugs.gnu.org; 25 Nov 2022 01:22:29 +0000 Received: from localhost ([127.0.0.1]:60805 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyNQC-0000L0-DX for submit@debbugs.gnu.org; Thu, 24 Nov 2022 20:22:29 -0500 Received: from mout.gmx.net ([212.227.17.21]:46285) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyNQ5-0000Hs-CC for 49946@debbugs.gnu.org; Thu, 24 Nov 2022 20:22:22 -0500 Received: from localhost.localdomain ([82.69.64.142]) by mail.gmx.net (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MYeMt-1pU5Z60syJ-00VkHX; Fri, 25 Nov 2022 02:22:15 +0100 From: Pierre Langlois Date: Fri, 25 Nov 2022 01:21:15 +0000 Message-Id: <20221125012142.22579-6-pierre.langlois@gmx.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221125012142.22579-1-pierre.langlois@gmx.com> References: <87mtfi63ut.fsf@gmx.com> <20221125012142.22579-1-pierre.langlois@gmx.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:qoBq7buxWXVdHqvLlWZM8r/xXeCzIj+r3df4fB75cLkdNhbVEQ1 9DGXDm2NqqE+yZErpI+hB9t+nehat1bB+F7DN7mlyGbUPewsL7+aRNdMv9hXwuMpDsvIb48 Bhs2u/VP2eUTcf8finlwajZFjf9ASvHfb8ZKS8ANHUcw1/ZqPpVaPQMMcTdIuHo+3U0NSaf RDBoXo1qnt+DqlujzXMiQ== UI-OutboundReport: notjunk:1;M01:P0:/F9I8hV/+eI=;IUD0FUj28z5OyhC7s6FXNkhO591 Jbgsybm2SDngbFffrhA7ZTqXi14Z5iWWsxNxNqiuMvwyr9SRao1AHQImUYWTuOBzamjpk7kaD J0huQs10S2jGXJv5VSmIKxBMdFB2BfgbT0Ki1UEu3g4tkzwaV8yd7Iu222phQxiWk11aVLrBZ DKf8CzsIKO/V/PZ3+sOaajGDapZ3DNX7asfVP1fhDFBBXHg1J4Y4k0EoKX87ZPB1ytEk3vSCq csXzPnQzLs63633BPBLlCkglQf1u3F3uRJoi/+/ly6ml+1DPP4sd4fSOkO6QUsTyFHgt3e40V ynai6iYLePEYzSdUZQDuanWScKlOcXjTNRRQeYSdl1Z76BlX2+pr7C7UOewaLSZ4521kB9GZh 5xLNSWS60NAesdowRpSQcl6VDtcPjvKVEr4ZuxZL2nEBPMyTZEYlFMKEbOoGmEOspTM+a5hX3 4CBRq5tGSV6Ta8J2GTFxhgIuPCmzXi5IPQCOC0T2A/hTrgFk8CQjxnjxo+kb64/I7LTG4FzQr ktIvoIT4vIV8/1dmy+zMe7smKzjxbj5/En6O8P7JSxdbsy/J2PbLCMZv0TTFYs/pPaBnK08FH yK5dYn3kcO4FYJcLmXuJnothELp4bYyqxqnl+zdy5zwsy5eEOLQL3AqXqE4b4pGElRx5lHUE8 Droeo/IwVF7VY3mTbRJ7UwOQmSnwRxoWGhPoYzb+4Ksq0F/iPYltPpMTzdR/PJ5d2yKXhcb9p NOsl7POxBjCsedcs3PU3ImkNdanXqyflNynoZHlCg5y4a+QJAHTZdN5egCLml7j0kGscc75DT 5x5en/3mJ6zk4W+JnPRPsrpdz2U2IayNtfoIF6GEMXJRYcaJklqlY4uaWqG67PbBDmr14HzBF yPMU5YjaOH0lGIMvGoi8WucWujXScyRm7ze6Z3nxXirGjVVtsxDzvtKigPo7ZHlwh9wi48P/o EXPwF14I5nuYTTaKx8oR4ZNvPps= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/tree-sitter.scm (tree-sitter-cli): New variable. --- gnu/packages/tree-sitter.scm | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm index 8ef4e87e41..30bf17b79b 100644 --- a/gnu/packages/tree-sitter.scm +++ b/gnu/packages/tree-sitter.scm @@ -20,10 +20,13 @@ (define-module (gnu packages tree-sitter) #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system cargo) #:use-module (guix build-system gnu) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (guix utils) + #:use-module (gnu packages crates-graphics) + #:use-module (gnu packages crates-io) #:use-module (gnu packages icu4c)) (define-public tree-sitter @@ -76,3 +79,80 @@ (define-public tree-sitter This package includes the @code{libtree-sitter} runtime library. ") (license license:expat))) + +(define-public tree-sitter-cli + (package (inherit tree-sitter) + (name "tree-sitter-cli") + (source (origin + (inherit (package-source tree-sitter)) + (snippet + '(begin + ;; Remove the runtime library code and dynamically link to + ;; it instead. + (delete-file-recursively "lib/src") + (delete-file "lib/binding_rust/build.rs") + (with-output-to-file "lib/binding_rust/build.rs" + (lambda _ + (format #t "fn main() {~@ + println!(\"cargo:rustc-link-lib=tree-sitter\");~@ + }~%"))) + #t)))) + (build-system cargo-build-system) + (inputs (list tree-sitter)) + (arguments + `(;; Running test requires downloading fixtures, see the + ;; script/fetch-fixtures script. + #:tests? #f + ;; We're only packaging the CLI program so we do not need to install + ;; sources. + #:install-source? #f + #:cargo-inputs + (("rust-ansi-term" ,rust-ansi-term-0.12) + ("rust-anyhow" ,rust-anyhow-1) + ("rust-atty" ,rust-atty-0.2) + ("rust-clap" ,rust-clap-2) + ("rust-difference" ,rust-difference-2) + ("rust-dirs" ,rust-dirs-3) + ("rust-html-escape" ,rust-html-escape-0.2) + ("rust-libloading" ,rust-libloading-0.7) + ("rust-rand" ,rust-rand-0.8) + ("rust-rustc-hash" ,rust-rustc-hash-1) + ("rust-semver" ,rust-semver-1) + ("rust-smallbitvec" ,rust-smallbitvec-2) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tiny-http" ,rust-tiny-http-0.8) + ("rust-toml" ,rust-toml-0.5) + ("rust-walkdir" ,rust-walkdir-2) + ("rust-webbrowser" ,rust-webbrowser-0.5) + ("rust-which" ,rust-which-4)) + #:cargo-development-inputs + (("rust-pretty-assertions" ,rust-pretty-assertions-0.7)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-cargo.lock + (lambda _ (delete-file "Cargo.lock"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lib (string-append out "/lib"))) + (mkdir-p bin) + (install-file "target/release/tree-sitter" bin))))))) + (synopsis "Incremental parsing system for programming tools") + (description "Tree-sitter is a parser generator tool and an incremental +parsing library. It can build a concrete syntax tree for a source file and +efficiently update the syntax tree as the source file is edited. + +Tree-sitter aims to be: + +@enumerate +@item General enough to parse any programming language. +@item Fast enough to parse on every keystroke in a text editor. +@item Robust enough to provide useful results even in the presence of syntax +errors. +@item Dependency-free so that the runtime library (which is written in pure C) +can be embedded in any application. +@end enumerate + +This package includes the @command{tree-sitter} command-line tool.") + (license license:expat)))