-
Notifications
You must be signed in to change notification settings - Fork 125
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Code extracted from: https://github.com/pybind/pybind11.git at commit 9a19306fbf30642ca331d0ec88e7da54a96860f9 (v2.2.4).
- Loading branch information
PyBind11 Upstream
authored and
Chuck Atkins
committed
Feb 15, 2019
0 parents
commit 6fcb4e8
Showing
177 changed files
with
38,328 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
version: 1.0.{build} | ||
image: | ||
- Visual Studio 2017 | ||
- Visual Studio 2015 | ||
test: off | ||
build: | ||
parallel: true | ||
platform: | ||
- x64 | ||
- x86 | ||
environment: | ||
matrix: | ||
- PYTHON: 36 | ||
CPP: 14 | ||
CONFIG: Debug | ||
- PYTHON: 27 | ||
CPP: 14 | ||
CONFIG: Debug | ||
- CONDA: 36 | ||
CPP: latest | ||
CONFIG: Release | ||
matrix: | ||
exclude: | ||
- image: Visual Studio 2015 | ||
platform: x86 | ||
- image: Visual Studio 2015 | ||
CPP: latest | ||
- image: Visual Studio 2017 | ||
CPP: latest | ||
platform: x86 | ||
install: | ||
- ps: | | ||
if ($env:PLATFORM -eq "x64") { $env:CMAKE_ARCH = "x64" } | ||
if ($env:APPVEYOR_JOB_NAME -like "*Visual Studio 2017*") { | ||
$env:CMAKE_GENERATOR = "Visual Studio 15 2017" | ||
$env:CMAKE_INCLUDE_PATH = "C:\Libraries\boost_1_64_0" | ||
$env:CXXFLAGS = "-permissive-" | ||
} else { | ||
$env:CMAKE_GENERATOR = "Visual Studio 14 2015" | ||
} | ||
if ($env:PYTHON) { | ||
if ($env:PLATFORM -eq "x64") { $env:PYTHON = "$env:PYTHON-x64" } | ||
$env:PATH = "C:\Python$env:PYTHON\;C:\Python$env:PYTHON\Scripts\;$env:PATH" | ||
python -m pip install --upgrade pip wheel | ||
python -m pip install pytest numpy --no-warn-script-location | ||
} elseif ($env:CONDA) { | ||
if ($env:CONDA -eq "27") { $env:CONDA = "" } | ||
if ($env:PLATFORM -eq "x64") { $env:CONDA = "$env:CONDA-x64" } | ||
$env:PATH = "C:\Miniconda$env:CONDA\;C:\Miniconda$env:CONDA\Scripts\;$env:PATH" | ||
$env:PYTHONHOME = "C:\Miniconda$env:CONDA" | ||
conda install -y -q pytest numpy scipy | ||
} | ||
- ps: | | ||
Start-FileDownload 'http://bitbucket.org/eigen/eigen/get/3.3.3.zip' | ||
7z x 3.3.3.zip -y > $null | ||
$env:CMAKE_INCLUDE_PATH = "eigen-eigen-67e894c6cd8f;$env:CMAKE_INCLUDE_PATH" | ||
build_script: | ||
- cmake -G "%CMAKE_GENERATOR%" -A "%CMAKE_ARCH%" | ||
-DPYBIND11_CPP_STANDARD=/std:c++%CPP% | ||
-DPYBIND11_WERROR=ON | ||
-DDOWNLOAD_CATCH=ON | ||
-DCMAKE_SUPPRESS_REGENERATION=1 | ||
- set MSBuildLogger="C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" | ||
- cmake --build . --config %CONFIG% --target pytest -- /m /v:m /logger:%MSBuildLogger% | ||
- cmake --build . --config %CONFIG% --target cpptest -- /m /v:m /logger:%MSBuildLogger% | ||
- if "%CPP%"=="latest" (cmake --build . --config %CONFIG% --target test_cmake_build -- /m /v:m /logger:%MSBuildLogger%) | ||
on_failure: if exist "tests\test_cmake_build" type tests\test_cmake_build\*.log* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
CMakeCache.txt | ||
CMakeFiles | ||
Makefile | ||
cmake_install.cmake | ||
.DS_Store | ||
*.so | ||
*.pyd | ||
*.dll | ||
*.sln | ||
*.sdf | ||
*.opensdf | ||
*.vcxproj | ||
*.filters | ||
example.dir | ||
Win32 | ||
x64 | ||
Release | ||
Debug | ||
.vs | ||
CTestTestfile.cmake | ||
Testing | ||
autogen | ||
MANIFEST | ||
/.ninja_* | ||
/*.ninja | ||
/docs/.build | ||
*.py[co] | ||
*.egg-info | ||
*~ | ||
.*.swp | ||
.DS_Store | ||
/dist | ||
/build | ||
/cmake/ | ||
.cache/ | ||
sosize-*.txt | ||
pybind11Config*.cmake | ||
pybind11Targets.cmake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[submodule "tools/clang"] | ||
path = tools/clang | ||
url = https://github.com/wjakob/clang-cindex-python3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
python: | ||
version: 3 | ||
requirements_file: docs/requirements.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,212 @@ | ||
language: cpp | ||
dist: trusty | ||
sudo: false | ||
matrix: | ||
include: | ||
# 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 | ||
env: STYLE DOCS PIP | ||
cache: false | ||
before_install: | ||
- pyenv global $(pyenv whence 2to3) # activate all python versions | ||
- PY_CMD=python3 | ||
- $PY_CMD -m pip install --user --upgrade pip wheel | ||
install: | ||
- $PY_CMD -m pip install --user --upgrade sphinx sphinx_rtd_theme breathe flake8 pep8-naming pytest | ||
- curl -fsSL ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.12.linux.bin.tar.gz | tar xz | ||
- export PATH="$PWD/doxygen-1.8.12/bin:$PATH" | ||
script: | ||
- tools/check-style.sh | ||
- flake8 | ||
- $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 | ||
cmake -DCMAKE_BUILD_TYPE=Debug -DPYBIND11_WERROR=ON -DDOWNLOAD_CATCH=ON | ||
make pytest -j 2 | ||
make cpptest -j 2 | ||
# The following are regular test configurations, including optional dependencies. | ||
# With regard to each other they differ in Python version, C++ standard and compiler. | ||
- os: linux | ||
env: PYTHON=2.7 CPP=11 GCC=4.8 | ||
addons: | ||
apt: | ||
packages: [cmake=2.\*, cmake-data=2.\*] | ||
- os: linux | ||
env: PYTHON=3.6 CPP=11 GCC=4.8 | ||
addons: | ||
apt: | ||
sources: [deadsnakes] | ||
packages: [python3.6-dev python3.6-venv, cmake=2.\*, cmake-data=2.\*] | ||
- sudo: true | ||
services: docker | ||
env: PYTHON=2.7 CPP=14 GCC=6 CMAKE=1 | ||
- sudo: true | ||
services: docker | ||
env: PYTHON=3.5 CPP=14 GCC=6 DEBUG=1 | ||
- sudo: true | ||
services: docker | ||
env: PYTHON=3.6 CPP=17 GCC=7 | ||
- os: linux | ||
env: PYTHON=3.6 CPP=17 CLANG=5.0 | ||
addons: | ||
apt: | ||
sources: [deadsnakes, llvm-toolchain-trusty-5.0, ubuntu-toolchain-r-test] | ||
packages: [python3.6-dev python3.6-venv clang-5.0 llvm-5.0-dev, lld-5.0] | ||
- os: osx | ||
osx_image: xcode7.3 | ||
env: PYTHON=2.7 CPP=14 CLANG CMAKE=1 | ||
- os: osx | ||
osx_image: xcode9 | ||
env: PYTHON=3.7 CPP=14 CLANG DEBUG=1 | ||
# Test a PyPy 2.7 build | ||
- os: linux | ||
env: PYPY=5.8 PYTHON=2.7 CPP=11 GCC=4.8 | ||
addons: | ||
apt: | ||
packages: [libblas-dev, liblapack-dev, gfortran] | ||
# Build in 32-bit mode and tests against the CMake-installed version | ||
- sudo: true | ||
services: docker | ||
env: ARCH=i386 PYTHON=3.5 CPP=14 GCC=6 INSTALL=1 | ||
script: | ||
- | | ||
$SCRIPT_RUN_PREFIX sh -c "set -e | ||
cmake ${CMAKE_EXTRA_ARGS} -DPYBIND11_INSTALL=1 -DPYBIND11_TEST=0 | ||
make install | ||
cp -a tests /pybind11-tests | ||
mkdir /build-tests && cd /build-tests | ||
cmake ../pybind11-tests ${CMAKE_EXTRA_ARGS} -DPYBIND11_WERROR=ON | ||
make pytest -j 2" | ||
cache: | ||
directories: | ||
- $HOME/.local/bin | ||
- $HOME/.local/lib | ||
- $HOME/.local/include | ||
- $HOME/Library/Python | ||
before_install: | ||
- | | ||
# Configure build variables | ||
if [ "$TRAVIS_OS_NAME" = "linux" ]; then | ||
if [ -n "$CLANG" ]; then | ||
export CXX=clang++-$CLANG CC=clang-$CLANG | ||
EXTRA_PACKAGES+=" clang-$CLANG llvm-$CLANG-dev" | ||
else | ||
if [ -z "$GCC" ]; then GCC=4.8 | ||
else EXTRA_PACKAGES+=" g++-$GCC" | ||
fi | ||
export CXX=g++-$GCC CC=gcc-$GCC | ||
fi | ||
if [ "$GCC" = "6" ]; then DOCKER=${ARCH:+$ARCH/}debian:stretch | ||
elif [ "$GCC" = "7" ]; then DOCKER=debian:buster EXTRA_PACKAGES+=" catch python3-distutils" DOWNLOAD_CATCH=OFF | ||
fi | ||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then | ||
export CXX=clang++ CC=clang; | ||
fi | ||
if [ -n "$CPP" ]; then CPP=-std=c++$CPP; fi | ||
if [ "${PYTHON:0:1}" = "3" ]; then PY=3; fi | ||
if [ -n "$DEBUG" ]; then CMAKE_EXTRA_ARGS+=" -DCMAKE_BUILD_TYPE=Debug"; fi | ||
- | | ||
# Initialize environment | ||
set -e | ||
if [ -n "$DOCKER" ]; then | ||
docker pull $DOCKER | ||
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) | ||
SCRIPT_RUN_PREFIX="docker exec --tty $containerid" | ||
$SCRIPT_RUN_PREFIX sh -c 'for s in 0 15; do sleep $s; apt-get update && apt-get -qy dist-upgrade && break; done' | ||
else | ||
if [ "$PYPY" = "5.8" ]; then | ||
curl -fSL https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.8.0-linux64.tar.bz2 | tar xj | ||
PY_CMD=$(echo `pwd`/pypy2-v5.8.0-linux64/bin/pypy) | ||
CMAKE_EXTRA_ARGS+=" -DPYTHON_EXECUTABLE:FILEPATH=$PY_CMD" | ||
else | ||
PY_CMD=python$PYTHON | ||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then | ||
if [ "$PY" = "3" ]; then | ||
brew install python$PY; | ||
else | ||
curl -fsSL https://bootstrap.pypa.io/get-pip.py | $PY_CMD - --user | ||
fi | ||
fi | ||
fi | ||
if [ "$PY" = 3 ] || [ -n "$PYPY" ]; then | ||
$PY_CMD -m ensurepip --user | ||
fi | ||
$PY_CMD -m pip install --user --upgrade pip wheel | ||
fi | ||
set +e | ||
install: | ||
- | | ||
# Install dependencies | ||
set -e | ||
if [ -n "$DOCKER" ]; then | ||
if [ -n "$DEBUG" ]; then | ||
PY_DEBUG="python$PYTHON-dbg python$PY-scipy-dbg" | ||
CMAKE_EXTRA_ARGS+=" -DPYTHON_EXECUTABLE=/usr/bin/python${PYTHON}dm" | ||
fi | ||
$SCRIPT_RUN_PREFIX sh -c "for s in 0 15; do sleep \$s; \ | ||
apt-get -qy --no-install-recommends install \ | ||
$PY_DEBUG python$PYTHON-dev python$PY-pytest python$PY-scipy \ | ||
libeigen3-dev libboost-dev cmake make ${EXTRA_PACKAGES} && break; done" | ||
else | ||
if [ "$CLANG" = "5.0" ]; then | ||
if ! [ -d ~/.local/include/c++/v1 ]; then | ||
# Neither debian nor llvm provide a libc++ 5.0 deb; luckily it's fairly quick | ||
# to build, install (and cache), so do it ourselves: | ||
git clone --depth=1 https://github.com/llvm-mirror/llvm.git llvm-source | ||
git clone https://github.com/llvm-mirror/libcxx.git llvm-source/projects/libcxx -b release_50 | ||
git clone https://github.com/llvm-mirror/libcxxabi.git llvm-source/projects/libcxxabi -b release_50 | ||
mkdir llvm-build && cd llvm-build | ||
# Building llvm requires a newer cmake than is provided by the trusty container: | ||
CMAKE_VER=cmake-3.8.0-Linux-x86_64 | ||
curl https://cmake.org/files/v3.8/$CMAKE_VER.tar.gz | tar xz | ||
./$CMAKE_VER/bin/cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/.local ../llvm-source | ||
make -j2 install-cxxabi install-cxx | ||
cp -a include/c++/v1/*cxxabi*.h ~/.local/include/c++/v1 | ||
cd .. | ||
fi | ||
export CXXFLAGS="-isystem $HOME/.local/include/c++/v1 -stdlib=libc++" | ||
export LDFLAGS="-L$HOME/.local/lib -fuse-ld=lld-$CLANG" | ||
export LD_LIBRARY_PATH="$HOME/.local/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" | ||
if [ "$CPP" = "-std=c++17" ]; then CPP="-std=c++1z"; fi | ||
fi | ||
export NPY_NUM_BUILD_JOBS=2 | ||
echo "Installing pytest, numpy, scipy..." | ||
${PYPY:+travis_wait 30} $PY_CMD -m pip install --user --upgrade pytest numpy scipy \ | ||
${PYPY:+--extra-index-url https://imaginary.ca/trusty-pypi} | ||
echo "done." | ||
wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.3.3.tar.gz | ||
tar xzf eigen.tar.gz | ||
export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH:+$CMAKE_INCLUDE_PATH:}$PWD/eigen-eigen-67e894c6cd8f" | ||
fi | ||
set +e | ||
script: | ||
- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS} | ||
-DPYBIND11_PYTHON_VERSION=$PYTHON | ||
-DPYBIND11_CPP_STANDARD=$CPP | ||
-DPYBIND11_WERROR=${WERROR:-ON} | ||
-DDOWNLOAD_CATCH=${DOWNLOAD_CATCH:-ON} | ||
- $SCRIPT_RUN_PREFIX make pytest -j 2 | ||
- $SCRIPT_RUN_PREFIX make cpptest -j 2 | ||
- if [ -n "$CMAKE" ]; then $SCRIPT_RUN_PREFIX make test_cmake_build; fi | ||
after_failure: cat tests/test_cmake_build/*.log* | ||
after_script: | ||
- if [ -n "$DOCKER" ]; then docker stop "$containerid"; docker rm "$containerid"; fi |
Oops, something went wrong.