# Copyright (C) 2017-2020 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see .
# 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.
# Maintainer: Ted Zlatanov
# URL: https://emba.gnu.org/emacs/emacs
image: debian:stretch
variables:
GIT_STRATEGY: fetch
EMACS_EMBA_CI: 1
before_script:
- apt update -qq
- DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libc-dev gcc g++ make autoconf automake libncurses-dev gnutls-dev git
stages:
- test
# FIXME: Commented for this branch till is known to be broken.
# test-all:
# # This tests also file monitor libraries inotify and inotifywatch.
# stage: test
# only:
# changes:
# - "Makefile.in"
# - .gitlab-ci.yml
# - aclocal.m4
# - autogen.sh
# - configure.ac
# - lib/*.{h,c}
# - lisp/*.el
# - lisp/**/*.el
# - src/*.{h,c}
# - test/lisp/*.el
# - test/lisp/**/*.el
# - test/src/*.el
# except:
# changes:
# # gfilemonitor, kqueue
# - src/gfilenotify.c
# - src/kqueue.c
# # MS Windows
# - lisp/w32*.el
# - lisp/term/w32*.el
# - src/w32*.{h,c}
# # GNUstep
# - lisp/term/ns-win.el
# - src/ns*.{h,m}
# - src/macfont.{h,m}
# script:
# - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 inotify-tools
# - ./autogen.sh autoconf
# - ./configure --without-makeinfo
# - make bootstrap
# - make check-expensive
test-filenotify-gio:
stage: test
# This tests file monitor libraries gfilemonitor and gio.
## Commented to keep stock bootstrap tested.
# only:
# changes:
# - .gitlab-ci.yml
# - lisp/autorevert.el
# - lisp/filenotify.el
# - lisp/net/tramp-sh.el
# - src/gfilenotify.c
# - test/lisp/autorevert-tests.el
# - test/lisp/filenotify-tests.el
script:
- DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libglib2.0-dev libglib2.0-bin libglib2.0-0
- ./autogen.sh autoconf
- ./configure --without-makeinfo --with-file-notification=gfile
- make bootstrap
- make -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: test
# 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: test
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: test
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:
stage: test
# This tests the GNUstep build process
only:
changes:
- .gitlab-ci.yml
- configure.ac
- src/ns*.{h,m}
- src/macfont.{h,m}
- lisp/term/ns-win.el
- nextstep/**/*
script:
- DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 gnustep-devel
- ./autogen.sh autoconf
- ./configure --without-makeinfo --with-ns
- make bootstrap
- make install