Add g++-6 builds to travis-ci

The current linux/g++ testing (using a backported g++-4.8 on a
4-year-old Ubuntu) is quite ancient.  It's good as a baseline level of
support, but it means we aren't testing g++'s C++14 support at all
(which is why #334 happened).

This commit adds a docker-based travis-ci build using the debian
"testing" distribution, which will give us both another test system
(with different versions of build tools), while, more importantly, also
adding a build and test run using g++ in C++14 mode.
This commit is contained in:
Jason Rhinelander 2016-08-14 12:31:52 -04:00
parent 3c3533b4bc
commit 024ce4471b

View File

@ -4,20 +4,18 @@ matrix:
include: include:
- os: linux - os: linux
compiler: gcc-4.8 compiler: gcc-4.8
env: PYTHON=2.7 CPP=11 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
- os: linux - os: linux
compiler: gcc-4.8 compiler: gcc-4.8
env: PYTHON=3.5 CPP=11 env: PYTHON=3.5 CPP=11 GCC=4.8
- os: osx
osx_image: xcode7.3
env: PYTHON=2.7 CPP=14
- os: osx
osx_image: xcode7.3
env: PYTHON=3.5 CPP=14
cache:
directories:
- $HOME/.cache/pip
- ccache
addons: addons:
apt: apt:
sources: sources:
@ -26,13 +24,48 @@ addons:
- kubuntu-backports # cmake 2.8.12 - kubuntu-backports # cmake 2.8.12
packages: packages:
- g++-4.8 - g++-4.8
- python3.5
- python3.5-dev - python3.5-dev
- cmake - cmake
- os: osx
osx_image: xcode7.3
env: PYTHON=2.7 CPP=14
- 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-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-scipy libeigen3-dev cmake make g++
cache:
directories:
- $HOME/.cache/pip
- ccache
before_install:
- |
if [ -n "$DOCKER" ]; then
docker pull $DOCKER
export containerid=$(docker run --detach --tty \
--volume="$PWD":/pybind11 --workdir=/pybind11 \
--env="CC=$CC" --env="CXX=$CXX" --env="DEBIAN_FRONTEND=$DEBIAN_FRONTEND" \
--env=GCC_COLORS=\ \
$DOCKER)
docker exec --tty "$containerid" apt-get update
docker exec --tty "$containerid" apt-get -y upgrade
export SCRIPT_RUN_PREFIX="docker exec --tty $containerid"
fi
install: install:
- | - |
if [ -z "$NATIVE_DEPS" ]; then
if [ "$TRAVIS_OS_NAME" = "linux" ]; then if [ "$TRAVIS_OS_NAME" = "linux" ]; then
export CXX=g++-4.8 CC=gcc-4.8; 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
@ -47,10 +80,13 @@ install:
fi fi
source venv/bin/activate source venv/bin/activate
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_INCLUDE_PATH=eigen-eigen-dc6cfdf9bcec export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=eigen-eigen-dc6cfdf9bcec"
fi
script: script:
- cmake -DPYBIND11_PYTHON_VERSION=$PYTHON -DPYBIND11_CPP_STANDARD=-std=c++$CPP - $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS} -DPYBIND11_PYTHON_VERSION=$PYTHON -DPYBIND11_CPP_STANDARD=-std=c++$CPP
- CTEST_OUTPUT_ON_FAILURE=TRUE make check -j 2 - $SCRIPT_RUN_PREFIX make CTEST_OUTPUT_ON_FAILURE=TRUE check -j 2
after_script:
- if [ -n "$DOCKER" ]; then docker stop "$containerid"; docker rm "$containerid"; fi