mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-11 08:03:55 +00:00
1d1f81b278
This commit includes modifications that are needed to get pybind11 to work with PyPy. The full test suite compiles and runs except for a last few functions that are commented out (due to problems in PyPy that were reported on the PyPy bugtracker). Two somewhat intrusive changes were needed to make it possible: two new tags ``py::buffer_protocol()`` and ``py::metaclass()`` must now be specified to the ``class_`` constructor if the class uses the buffer protocol and/or requires a metaclass (e.g. for static properties). Note that this is only for the PyPy version based on Python 2.7 for now. When the PyPy 3.x has caught up in terms of cpyext compliance, a PyPy 3.x patch will follow.
141 lines
4.6 KiB
YAML
141 lines
4.6 KiB
YAML
language: cpp
|
|
sudo: false
|
|
matrix:
|
|
include:
|
|
- os: linux
|
|
env: PYTHON=2.7 CPP=11 GCC=4.8
|
|
addons:
|
|
apt:
|
|
sources: [ubuntu-toolchain-r-test, kubuntu-backports]
|
|
packages: [g++-4.8, cmake]
|
|
- os: linux
|
|
env: PYTHON=3.5 CPP=11 GCC=4.8
|
|
addons:
|
|
apt:
|
|
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 DEBUG=1
|
|
- sudo: true
|
|
services: docker
|
|
env: PYTHON=3.5 CPP=17 GCC=7
|
|
- os: osx
|
|
osx_image: xcode7.3
|
|
env: PYTHON=2.7 CPP=14 CLANG
|
|
- os: osx
|
|
osx_image: xcode7.3
|
|
env: PYTHON=3.5 CPP=14 CLANG
|
|
# Test a PyPy 2.7 nightly build
|
|
- os: linux
|
|
env: PYPY=1 PYTHON=2.7 CPP=11 GCC=4.8
|
|
addons:
|
|
apt:
|
|
sources: [ubuntu-toolchain-r-test, kubuntu-backports]
|
|
packages: [g++-4.8, cmake]
|
|
# 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: pip install pytest
|
|
# Documentation build:
|
|
- os: linux
|
|
language: docs
|
|
env: DOCS STYLE LINT
|
|
install:
|
|
- pip install --upgrade sphinx sphinx_rtd_theme flake8 pep8-naming
|
|
- pip install docutils==0.12
|
|
script:
|
|
- make -C docs html SPHINX_OPTIONS=-W
|
|
- tools/check-style.sh
|
|
- flake8
|
|
allow_failures:
|
|
- env: PYTHON=3.5 CPP=17 GCC=7
|
|
- env: PYTHON=2.7 CPP=14 GCC=6 # Temporary until python >2.7.13-rc1 migrates to debian testing
|
|
cache:
|
|
directories:
|
|
- $HOME/.cache/pip
|
|
- $HOME/Library/Caches/pip
|
|
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
|
|
elif [ "$GCC" = "7" ]; then export DOCKER=debian:experimental APT_GET_EXTRA="-t experimental"
|
|
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
|
|
if [ -n "$PYPY" ]; then
|
|
curl http://buildbot.pypy.org/nightly/trunk/pypy-c-jit-latest-linux64.tar.bz2 | tar -xj
|
|
export PYPY_BINARY=$(echo `pwd`/pypy-c-jit*/bin/pypy)
|
|
export CMAKE_EXTRA_ARGS="-DPYTHON_EXECUTABLE:FILEPATH=$PYPY_BINARY"
|
|
fi
|
|
if [ -n "$DEBUG" ]; then export CMAKE_EXTRA_ARGS="-DCMAKE_BUILD_TYPE=Debug"; fi
|
|
- |
|
|
# Initialize environment
|
|
if [ -n "$PYPY" ]; then
|
|
$PYPY_BINARY -m ensurepip
|
|
$PYPY_BINARY -m pip install pytest
|
|
fi
|
|
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" sh -c 'for s in 0 15; do sleep $s; apt-get update && apt-get -qy dist-upgrade && break; done'
|
|
export SCRIPT_RUN_PREFIX="docker exec --tty $containerid"
|
|
else
|
|
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
|
pip install --user --upgrade pip virtualenv
|
|
virtualenv -p python$PYTHON venv
|
|
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
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$PY install --user --upgrade pip virtualenv
|
|
python$PY -m virtualenv venv
|
|
fi
|
|
source venv/bin/activate
|
|
fi
|
|
install:
|
|
- |
|
|
# Install dependencies
|
|
if [ -n "$DOCKER" ]; then
|
|
docker exec --tty "$containerid" sh -c "for s in 0 15; do sleep \$s; \
|
|
apt-get -qy --no-install-recommends $APT_GET_EXTRA install \
|
|
python$PY-dev python$PY-pytest python$PY-scipy \
|
|
libeigen3-dev cmake make g++-$GCC && break; done"
|
|
else
|
|
pip install numpy scipy pytest
|
|
|
|
wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.3.0.tar.gz
|
|
tar xzf eigen.tar.gz
|
|
export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=$PWD/eigen-eigen-26667be4f70b"
|
|
fi
|
|
script:
|
|
- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS}
|
|
-DPYBIND11_PYTHON_VERSION=$PYTHON
|
|
-DPYBIND11_CPP_STANDARD=$CPP
|
|
-DPYBIND11_WERROR=ON
|
|
- $SCRIPT_RUN_PREFIX make pytest -j 2
|
|
- $SCRIPT_RUN_PREFIX make test_install
|
|
after_script:
|
|
- if [ -n "$DOCKER" ]; then docker stop "$containerid"; docker rm "$containerid"; fi
|