Rework EMBA integration

* test/infra/Dockerfile.emba (emacs-inotify, emacs-filenotify-gio)
(emacs-eglot, emacs-tree-sitter, emacs-gnustep)
(emacs-native-comp-speed0, emacs-native-comp-speed1)
(emacs-native-comp-speed2): Use "-j `nproc`".
(emacs-eglot): Add libxml2-dev and node-typescript.
(emacs-tree-sitter) Add libxml2-dev and tree-sitter-rust.

* test/infra/Makefile.in (subdir_template): Simplify make_params.

* test/infra/gitlab-ci.yml (.job-template): Set environment
variable NPROC.  Use "-k -j \$NPROC".
(test-filenotify-gio, test-eglot, test-tree-sitter)
(test-native-comp-speed2): Simplify make_params.

* test/infra/test-jobs.yml: Regenerate.
This commit is contained in:
Michael Albinus 2024-04-22 13:38:10 +02:00
parent 931cd93313
commit 42c8e2dfce
4 changed files with 86 additions and 52 deletions

View file

@ -45,7 +45,7 @@ WORKDIR /checkout
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
@ -58,7 +58,7 @@ COPY . /checkout
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.
@ -68,20 +68,49 @@ FROM debian:sid as emacs-eglot
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.
@ -91,7 +120,7 @@ FROM debian:sid as emacs-tree-sitter
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.
@ -104,7 +133,7 @@ COPY . /checkout
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
@ -129,6 +158,7 @@ RUN src/emacs -Q --batch \
(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)) \
@ -145,7 +175,7 @@ COPY . /checkout
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
@ -161,7 +191,7 @@ COPY . /checkout
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
@ -170,7 +200,7 @@ COPY . /checkout
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
@ -178,4 +208,4 @@ COPY . /checkout
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-native-compilation
RUN make bootstrap -j2
RUN make -j `nproc` bootstrap`

View file

@ -103,7 +103,7 @@ define subdir_template
@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))))

View file

@ -86,7 +86,7 @@ default:
# 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
@ -255,7 +255,7 @@ test-filenotify-gio:
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"'
@ -275,8 +275,12 @@ test-eglot:
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
@ -296,8 +300,7 @@ test-tree-sitter:
\(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
@ -345,7 +348,7 @@ test-native-comp-speed2:
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]*:"

View file

@ -15,7 +15,7 @@ test-lib-src-inotify:
- 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
@ -32,7 +32,7 @@ test-lisp-inotify:
- 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
@ -49,7 +49,7 @@ test-lisp-calc-inotify:
- 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
@ -66,7 +66,7 @@ test-lisp-calendar-inotify:
- 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
@ -83,7 +83,7 @@ test-lisp-cedet-inotify:
- 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
@ -100,7 +100,7 @@ test-lisp-cedet-semantic-inotify:
- 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
@ -117,7 +117,7 @@ test-lisp-cedet-semantic-bovine-inotify:
- 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
@ -134,7 +134,7 @@ test-lisp-cedet-srecode-inotify:
- 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
@ -151,7 +151,7 @@ test-lisp-emacs-lisp-inotify:
- 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
@ -168,7 +168,7 @@ test-lisp-emacs-lisp-eieio-tests-inotify:
- 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
@ -185,7 +185,7 @@ test-lisp-emacs-lisp-faceup-tests-inotify:
- 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
@ -202,7 +202,7 @@ test-lisp-emulation-inotify:
- 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
@ -219,7 +219,7 @@ test-lisp-erc-inotify:
- 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
@ -236,7 +236,7 @@ test-lisp-eshell-inotify:
- 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
@ -253,7 +253,7 @@ test-lisp-gnus-inotify:
- 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
@ -270,7 +270,7 @@ test-lisp-image-inotify:
- 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
@ -287,7 +287,7 @@ test-lisp-international-inotify:
- 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
@ -304,7 +304,7 @@ test-lisp-mail-inotify:
- 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
@ -321,7 +321,7 @@ test-lisp-mh-e-inotify:
- 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
@ -338,7 +338,7 @@ test-lisp-net-inotify:
- 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
@ -355,7 +355,7 @@ test-lisp-nxml-inotify:
- 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
@ -372,7 +372,7 @@ test-lisp-obsolete-inotify:
- 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
@ -389,7 +389,7 @@ test-lisp-org-inotify:
- 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
@ -406,7 +406,7 @@ test-lisp-play-inotify:
- 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
@ -430,7 +430,7 @@ test-lisp-progmodes-inotify:
- 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
@ -447,7 +447,7 @@ test-lisp-so-long-tests-inotify:
- 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
@ -464,7 +464,7 @@ test-lisp-term-inotify:
- 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
@ -481,7 +481,7 @@ test-lisp-textmodes-inotify:
- 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
@ -498,7 +498,7 @@ test-lisp-url-inotify:
- 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
@ -515,7 +515,7 @@ test-lisp-use-package-inotify:
- 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
@ -532,7 +532,7 @@ test-lisp-vc-inotify:
- 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
@ -549,7 +549,7 @@ test-misc-inotify:
- 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
@ -570,7 +570,7 @@ test-src-inotify:
- 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:
@ -585,5 +585,6 @@ test-src-inotify:
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