diff --git a/test/infra/Dockerfile.emba b/test/infra/Dockerfile.emba index 233e210fc74..9091d60e8c8 100644 --- a/test/infra/Dockerfile.emba +++ b/test/infra/Dockerfile.emba @@ -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 . + +# 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` diff --git a/test/infra/Makefile.in b/test/infra/Makefile.in index 20fa9021abc..1d92a67f3aa 100644 --- a/test/infra/Makefile.in +++ b/test/infra/Makefile.in @@ -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)))) diff --git a/test/infra/gitlab-ci.yml b/test/infra/gitlab-ci.yml index d262218e276..1b383e3b52c 100644 --- a/test/infra/gitlab-ci.yml +++ b/test/infra/gitlab-ci.yml @@ -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]*:" diff --git a/test/infra/test-jobs.yml b/test/infra/test-jobs.yml index 095964ee4ed..d1d4f10e1cf 100644 --- a/test/infra/test-jobs.yml +++ b/test/infra/test-jobs.yml @@ -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