Add barebones build to Travis CI
This build makes sure everything still works without optional
dependencies (numpy/scipy/eigen) and also tests the automatic
discovery functions in CMake (Python version, C++ standard).
[skip appveyor]
diff --git a/.travis.yml b/.travis.yml
index 8ce8f2b..c1e7f1e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,58 +3,42 @@
matrix:
include:
- os: linux
- compiler: gcc-4.8
env: PYTHON=2.7 CPP=11 GCC=4.8
addons:
apt:
- sources:
- - ubuntu-toolchain-r-test
- - kubuntu-backports # cmake 2.8.12
- packages:
- - g++-4.8
- - cmake
+ sources: [ubuntu-toolchain-r-test, kubuntu-backports]
+ packages: [g++-4.8, cmake]
- os: linux
- compiler: gcc-4.8
env: PYTHON=3.5 CPP=11 GCC=4.8
addons:
apt:
- sources:
- - ubuntu-toolchain-r-test
- - deadsnakes
- - kubuntu-backports # cmake 2.8.12
- packages:
- - g++-4.8
- - python3.5-dev
- - cmake
+ sources: [ubuntu-toolchain-r-test, kubuntu-backports, deadsnakes]
+ packages: [g++-4.8, cmake, python3.5-dev]
+ - sudo: true
+ services: docker
+ env: PYTHON=2.7 CPP=14 GCC=6
+ - sudo: true
+ services: docker
+ env: PYTHON=3.5 CPP=14 GCC=6
- os: osx
osx_image: xcode7.3
- env: PYTHON=2.7 CPP=14
+ env: PYTHON=2.7 CPP=14 CLANG
- os: osx
osx_image: xcode7.3
- env: PYTHON=3.5 CPP=14
- - compiler: gcc-6
- services: docker
- sudo: true
- env: PYTHON=2.7 CPP=14 DOCKER=debian:testing NATIVE_DEPS=1
- install:
- - >
- docker exec --tty "$containerid" apt-get -y --no-install-recommends install
- python2.7-dev python-pip python-setuptools python-scipy libeigen3-dev
- cmake make g++
- - compiler: gcc-6
- services: docker
- sudo: true
- env: PYTHON=3.5 CPP=14 DOCKER=debian:testing NATIVE_DEPS=1
- install:
- - >
- docker exec --tty "$containerid" apt-get -y --no-install-recommends install
- python3.5-dev python3-pip python3-setuptools python3-scipy libeigen3-dev
- cmake make g++
+ env: PYTHON=3.5 CPP=14 CLANG
+ # A barebones build makes sure everything still works without optional deps (numpy/scipy/eigen)
+ # and also tests the automatic discovery functions in CMake (Python version, C++ standard).
+ - os: linux
+ env: BAREBONES
+ addons:
+ apt:
+ sources: [ubuntu-toolchain-r-test, kubuntu-backports]
+ packages: [g++-4.8, cmake]
+ install: false
# Documentation build:
- os: linux
language: docs
- compiler: sphinx
- env: PYTHON=2.7 DOCS=1
+ env: DOCS
install: pip install sphinx sphinx_rtd_theme
script: make -C docs html SPHINX_OPTIONS=-W
cache:
@@ -63,6 +47,18 @@
- ccache
before_install:
- |
+ # Configure build variables
+ if [ "$TRAVIS_OS_NAME" = "linux" ]; then
+ if [ -z "$GCC" ]; then export GCC=4.8; fi
+ export CXX=g++-$GCC CC=gcc-$GCC;
+ if [ "$GCC" = "6" ]; then export DOCKER=debian:testing CXX=g++ CC=gcc; fi
+ elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
+ export CXX=clang++ CC=clang;
+ fi
+ if [ -n "$CPP" ]; then export CPP=-std=c++$CPP; fi
+ if [ "${PYTHON:0:1}" = "3" ]; then export PY=3; fi
+- |
+ # Initialize enviornment
if [ -n "$DOCKER" ]; then
docker pull $DOCKER
export containerid=$(docker run --detach --tty \
@@ -73,36 +69,40 @@
docker exec --tty "$containerid" apt-get update
docker exec --tty "$containerid" apt-get -y upgrade
export SCRIPT_RUN_PREFIX="docker exec --tty $containerid"
- fi
-- |
- if [ -z "$NATIVE_DEPS" ]; then
+ else
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
- if [ -n "$GCC" ]; then export CXX=g++-$GCC CC=gcc-$GCC; fi
pip install --user --upgrade pip virtualenv
virtualenv -p python$PYTHON venv
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
- if [ "${PYTHON:0:1}" = "3" ]; then
- PMAJOR=3; brew update; brew install python$PMAJOR;
+ if [ "$PY" = "3" ]; then
+ brew update; brew install python$PY;
else
curl -fsSL -O https://bootstrap.pypa.io/get-pip.py
sudo -H python get-pip.py
fi
- pip$PMAJOR install --user --upgrade pip virtualenv
- python$PMAJOR -m virtualenv venv
+ pip$PY install --user --upgrade pip virtualenv
+ python$PY -m virtualenv venv
fi
source venv/bin/activate
fi
install:
- |
- pip install numpy scipy
+ # Install dependencies
+ if [ -n "$DOCKER" ]; then
+ docker exec --tty "$containerid" apt-get -y --no-install-recommends install \
+ python$PYTHON-dev python$PY-pip python$PY-setuptools python$PY-scipy \
+ libeigen3-dev cmake make g++
+ else
+ pip install numpy scipy
- wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.2.9.tar.gz
- tar xzf eigen.tar.gz
- export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=$PWD/eigen-eigen-dc6cfdf9bcec"
+ wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.2.9.tar.gz
+ tar xzf eigen.tar.gz
+ export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=$PWD/eigen-eigen-dc6cfdf9bcec"
+ fi
script:
- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS}
-DPYBIND11_PYTHON_VERSION=$PYTHON
- -DPYBIND11_CPP_STANDARD=-std=c++$CPP
+ -DPYBIND11_CPP_STANDARD=$CPP
-DPYBIND11_WERROR=ON
- $SCRIPT_RUN_PREFIX make pytest -j 2
after_script: