# 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 specification.
language: c
sudo: false

# Compilers.  Several  compilers are  provided in Travis,  so we try  them all.
# The value set here is visible via $CC environment variable.
compiler:
  - gcc

os:
  - linux

# Dependencies.  Some  header files are missing  in a Travis' worker  VM, so we
# have  to install  them.  The  "1.9.1" here  is OK.   It is  the  most adopted
# version string  for Debian/Ubuntu, and  no dependencies have been  changed so
# far since the 1.9.1 release.
before_install:
  - "CONFIG_FLAG="
  - "JOBS='-j 4'"

# Script is where the test runs.  Note  we just do "make test", not other tests
# like  test-all, test-rubyspec.   This is  because  they take  too much  time,
# enough for Travis to shut down the VM as being stalled.
before_script:
  - "uname -a"
  - "uname -r"
  - "rm -fr .ext autom4te.cache"
  - "echo $TERM"
  - "make -f common.mk BASERUBY=ruby MAKEDIRS='mkdir -p' srcdir=. update-config_files"
  - "autoconf"
  - "mkdir config_1st config_2nd"
  - "./configure -C --disable-install-doc --with-gcc=$CC $CONFIG_FLAG"
  - "cp -pr config.status .ext/include config_1st"
  - "make reconfig"
  - "cp -pr config.status .ext/include config_2nd"
  - "diff -ru config_1st config_2nd"
  - "make after-update BASERUBY=ruby"
  - "make -s $JOBS"
  - "make update-rubyspec"
script:
  - "make test TESTOPTS=--color=never"
  - "make test-all TESTOPTS='-q -j3 --color=never --job-status=normal'"
  - "make test-rubyspec MSPECOPT=-fm"

# Branch matrix.  Not all branches are Travis-ready so we limit branches here.
branches:
  only:
    - trunk
    - ruby_2_1
    - ruby_2_2
    - ruby_2_3
    - /^feature\//
    - /^bug\//

# We want to be notified when something happens.
notifications:
  irc:
    channels:
      - "irc.freenode.org#ruby-core"
      - "irc.freenode.org#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}"

  # Update ruby-head installed on Travis CI so other projects can test against it.
  webhooks:
    urls:
      - "https://rubies.travis-ci.org/rebuild/ruby-head"
    on_success: always
    on_failure: never

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