HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: //usr/local/rvm/src/ruby-2.6.8/.travis.yml
# 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

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:
    update: true
    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'

.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
    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

  - &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_image: xcode10.1
    <<: *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"
      # Disabling -j3 because it seems to cause a hang on building Ruby: https://travis-ci.org/ruby/ruby/jobs/471021727
      - JOBS=

  - &x86_64-darwin18
    name: x86_64-darwin18
    osx_image: xcode11
    <<: *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"
      # Disabling -j3 because it seems to cause a hang on building Ruby: https://travis-ci.org/ruby/ruby/jobs/471021727
      - JOBS=

  - &universal-darwin17
    name: uinversal.x86_64h-darwin17
    osx_image: xcode10.1
    <<: *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-darwin18
    - <<: *x86_64-linux
    - <<: *i686-linux
    - <<: *jemalloc
    - <<: *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
  - |-
    [ -d ~/.downloaded-cache ] ||
    mkdir ~/.downloaded-cache
  - ln -s ~/.downloaded-cache
  - "> config.status"
  - sed -f tool/prereq.status Makefile.in common.mk > Makefile
  - make -s $JOBS update-download
  - make -s $JOBS srcs
  - 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=$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 install
  - 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 30 $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
    - 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

# Local Variables:
# mode: YAML
# coding: utf-8-unix
# indent-tabs-mode: nil
# tab-width: 4
# fill-column: 79
# default-justification: full
# End: