# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
# URL: https://emba.gnu.org/emacs/emacs
-# Never run merge request pipelines, they usually duplicate push pipelines
-# see https://docs.gitlab.com/ee/ci/yaml/README.html#common-if-clauses-for-rules
-workflow:
- rules:
- - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- when: never
- - when: always
-
-variables:
- GIT_STRATEGY: fetch
- EMACS_EMBA_CI: 1
-
-default:
- image: docker:19.03.12
- timeout: 3 hours
- before_script:
- - docker info
-
-.job-template:
- # these will be cached across builds
- cache:
- key: ${CI_COMMIT_REF_SLUG}
- paths: []
- policy: pull-push
- # these will be saved for followup builds
- artifacts:
- expire_in: 24 hrs
- paths: []
- # - "test/**/*.log"
- # - "**/*.log"
-
-.test-template:
- rules:
- - changes:
- - "**/Makefile.in"
- - .gitlab-ci.yml
- - aclocal.m4
- - autogen.sh
- - configure.ac
- - lib/*.{h,c}
- - lisp/**/*.el
- - src/*.{h,c}
- - test/infra/*
- - test/lisp/**/*.el
- - test/src/*.el
- - changes:
- # gfilemonitor, kqueue
- - src/gfilenotify.c
- - src/kqueue.c
- # MS Windows
- - "**/w32*"
- # GNUstep
- - lisp/term/ns-win.el
- - src/ns*.{h,m}
- - src/macfont.{h,m}
- when: never
-
- # using the variables for each job
- script:
- - docker build --target ${target} -t ${target}:${CI_COMMIT_REF_SLUG} -t ${target}:${CI_COMMIT_SHA} -f test/infra/Dockerfile.emba .
- # TODO: with make -j4 several of the tests were failing, for example shadowfile-tests, but passed without it
- - docker run -i --rm -e EMACS_EMBA_CI=${EMACS_EMBA_CI} ${target}:${CI_COMMIT_SHA} make ${make_params}
-
-stages:
- - fast
- - normal
- - slow
-
-test-fast:
- stage: fast
- extends: [.job-template, .test-template]
- variables:
- target: emacs-inotify
- make_params: "-C test check"
-
-test-lisp:
- stage: normal
- extends: [.job-template, .test-template]
- variables:
- target: emacs-inotify
- make_params: "-C test check-lisp"
-
-test-net:
- stage: normal
- extends: [.job-template, .test-template]
- variables:
- target: emacs-inotify
- make_params: "-C test check-net"
-
-test-filenotify-gio:
- # This tests file monitor libraries gfilemonitor and gio.
- stage: normal
- extends: [.job-template, .test-template]
- rules:
- - if: '$CI_PIPELINE_SOURCE == "schedule"'
- changes:
- - "**/Makefile.in"
- - .gitlab-ci.yml
- - lisp/autorevert.el
- - lisp/filenotify.el
- - lisp/net/tramp-sh.el
- - src/gfilenotify.c
- - test/infra/*
- - test/lisp/autorevert-tests.el
- - test/lisp/filenotify-tests.el
- variables:
- target: emacs-filenotify-gio
- make_params: "-k -C test autorevert-tests filenotify-tests"
-
-test-native-bootstrap-speed0:
- # Test a full native bootstrap
- # Run for now only speed 0 to limit memory usage and compilation time.
- stage: slow
- # Uncomment the following to run it only when sceduled.
- # only:
- # - schedules
- script:
- - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
- - ./autogen.sh autoconf
- - ./configure --without-makeinfo --with-nativecomp
- - make bootstrap NATIVE_FULL_AOT=1 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 0)"' -j2
- timeout: 8 hours
-
-test-native-bootstrap-speed1:
- stage: slow
- script:
- - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
- - ./autogen.sh autoconf
- - ./configure --without-makeinfo --with-nativecomp
- - make bootstrap BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
- timeout: 8 hours
-
-test-native-bootstrap-speed2:
- stage: slow
- script:
- - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
- - ./autogen.sh autoconf
- - ./configure --without-makeinfo --with-nativecomp
- - make bootstrap
- timeout: 8 hours
-
-test-gnustep:
- # This tests the GNUstep build process
- stage: normal
- extends: [.job-template, .test-template]
- rules:
- - if: '$CI_PIPELINE_SOURCE == "schedule"'
- changes:
- - "**/Makefile.in"
- - .gitlab-ci.yml
- - configure.ac
- - src/ns*.{h,m}
- - src/macfont.{h,m}
- - lisp/term/ns-win.el
- - nextstep/**/*
- - test/infra/*
- variables:
- target: emacs-gnustep
- make_params: install
-
-test-all:
- # This tests also file monitor libraries inotify and inotifywatch.
- stage: slow
- extends: [.job-template, .test-template]
- rules:
- # note there's no "changes" section, so this always runs on a schedule
- - if: '$CI_PIPELINE_SOURCE == "schedule"'
- variables:
- target: emacs-inotify
- make_params: check-expensive
# Just load from test/infra, to keep build automation files there.
include: '/test/infra/gitlab-ci.yml'
target: emacs-filenotify-gio
make_params: "-k -C test autorevert-tests.log filenotify-tests.log"
+test-native-bootstrap-speed0:
+ # Test a full native bootstrap
+ # Run for now only speed 0 to limit memory usage and compilation time.
+ stage: slow
+ # Uncomment the following to run it only when sceduled.
+ # only:
+ # - schedules
+ script:
+ - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
+ - ./autogen.sh autoconf
+ - ./configure --without-makeinfo --with-nativecomp
+ - make bootstrap NATIVE_FULL_AOT=1 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 0)"' -j2
+ timeout: 8 hours
+
+test-native-bootstrap-speed1:
+ stage: slow
+ script:
+ - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
+ - ./autogen.sh autoconf
+ - ./configure --without-makeinfo --with-nativecomp
+ - make bootstrap BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
+ timeout: 8 hours
+
+test-native-bootstrap-speed2:
+ stage: slow
+ script:
+ - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
+ - ./autogen.sh autoconf
+ - ./configure --without-makeinfo --with-nativecomp
+ - make bootstrap
+ timeout: 8 hours
+
test-gnustep:
# This tests the GNUstep build process
stage: platforms