mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			236 lines
		
	
	
	
		
			7.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			236 lines
		
	
	
	
		
			7.8 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
 | 
						|
        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'
 | 
						|
      # 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
 | 
						|
        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
 | 
						|
    # 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
 | 
						|
  - 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 [ -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
 |