language: cpp

os:
  - linux
  - osx
osx_image: xcode7

env:
  matrix:
    # Uncomment when Travis upgraded "Ubuntu 12.04 LTS" to a newer version whose repo will have a more up-to-date libtorrent package
    #- lt_branch=dist gui=true
    #- lt_branch=dist gui=false
    - lt_branch=RC_1_0 qt=5 gui=true
    - lt_branch=RC_1_0 qt=5 gui=false
    - lt_branch=RC_1_0 qt=4 gui=true
    - lt_branch=RC_1_0 qt=4 gui=false
  global:
    - secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8="
    - coverity_branch: coverity_scan

branches:
  except:
    - search_encoding_windows
    - v2_9_x

notifications:
  email:
    on_success: change
    on_failure: change

# container-based builds
#sudo: false
cache: ccache

# opt-in Ubuntu Trusty
sudo: required
dist: trusty

addons:
  coverity_scan:
    project:
      name: "qbittorrent/qBittorrent"
      description: "Build submitted via Travis CI"
    build_command_prepend: "./bootstrap.sh && ./configure $qbtconf"
    build_command: make
    branch_pattern: $coverity_branch
    notification_email: sledgehammer999@qbittorrent.org
  apt:
    #sources:
    # sources list: https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
    #- ubuntu-toolchain-r-test
    #- boost-latest
    packages:
    # packages list: https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
    - autoconf
    - automake
    - colormake
    - libssl-dev
    - libboost-dev
    - libboost-system-dev
    # uncomment when Travis upgraded "Ubuntu 12.04 LTS" to a newer version whose repo will have a more up-to-date libtorrent package
    #- libtorrent-rasterbar6

before_install:
  # only allow specific build for coverity scan, others will stop
  - if [ "$TRAVIS_BRANCH" = "$coverity_branch" ] && ! [ "$TRAVIS_OS_NAME" = "linux" -a "$lt_branch" = "RC_1_0" -a "$gui" = true ]; then exit ; fi

  - shopt -s expand_aliases
  - alias make="colormake -j3" # Using nprocs/2 sometimes may fail (gcc is killed by system)
  #- libt_path="$HOME/libt_install"
  #- ltconf="$ltconf --prefix="$libt_path" --disable-geoip"
  - qbt_path="$HOME/qbt_install"
  - qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH="$libt_path/lib/pkgconfig":$PKG_CONFIG_PATH"

  # options for specific branches
  - if [ "$qt" = 4 ]; then qbtconf="$qbtconf --with-qt4" ; fi
  - if [ "$gui" = false ]; then qbtconf="$qbtconf --disable-gui" ; fi
  - |
    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      # setup virtual display for after_success target
      if [ "$gui" = true ]; then export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi ;
    fi
  - |
    if [ "$TRAVIS_OS_NAME" = "osx" ]; then
      qbtconf="$qbtconf --disable-qt-dbus" ;
    fi

  # print settings
  - echo $lt_branch
  - echo $gui
  - echo $ltconf
  - echo $qbtconf

install:
  - |
    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      # libtorrent
      sudo add-apt-repository --yes ppa:qbittorrent-team/qbittorrent-stable ;
      sudo apt-get update -qq ;
      sudo apt-get install -qq libtorrent-rasterbar-dev ;

      # build libtorrent from source
      #if [ "$lt_branch" != "dist" ]; then
        #cd "$HOME" && pwd && git clone --depth 1 https://github.com/arvidn/libtorrent.git --branch $lt_branch ;
        #cd libtorrent && ./autotool.sh && ./configure $ltconf && make install ;
      #fi ;

      # Qt
      if [ "$qt" = 4 ]; then sudo apt-get -qq install qt4-default libqt4-dev ; fi ;
      if [ "$qt" = 5 ]; then sudo apt-get -qq install qt5-default qtbase5-dev qttools5-dev-tools ; fi ;

      # ccache
      if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
        dpkg-query -L ccache && export use_ccache=true ;
        ccache -V && ccache --show-stats && ccache --zero-stats ;
      fi ;
    fi
  - |
    if [ "$TRAVIS_OS_NAME" = "osx" ]; then
      # dependencies
      brew update > /dev/null ;
      brew install colormake ccache ;
      brew outdated "pkg-config" || brew upgrade "pkg-config" ;
      # libtorrent-rasterbar 1.0.9
      brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/477d5060fa093883204d70323965375353e03084/Formula/libtorrent-rasterbar.rb ;

      # Qt
      if [ "$qt" = 4 ]; then brew install qt && ln -s /usr/local/Cellar/qt/4.8.7_2/plugins /usr/local ; fi ;
      if [ "$qt" = 5 ]; then brew install qt5 && brew link --force qt5 && ln -s /usr/local/Cellar/qt5/5.6.0/plugins /usr/local ; fi ;

      # ccache
      if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
        export PATH="/usr/local/opt/ccache/libexec:$PATH" && export use_ccache=true ;
        ccache -V && ccache --show-stats && ccache --zero-stats ;
      fi ;
    fi

script:
  - if [ "$TRAVIS_BRANCH" = "$coverity_branch" ]; then exit ; fi # skip usual build when running coverity scan
  - cd "$TRAVIS_BUILD_DIR" && ./bootstrap.sh && ./configure $qbtconf
  - |
    if [ "$TRAVIS_OS_NAME" = "osx" ]; then
      sed -i "" -e "s/^\(CC.*&&\).*$/\1 $CC/" src/Makefile ;  # workaround for Qt & ccache: https://bugreports.qt.io/browse/QTBUG-31034
      sed -i "" -e "s/^\(CXX.*&&\).*$/\1 $CXX/" src/Makefile ;
      sed -i "" -e 's/^\(CXXFLAGS.*\)$/\1 -Wno-unused-local-typedefs -Wno-inconsistent-missing-override/' src/Makefile ;
    fi
  - make && make install

after_success:
  - if [ "$gui" = true ]; then qbt_exe="qbittorrent" ; else qbt_exe="qbittorrent-nox" ; fi
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd "$qbt_path/bin" ; fi
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then cd "$TRAVIS_BUILD_DIR/src/" && macdeployqt "$qbt_exe.app" && cd "$qbt_exe.app/Contents/MacOS" ; fi
  - ./$qbt_exe --version

after_script:
  - if [ "$use_ccache" = true ]; then ccache --show-stats ; fi
