2015-10-11 14:29:35 +00:00
|
|
|
language: cpp
|
2020-07-23 21:21:55 +00:00
|
|
|
|
|
|
|
branches:
|
|
|
|
only:
|
|
|
|
- master
|
|
|
|
- stable
|
|
|
|
- /^v\d/
|
|
|
|
|
2016-07-29 22:15:01 +00:00
|
|
|
matrix:
|
|
|
|
include:
|
2017-09-08 09:34:06 +00:00
|
|
|
# This config does a few things:
|
|
|
|
# - Checks C++ and Python code styles (check-style.sh and flake8).
|
|
|
|
# - Makes sure sphinx can build the docs without any errors or warnings.
|
|
|
|
# - Tests setup.py sdist and install (all header files should be present).
|
|
|
|
# - Makes sure that everything still works without optional deps (numpy/scipy/eigen) and
|
|
|
|
# also tests the automatic discovery functions in CMake (Python version, C++ standard).
|
|
|
|
- os: linux
|
2019-01-03 11:01:34 +00:00
|
|
|
dist: xenial # Necessary to run doxygen 1.8.15
|
2020-07-20 19:07:22 +00:00
|
|
|
name: Docs and pip
|
2017-09-08 09:34:06 +00:00
|
|
|
cache: false
|
|
|
|
before_install:
|
2017-09-13 19:45:49 +00:00
|
|
|
- pyenv global $(pyenv whence 2to3) # activate all python versions
|
|
|
|
- PY_CMD=python3
|
2019-01-03 11:01:34 +00:00
|
|
|
- $PY_CMD -m pip install --user --upgrade pip wheel setuptools
|
2019-05-12 17:27:23 +00:00
|
|
|
install:
|
2019-12-11 11:04:35 +00:00
|
|
|
# breathe 4.14 doesn't work with bit fields. See https://github.com/michaeljones/breathe/issues/462
|
2020-05-31 04:29:30 +00:00
|
|
|
# Latest breathe + Sphinx causes warnings and errors out
|
2020-07-20 19:07:22 +00:00
|
|
|
- $PY_CMD -m pip install --user --upgrade "sphinx<3" sphinx_rtd_theme breathe==4.13.1 pytest
|
2019-01-03 11:01:34 +00:00
|
|
|
- curl -fsSL https://sourceforge.net/projects/doxygen/files/rel-1.8.15/doxygen-1.8.15.linux.bin.tar.gz/download | tar xz
|
|
|
|
- export PATH="$PWD/doxygen-1.8.15/bin:$PATH"
|
2017-09-08 09:34:06 +00:00
|
|
|
script:
|
|
|
|
- $PY_CMD -m sphinx -W -b html docs docs/.build
|
|
|
|
- |
|
|
|
|
# Make sure setup.py distributes and installs all the headers
|
|
|
|
$PY_CMD setup.py sdist
|
|
|
|
$PY_CMD -m pip install --user -U ./dist/*
|
|
|
|
installed=$($PY_CMD -c "import pybind11; print(pybind11.get_include(True) + '/pybind11')")
|
|
|
|
diff -rq $installed ./include/pybind11
|
|
|
|
- |
|
|
|
|
# Barebones build
|
2019-04-06 17:09:39 +00:00
|
|
|
cmake -DCMAKE_BUILD_TYPE=Debug -DPYBIND11_WERROR=ON -DDOWNLOAD_CATCH=ON -DPYTHON_EXECUTABLE=$(which $PY_CMD) .
|
2019-10-22 15:19:15 +00:00
|
|
|
make pytest -j 2 && make cpptest -j 2
|
2016-01-21 18:21:59 +00:00
|
|
|
cache:
|
|
|
|
directories:
|
travis-ci: switch to trusty; cache pip packages
This applies several changes to the non-docker travis-ci builds:
- Make all builds use trusty rather than precise. pybind can't really
build in precise anyway (we install essentially the entire toolchain
backported from trusty on every build), and so this saves needing to
install all the backported packages during the build setup.
- Updated the 3.5 build to 3.6 (via deadsnakes, which didn't backport
3.6 to ubuntu releases earlier than trusty).
- As a result of the switch to trusty, the BAREBONES build now picks up
the (default installed) python 3.5 installation.
- Invoke pip everywhere via $PYTHON -m pip rather than the pip
executable, which saves us having to figure out what the pip
executable is, and ensures that we are using the correct pip.
- Install packages with `pip --user` rather than in a virtualenv.
- Add the local user python package archive to the travis-ci cache
(rather than the pip cache). This saves needing to install packages
during installation (unless there are updates, in which case the
package and the cache are updated).
- Install numpy and scipy on the pypy build. This has to build from
source (and so blas and fortran need to be installed on the build),
but given the above caching, the build will only be slow for the first
build after a new numpy/scipy release. This testing is valuable:
numpy has various behaviour differences under pypy.
- Added set -e/+e around the before_install/install blocks so that a
failure here (e.g. a pip install failure or dependency download
failure) triggers a build failure.
- Update eigen version to latest (3.3.3), mainly to be consistent with
the appveyor build.
- The travis trusty environment has an upgraded cmake, so this
downgrades cmake (to the stock trusty version) on the first couple
jobs so that we're still including some cmake 2.8.12 testing.
2017-04-13 18:18:13 +00:00
|
|
|
- $HOME/.local/bin
|
|
|
|
- $HOME/.local/lib
|
2017-04-14 20:53:14 +00:00
|
|
|
- $HOME/.local/include
|
2016-08-14 16:31:52 +00:00
|
|
|
before_install:
|
|
|
|
- |
|
2016-08-25 20:35:15 +00:00
|
|
|
# Configure build variables
|
2019-04-06 17:09:39 +00:00
|
|
|
set -ex
|
2020-07-26 15:47:53 +00:00
|
|
|
if [ -z "$GCC" ]; then GCC=4.8
|
|
|
|
else EXTRA_PACKAGES+=" g++-$GCC"
|
2016-08-25 20:35:15 +00:00
|
|
|
fi
|
2020-07-26 15:47:53 +00:00
|
|
|
export CXX=g++-$GCC CC=gcc-$GCC
|
2017-04-14 20:55:11 +00:00
|
|
|
if [ -n "$CPP" ]; then CPP=-std=c++$CPP; fi
|
|
|
|
if [ "${PYTHON:0:1}" = "3" ]; then PY=3; fi
|
2017-10-22 15:25:18 +00:00
|
|
|
if [ -n "$DEBUG" ]; then CMAKE_EXTRA_ARGS+=" -DCMAKE_BUILD_TYPE=Debug"; fi
|
2019-04-06 17:09:39 +00:00
|
|
|
set +ex
|
2016-08-25 20:35:15 +00:00
|
|
|
- |
|
2016-12-16 14:00:46 +00:00
|
|
|
# Initialize environment
|
2019-04-06 17:09:39 +00:00
|
|
|
set -ex
|
2020-07-26 18:15:20 +00:00
|
|
|
PY_CMD=python$PYTHON
|
|
|
|
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
|
|
if [ "$PY" = "3" ]; then
|
|
|
|
brew update && brew unlink python@2 && (brew upgrade python || brew install python)
|
|
|
|
else
|
|
|
|
curl -fsSL https://bootstrap.pypa.io/get-pip.py | $PY_CMD - --user
|
travis-ci: switch to trusty; cache pip packages
This applies several changes to the non-docker travis-ci builds:
- Make all builds use trusty rather than precise. pybind can't really
build in precise anyway (we install essentially the entire toolchain
backported from trusty on every build), and so this saves needing to
install all the backported packages during the build setup.
- Updated the 3.5 build to 3.6 (via deadsnakes, which didn't backport
3.6 to ubuntu releases earlier than trusty).
- As a result of the switch to trusty, the BAREBONES build now picks up
the (default installed) python 3.5 installation.
- Invoke pip everywhere via $PYTHON -m pip rather than the pip
executable, which saves us having to figure out what the pip
executable is, and ensures that we are using the correct pip.
- Install packages with `pip --user` rather than in a virtualenv.
- Add the local user python package archive to the travis-ci cache
(rather than the pip cache). This saves needing to install packages
during installation (unless there are updates, in which case the
package and the cache are updated).
- Install numpy and scipy on the pypy build. This has to build from
source (and so blas and fortran need to be installed on the build),
but given the above caching, the build will only be slow for the first
build after a new numpy/scipy release. This testing is valuable:
numpy has various behaviour differences under pypy.
- Added set -e/+e around the before_install/install blocks so that a
failure here (e.g. a pip install failure or dependency download
failure) triggers a build failure.
- Update eigen version to latest (3.3.3), mainly to be consistent with
the appveyor build.
- The travis trusty environment has an upgraded cmake, so this
downgrades cmake (to the stock trusty version) on the first couple
jobs so that we're still including some cmake 2.8.12 testing.
2017-04-13 18:18:13 +00:00
|
|
|
fi
|
2016-08-17 13:14:22 +00:00
|
|
|
fi
|
2020-07-26 18:15:20 +00:00
|
|
|
if [ "$PY" = 3 ] || [ -n "$PYPY" ]; then
|
|
|
|
$PY_CMD -m ensurepip --user
|
|
|
|
fi
|
|
|
|
$PY_CMD --version
|
|
|
|
$PY_CMD -m pip install --user --upgrade pip wheel
|
2019-04-06 17:09:39 +00:00
|
|
|
set +ex
|
2016-08-17 18:19:08 +00:00
|
|
|
install:
|
2016-08-17 13:14:22 +00:00
|
|
|
- |
|
2016-08-25 20:35:15 +00:00
|
|
|
# Install dependencies
|
2019-04-06 17:09:39 +00:00
|
|
|
set -ex
|
|
|
|
cmake --version
|
2017-03-08 19:32:52 +00:00
|
|
|
|
2020-07-26 18:15:20 +00:00
|
|
|
export NPY_NUM_BUILD_JOBS=2
|
|
|
|
local PIP_CMD=""
|
|
|
|
echo "Installing pytest, numpy, scipy..."
|
|
|
|
$PY_CMD -m pip install --user --upgrade pytest numpy scipy
|
|
|
|
echo "done."
|
2016-08-14 16:31:52 +00:00
|
|
|
|
2020-07-26 18:15:20 +00:00
|
|
|
mkdir eigen
|
|
|
|
curl -fsSL https://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2 | \
|
|
|
|
tar --extract -j --directory=eigen --strip-components=1
|
|
|
|
export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH:+$CMAKE_INCLUDE_PATH:}$PWD/eigen"
|
2019-04-06 17:09:39 +00:00
|
|
|
set +ex
|
2017-03-23 16:27:32 +00:00
|
|
|
after_failure: cat tests/test_cmake_build/*.log*
|