.travis.yml 3.18 KB
Newer Older
1
language: cpp
2
3
4
5
6
7
8

branches:
  only:
  - master
  - stable
  - /^v\d/

9
10
matrix:
  include:
11
12
13
14
15
16
17
  # 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
18
    dist: xenial # Necessary to run doxygen 1.8.15
19
    name: Docs and pip
20
21
    cache: false
    before_install:
22
23
    - pyenv global $(pyenv whence 2to3)  # activate all python versions
    - PY_CMD=python3
24
    - $PY_CMD -m pip install --user --upgrade pip wheel setuptools
Boris Staletic's avatar
Boris Staletic committed
25
    install:
Boris Staletic's avatar
Boris Staletic committed
26
    # breathe 4.14 doesn't work with bit fields. See https://github.com/michaeljones/breathe/issues/462
27
    # Latest breathe + Sphinx causes warnings and errors out
28
    - $PY_CMD -m pip install --user --upgrade "sphinx<3" sphinx_rtd_theme breathe==4.13.1 pytest
29
30
    - 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"
31
32
33
34
35
36
37
38
39
40
    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
Henry Schreiner's avatar
Henry Schreiner committed
41
      cmake -DCMAKE_BUILD_TYPE=Debug -DPYBIND11_WERROR=ON -DDOWNLOAD_CATCH=ON -DPYTHON_EXECUTABLE=$(which $PY_CMD) .
42
      make pytest -j 2 && make cpptest -j 2
Wenzel Jakob's avatar
Wenzel Jakob committed
43
44
cache:
  directories:
45
46
  - $HOME/.local/bin
  - $HOME/.local/lib
47
  - $HOME/.local/include
48
49
before_install:
- |
50
  # Configure build variables
Henry Schreiner's avatar
Henry Schreiner committed
51
  set -ex
Henry Schreiner's avatar
Henry Schreiner committed
52
53
  if [ -z "$GCC" ]; then GCC=4.8
  else EXTRA_PACKAGES+=" g++-$GCC"
54
  fi
Henry Schreiner's avatar
Henry Schreiner committed
55
  export CXX=g++-$GCC CC=gcc-$GCC
Jason Rhinelander's avatar
Jason Rhinelander committed
56
57
  if [ -n "$CPP" ]; then CPP=-std=c++$CPP; fi
  if [ "${PYTHON:0:1}" = "3" ]; then PY=3; fi
58
  if [ -n "$DEBUG" ]; then CMAKE_EXTRA_ARGS+=" -DCMAKE_BUILD_TYPE=Debug"; fi
Henry Schreiner's avatar
Henry Schreiner committed
59
  set +ex
60
- |
Wenzel Jakob's avatar
Wenzel Jakob committed
61
  # Initialize environment
Henry Schreiner's avatar
Henry Schreiner committed
62
  set -ex
Henry Schreiner's avatar
Henry Schreiner committed
63
64
65
66
67
68
  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
69
    fi
70
  fi
Henry Schreiner's avatar
Henry Schreiner committed
71
72
73
74
75
  if [ "$PY" = 3 ] || [ -n "$PYPY" ]; then
    $PY_CMD -m ensurepip --user
  fi
  $PY_CMD --version
  $PY_CMD -m pip install --user --upgrade pip wheel
Henry Schreiner's avatar
Henry Schreiner committed
76
  set +ex
77
install:
78
- |
79
  # Install dependencies
Henry Schreiner's avatar
Henry Schreiner committed
80
81
  set -ex
  cmake --version
82

Henry Schreiner's avatar
Henry Schreiner committed
83
84
85
86
87
  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."
88

Henry Schreiner's avatar
Henry Schreiner committed
89
90
91
92
  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"
Henry Schreiner's avatar
Henry Schreiner committed
93
  set +ex
94
after_failure: cat tests/test_cmake_build/*.log*