# vim ft=yaml
# travis-ci.org definition

sudo: false
dist: trusty

git:
  depth: 2

language: cpp
os:
  - linux
  - osx
osx_image: xcode9.1
compiler:
  - gcc
  - clang

cache:
  timeout: 300
  apt: true
  ccache: true
  directories:
    - /usr/local/Cellar # Fails do to permission error: https://github.com/travis-ci/travis-ci/issues/8092

env:
  matrix:
    - CC_VERSION=5 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
    - CC_VERSION=5 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=archive,optimizer_unfixed_bugs,parts,sys_vars,unit,vcol,innodb,innodb_gis,innodb_zip,innodb_fts
    - CC_VERSION=5 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=rpl
    - CC_VERSION=6 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=binlog,binlog_encryption,encryption
    - CC_VERSION=6 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=rocksdb
    - CC_VERSION=6 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=csv,federated,funcs_1,funcs_2,gcol,handler,heap,json,maria,perfschema,plugins,multi_source,roles

matrix:
  exclude:
    - os: osx
      compiler: gcc
  include:
    - os: linux
      compiler: gcc
      env:
        - DebPackages
      addons:
        apt:
          packages: # make sure these match debian/control contents
            - bison
            - chrpath
            - cmake
            - debhelper
            - dh-apparmor
            - dpatch
            - gdb
            - libaio-dev
            - libboost-dev
            - libcurl3-dev
            - libdbd-mysql
            - libjudy-dev
            - libncurses5-dev
            - libpam0g-dev
            - libpcre3-dev
            - libreadline-gplv2-dev
            - libstemmer-dev
            - libssl-dev
            - libnuma-dev
            - libxml2-dev
            - lsb-release
            - perl
            - po-debconf
            - psmisc
            - zlib1g-dev
            - libcrack2-dev
            - cracklib-runtime
            - libjemalloc-dev
            - libsnappy-dev
            - liblzma-dev
            - libzmq-dev
            - libdistro-info-perl
            - uuid-dev
            - devscripts
            - fakeroot
      script:
        - ${CC} --version ; ${CXX} --version
      # https://github.com/travis-ci/travis-ci/issues/7062 - /run/shm isn't writable or executable
      # in trusty containers
        - export MTR_MEM=/tmp
        - env DEB_BUILD_OPTIONS="parallel=4" debian/autobake-deb.sh;
        - ccache --show-stats
  # Until OSX becomes a bit more stable: MDEV-12435 MDEV-16213
  allow_failures:
    - os: osx
      compiler: clang
      env: CC_VERSION=5 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=rpl
    - os: osx
      compiler: clang
      env: CC_VERSION=5 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
    - os: osx
      compiler: clang
      env: CC_VERSION=5 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=archive,optimizer_unfixed_bugs,parts,sys_vars,unit,vcol,innodb,innodb_gis,innodb_zip,innodb_fts
    - os: osx
      compiler: clang
      env: CC_VERSION=6 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=binlog,binlog_encryption,encryption
    - os: osx
      compiler: clang
      env: CC_VERSION=6 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=rocksdb
    - os: osx
      compiler: clang
      env: CC_VERSION=6 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=csv,federated,funcs_1,funcs_2,gcol,handler,heap,json,maria,perfschema,plugins,multi_source,roles

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
      - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main'
      - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-6.0 main'
    packages: # make sure these include all compilers and all build dependencies (see list above)
      - gcc-5
      - g++-5
      - gcc-6
      - g++-6
      - clang-5.0
      - llvm-5.0-dev
      - clang-6.0
      - llvm-6.0-dev
      - bison
      - chrpath
      - cmake
      - gdb
      - libaio-dev
      - libboost-dev
      - libcurl3-dev
      - libdbd-mysql
      - libjudy-dev
      - libncurses5-dev
      - libpam0g-dev
      - libpcre3-dev
      - libreadline-gplv2-dev
      - libstemmer-dev
      - libssl-dev
      - libnuma-dev
      - libxml2-dev
      - lsb-release
      - perl
      - psmisc
      - zlib1g-dev
      - libcrack2-dev
      - cracklib-runtime
      - libjemalloc-dev
      - libsnappy-dev
      - liblzma-dev
      - libzmq-dev
      - uuid-dev

# libsystemd-daemon-dev # https://github.com/travis-ci/apt-package-whitelist/issues/3882

before_install:
  - if [[ "${TRAVIS_OS_NAME}" == 'osx' ]]; then
      brew update;
      brew install gnutls lz4 lzo xz snappy ccache jemalloc curl ossp-uuid pcre;
      brew link ccache;
    fi

before_script:
  - df -h
  - ccache --version
  - ccache --show-stats

script:
# following modules are disabled after sourcing .travis.compiler.sh:
# clang disabled: mroonga just generates too many warnings with clang and travis stops the job
# cland disabled: tokudb has fatal warnings
# gcc/rpl: tokudb and mroonga
  - source .travis.compiler.sh
  - cmake .
           -DCMAKE_BUILD_TYPE=${TYPE}
           ${CMAKE_OPT}
           -DWITH_SSL=system -DWITH_ZLIB=system
  - make -j 4
  - cd mysql-test
  - travis_wait 30 ./mtr --force --max-test-fail=20 --parallel=4 --testcase-timeout=${TEST_CASE_TIMEOUT}
         --suite=${MYSQL_TEST_SUITES}
         --skip-test-list=unstable-tests
         --skip-test=binlog.binlog_unsafe
  - ccache --show-stats
  - df -h

notifications:
  irc:
    channels:
      - "chat.freenode.net#maria"
    on_success: never # [always|never|change]
    on_failure: never
    template:
      - "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"