Permalink
Cannot retrieve contributors at this time
226 lines (205 sloc)
7.09 KB
# -*- 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. | |
# We only manage non-amd64 free pipelines. | |
# https://docs.travis-ci.com/user/billing-overview/ | |
language: c | |
os: linux | |
dist: focal | |
git: | |
quiet: true | |
cache: | |
ccache: true | |
directories: | |
- $HOME/config_2nd | |
- $HOME/.downloaded-cache | |
env: | |
global: | |
# Reset timestamps early | |
- _=$(touch NEWS && find . -type f -exec touch -r NEWS {} +) | |
- CONFIGURE_TTY=no | |
- CCACHE_COMPILERCHECK=none | |
- CCACHE_NOCOMPRESS=1 | |
- CCACHE_MAXSIZE=512Mi | |
- NPROC="`nproc`" | |
# JOBS and SETARCH are overridden when necessary; see below. | |
- JOBS=-j$((1+${NPROC})) | |
- SETARCH= | |
- RUBY_PREFIX=/tmp/ruby-prefix | |
- GEMS_FOR_TEST='timezone tzinfo' | |
# The tests skipped in `make test-all`. | |
- TEST_ALL_SKIPPED_TESTS= | |
# Run the separated tests with allowing failures. | |
- RUN_SEPARATED_TESTS=true | |
# The tests executed separately by `make test-all`. | |
- TEST_ALL_SEPARATED_TESTS= | |
# https://github.com/travis-ci/travis-build/blob/e411371dda21430a60f61b8f3f57943d2fe4d344/lib/travis/build/bash/travis_apt_get_options.bash#L7 | |
- travis_apt_get_options='--allow-downgrades --allow-remove-essential --allow-change-held-packages' | |
- travis_apt_get_options="-yq --no-install-suggests --no-install-recommends $travis_apt_get_options" | |
# -O1 is faster than -O3 in our tests. | |
- optflags=-O1 | |
# -g0 disables backtraces when SEGV. Do not set that. | |
- debugflags=-ggdb3 | |
.org.ruby-lang.ci.matrix-definitions: | |
- &gcc-10 | |
compiler: gcc-10 | |
before_install: | |
- tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq" | |
- >- | |
tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install | |
ccache | |
gcc-10 | |
g++-10 | |
libffi-dev | |
libgdbm-dev | |
libncurses-dev | |
libncursesw5-dev | |
libreadline-dev | |
libssl-dev | |
libyaml-dev | |
openssl | |
zlib1g-dev | |
# -------- | |
- &arm64-linux | |
name: arm64-linux | |
arch: arm64 | |
<<: *gcc-10 | |
- &ppc64le-linux | |
name: ppc64le-linux | |
arch: ppc64le | |
<<: *gcc-10 | |
- &s390x-linux | |
name: s390x-linux | |
arch: s390x | |
<<: *gcc-10 | |
- &arm32-linux | |
name: arm32-linux | |
arch: arm64 | |
# https://packages.ubuntu.com/focal/crossbuild-essential-armhf | |
compiler: arm-linux-gnueabihf-gcc | |
env: | |
- SETARCH='setarch linux32 --verbose --32bit' | |
before_install: | |
- sudo dpkg --add-architecture armhf | |
- tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq" | |
- >- | |
tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install | |
ccache | |
crossbuild-essential-armhf | |
libc6:armhf | |
libstdc++-10-dev:armhf | |
libffi-dev:armhf | |
libgdbm-dev:armhf | |
libncurses-dev:armhf | |
libncursesw5-dev:armhf | |
libreadline-dev:armhf | |
libssl-dev:armhf | |
linux-libc-dev:armhf | |
zlib1g-dev:armhf | |
matrix: | |
include: | |
# Build every commit (Allowed Failures): | |
- <<: *arm32-linux | |
- <<: *arm64-linux | |
- <<: *ppc64le-linux | |
- <<: *s390x-linux | |
allow_failures: | |
# An arm64 job sometimes does not start right now. | |
# https://travis-ci.community/t/11629 | |
- name: arm32-linux | |
- name: arm64-linux | |
# - name: ppc64le-linux | |
# - name: s390x-linux | |
fast_finish: true | |
before_script: | |
- . tool/ci_functions.sh | |
- |- | |
if [ -n "${TEST_ALL_SKIPPED_TESTS}" ]; then | |
TEST_ALL_OPTS="${TEST_ALL_OPTS} $(ci_to_excluded_test_opts "${TEST_ALL_SKIPPED_TESTS}")" | |
if [ -z "${TEST_ALL_SEPARATED_TESTS}" ]; then | |
TEST_ALL_SEPARATED_TESTS="${TEST_ALL_SKIPPED_TESTS}" | |
fi | |
fi | |
- |- | |
if [ -n "${TEST_ALL_SEPARATED_TESTS}" ]; then | |
TEST_ALL_OPTS_SEPARATED="$(ci_to_included_test_opts "${TEST_ALL_SEPARATED_TESTS}")" | |
fi | |
- echo TEST_ALL_OPTS="${TEST_ALL_OPTS}" TEST_ALL_OPTS_SEPARATED="${TEST_ALL_OPTS_SEPARATED}" | |
- rm -fr .ext autom4te.cache | |
- |- | |
[ -d ~/.downloaded-cache ] || | |
mkdir ~/.downloaded-cache | |
- ln -s ~/.downloaded-cache | |
- "> config.status" | |
- "> .rbconfig.time" | |
- sed -f tool/prereq.status template/Makefile.in common.mk > Makefile | |
- make -s $JOBS 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 | |
- |- | |
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 | |
- make -s install | |
- |- | |
[ -z "${GEMS_FOR_TEST}" ] || | |
$RUBY_PREFIX/bin/gem install --no-document $GEMS_FOR_TEST | |
- echo "raise 'do not load ~/.irbrc in test'" > ~/.irbrc | |
script: | |
- $SETARCH make -s test -o showflags TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}" | |
- ../tool/travis_wait.sh $SETARCH make -s test-all -o exts TESTOPTS="$JOBS -q --tty=no ${TEST_ALL_OPTS}" RUBYOPT="-w" | |
# Run the failing tests separately returning ok status to check if it works, | |
# visualize them. | |
- | | |
if [ "${RUN_SEPARATED_TESTS}" = true -a -n "${TEST_ALL_OPTS_SEPARATED}" ]; then | |
$SETARCH make -s test-all -o exts TESTOPTS="$JOBS -v --tty=no ${TEST_ALL_OPTS_SEPARATED}" RUBYOPT="-w" || : | |
fi | |
- $SETARCH make -s test-spec MSPECOPT=-ff # not using `-j` because sometimes `mspec -j` silently dies | |
- $SETARCH make -s -o showflags leaked-globals | |
# We enable Travis on the specific branches or forked repositories here. | |
if: (repo = ruby/ruby AND (branch = master OR branch =~ /^ruby_\d_\d$/)) OR repo != ruby/ruby | |
# We want to be notified when something happens. | |
notifications: | |
irc: | |
channels: | |
- "chat.freenode.net#ruby-core" | |
on_success: change # [always|never|change] # default: always | |
on_failure: always # [always|never|change] # default: always | |
template: | |
- "%{message} by @%{author}: See %{build_url}" | |
webhooks: | |
urls: | |
- secure: mRsoS/UbqDkKkW5p3AEqM27d4SZnV6Gsylo3bm8T/deltQzTsGzZwrm7OIBXZv0UFZdE68XmPlyHfZFLSP2V9QZ7apXMf9/vw0GtcSe1gchtnjpAPF6lYBn7nMCbVPPx9cS0dwL927fjdRM1vj7IKZ2bk4F0lAJ25R25S6teqdk= # ruby-lang slack: ruby/simpler-alerts-bot (travis) | |
on_success: never | |
on_failure: always | |
email: | |
- [email protected] |