
* admin/notes/tree-sitter/build-module/build.sh: Update org for toml/yaml. * admin/tree-sitter/treesit-admin.el (treesit-admin--builtin-language-sources): Add verified versions. * lisp/progmodes/c-ts-mode.el: Append language source to treesit-language-source-alist. (c-ts-mode, c++-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/cmake-ts-mode.el: Append language source to treesit-language-source-alist. (cmake-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/csharp-mode.el: Append language source to treesit-language-source-alist. (csharp-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/dockerfile-ts-mode.el: Append language source to treesit-language-source-alist. (dockerfile-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/elixir-ts-mode.el: Append language source to treesit-language-source-alist. (elixir-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/go-ts-mode.el: Append language source to treesit-language-source-alist. (go-ts-mode, go-mod-ts-mode, go-work-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/heex-ts-mode.el: Append language source to treesit-language-source-alist. (heex-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/java-ts-mode.el: Append language source to treesit-language-source-alist. (java-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/js.el: Append language source to treesit-language-source-alist. (js-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/json-ts-mode.el: Append language source to treesit-language-source-alist. (json-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/lua-ts-mode.el: Append language source to treesit-language-source-alist. (lua-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/php-ts-mode.el (php-ts-mode--language-source-alist): Update versions from comments in ts-modes. Append to treesit-language-source-alist. (php-ts-mode-install-parsers): Use treesit-language-source-alist directly. (php-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/ruby-ts-mode.el: Append language source to treesit-language-source-alist. (ruby-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/rust-ts-mode.el: Append language source to treesit-language-source-alist. (rust-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/sh-script.el: Append language source to treesit-language-source-alist. (bash-ts-mode): Use treesit-ensure-installed. * lisp/progmodes/typescript-ts-mode.el: Append language source to treesit-language-source-alist. (typescript-ts-mode, tsx-ts-mode): Use treesit-ensure-installed. * lisp/textmodes/css-mode.el: Append language source to treesit-language-source-alist. (css-ts-mode): Use treesit-ensure-installed. * lisp/textmodes/html-ts-mode.el: Append language source to treesit-language-source-alist. (html-ts-mode): Use treesit-ensure-installed. * lisp/textmodes/markdown-ts-mode.el: Append language source to treesit-language-source-alist. (markdown-ts-mode): Use treesit-ensure-installed. * lisp/textmodes/mhtml-ts-mode.el (mhtml-ts-mode--language-source-alist): Append to treesit-language-source-alist. (mhtml-ts-mode-install-parsers): Use treesit-language-source-alist directly. (mhtml-ts-mode): Use treesit-ensure-installed. * lisp/textmodes/toml-ts-mode.el: Append language source to treesit-language-source-alist. (toml-ts-mode): Use treesit-ensure-installed. * lisp/textmodes/yaml-ts-mode.el: Append language source to treesit-language-source-alist. (yaml-ts-mode): Use treesit-ensure-installed. * test/infra/Dockerfile.emba: Add verified versions to treesit-language-source-alist.
203 lines
7.5 KiB
Text
203 lines
7.5 KiB
Text
# Copyright (C) 2021-2025 Free Software Foundation, Inc.
|
|
#
|
|
# This file is part of GNU Emacs.
|
|
#
|
|
# GNU Emacs is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# GNU Emacs is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
# GNU Emacs support for the GitLab-specific build of Docker images.
|
|
|
|
# The presence of this file does not imply any FSF/GNU endorsement of
|
|
# Docker or any other particular tool. Also, it is intended for
|
|
# evaluation purposes, thus possibly temporary.
|
|
|
|
# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
|
|
# URL: https://emba.gnu.org/emacs/emacs
|
|
|
|
FROM debian:bookworm as emacs-base
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
libc-dev gcc g++ make autoconf automake libncurses-dev gnutls-dev \
|
|
libxml2-dev libdbus-1-dev libacl1-dev acl git texinfo gdb \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
FROM emacs-base as emacs-inotify
|
|
|
|
# We install clangd for Eglot tests.
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
inotify-tools clangd \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure
|
|
# 'make -j4 bootstrap' does not work reliably.
|
|
RUN make -j `nproc` bootstrap
|
|
|
|
FROM emacs-base as emacs-filenotify-gio
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
libglib2.0-dev libglib2.0-bin libglib2.0-0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure --with-file-notification=gfile
|
|
RUN make -j `nproc` bootstrap
|
|
|
|
FROM emacs-base as emacs-eglot
|
|
|
|
# Install clangd, tsserver.
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
clangd node-typescript \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# eclipse-jdt-ls is planned as Java language server.
|
|
# See <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1024246>.
|
|
|
|
# The following LSP servers exist as snap packages. However, snap
|
|
# cannot be used inside containers. We keep this here for reference.
|
|
|
|
# # Install snapd.
|
|
# RUN apt-get update && \
|
|
# apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
# snapd \
|
|
# && rm -rf /var/lib/apt/lists/*
|
|
# RUN snap install core
|
|
|
|
# # Install rust-analyzer.
|
|
# RUN snap install rust-analyzer --beta
|
|
|
|
# # Install typescript-language-server.
|
|
# RUN snap install typescript-language-server
|
|
|
|
# # Install vscode-json-languageserver.
|
|
# RUN snap install vscode-json-languageserver
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure
|
|
RUN make -j `nproc` bootstrap
|
|
|
|
# # Install company and yasnippet.
|
|
# RUN mkdir /root/.emacs.d
|
|
# RUN src/emacs --batch \
|
|
# --eval '(setq url-debug 0 debug-on-error t)' \
|
|
# --eval '(package-install (quote company))' \
|
|
# --eval '(package-install (quote yasnippet))'
|
|
|
|
FROM emacs-base as emacs-tree-sitter
|
|
|
|
# Install tree-sitter library.
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
libtree-sitter0 libtree-sitter-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure --with-tree-sitter
|
|
RUN make -j `nproc` bootstrap
|
|
|
|
# Install language grammars. The ABI versions of libtree-sitter0 and
|
|
# the respective grammars must match. The grammar ABI version is determined by
|
|
# grep LANGUAGE_VERSION /path/to/grammar-repo/src/parser.c
|
|
RUN mkdir -p /root/.emacs.d/tree-sitter
|
|
RUN git config --global http.sslverify "false"
|
|
# See https://github.com/emacs-tree-sitter/tree-sitter-langs/tree/master/repos
|
|
# The verified versions are generated by 'treesit-admin-verify-major-mode-queries`
|
|
# at the comments section in ts-mode files.
|
|
RUN src/emacs -Q --batch \
|
|
--eval \
|
|
'(message "ABI min version %d max version %d" \
|
|
(treesit-library-abi-version t) (treesit-library-abi-version))' \
|
|
--eval '(setq \
|
|
treesit-extra-load-path (list "/root/.emacs.d/tree-sitter") \
|
|
treesit-language-source-alist \
|
|
(quote ((bash "https://github.com/tree-sitter/tree-sitter-bash" "v0.23.3") \
|
|
(c "https://github.com/tree-sitter/tree-sitter-c" "v0.23.4") \
|
|
(c-sharp "https://github.com/tree-sitter/tree-sitter-c-sharp" "v0.23.1") \
|
|
(cpp "https://github.com/tree-sitter/tree-sitter-cpp" "v0.23.4") \
|
|
(css "https://github.com/tree-sitter/tree-sitter-css" "v0.23.1") \
|
|
(elixir "https://github.com/elixir-lang/tree-sitter-elixir" "v0.3.3") \
|
|
(go "https://github.com/tree-sitter/tree-sitter-go" "v0.23.4") \
|
|
(gomod "https://github.com/camdencheek/tree-sitter-go-mod" "v1.1.0") \
|
|
(gowork "https://github.com/omertuc/tree-sitter-go-work") \
|
|
(heex "https://github.com/phoenixframework/tree-sitter-heex" "v0.7.0") \
|
|
(html "https://github.com/tree-sitter/tree-sitter-html" "v0.23.2") \
|
|
(java "https://github.com/tree-sitter/tree-sitter-java" "v0.23.5") \
|
|
(javascript "https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.1") \
|
|
(jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.2") \
|
|
(json "https://github.com/tree-sitter/tree-sitter-json" "v0.24.8") \
|
|
(lua "https://github.com/tree-sitter-grammars/tree-sitter-lua" "v0.3.0") \
|
|
(python "https://github.com/tree-sitter/tree-sitter-python" "v0.23.6") \
|
|
(ruby "https://github.com/tree-sitter/tree-sitter-ruby" "v0.23.1") \
|
|
(rust "https://github.com/tree-sitter/tree-sitter-rust" "v0.23.2") \
|
|
(tsx "https://github.com/tree-sitter/tree-sitter-typescript" "v0.23.2" "tsx/src") \
|
|
(typescript "https://github.com/tree-sitter/tree-sitter-typescript" "v0.23.2" "typescript/src"))))' \
|
|
--eval '(dolist (lang (mapcar (quote car) treesit-language-source-alist)) \
|
|
(treesit-install-language-grammar lang "/root/.emacs.d/tree-sitter"))'
|
|
|
|
FROM emacs-base as emacs-gnustep
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
gnustep-devel zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure --with-ns
|
|
RUN make -j `nproc` bootstrap
|
|
|
|
FROM emacs-base as emacs-native-comp
|
|
|
|
# The libgccjit version must correspond to the gcc version.
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
|
|
libgccjit-12-dev zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
FROM emacs-native-comp as emacs-native-comp-speed0
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure --with-native-compilation
|
|
RUN make -j `nproc` bootstrap \
|
|
NATIVE_FULL_AOT=1 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 0)"'
|
|
|
|
FROM emacs-native-comp as emacs-native-comp-speed1
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure --with-native-compilation
|
|
RUN make -j `nproc` bootstrap BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
|
|
|
|
FROM emacs-native-comp as emacs-native-comp-speed2
|
|
|
|
COPY . /checkout
|
|
WORKDIR /checkout
|
|
RUN ./autogen.sh autoconf
|
|
RUN ./configure --with-native-compilation
|
|
RUN make -j `nproc` bootstrap
|