[bug#53523,v2,1/2] gnu: Add tree-sitter.
Commit Message
Hi guixers,
this adds tree-sitter, just as the previous patch series, but now
there is no neovim-luajit and neovim uses LuaJIT on supported
platforms.
--
Regards,
Luis H. Higino
* gnu/packages/text-editors.scm (tree-sitter): New variable.
---
gnu/packages/text-editors.scm | 45 +++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
Comments
Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04 [-0300]:
> + (add-after 'unpack 'fix-hardcoded-paths
> + (lambda _
> + (substitute* "Makefile"
> + (("/usr/local") (assoc-ref %outputs "out"))))))
%outputs and friends are being phased out, use G-exps instead:
(list #:phases
#~(modify-phases ...
(add-after 'unpack ...
(lambda _
(substitute* "Makefile"
(("/usr/local") #$output))))
[...])
[...])
> + #:tests? #f
Why are they disabled?
> + #:make-flags
> + (list (string-append "prefix="
> + (assoc-ref %outputs "out"))
Likewise (G-exps).
> + (string-append "CC="
> + ,(cc-for-target)))))
If G-exps are used, ',' needs to be replaced by #$.
Greetings,
Maxime.
Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04 [-0300]:
> + (substitute* "Makefile"
> + (("/usr/local") (assoc-ref %outputs "out"))))))
Is this necessary? The Makefile does 'PREFIX ?= /usr/local', so it
would seem to me that overriding PREFIX by setting #:make-flags
appropriately should be sufficient.
Greetings,
Maxime.
Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04 [-0300]:
> + (uri (git-reference
> + (url "https://github.com/tree-sitter/tree-sitter")
> + (commit (string-append "v" version))))
tree-sitter is bundling some parts of ICU
(https://github.com/tree-sitter/tree-sitter/tree/master/lib/src/unicode),
can they be unbundled?
Greetings,
Maxime.
Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04 [-0300]:
> + (list (string-append "prefix="
> + (assoc-ref %outputs "out"))
The Makefile has a 'PREFIX' variable, not a 'prefix' variable,
so this doesn't seem to have any effect?
Greetings,
Maxime
Maxime Devos <maximedevos@telenet.be> writes:
> Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04
> [-0300]:
>
>> + #:tests? #f
>
> Why are they disabled?
>
tree-sitter's test suite depends on downloading additional
grammars, so I found it easier to just disable testing. If you
think tests should be added as an additional origin field, I can
try doing it.
Maxime Devos <maximedevos@telenet.be> writes:
> Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04
> [-0300]:
>> + (substitute* "Makefile"
>> + (("/usr/local") (assoc-ref %outputs
>> "out"))))))
>
> Is this necessary? The Makefile does 'PREFIX ?= /usr/local', so
> it
> would seem to me that overriding PREFIX by setting #:make-flags
> appropriately should be sufficient.
>
You're right, I was using "prefix" on #:make-flags when it should
be "PREFIX", thanks for pointing it out!
Luis Henrique Gomes Higino schreef op za 05-02-2022 om 15:17 [-0300]:
> Maxime Devos <maximedevos@telenet.be> writes:
>
> > Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04
> > [-0300]:
> >
> > > + #:tests? #f
> >
> > Why are they disabled?
> >
>
> tree-sitter's test suite depends on downloading additional
> grammars, so I found it easier to just disable testing. If you
> think tests should be added as an additional origin field, I can
> try doing it.
If you figure out how to eliminate the downloads, great.
If it's too complicated, #:tests? #f could be acceptable, though it
deserves a comment in the source code.
Greetings,
Maxime.
Maxime Devos <maximedevos@telenet.be> writes:
> [[PGP Signed Part:Undecided]]
> Luis Henrique Gomes Higino schreef op di 01-02-2022 om 10:04
> [-0300]:
>
> tree-sitter is bundling some parts of ICU
> (https://github.com/tree-sitter/tree-sitter/tree/master/lib/src/unicode),
> can they be unbundled?
>
I managed to remove the "src/unicode" directory with an origin
snippet and, after some patching through `substitute*`, I have a
working build again. I'll be sending the new patch series
soon. Thanks for your expressive feedback Maxime, learned a lot
about Guix today :D.
@@ -17,6 +17,7 @@
;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2021 Calum Irwin <calumirwin1@gmail.com>
+;;; Copyright © 2022 Luis Henrique Gomes Higino <luishenriquegh2701@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1165,3 +1166,47 @@ (define-public virtaal
provided by the Translate Toolkit, including XLIFF and PO.")
(home-page "https://virtaal.translatehouse.org/")
(license license:gpl2+)))
+
+(define-public tree-sitter
+ (package
+ (name "tree-sitter")
+ (version "0.20.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tree-sitter/tree-sitter")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1yldgdbf3l5l4ki52abdf81nwkcbvg219gwr3ydcjwfsg7hf7zhz"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'fix-hardcoded-paths
+ (lambda _
+ (substitute* "Makefile"
+ (("/usr/local") (assoc-ref %outputs "out"))))))
+ #:tests? #f
+ #:make-flags
+ (list (string-append "prefix="
+ (assoc-ref %outputs "out"))
+ (string-append "CC="
+ ,(cc-for-target)))))
+ (home-page "https://tree-sitter.github.io/tree-sitter/")
+ (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:
+
+@itemize
+@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 itemize
+")
+ (license license:expat)))