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]
This commit is contained in:
Dean Moldovan 2016-08-25 22:35:15 +02:00
parent 7b748cef3b
commit b62a896f31
2 changed files with 52 additions and 52 deletions

View File

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

View File

@ -41,7 +41,7 @@ if(NOT MSVC AND NOT PYBIND11_CPP_STANDARD)
endif() endif()
set(PYBIND11_CPP_STANDARD ${PYBIND11_CPP_STANDARD} CACHE STRING set(PYBIND11_CPP_STANDARD ${PYBIND11_CPP_STANDARD} CACHE STRING
"C++ standard flag, e.g. -std=c++11 or -std=c++14. Defaults to latest available.") "C++ standard flag, e.g. -std=c++11 or -std=c++14. Defaults to latest available." FORCE)
endif() endif()
# Cache variables so pybind11_add_module can be used in parent projects # Cache variables so pybind11_add_module can be used in parent projects