From: Andrea Corallo Date: Sat, 16 Jan 2021 12:26:10 +0000 (+0100) Subject: Merge remote-tracking branch 'savannah/master' into native-comp X-Git-Tag: emacs-28.0.90~2727^2~168 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0a7ac0b5504e75275699a3d8d2d5d94bcfda8708;p=emacs.git Merge remote-tracking branch 'savannah/master' into native-comp --- 0a7ac0b5504e75275699a3d8d2d5d94bcfda8708 diff --cc .gitlab-ci.yml index bd012bf395f,eb884767c95..1be92cff161 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@@ -30,115 -36,129 +36,161 @@@ 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 + default: + image: docker:19.03.12 + timeout: 3 hours + before_script: + - docker info - stages: - - test + .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-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} + .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: - - 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 + - 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: - stage: test # This tests file monitor libraries gfilemonitor and gio. - 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 -k -C test autorevert-tests filenotify-tests + 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: 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 + 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 diff --cc configure.ac index 2a4a373371c,bea28338090..1bff666ad50 --- a/configure.ac +++ b/configure.ac @@@ -5783,12 -5677,14 +5789,14 @@@ Configured for '${canonical}' Where do we find X Windows header files? ${x_includes:-$emacs_standard_dirs} Where do we find X Windows libraries? ${x_libraries:-$emacs_standard_dirs}"]) + #### Please respect alphabetical ordering when making additions. optsep= emacs_config_features= - for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND GPM DBUS \ - GCONF GSETTINGS GLIB NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT \ - LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS X_TOOLKIT OLDXMENU X11 XDBE XIM \ - NS MODULES NATIVE_COMP THREADS XWIDGETS LIBSYSTEMD JSON PDUMPER UNEXEC LCMS2 GMP; do + for opt in ACL CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTINGS \ + HARFBUZZ IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 \ - M17N_FLT MODULES NOTIFY NS OLDXMENU PDUMPER PNG RSVG SOUND THREADS TIFF \ - TOOLKIT_SCROLL_BARS UNEXEC X11 XAW3D XDBE XFT XIM XPM XWIDGETS X_TOOLKIT \ - ZLIB; do ++ M17N_FLT MODULES NATIVE_COMP NOTIFY NS OLDXMENU PDUMPER PNG RSVG SOUND \ ++ THREADS TIFF TOOLKIT_SCROLL_BARS UNEXEC X11 XAW3D XDBE XFT XIM XPM XWIDGETS \ ++ X_TOOLKIT ZLIB; do case $opt in PDUMPER) val=${with_pdumper} ;;