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
Takashi Kokubun 3e54ff67e6
Test BASERUBY: Ruby 1.9.3 on Travis
We have no clear assertion or check of BASERUBY requirement.
I want to make the current situation more explicit.

I'm NOT saying we should support Ruby 1.9.3 here,
but I'm just checking the situation as per 05bc14d81a.

FYI, at this moment Ruby 1.8.7 did not work with this Travis config, like:
https://travis-ci.org/k0kubun/ruby/builds/538459100
2019-05-29 06:45:33 +09:00

469 lines
13 KiB
YAML

# -*- 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
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
- $HOME/.downloaded-cache
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=
- RUBY_PREFIX=/tmp/ruby-prefix
- GEMS_FOR_TEST='timezone tzinfo'
- UPDATE_UNICODE="UNICODE_FILES=. UNICODE_PROPERTY_FILES=. UNICODE_AUXILIARY_FILES=. UNICODE_EMOJI_FILES=."
.org.ruby-lang.ci.matrix-definitions:
- &cron-only
if: (type = cron) AND (branch = master) 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
- &clang-8
compiler: clang-8
addons:
apt:
config:
retries: true
update: true
sources:
- llvm-toolchain-xenial-8
packages:
- clang-8
- llvm-8-tools
- libffi-dev
- libgdbm-dev
- libgmp-dev
- libjemalloc-dev
- libncurses5-dev
- libncursesw5-dev
- libreadline6-dev
- libssl-dev
- libyaml-dev
- openssl
- valgrind
- zlib1g-dev
# --------
- &x86_64-linux
name: x86_64-linux
<<: *linux
- &jemalloc
name: --with-jemalloc
<<: *linux
<<: *cron-only
env:
- CONFIG_FLAG='--with-gmp --with-jemalloc --with-valgrind'
- &assertions
name: RUBY_DEBUG=1
<<: *linux
#<<: *cron-only
<<: *make-test-only
env:
- GEMS_FOR_TEST=
- cppflags='-DRUBY_DEBUG -DVM_CHECK_MODE=1 -DTRANSIENT_HEAP_CHECK_MODE -DRGENGC_CHECK_MODE -DENC_DEBUG'
- &VM_CHECK_MODE
name: VM_CHECK_MODE=3
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- GEMS_FOR_TEST=
- 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:
- GEMS_FOR_TEST=
- cppflags=-DOPT_THREADED_CODE=1
- &CALL_THREADED_CODE
name: CALL_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- GEMS_FOR_TEST=
- cppflags=-DOPT_THREADED_CODE=2
- &NO_THREADED_CODE
name: NO_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- GEMS_FOR_TEST=
- cppflags=-DOPT_THREADED_CODE=3
- &ASAN
name: -fsanitize=address
<<: *linux
#<<: *cron-only
<<: *make-test-only
<<: *clang-8
env:
- GEMS_FOR_TEST=
- ASAN_OPTIONS=detect_leaks=0
- cflags='-U_FORTIFY_SOURCE -march=native -fsanitize=address -fno-omit-frame-pointer -fPIC'
- debugflags=-ggdb3
- optflags=-O1
- LD=clang-8
- LDFLAGS='-fsanitize=address -fPIC'
- CONFIG_FLAG='--with-out-ext=openssl --without-gmp --without-jemalloc --without-valgrind'
- &MSAN
name: -fsanitize=memory
<<: *linux
#<<: *cron-only
<<: *make-test-only
<<: *clang-8
env:
- GEMS_FOR_TEST=
- cflags='-U_FORTIFY_SOURCE -fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -fPIC'
- optflags=-O1
- LD=clang-8
- LDFLAGS='-fsanitize=memory -fPIC'
- CONFIG_FLAG='--with-out-ext=openssl --without-gmp --without-jemalloc --without-valgrind'
- &UBSAN
name: -fsanitize=undefined
<<: *linux
#<<: *cron-only
<<: *make-test-only
<<: *clang-8
env:
- GEMS_FOR_TEST=
- cflags='-U_FORTIFY_SOURCE -fsanitize=undefined,integer,nullability -fno-sanitize=implicit-integer-sign-change,unsigned-integer-overflow'
- cppflags=-DUNALIGNED_WORD_ACCESS=0
- debugflags=-ggdb3
- optflags='-O1 -march=native'
- LD=clang-8
- LDFLAGS='-fsanitize=undefined,integer,nullability -fno-sanitize=implicit-integer-sign-change,unsigned-integer-overflow'
- &i686-linux
name: i686-linux
<<: *linux
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: -std=c99 -pedantic
<<: *linux
<<: *make-test-only
compiler: clang
env:
- GEMS_FOR_TEST=
- GCC_FLAGS='-std=c99 -Werror=pedantic -pedantic-errors'
- CONFIG_FLAG=
- JOBS=
- >-
warnflags='
-Wall
-Wextra
-Werror=deprecated-declarations
-Werror=division-by-zero
-Werror=extra-tokens
-Werror=implicit-function-declaration
-Werror=implicit-int
-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.4 # to ensure version guards are correctly added
<<: *linux
language: ruby
rvm: 2.4.6
addons:
apt:
packages:
before_install:
install:
before_script: chmod -R u+w spec/ruby
# -j randomly hangs.
script: ruby -C spec/ruby ../mspec/bin/mspec .
- &baseruby
name: "BASERUBY: Ruby 1.9.3"
<<: *linux
<<: *make-test-only
dist: trusty # xenial no longer has ruby-1.9.3
language: ruby
rvm: 1.9.3
- &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="--tty=no --excludes=\$(TESTSDIR)/excludes/_travis/osx --exclude test_gc_compact"
- TEST_ALL_ISOLATED_TESTS="../test/ruby/test_gc_compact.rb"
# Disabling -j3 because it seems to cause a hang on building Ruby: https://travis-ci.org/ruby/ruby/jobs/471021727
- JOBS=
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
- <<: *assertions
- <<: *VM_CHECK_MODE
- <<: *FIBER_USE_sjlj
- <<: *TOKEN_THREADED_CODE
- <<: *CALL_THREADED_CODE
- <<: *NO_THREADED_CODE
- <<: *rubyspec
- <<: *baseruby
allow_failures:
- name: -fsanitize=address
- name: -fsanitize=memory
- name: -fsanitize=undefined
fast_finish: true
before_script:
- date # Debugging "Permission defined" failure on darwin like https://travis-ci.org/ruby/ruby/jobs/508683759
- echo JOBS=${JOBS} SETARCH=${SETARCH}
- $SETARCH uname -a
- $SETARCH uname -r
- rm -fr .ext autom4te.cache
- echo $TERM
- |-
[ -d ~/.downloaded-cache ] ||
mkdir ~/.downloaded-cache
- ln -s ~/.downloaded-cache
- "> config.status"
- "> .rbconfig.time"
- sed -f tool/prereq.status Makefile.in common.mk > Makefile
- make touch-unicode-files
- make -s $JOBS $UPDATE_UNICODE up
- make -s $JOBS srcs
- rm -f 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=$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 -rf ~/config_2nd
- mv ../config_2nd ~
- chmod u-w ..
- $SETARCH make -s $JOBS
- |-
date; : # Debugging "Permission defined" failure on darwin like https://travis-ci.org/ruby/ruby/jobs/508683759
if ! make install; then
if [ "$(uname)" = Darwin ]; then
# Debugging "Permission defined" failure on darwin like https://travis-ci.org/ruby/ruby/jobs/508683759
set -x
date
./miniruby -e 'ARGV.map{[@1,File.stat(@1)]}.sort_by{@2.mtime}.each{p mtime:@2.mtime.to_f, ctime:@2.ctime.to_f, path:@1}' .ext/.timestamp/.RUBYCOMMONDIR*time .ext/common/bigdecimal/*.rb ../ext/bigdecimal/lib/bigdecimal/*.rb . .. .ext .ext/common .ext/common/bigdecimal ext/bigdecimal ../ext ../ext/bigdecimal ../ext/bigdecimal/lib ../ext/bigdecimal/lib/bigdecimal
make COPY='cp -f' install
else
exit 1
fi
fi
- ccache --show-stats
- |-
[ -z "${GEMS_FOR_TEST}" ] ||
$RUBY_PREFIX/bin/gem install --no-document $GEMS_FOR_TEST
script:
- $SETARCH make -s test TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}"
- travis_wait 40 $SETARCH make -s test-all -o exts TESTOPTS="${TEST_ALL_OPTS=$TESTOPTS}" RUBYOPT="-w"
- |-
if [ -n "${TEST_ALL_ISOLATED_TESTS}" ]; then
$SETARCH make -s test-all -o exts TESTS="$TEST_ALL_ISOLATED_TESTS" RUBYOPT="-w"
fi
- $SETARCH make -s test-spec MSPECOPT=-ff # not using `-j` because sometimes `mspec -j` silently dies
- $SETARCH make -s leaked-globals
# Branch matrix. Not all branches are Travis-ready so we limit branches here.
branches:
only:
# Because default branch is still "trunk", we build only "trunk" to avoid
# doubly building on master and trigger CI on Pull Request.
- trunk # TODO: s/master/trunk/ when the default branch is switched to master on 7/1.
- ruby_2_4
- ruby_2_5
- ruby_2_6
- /^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