blob: 39b436248ae4f29b29e1dc5aa1de878f2b2742ab [file] [log] [blame]
Wenzel Jakob3b806d42015-10-11 16:29:35 +02001language: cpp
2sudo: false
Dean Moldovan3ac12752016-07-30 00:15:01 +02003matrix:
4 include:
5 - os: linux
Jason Rhinelander024ce442016-08-14 12:31:52 -04006 env: PYTHON=2.7 CPP=11 GCC=4.8
7 addons:
8 apt:
Dean Moldovanb62a8962016-08-25 22:35:15 +02009 sources: [ubuntu-toolchain-r-test, kubuntu-backports]
10 packages: [g++-4.8, cmake]
Dean Moldovan3ac12752016-07-30 00:15:01 +020011 - os: linux
Jason Rhinelander024ce442016-08-14 12:31:52 -040012 env: PYTHON=3.5 CPP=11 GCC=4.8
13 addons:
14 apt:
Dean Moldovanb62a8962016-08-25 22:35:15 +020015 sources: [ubuntu-toolchain-r-test, kubuntu-backports, deadsnakes]
16 packages: [g++-4.8, cmake, python3.5-dev]
17 - sudo: true
18 services: docker
19 env: PYTHON=2.7 CPP=14 GCC=6
20 - sudo: true
21 services: docker
Jason Rhinelander5b4968d2016-09-12 16:04:31 -040022 env: PYTHON=3.5 CPP=14 GCC=6 DEBUG=1
Dean Moldovan3ac12752016-07-30 00:15:01 +020023 - os: osx
24 osx_image: xcode7.3
Dean Moldovanb62a8962016-08-25 22:35:15 +020025 env: PYTHON=2.7 CPP=14 CLANG
Dean Moldovan3ac12752016-07-30 00:15:01 +020026 - os: osx
27 osx_image: xcode7.3
Dean Moldovanb62a8962016-08-25 22:35:15 +020028 env: PYTHON=3.5 CPP=14 CLANG
29 # A barebones build makes sure everything still works without optional deps (numpy/scipy/eigen)
30 # and also tests the automatic discovery functions in CMake (Python version, C++ standard).
31 - os: linux
32 env: BAREBONES
33 addons:
34 apt:
35 sources: [ubuntu-toolchain-r-test, kubuntu-backports]
36 packages: [g++-4.8, cmake]
Jason Rhinelanderdd3d56a2016-08-26 17:11:40 -040037 install: pip install pytest
Jason Rhinelander4b5058d2016-08-17 09:14:22 -040038 # Documentation build:
39 - os: linux
40 language: docs
Dean Moldovanbad17402016-11-20 21:21:54 +010041 env: DOCS STYLE LINT
Wenzel Jakobf8571ea2016-12-11 18:51:44 +010042 install:
43 - pip install --upgrade sphinx sphinx_rtd_theme flake8 pep8-naming
44 - pip install docutils==0.12
Jason Rhinelanderac427892016-08-28 13:00:44 -040045 script:
46 - make -C docs html SPHINX_OPTIONS=-W
47 - tools/check-style.sh
Dean Moldovanbad17402016-11-20 21:21:54 +010048 - flake8
Wenzel Jakoba40c27e2016-01-21 19:21:59 +010049cache:
50 directories:
51 - $HOME/.cache/pip
Dean Moldovan14bd10d2016-08-26 11:53:25 +020052 - $HOME/Library/Caches/pip
Jason Rhinelander024ce442016-08-14 12:31:52 -040053before_install:
54- |
Dean Moldovanb62a8962016-08-25 22:35:15 +020055 # Configure build variables
56 if [ "$TRAVIS_OS_NAME" = "linux" ]; then
57 if [ -z "$GCC" ]; then export GCC=4.8; fi
58 export CXX=g++-$GCC CC=gcc-$GCC;
59 if [ "$GCC" = "6" ]; then export DOCKER=debian:testing CXX=g++ CC=gcc; fi
60 elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
61 export CXX=clang++ CC=clang;
62 fi
63 if [ -n "$CPP" ]; then export CPP=-std=c++$CPP; fi
64 if [ "${PYTHON:0:1}" = "3" ]; then export PY=3; fi
Jason Rhinelander5b4968d2016-09-12 16:04:31 -040065 if [ -n "$DEBUG" ]; then export CMAKE_EXTRA_ARGS="-DCMAKE_BUILD_TYPE=Debug"; fi
Dean Moldovanb62a8962016-08-25 22:35:15 +020066- |
67 # Initialize enviornment
Jason Rhinelander024ce442016-08-14 12:31:52 -040068 if [ -n "$DOCKER" ]; then
69 docker pull $DOCKER
70 export containerid=$(docker run --detach --tty \
71 --volume="$PWD":/pybind11 --workdir=/pybind11 \
72 --env="CC=$CC" --env="CXX=$CXX" --env="DEBIAN_FRONTEND=$DEBIAN_FRONTEND" \
73 --env=GCC_COLORS=\ \
74 $DOCKER)
Jason Rhinelanderbf14cea2016-09-09 23:54:10 -040075 docker exec --tty "$containerid" sh -c 'for s in 0 15; do sleep $s; apt-get update && apt-get -qy dist-upgrade && break; done'
Jason Rhinelander024ce442016-08-14 12:31:52 -040076 export SCRIPT_RUN_PREFIX="docker exec --tty $containerid"
Dean Moldovanb62a8962016-08-25 22:35:15 +020077 else
Jason Rhinelander024ce442016-08-14 12:31:52 -040078 if [ "$TRAVIS_OS_NAME" = "linux" ]; then
Jason Rhinelander024ce442016-08-14 12:31:52 -040079 pip install --user --upgrade pip virtualenv
80 virtualenv -p python$PYTHON venv
81 elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
Dean Moldovanb62a8962016-08-25 22:35:15 +020082 if [ "$PY" = "3" ]; then
83 brew update; brew install python$PY;
Jason Rhinelander024ce442016-08-14 12:31:52 -040084 else
85 curl -fsSL -O https://bootstrap.pypa.io/get-pip.py
86 sudo -H python get-pip.py
87 fi
Dean Moldovanb62a8962016-08-25 22:35:15 +020088 pip$PY install --user --upgrade pip virtualenv
89 python$PY -m virtualenv venv
Dean Moldovan880a7e42016-08-02 00:42:07 +020090 fi
Jason Rhinelander024ce442016-08-14 12:31:52 -040091 source venv/bin/activate
Jason Rhinelander4b5058d2016-08-17 09:14:22 -040092 fi
Jason Rhinelander0b952cd2016-08-17 14:19:08 -040093install:
Jason Rhinelander4b5058d2016-08-17 09:14:22 -040094- |
Dean Moldovanb62a8962016-08-25 22:35:15 +020095 # Install dependencies
96 if [ -n "$DOCKER" ]; then
Jason Rhinelanderbf14cea2016-09-09 23:54:10 -040097 docker exec --tty "$containerid" sh -c "for s in 0 15; do sleep \$s; apt-get -qy --no-install-recommends install \
Jason Rhinelanderdd3d56a2016-08-26 17:11:40 -040098 python$PYTHON-dev python$PY-pytest python$PY-scipy \
Jason Rhinelanderbf14cea2016-09-09 23:54:10 -040099 libeigen3-dev cmake make g++ && break; done"
Dean Moldovanb62a8962016-08-25 22:35:15 +0200100 else
Jason Rhinelanderdd3d56a2016-08-26 17:11:40 -0400101 pip install numpy scipy pytest
Jason Rhinelander024ce442016-08-14 12:31:52 -0400102
Jason Rhinelander219b10a2016-11-11 02:15:38 -0500103 wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.3.0.tar.gz
Dean Moldovanb62a8962016-08-25 22:35:15 +0200104 tar xzf eigen.tar.gz
Jason Rhinelander219b10a2016-11-11 02:15:38 -0500105 export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=$PWD/eigen-eigen-26667be4f70b"
Dean Moldovanb62a8962016-08-25 22:35:15 +0200106 fi
Dean Moldovan3ac12752016-07-30 00:15:01 +0200107script:
Dean Moldovan00a30092016-08-15 13:41:44 +0200108- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS}
109 -DPYBIND11_PYTHON_VERSION=$PYTHON
Dean Moldovanb62a8962016-08-25 22:35:15 +0200110 -DPYBIND11_CPP_STANDARD=$CPP
Dean Moldovan00a30092016-08-15 13:41:44 +0200111 -DPYBIND11_WERROR=ON
Dean Moldovana0c1ccf2016-08-12 13:50:00 +0200112- $SCRIPT_RUN_PREFIX make pytest -j 2
Jason Rhinelander024ce442016-08-14 12:31:52 -0400113after_script:
114- if [ -n "$DOCKER" ]; then docker stop "$containerid"; docker rm "$containerid"; fi