1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/.travis.yml
nobu 186ff0eb3e .travis.yml: avoid bashism
GCC_FLAGS is not an array and CC is finally passed to configure as
single string.  Pass CC via the environment variable, so it does
not need to be quoted anymore.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-27 08:39:40 +00:00

400 lines
10 KiB
YAML

# Copyright (C) 2011 Urabe, Shyouhei. All rights reserved.
#
# This file is a part of the programming language Ruby. Permission is hereby
# granted, to either redistribute or modify this file, provided that the
# conditions mentioned in the file COPYING are met. Consult the file for
# details.
# This is a Travis-CI build configuration file. The list of configurations
# available is located in
#
# http://about.travis-ci.org/docs/user/build-configuration/
#
# and as Ruby itself is a project written in C language,
#
# http://about.travis-ci.org/docs/user/languages/c/
#
# is also a good place to look at.
language: c
dist: xenial
osx_image: xcode10.1
sudo: false
git:
quiet: true
addons:
apt:
config:
retries: true
update: true
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-8
- libffi-dev
- libgdbm-dev
- libgmp-dev
- libjemalloc-dev
- libncurses5-dev
- libncursesw5-dev
- libreadline6-dev
- libssl-dev
- libyaml-dev
- openssl
- valgrind
- zlib1g-dev
homebrew:
packages:
- gdbm
- gmp
- libffi
- openssl@1.1
- zlib
- ccache
cache:
ccache: true
directories:
- "$HOME/config_2nd"
env:
global:
- "CONFIGURE_TTY=no"
- "CCACHE_COMPILERCHECK=none"
- "CCACHE_NOCOMPRESS=1"
- "CCACHE_MAXSIZE=512Mi"
- >-
NPROC="`case ${TRAVIS_OS_NAME} in
osx) sysctl -n hw.activecpu ;;
linux) nproc ;;
esac`"
# JOBS and SETARCH are overridden when necessary; see below.
- "JOBS=-j$((1+${NPROC}))"
- "SETARCH="
.org.ruby-lang.ci.matrix-definitions:
- &cron-only
if: (type = cron) AND (branch = trunk) AND (fork = false)
- &make-test-only
script:
- "$SETARCH make -s test TESTOPTS=\"${TESTOPTS=$JOBS -q --tty=no}\""
- &linux
os: linux
compiler: gcc-8
- &osx
os: osx
compiler: clang
before_install:
- /usr/local/opt/openssl@1.1/bin/openssl version
# --------
- &x86_64-linux
name: x86_64-linux
<<: *linux
- &jemalloc
name: --with-jemalloc
<<: *linux
<<: *cron-only
env:
- "CONFIG_FLAG='--with-gmp --with-jemalloc --with-valgrind'"
- &VM_CHECK_MODE
name: VM_CHECK_MODE=3
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- "cppflags=-DVM_CHECK_MODE=0x0003"
- &FIBER_USE_sjlj
name: FIBER_USE_NATIVE=0
<<: *linux
<<: *cron-only
env:
- "cppflags=-DFIBER_USE_NATIVE=0"
- &TOKEN_THREADED_CODE
name: TOKEN_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- "cppflags=-DOPT_THREADED_CODE=1"
- &CALL_THREADED_CODE
name: CALL_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- "cppflags=-DOPT_THREADED_CODE=2"
- &NO_THREADED_CODE
name: NO_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- "cppflags=-DOPT_THREADED_CODE=3"
- &ASAN
name: -fsanitize=address
<<: *linux
#<<: *cron-only
<<: *make-test-only
compiler: clang
env:
- "ASAN_OPTIONS=detect_leaks=0"
- "cflags='-march=native -fsanitize=address -fno-omit-frame-pointer'"
- "debugflags=-ggdb3"
- "optflags='-O1'"
- "LD=clang"
- "LDFLAGS=-fsanitize=address"
- &MSAN
name: -fsanitize=memory
<<: *linux
#<<: *cron-only
<<: *make-test-only
compiler: clang
env:
- "cflags='-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer'"
- "optflags='-O1'"
- "LD=clang"
- "LDFLAGS=-fsanitize=memory"
- "CONFIG_FLAG=--with-out-ext=openssl"
- &UBSAN
name: -fsanitize=undefined
<<: *linux
#<<: *cron-only
<<: *make-test-only
compiler: clang
env:
- "cflags='-fsanitize=undefined,integer,nullability -fno-omit-frame-pointer'"
- "cppflags='-DUNALIGNED_WORD_ACCESS=0'"
- "debugflags='-ggdb3'"
- "optflags='-O1 -march=native'"
- "LD=clang"
- "LDFLAGS=-fsanitize=undefined,integer,nullability"
- &i686-linux
name: i686-linux
<<: *linux
sudo: required
env:
- "GCC_FLAGS=-m32"
- "debugflags='-g0'"
- "SETARCH='setarch i686 --verbose --3gb'"
addons:
apt:
config:
retries: true
update: true
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-8-multilib
- libffi-dev:i386
- libffi6:i386
- libgdbm-dev:i386
- libgdbm3:i386
- libncurses5-dev:i386
- libncurses5:i386
- libncursesw5-dev:i386
- libreadline6-dev:i386
- libreadline6:i386
- libssl-dev:i386
- libssl1.0.0:i386
- linux-libc-dev:i386
- zlib1g-dev:i386
- zlib1g:i386
- &pedanticism
name: "-ansi -pedantic"
<<: *linux
<<: *make-test-only
compiler: clang
env:
- "GCC_FLAGS='-ansi -Werror=pedantic -pedantic-errors -std=iso9899:1990'"
- "CONFIG_FLAG="
- "JOBS="
- >-
warnflags='
-Wall
-Wextra
-Werror=declaration-after-statement
-Werror=deprecated-declarations
-Werror=division-by-zero
-Werror=extra-tokens
-Werror=implicit-function-declaration
-Werror=implicit-int
-Werror=long-long
-Werror=pointer-arith
-Werror=shorten-64-to-32
-Werror=write-strings
-Wmissing-noreturn
-Wno-constant-logical-operand
-Wno-missing-field-initializers
-Wno-overlength-strings
-Wno-parentheses-equality
-Wno-self-assign
-Wno-tautological-compare
-Wno-unused-local-typedef
-Wno-unused-parameter
-Wunused-variable
'
- "LDFLAGS='-Wno-unused-command-line-argument'"
- &rubyspec
name: ruby/spec on Ruby 2.3 # to ensure version guards are correctly added
<<: *linux
language: ruby
rvm: 2.3.8
addons:
apt:
packages:
before_install:
install:
before_script: chmod -R u+w spec/ruby
# -j randomly hangs. Using -fs to make sure we can know problematic spec on failure.
script: ruby -C spec/ruby ../mspec/bin/mspec -fs .
- &x86_64-darwin17
name: x86_64-darwin17
<<: *osx
env:
- "CONFIG_FLAG='--with-opt-dir=/usr/local/opt/openssl@1.1:/usr/local/opt/zlib'"
- "TEST_ALL_OPTS=\"$JOBS -q --tty=no --excludes=\\$(TESTSDIR)/excludes/_travis/osx\""
- &universal-darwin17
name: uinversal.x86_64h-darwin17
<<: *osx
<<: *cron-only
<<: *make-test-only
env:
- "CONFIG_FLAG='--with-arch=x86_64h,x86_64,i386'"
- "TEST_ALL_OPTS=\"$JOBS -q --tty=no --excludes=\\$(TESTSDIR)/excludes/_travis/osx\""
matrix:
include:
# to reduce time for finishing all jobs, run the slowest osx build first.
- <<: *x86_64-darwin17
- <<: *x86_64-linux
- <<: *i686-linux
- <<: *jemalloc
- <<: *pedanticism
- <<: *ASAN
- <<: *MSAN
- <<: *UBSAN
- <<: *VM_CHECK_MODE
- <<: *FIBER_USE_sjlj
- <<: *TOKEN_THREADED_CODE
- <<: *CALL_THREADED_CODE
- <<: *NO_THREADED_CODE
- <<: *rubyspec
allow_failures:
- name: uinversal.x86_64h-darwin17
- name: -fsanitize=address
- name: -fsanitize=memory
- name: -fsanitize=undefined
fast_finish: true
before_script:
- "echo JOBS=${JOBS} SETARCH=${SETARCH}"
- "$SETARCH uname -a"
- "$SETARCH uname -r"
- "rm -fr .ext autom4te.cache"
- "echo $TERM"
- "> config.status"
- "sed -f tool/prereq.status Makefile.in common.mk > Makefile"
- "make update-config_files"
- "make touch-unicode-files"
- "make -s $JOBS srcs UNICODE_FILES=."
- "rm config.status Makefile rbconfig.rb .rbconfig.time"
- |-
if [ -d ~/config_2nd ]; then
cp -pr ~/config_2nd build
else
mkdir build
fi
- "mkdir config_1st config_2nd"
- "chmod -R a-w ."
- "chmod -R u+w build config_1st config_2nd"
- "cd build"
- "ccache --show-stats"
- |-
case "$CC" in
gcc*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-diagnostics-color";;
clang*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-color-diagnostics";;
esac
- "[ ! -f config.cache ] || [ \"$CC\" = \"`sed -n s/^ac_cv_prog_CC=//p config.cache`\" ] || (set -x; exec rm config.cache)"
- "$SETARCH ../configure -C --disable-install-doc --prefix=/tmp/ruby-prefix $CONFIG_FLAG"
- "cp -pr config.cache config.status .ext/include ../config_1st"
- "$SETARCH make reconfig"
- "cp -pr config.cache config.status .ext/include ../config_2nd"
- "(cd .. && exec diff -ru config_1st config_2nd)"
- "chmod u+w .."
- "rm -r ~/config_2nd"
- "mv ../config_2nd ~"
- "chmod u-w .."
- "$SETARCH make -s $JOBS && make install"
- "ccache --show-stats"
script:
- "$SETARCH make -s test TESTOPTS=\"${TESTOPTS=$JOBS -q --tty=no}\""
- "$SETARCH make -s test-all -o exts TESTOPTS=\"${TEST_ALL_OPTS=$TESTOPTS}\""
- "$SETARCH make -s test-spec MSPECOPT=-ff" # not using `-j` because sometimes `mspec -j` silently dies
# Branch matrix. Not all branches are Travis-ready so we limit branches here.
branches:
only:
- trunk
- ruby_2_3
- ruby_2_4
- ruby_2_5
- /^feature\//
- /^bug\//
- /^travis-/
# We want to be notified when something happens.
notifications:
irc:
channels:
- "chat.freenode.net#ruby-core"
- "chat.freenode.net#ruby-ja"
on_success: change # [always|never|change] # default: always
on_failure: always # [always|never|change] # default: always
template:
- "%{message} by @%{author}: See %{build_url}"
slack:
rooms:
- secure: i1GLETSKye85ea6dGNA3MxI/5myChmMFiZtBd5C69xK+s1sBFqEgOSbaSf9KHc0CYrHVyNhQMaZRruieV7xS+6Pfs0Zvxf1DO6QQTWC2KhkqwFDLvZncAzjoyASdR90hbr+iRPOngQ+HJuE94zemALAwEqNAinzA74PMiJXktqY= # ruby:<token>#commits
- secure: ah7UEHBvncXT7bM5mvYIQAO+tIyV/wl7nXLb7wQD16dO2v8Gragy0mWjB79Q09hrrMGmp6H9bCDpdGS80boIA5EHaHoG4QaP0i9bsSt8U2AMWgZtfyIgQKJ4H2kXkGlrjO+AXTgnIkP7LNjdgAVUUTGQPb26T3QmoN2Splt+fIQ= # ruby:<token>#alerts
on_pull_requests: false
on_success: change
on_failure: always
email:
- ko1c-failure@atdot.net
# Local Variables:
# mode: YAML
# coding: utf-8-unix
# indent-tabs-mode: nil
# tab-width: 4
# fill-column: 79
# default-justification: full
# End: