.travis.yml revision 11986
111986Sandreas.sandberg@arm.comlanguage: cpp
211986Sandreas.sandberg@arm.comsudo: false
311986Sandreas.sandberg@arm.commatrix:
411986Sandreas.sandberg@arm.com  include:
511986Sandreas.sandberg@arm.com  - os: linux
611986Sandreas.sandberg@arm.com    env: PYTHON=2.7 CPP=11 GCC=4.8
711986Sandreas.sandberg@arm.com    addons:
811986Sandreas.sandberg@arm.com      apt:
911986Sandreas.sandberg@arm.com        sources: [ubuntu-toolchain-r-test, kubuntu-backports]
1011986Sandreas.sandberg@arm.com        packages: [g++-4.8, cmake]
1111986Sandreas.sandberg@arm.com  - os: linux
1211986Sandreas.sandberg@arm.com    env: PYTHON=3.5 CPP=11 GCC=4.8
1311986Sandreas.sandberg@arm.com    addons:
1411986Sandreas.sandberg@arm.com      apt:
1511986Sandreas.sandberg@arm.com        sources: [ubuntu-toolchain-r-test, kubuntu-backports, deadsnakes]
1611986Sandreas.sandberg@arm.com        packages: [g++-4.8, cmake, python3.5-dev]
1711986Sandreas.sandberg@arm.com  - sudo: true
1811986Sandreas.sandberg@arm.com    services: docker
1911986Sandreas.sandberg@arm.com    env: PYTHON=2.7 CPP=14 GCC=6
2011986Sandreas.sandberg@arm.com  - sudo: true
2111986Sandreas.sandberg@arm.com    services: docker
2211986Sandreas.sandberg@arm.com    env: PYTHON=3.5 CPP=14 GCC=6 DEBUG=1
2311986Sandreas.sandberg@arm.com  - os: osx
2411986Sandreas.sandberg@arm.com    osx_image: xcode7.3
2511986Sandreas.sandberg@arm.com    env: PYTHON=2.7 CPP=14 CLANG
2611986Sandreas.sandberg@arm.com  - os: osx
2711986Sandreas.sandberg@arm.com    osx_image: xcode7.3
2811986Sandreas.sandberg@arm.com    env: PYTHON=3.5 CPP=14 CLANG
2911986Sandreas.sandberg@arm.com  # A barebones build makes sure everything still works without optional deps (numpy/scipy/eigen)
3011986Sandreas.sandberg@arm.com  # and also tests the automatic discovery functions in CMake (Python version, C++ standard).
3111986Sandreas.sandberg@arm.com  - os: linux
3211986Sandreas.sandberg@arm.com    env: BAREBONES
3311986Sandreas.sandberg@arm.com    addons:
3411986Sandreas.sandberg@arm.com      apt:
3511986Sandreas.sandberg@arm.com        sources: [ubuntu-toolchain-r-test, kubuntu-backports]
3611986Sandreas.sandberg@arm.com        packages: [g++-4.8, cmake]
3711986Sandreas.sandberg@arm.com    install: pip install pytest
3811986Sandreas.sandberg@arm.com  # Documentation build:
3911986Sandreas.sandberg@arm.com  - os: linux
4011986Sandreas.sandberg@arm.com    language: docs
4111986Sandreas.sandberg@arm.com    env: DOCS STYLE LINT
4211986Sandreas.sandberg@arm.com    install:
4311986Sandreas.sandberg@arm.com    - pip install --upgrade sphinx sphinx_rtd_theme flake8 pep8-naming
4411986Sandreas.sandberg@arm.com    - pip install docutils==0.12
4511986Sandreas.sandberg@arm.com    script:
4611986Sandreas.sandberg@arm.com    - make -C docs html SPHINX_OPTIONS=-W
4711986Sandreas.sandberg@arm.com    - tools/check-style.sh
4811986Sandreas.sandberg@arm.com    - flake8
4911986Sandreas.sandberg@arm.comcache:
5011986Sandreas.sandberg@arm.com  directories:
5111986Sandreas.sandberg@arm.com  - $HOME/.cache/pip
5211986Sandreas.sandberg@arm.com  - $HOME/Library/Caches/pip
5311986Sandreas.sandberg@arm.combefore_install:
5411986Sandreas.sandberg@arm.com- |
5511986Sandreas.sandberg@arm.com  # Configure build variables
5611986Sandreas.sandberg@arm.com  if [ "$TRAVIS_OS_NAME" = "linux" ]; then
5711986Sandreas.sandberg@arm.com    if [ -z "$GCC" ]; then export GCC=4.8; fi
5811986Sandreas.sandberg@arm.com    export CXX=g++-$GCC CC=gcc-$GCC;
5911986Sandreas.sandberg@arm.com    if [ "$GCC" = "6" ]; then export DOCKER=debian:testing CXX=g++ CC=gcc; fi
6011986Sandreas.sandberg@arm.com  elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
6111986Sandreas.sandberg@arm.com    export CXX=clang++ CC=clang;
6211986Sandreas.sandberg@arm.com  fi
6311986Sandreas.sandberg@arm.com  if [ -n "$CPP" ]; then export CPP=-std=c++$CPP; fi
6411986Sandreas.sandberg@arm.com  if [ "${PYTHON:0:1}" = "3" ]; then export PY=3; fi
6511986Sandreas.sandberg@arm.com  if [ -n "$DEBUG" ]; then export CMAKE_EXTRA_ARGS="-DCMAKE_BUILD_TYPE=Debug"; fi
6611986Sandreas.sandberg@arm.com- |
6711986Sandreas.sandberg@arm.com  # Initialize enviornment
6811986Sandreas.sandberg@arm.com  if [ -n "$DOCKER" ]; then
6911986Sandreas.sandberg@arm.com    docker pull $DOCKER
7011986Sandreas.sandberg@arm.com    export containerid=$(docker run --detach --tty \
7111986Sandreas.sandberg@arm.com      --volume="$PWD":/pybind11 --workdir=/pybind11 \
7211986Sandreas.sandberg@arm.com      --env="CC=$CC" --env="CXX=$CXX" --env="DEBIAN_FRONTEND=$DEBIAN_FRONTEND" \
7311986Sandreas.sandberg@arm.com      --env=GCC_COLORS=\  \
7411986Sandreas.sandberg@arm.com      $DOCKER)
7511986Sandreas.sandberg@arm.com    docker exec --tty "$containerid" sh -c 'for s in 0 15; do sleep $s; apt-get update && apt-get -qy dist-upgrade && break; done'
7611986Sandreas.sandberg@arm.com    export SCRIPT_RUN_PREFIX="docker exec --tty $containerid"
7711986Sandreas.sandberg@arm.com  else
7811986Sandreas.sandberg@arm.com    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
7911986Sandreas.sandberg@arm.com      pip install --user --upgrade pip virtualenv
8011986Sandreas.sandberg@arm.com      virtualenv -p python$PYTHON venv
8111986Sandreas.sandberg@arm.com    elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
8211986Sandreas.sandberg@arm.com      if [ "$PY" = "3" ]; then
8311986Sandreas.sandberg@arm.com        brew update; brew install python$PY;
8411986Sandreas.sandberg@arm.com      else
8511986Sandreas.sandberg@arm.com        curl -fsSL -O https://bootstrap.pypa.io/get-pip.py
8611986Sandreas.sandberg@arm.com        sudo -H python get-pip.py
8711986Sandreas.sandberg@arm.com      fi
8811986Sandreas.sandberg@arm.com      pip$PY install --user --upgrade pip virtualenv
8911986Sandreas.sandberg@arm.com      python$PY -m virtualenv venv
9011986Sandreas.sandberg@arm.com    fi
9111986Sandreas.sandberg@arm.com    source venv/bin/activate
9211986Sandreas.sandberg@arm.com  fi
9311986Sandreas.sandberg@arm.cominstall:
9411986Sandreas.sandberg@arm.com- |
9511986Sandreas.sandberg@arm.com  # Install dependencies
9611986Sandreas.sandberg@arm.com  if [ -n "$DOCKER" ]; then
9711986Sandreas.sandberg@arm.com    docker exec --tty "$containerid" sh -c "for s in 0 15; do sleep \$s; apt-get -qy --no-install-recommends install \
9811986Sandreas.sandberg@arm.com      python$PYTHON-dev python$PY-pytest python$PY-scipy \
9911986Sandreas.sandberg@arm.com      libeigen3-dev cmake make g++ && break; done"
10011986Sandreas.sandberg@arm.com  else
10111986Sandreas.sandberg@arm.com    pip install numpy scipy pytest
10211986Sandreas.sandberg@arm.com
10311986Sandreas.sandberg@arm.com    wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.3.0.tar.gz
10411986Sandreas.sandberg@arm.com    tar xzf eigen.tar.gz
10511986Sandreas.sandberg@arm.com    export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=$PWD/eigen-eigen-26667be4f70b"
10611986Sandreas.sandberg@arm.com  fi
10711986Sandreas.sandberg@arm.comscript:
10811986Sandreas.sandberg@arm.com- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS}
10911986Sandreas.sandberg@arm.com    -DPYBIND11_PYTHON_VERSION=$PYTHON
11011986Sandreas.sandberg@arm.com    -DPYBIND11_CPP_STANDARD=$CPP
11111986Sandreas.sandberg@arm.com    -DPYBIND11_WERROR=ON
11211986Sandreas.sandberg@arm.com- $SCRIPT_RUN_PREFIX make pytest -j 2
11311986Sandreas.sandberg@arm.com- $SCRIPT_RUN_PREFIX make test_install
11411986Sandreas.sandberg@arm.comafter_script:
11511986Sandreas.sandberg@arm.com- if [ -n "$DOCKER" ]; then docker stop "$containerid"; docker rm "$containerid"; fi
116