From 5ae0c16732450603efc1a0c900e5f2721a0f620b Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Thu, 6 Apr 2023 16:31:49 +0200 Subject: [PATCH] Describe how to run Emba tests locally * admin/notes/emba: Describe how to run Emba tests locally. * test/infra/Dockerfile.emba (emacs-eglot): Adapt software selection. --- admin/notes/emba | 40 ++++++++++++++++++++++++++++++++++++++ test/infra/Dockerfile.emba | 17 ++++++++++------ 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/admin/notes/emba b/admin/notes/emba index 564cc3c54ac..c88b422a4fa 100644 --- a/admin/notes/emba +++ b/admin/notes/emba @@ -83,6 +83,46 @@ Lisp packages, Makefiles, scripts, and other software could determine whether they run on emba by checking for the environment variable EMACS_EMBA_CI. +* Running Emba tests locally + +As usual in GitLab, the tests run in containers, which could be +applied also locally. Unfortunately, the Emba container registry, +emba.gnu.org:5050, is not accessible publicly. Instead, the container +images must be build locally. Change the current directory to a +recent Emacs branch, and apply the command + + docker build --target emacs-inotify --tag emacs-inotify \ + -f test/infra/Dockerfile.emba . + +This creates the Debian-based image emacs-inotify, based on the +instructions in the file Dockerfile.emba. This image is good for the +majority of tests. However, there are also other image build +instructions like emacs-filenotify-gio, emacs-eglot, emacs-gnustep and +emacs-native-comp-speed{0,1,2}. Use the appropriate one. + +The image contains a directory "/checkout", which is a copy of your +local Emacs git repository. Emacs has been built in this directory +via "make bootstrap". In order to use the image, start a container +like + + docker run --interactive --env EMACS_EMBA_CI=1 --name emacs-inotify \ + emacs-inotify /bin/sh -i + +In this container, change the current directory to "/checkout". Now +you can apply all commands known for Emacs, like + + cd /checkout + make -C test files-tests.log + +While this container runs, you can also access its filesystem from +your local Emacs via Tramp. For example, in order to see the result +of the above test run, open the log file in your local Emacs with + + C-x C-f /docker:emacs-inotify:/checkout/test/lisp/files-tests.log + +Note: On local Red Hat-based systems, use "podman" instead of "docker" +in the shell commands and Tramp file names. + This file is part of GNU Emacs. diff --git a/test/infra/Dockerfile.emba b/test/infra/Dockerfile.emba index d7b0b0d3ded..0c4a2e414bf 100644 --- a/test/infra/Dockerfile.emba +++ b/test/infra/Dockerfile.emba @@ -60,17 +60,22 @@ RUN ./autogen.sh autoconf RUN ./configure --with-file-notification=gfile RUN make bootstrap -FROM emacs-base as emacs-eglot +# Debian bullseye doesn't provide proper packages. So we use Debian +# sid for this. +FROM debian:sid as emacs-eglot +# This corresponds to emacs-base. RUN apt-get update && \ apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \ - wget lsb-release software-properties-common gpg \ + libc-dev gcc g++ make autoconf automake libncurses-dev gnutls-dev \ + libdbus-1-dev libacl1-dev acl git texinfo gdb \ && rm -rf /var/lib/apt/lists/* -# A recent clangd. It must be at least clangd 14, which is in Debian -# bookworm. -RUN bash -c "$(wget --no-check-certificate -O - https://apt.llvm.org/llvm.sh)" -RUN ln -s /usr/bin/clangd-15 /usr/bin/clangd +# Some language servers. +RUN apt-get update && \ + apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \ + clangd python3-pylsp python3-autopep8 python3-yapf \ + && rm -rf /var/lib/apt/lists/* COPY . /checkout WORKDIR /checkout -- 2.39.2