RUN ./autogen.sh autoconf
RUN ./configure
# 'make -j4 bootstrap' does not work reliably.
-RUN make bootstrap
+RUN make -j `nproc` bootstrap
FROM emacs-base as emacs-filenotify-gio
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-file-notification=gfile
-RUN make bootstrap
+RUN make -j `nproc` bootstrap
# Debian bullseye doesn't provide proper packages. So we use Debian
# sid for this.
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 \
- libdbus-1-dev libacl1-dev acl git texinfo gdb \
+ libxml2-dev libdbus-1-dev libacl1-dev acl git texinfo gdb \
&& rm -rf /var/lib/apt/lists/*
-# Install clangd.
+# Install clangd, tsserver.
RUN apt-get update && \
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
- clangd \
+ 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 bootstrap
+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))'
# Debian bullseye doesn't provide proper packages. So we use Debian
# sid for this.
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 \
- libdbus-1-dev libacl1-dev acl git texinfo gdb \
+ libxml2-dev libdbus-1-dev libacl1-dev acl git texinfo gdb \
&& rm -rf /var/lib/apt/lists/*
# Install tree-sitter library.
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-tree-sitter
-RUN make bootstrap
+RUN make -j `nproc` bootstrap
# Install language grammars.
RUN mkdir -p /root/.emacs.d/tree-sitter
(lua "https://github.com/tree-sitter-grammars/tree-sitter-lua") \
(python "https://github.com/tree-sitter/tree-sitter-python") \
(ruby "https://github.com/tree-sitter/tree-sitter-ruby") \
+ (rust "https://github.com/tree-sitter/tree-sitter-rust") \
(tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src") \
(typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src"))))' \
--eval '(dolist (lang (mapcar (quote car) treesit-language-source-alist)) \
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-ns
-RUN make bootstrap
+RUN make -j `nproc` bootstrap
FROM emacs-base as emacs-native-comp
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-native-compilation
-RUN make bootstrap -j2 \
+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
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-native-compilation
-RUN make bootstrap -j2 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
+RUN make -j `nproc` bootstrap BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
FROM emacs-native-comp as emacs-native-comp-speed2
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-native-compilation
-RUN make bootstrap -j2
+RUN make -j `nproc` bootstrap`
@echo ' - test/$(1)/*.el' >>$(FILE)
@echo ' variables:' >>$(FILE)
@echo ' target: emacs-inotify' >>$(FILE)
- @echo ' make_params: "-k -C test $(target)"' >>$(FILE)
+ @echo ' make_params: "-C test $(target)"' >>$(FILE)
endef
$(foreach subdir, $(SUBDIRS), $(eval $(call subdir_template,$(subdir))))
# TODO: with make -j4 several of the tests were failing, for
# example shadowfile-tests, but passed without it.
- 'export PWD=$(pwd)'
- - 'docker run -i -e EMACS_EMBA_CI=${EMACS_EMBA_CI} -e EMACS_TEST_JUNIT_REPORT=${EMACS_TEST_JUNIT_REPORT} -e EMACS_TEST_TIMEOUT=${EMACS_TEST_TIMEOUT} -e EMACS_TEST_VERBOSE=${EMACS_TEST_VERBOSE} --volumes-from $(docker ps -q -f "label=com.gitlab.gitlab-runner.job.id=${CI_JOB_ID}"):ro --name ${test_name} ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} /bin/bash -xvc "git fetch ${PWD} HEAD && echo checking out these updated files && git diff --name-only FETCH_HEAD && ( git diff --name-only FETCH_HEAD | xargs git checkout -f FETCH_HEAD ) && make -j4 && make ${make_params}"'
+ - 'docker run -i -e EMACS_EMBA_CI=${EMACS_EMBA_CI} -e EMACS_TEST_JUNIT_REPORT=${EMACS_TEST_JUNIT_REPORT} -e EMACS_TEST_TIMEOUT=${EMACS_TEST_TIMEOUT} -e EMACS_TEST_VERBOSE=${EMACS_TEST_VERBOSE} -e NPROC=`nproc` --volumes-from $(docker ps -q -f "label=com.gitlab.gitlab-runner.job.id=${CI_JOB_ID}"):ro --name ${test_name} ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} /bin/bash -xvc "git fetch ${PWD} HEAD && echo checking out these updated files && git diff --name-only FETCH_HEAD && ( git diff --name-only FETCH_HEAD | xargs git checkout -f FETCH_HEAD ) && make -j \$NPROC && make -k -j \$NPROC ${make_params}"'
after_script:
# - docker ps -a
# - printenv
target: emacs-filenotify-gio
# This is needed in order to get a JUnit test report.
make_params: >-
- '-k -C test check-expensive
+ 'check-expensive
TEST_HOME=/root
LOGFILES="lisp/autorevert-tests.log lisp/filenotify-tests.log"'
target: emacs-eglot
# This is needed in order to get a JUnit test report.
make_params: >-
- '-k -C test check-expensive
+ 'check-expensive
TEST_HOME=/root LOGFILES="lisp/progmodes/eglot-tests.log"'
+ # EMACS_EXTRAOPT="--eval \(package-reinstall\ \(quote\ company\)\)
+ # --eval \(package-reinstall\ \(quote\ yasnippet\)\)
+ # --eval \(use-package\ company\)
+ # --eval \(use-package\ yasnippet\)"'
build-image-tree-sitter:
stage: platform-images
\(and\ \$\{SELECTOR_EXPENSIVE\}\ \(or\ \\\"^treesit\\\"\ \\\"-ts-\\\"\)\)
# This is needed in order to get a JUnit test report.
make_params: >-
- '-k -C test check SELECTOR=$selector
- TEST_HOME=/root LOGFILES="$tree_sitter_files"'
+ 'check SELECTOR=$selector TEST_HOME=/root LOGFILES="$tree_sitter_files"'
build-image-gnustep:
stage: platform-images
optional: true
variables:
target: emacs-native-comp-speed2
- make_params: "-k -C test check SELECTOR='(not (tag :unstable))'"
+ make_params: "check SELECTOR='(not (tag :unstable))'"
# Local Variables:
# add-log-current-defun-header-regexp: "^\\([-_.[:alnum:]]+\\)[ \t]*:"
- test/lib-src/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lib-src"
+ make_params: "-C test check-lib-src"
test-lisp-inotify:
stage: normal
- test/lisp/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp"
+ make_params: "-C test check-lisp"
test-lisp-calc-inotify:
stage: normal
- test/lisp/calc/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-calc"
+ make_params: "-C test check-lisp-calc"
test-lisp-calendar-inotify:
stage: normal
- test/lisp/calendar/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-calendar"
+ make_params: "-C test check-lisp-calendar"
test-lisp-cedet-inotify:
stage: normal
- test/lisp/cedet/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-cedet"
+ make_params: "-C test check-lisp-cedet"
test-lisp-cedet-semantic-inotify:
stage: normal
- test/lisp/cedet/semantic/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-cedet-semantic"
+ make_params: "-C test check-lisp-cedet-semantic"
test-lisp-cedet-semantic-bovine-inotify:
stage: normal
- test/lisp/cedet/semantic/bovine/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-cedet-semantic-bovine"
+ make_params: "-C test check-lisp-cedet-semantic-bovine"
test-lisp-cedet-srecode-inotify:
stage: normal
- test/lisp/cedet/srecode/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-cedet-srecode"
+ make_params: "-C test check-lisp-cedet-srecode"
test-lisp-emacs-lisp-inotify:
stage: normal
- test/lisp/emacs-lisp/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-emacs-lisp"
+ make_params: "-C test check-lisp-emacs-lisp"
test-lisp-emacs-lisp-eieio-tests-inotify:
stage: normal
- test/lisp/emacs-lisp/eieio-tests/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-emacs-lisp-eieio-tests"
+ make_params: "-C test check-lisp-emacs-lisp-eieio-tests"
test-lisp-emacs-lisp-faceup-tests-inotify:
stage: normal
- test/lisp/emacs-lisp/faceup-tests/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-emacs-lisp-faceup-tests"
+ make_params: "-C test check-lisp-emacs-lisp-faceup-tests"
test-lisp-emulation-inotify:
stage: normal
- test/lisp/emulation/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-emulation"
+ make_params: "-C test check-lisp-emulation"
test-lisp-erc-inotify:
stage: normal
- test/lisp/erc/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-erc"
+ make_params: "-C test check-lisp-erc"
test-lisp-eshell-inotify:
stage: normal
- test/lisp/eshell/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-eshell"
+ make_params: "-C test check-lisp-eshell"
test-lisp-gnus-inotify:
stage: normal
- test/lisp/gnus/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-gnus"
+ make_params: "-C test check-lisp-gnus"
test-lisp-image-inotify:
stage: normal
- test/lisp/image/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-image"
+ make_params: "-C test check-lisp-image"
test-lisp-international-inotify:
stage: normal
- test/lisp/international/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-international"
+ make_params: "-C test check-lisp-international"
test-lisp-mail-inotify:
stage: normal
- test/lisp/mail/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-mail"
+ make_params: "-C test check-lisp-mail"
test-lisp-mh-e-inotify:
stage: normal
- test/lisp/mh-e/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-mh-e"
+ make_params: "-C test check-lisp-mh-e"
test-lisp-net-inotify:
stage: normal
- test/lisp/net/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-net"
+ make_params: "-C test check-lisp-net"
test-lisp-nxml-inotify:
stage: normal
- test/lisp/nxml/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-nxml"
+ make_params: "-C test check-lisp-nxml"
test-lisp-obsolete-inotify:
stage: normal
- test/lisp/obsolete/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-obsolete"
+ make_params: "-C test check-lisp-obsolete"
test-lisp-org-inotify:
stage: normal
- test/lisp/org/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-org"
+ make_params: "-C test check-lisp-org"
test-lisp-play-inotify:
stage: normal
- test/lisp/play/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-play"
+ make_params: "-C test check-lisp-play"
test-lisp-progmodes-inotify:
stage: normal
- test/lisp/progmodes/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-progmodes"
+ make_params: "-C test check-lisp-progmodes"
test-lisp-so-long-tests-inotify:
stage: normal
- test/lisp/so-long-tests/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-so-long-tests"
+ make_params: "-C test check-lisp-so-long-tests"
test-lisp-term-inotify:
stage: normal
- test/lisp/term/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-term"
+ make_params: "-C test check-lisp-term"
test-lisp-textmodes-inotify:
stage: normal
- test/lisp/textmodes/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-textmodes"
+ make_params: "-C test check-lisp-textmodes"
test-lisp-url-inotify:
stage: normal
- test/lisp/url/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-url"
+ make_params: "-C test check-lisp-url"
test-lisp-use-package-inotify:
stage: normal
- test/lisp/use-package/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-use-package"
+ make_params: "-C test check-lisp-use-package"
test-lisp-vc-inotify:
stage: normal
- test/lisp/vc/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-lisp-vc"
+ make_params: "-C test check-lisp-vc"
test-misc-inotify:
stage: normal
- test/misc/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-misc"
+ make_params: "-C test check-misc"
test-src-inotify:
stage: normal
- test/src/*.el
variables:
target: emacs-inotify
- make_params: "-k -C test check-src"
+ make_params: "-C test check-src"
# js-tests.el and python-tests.el don't follow test file name convention.
.tree-sitter-files-template:
lisp/progmodes/lua-ts-mode-tests.log
lisp/progmodes/python-tests.log
lisp/progmodes/ruby-ts-mode-tests.log
+ lisp/progmodes/rust-ts-mode-tests.log
lisp/progmodes/typescript-ts-mode-tests.log
src/treesit-tests.log