# 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.
+# Docker or any other particular tool.
-# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
+# Author: Ted Zlatanov <tzz@lifelogs.com>
+# Maintainer: Michael Albinus <michael.albinus@gmx.de>
# URL: https://emba.gnu.org/emacs/emacs
FROM debian:bookworm as emacs-base
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 recommended versions are generated by 'treesit-admin-verify-major-mode-queries'
-# at the beginning of every ts-mode file. Loading a ts-mode file adds its
-# grammar source to 'treesit-language-source-alist'.
+# The recommended versions are generated by
+# 'treesit-admin-verify-major-mode-queries' at the beginning of every
+# ts-mode file. Loading a ts-mode file adds its grammar source to
+# 'treesit-language-source-alist'.
RUN src/emacs -Q --batch \
--eval '(message "library ABI min version %d max version %d" \
(treesit-library-abi-version t) (treesit-library-abi-version))' \
--eval '(message "\ntreesit-language-source-alist")' \
--eval '(message "=============================")' \
--eval '(message "%s" (pp-to-string treesit-language-source-alist))' \
- --eval '(message "ABI versions\n===========")' \
+ --eval '(message "ABI versions\n============")' \
--eval \
'(dolist (lang (sort (mapcar (quote car) treesit-language-source-alist))) \
(message "%s ABI version %d" lang (treesit-language-abi-version lang)))' \
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)"'
+RUN make -j `nproc` bootstrap \
+ BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
FROM emacs-native-comp as emacs-native-comp-speed2
# GNU Emacs support for the GitLab protocol for CI.
# The presence of this file does not imply any FSF/GNU endorsement of
-# any particular service that uses that protocol. Also, it is intended for
-# evaluation purposes, thus possibly temporary.
+# any particular service that uses that protocol.
-# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
+# Author: Ted Zlatanov <tzz@lifelogs.com>
+# Maintainer: Michael Albinus <michael.albinus@gmx.de>
# URL: https://emba.gnu.org/emacs/emacs
# Never run merge request pipelines, they usually duplicate push pipelines
before_script:
- docker info
- echo "docker registry is ${CI_REGISTRY}"
- - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
+ - 'docker login
+ -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}'
.job-template:
variables:
-e http_proxy=${http_proxy}
-e https_proxy=${https_proxy}
-e no_proxy=${no_proxy}
- --volumes-from $(docker ps -q -f "label=com.gitlab.gitlab-runner.job.id=${CI_JOB_ID}"):ro
+ --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
after_script:
# - docker ps -a
# - pwd; printenv
- # - test -n "$(docker ps -aq -f name=${test_name})" && ( docker export ${test_name} | tar -tvf - )
# Prepare test artifacts.
- - test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/test ${test_name}
- - test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/configure.log ${test_name} || true
- - test -n "$(docker ps -aq -f name=${test_name})" && docker rm ${test_name}
- - find ${test_name} ! \( -name "*.log" -o -name ${EMACS_TEST_JUNIT_REPORT} -o -name compatibility-report.html \) -type f -delete
+ - 'test -n "$(docker ps -aq -f name=${test_name})" &&
+ docker cp ${test_name}:checkout/test ${test_name}'
+ - 'test -n "$(docker ps -aq -f name=${test_name})" &&
+ docker cp ${test_name}:checkout/configure.log ${test_name} || true'
+ - 'test -n "$(docker ps -aq -f name=${test_name})" &&
+ docker cp ${test_name}:checkout/compatibility-report.html ${test_name} ||
+ true'
+ - 'test -n "$(docker ps -aq -f name=${test_name})" && docker rm ${test_name}'
+ - 'find ${test_name}
+ ! \( -name "*.log" -o -name ${EMACS_TEST_JUNIT_REPORT} -o
+ -name compatibility-report.html \) -type f -delete'
# BusyBox find does not know -empty.
- - find ${test_name} -type d -depth -exec rmdir {} + 2>/dev/null
+ - 'find ${test_name} -type d -depth -exec rmdir {} + 2>/dev/null'
.build-template:
needs: []
- src/macfont.{h,m}
when: never
script:
- - docker build --pull --target ${target} -t ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} -f test/infra/Dockerfile.emba .
- - docker push ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
+ - 'docker build --pull --target ${target}
+ -t ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
+ -f test/infra/Dockerfile.emba .'
+ - 'docker push ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}'
.test-template:
cache:
# This is needed in order to get a JUnit test report.
make_params: >-
check-expensive
- TEST_HOME=/root
- LOGFILES="lisp/autorevert-tests.log lisp/filenotify-tests.log"
+ TEST_HOME=/root
+ LOGFILES="lisp/autorevert-tests.log lisp/filenotify-tests.log"
build-image-eglot:
stage: platform-images
target: emacs-eglot
# This is needed in order to get a JUnit test report.
make_params: >-
- check-expensive
- TEST_HOME=/root LOGFILES="lisp/progmodes/eglot-tests.log"
- # EMACS_EXTRAOPT="--eval \(use-package\ company\ :ensure\ t\)
- # --eval \(use-package\ yasnippet\ :ensure\ t\)"
+ check-expensive TEST_HOME=/root LOGFILES="lisp/progmodes/eglot-tests.log"
+
+ # EMACS_EXTRAOPT="--eval \(use-package\ company\ :ensure\ t\)
+ # --eval \(use-package\ yasnippet\ :ensure\ t\)"
build-image-tree-sitter:
stage: platform-images
test-tree-sitter:
stage: platforms
- extends: [.job-template, .test-template, .tree-sitter-template, .tree-sitter-files]
+ extends: >-
+ [.job-template, .test-template, .tree-sitter-template, .tree-sitter-files]
needs:
- job: build-image-tree-sitter
optional: true