mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
235 lines
7.7 KiB
YAML
235 lines
7.7 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.
|
|
|
|
# We only manage non-amd64 free pipelines.
|
|
# https://docs.travis-ci.com/user/billing-overview/
|
|
|
|
language: c
|
|
|
|
os: linux
|
|
|
|
if: commit_message !~ /\[DOC\]/
|
|
|
|
dist: focal
|
|
|
|
git:
|
|
quiet: true
|
|
|
|
cache:
|
|
ccache: true
|
|
directories:
|
|
- $HOME/config_2nd
|
|
- $HOME/.downloaded-cache
|
|
|
|
env:
|
|
global:
|
|
# The tests skipped in `make test-all`.
|
|
- TEST_ALL_SKIPPED_TESTS=
|
|
# The tests executed separately by `make test-all`.
|
|
- TEST_ALL_SEPARATED_TESTS=
|
|
# 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'
|
|
# 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
|
|
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'
|
|
# The "TestReadline#test_interrupt_in_other_thread" started failing on arm32
|
|
# from https://www.travis-ci.com/github/ruby/ruby/jobs/529005145
|
|
- TEST_ALL_SKIPPED_TESTS=test_interrupt_in_other_thread
|
|
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
|
|
libncurses-dev:armhf
|
|
libncursesw5-dev:armhf
|
|
libreadline-dev:armhf
|
|
libssl-dev:armhf
|
|
libyaml-dev:armhf
|
|
linux-libc-dev:armhf
|
|
zlib1g-dev:armhf
|
|
|
|
matrix:
|
|
include:
|
|
# Build every commit (Allowed Failures):
|
|
- <<: *arm32-linux
|
|
# Comment out as the 2nd arm64 pipeline is unstable.
|
|
# - <<: *arm64-linux
|
|
- <<: *ppc64le-linux
|
|
- <<: *s390x-linux
|
|
allow_failures:
|
|
# We see multiple errors indicating errors on the Travis environment itself in a short while:
|
|
# https://app.travis-ci.com/github/ruby/ruby/jobs/544382885
|
|
# https://app.travis-ci.com/github/ruby/ruby/jobs/544361370
|
|
# It's not a fault of Ruby's arm32 support but just Travis arm32 seems unsable.
|
|
- name: arm32-linux
|
|
# - name: arm64-linux
|
|
# We see "Some worker was crashed." in about 40% of recent ppc64le-linux jobs
|
|
# e.g. https://app.travis-ci.com/github/ruby/ruby/jobs/530959548
|
|
- name: ppc64le-linux
|
|
# Tentatively disable, because often hungs up **after** all tests
|
|
# have finished successfully and saving caches.
|
|
- 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 gems/src
|
|
- chmod -R a-w .
|
|
- chmod -R u+w build config_1st config_2nd gems/src
|
|
- 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 [ -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:
|
|
- jaruga@ruby-lang.org
|