unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Difficulty building tree-sitter grammars [was: Help sought from C++ expert: ....]
Date: Thu, 19 Jan 2023 17:14:43 +0000	[thread overview]
Message-ID: <Y8l6g+dMTITvIUpy@ACM> (raw)
In-Reply-To: <83y1pyo9hs.fsf@gnu.org>

Hello, Eli.

On Thu, Jan 19, 2023 at 16:59:59 +0200, Eli Zaretskii wrote:
> > Date: Thu, 19 Jan 2023 14:53:22 +0000
> > From: Alan Mackenzie <acm@muc.de>

> > Just as a matter of interest, in c++-ts-mode a treesit-query-error gets
> > thrown.

> I don't see any such error.  Maybe this is again your outdated grammar
> library?

Heh!  Maybe you're right.  So time to get around to installing one from
github.  So I look at the Emacs-29 NEWS for instructions on how to do
this.  These instructions are glib and insufficiently helpful.

(i) The smallest problem is actually downloading the source of, e.g.,
tree-sitter-cpp.  github doesn't make it obvious how to download stuff,
and it took me over 10 minutes to find the GUI thing to activate the
download.  Then this download was a file.zip.  The instructions don't
mention that, on GNU, a package called zip is required to unzip this.

(ii) The instructions glibly say "To compile such a library, compile the
files "scanner.c" and "parser.c" (sometimes named "scanner.cc" and
"parser.cc") in the "src" subdirectory of the library's source tree
using the C or C++ compiler,...".  A Python hacker may well not even
know that the C/C++ compiler is called "gcc", far less that the
necessary command line option -c is needed to compile the two source
files.  Personally, this bit didn't present me any great difficulty.

(iii) The instructions continue with "..., then link these two files
into a shared library named "libtree-sitter-LANG.so, ...".  How,
exactly?  I've guessed that I can also do this with gcc, and need the
option -o libtree-sitter-cpp.so, but I also need some flags meaning
"link" and "build a .so" and some standard run-time library besides the
two object files.  I still haven't worked out what these are.  The
Python hacker pictured above will be totally lost here.

(iv) Then we have precise instructions on where to put the newly built
..so file.  This is good!

This process has so far taken me over an hour, which is too long for
something which should be purely routine.  It is likely to take a
typical Emacs user even longer.

I suggest that these instructions in NEWS should be enhanced with (i)
Tips on downloading stuff from github; (ii) A sample command line for
compiling the C/C++ source files; (iii) A sample command line for
linking these to the needed .so file.  Possibly two or three versions of
these would be needed for the different environments Emacs runs in.

And now, on with the tedious drudgery of working out how to link
tree-sitter-cpp.so using gcc.  :-(

-- 
Alan Mackenzie (Nuremberg, Germany).



  reply	other threads:[~2023-01-19 17:14 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-19 14:53 Help sought from C++ expert: is this `value' a type or something else (what)? Alan Mackenzie
2023-01-19 14:59 ` Eli Zaretskii
2023-01-19 17:14   ` Alan Mackenzie [this message]
2023-01-19 17:53     ` Difficulty building tree-sitter grammars [was: Help sought from C++ expert: ....] Dmitry Gutov
2023-01-19 18:06       ` Eli Zaretskii
2023-01-19 18:16         ` Dmitry Gutov
2023-01-19 17:53     ` Eli Zaretskii
2023-01-19 20:56       ` Alan Mackenzie
2023-01-20  6:44         ` Eli Zaretskii
2023-01-19 15:41 ` Help sought from C++ expert: is this `value' a type or something else (what)? Michael Welsh Duggan
2023-01-21 14:34   ` Alan Mackenzie
2023-01-19 16:22 ` Óscar Fuentes
2023-01-21 14:59   ` Alan Mackenzie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y8l6g+dMTITvIUpy@ACM \
    --to=acm@muc.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).