mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-26 15:12:01 +00:00
38370a87f4
* Added guards to the includes Added new CI config Added new trigger Changed CI workflow name Debug CI Debug CI Debug CI Debug CI Added flags fro PGI Disable Eigen Removed tests that fail Uncomment lines * fix: missing include fix: minor style cleanup tests: support skipping ci: remove and tighten a bit fix: try msvc workaround for pgic * tests: split up prealoc tests * fix: PGI compiler fix * fix: PGI void_t only * fix: try to appease nvcc * ci: better ordering for slow tests * ci: minor improvements to testing * ci: Add NumPy to testing * ci: Eigen generates CUDA warnings / PGI errors * Added CentOS7 back for a moment * Fix YAML * ci: runs-on missing * centos7 is missing pytest * ci: use C++11 on CentOS 7 * ci: test something else * Try just adding flags on CentOS 7 * fix: CentOS 7 * refactor: move include to shared location * Added verbose flag * Try to use system cmake3 on CI * Try to use system cmake3 on CI, attempt2 * Try to use system cmake3 on CI, attempt3 * tests: not finding pytest should be a warning, not a fatal error * tests: cleanup * Weird issue? * fix: final polish Co-authored-by: Andrii Verbytskyi <andrii.verbytskyi@mpp.mpg.de> Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com> Co-authored-by: Andrii Verbytskyi <averbyts@cern.ch>
471 lines
13 KiB
YAML
471 lines
13 KiB
YAML
name: CI
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
- stable
|
|
- v*
|
|
|
|
jobs:
|
|
standard:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
runs-on: [ubuntu-latest, windows-latest, macos-latest]
|
|
arch: [x64]
|
|
python:
|
|
- 2.7
|
|
- 3.5
|
|
- 3.8
|
|
- pypy2
|
|
- pypy3
|
|
|
|
include:
|
|
- runs-on: ubuntu-latest
|
|
python: 3.6
|
|
arch: x64
|
|
args: >
|
|
-DPYBIND11_FINDPYTHON=ON
|
|
- runs-on: windows-2016
|
|
python: 3.7
|
|
arch: x86
|
|
args2: >
|
|
-DCMAKE_CXX_FLAGS="/permissive- /EHsc /GR"
|
|
- runs-on: windows-latest
|
|
python: 3.6
|
|
arch: x64
|
|
args: >
|
|
-DPYBIND11_FINDPYTHON=ON
|
|
- runs-on: windows-latest
|
|
python: 3.7
|
|
arch: x64
|
|
|
|
- runs-on: ubuntu-latest
|
|
python: 3.9-dev
|
|
arch: x64
|
|
- runs-on: macos-latest
|
|
python: 3.9-dev
|
|
arch: x64
|
|
args: >
|
|
-DPYBIND11_FINDPYTHON=ON
|
|
|
|
exclude:
|
|
# Currently 32bit only, and we build 64bit
|
|
- runs-on: windows-latest
|
|
python: pypy2
|
|
arch: x64
|
|
- runs-on: windows-latest
|
|
python: pypy3
|
|
arch: x64
|
|
|
|
# Currently broken on embed_test
|
|
- runs-on: windows-latest
|
|
python: 3.8
|
|
arch: x64
|
|
- runs-on: windows-latest
|
|
python: 3.9-dev
|
|
arch: x64
|
|
|
|
name: "🐍 ${{ matrix.python }} • ${{ matrix.runs-on }} • ${{ matrix.arch }} ${{ matrix.args }}"
|
|
runs-on: ${{ matrix.runs-on }}
|
|
continue-on-error: ${{ endsWith(matrix.python, 'dev') }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup Python ${{ matrix.python }}
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
architecture: ${{ matrix.arch }}
|
|
|
|
- name: Setup Boost (Windows / Linux latest)
|
|
run: echo "::set-env name=BOOST_ROOT::$BOOST_ROOT_1_72_0"
|
|
|
|
- name: Update CMake
|
|
uses: jwlawson/actions-setup-cmake@v1.3
|
|
|
|
- name: Cache wheels
|
|
if: runner.os == 'macOS'
|
|
uses: actions/cache@v2
|
|
with:
|
|
# This path is specific to macOS - we really only need it for PyPy NumPy wheels
|
|
# See https://github.com/actions/cache/blob/master/examples.md#python---pip
|
|
# for ways to do this more generally
|
|
path: ~/Library/Caches/pip
|
|
# Look to see if there is a cache hit for the corresponding requirements file
|
|
key: ${{ runner.os }}-pip-${{ matrix.python }}-${{ matrix.arch }}-${{ hashFiles('tests/requirements.txt') }}
|
|
|
|
- name: Prepare env
|
|
run: python -m pip install -r tests/requirements.txt --prefer-binary
|
|
|
|
- name: Setup annotations
|
|
if: runner.os == 'Linux'
|
|
run: python -m pip install pytest-github-actions-annotate-failures
|
|
|
|
- name: Configure C++11 ${{ matrix.args }}
|
|
run: >
|
|
cmake -S . -B .
|
|
-DPYBIND11_WERROR=ON
|
|
-DDOWNLOAD_CATCH=ON
|
|
-DDOWNLOAD_EIGEN=ON
|
|
-DCMAKE_CXX_STANDARD=11
|
|
${{ matrix.args }}
|
|
|
|
- name: Build C++11
|
|
run: cmake --build . -j 2
|
|
|
|
- name: Python tests C++11
|
|
run: cmake --build . --target pytest -j 2
|
|
|
|
- name: C++11 tests
|
|
run: cmake --build . --target cpptest -j 2
|
|
|
|
- name: Interface test C++11
|
|
run: cmake --build . --target test_cmake_build
|
|
|
|
- name: Clean directory
|
|
run: git clean -fdx
|
|
|
|
- name: Configure ${{ matrix.args2 }}
|
|
run: >
|
|
cmake -S . -B build2
|
|
-DPYBIND11_WERROR=ON
|
|
-DDOWNLOAD_CATCH=ON
|
|
-DDOWNLOAD_EIGEN=ON
|
|
-DCMAKE_CXX_STANDARD=17
|
|
${{ matrix.args }}
|
|
${{ matrix.args2 }}
|
|
|
|
- name: Build
|
|
run: cmake --build build2 -j 2
|
|
|
|
- name: Python tests
|
|
run: cmake --build build2 --target pytest
|
|
|
|
- name: C++ tests
|
|
run: cmake --build build2 --target cpptest
|
|
|
|
- name: Interface test
|
|
run: cmake --build build2 --target test_cmake_build
|
|
|
|
clang:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
clang:
|
|
- 3.6
|
|
- 3.7
|
|
- 3.9
|
|
- 5
|
|
- 7
|
|
- 9
|
|
- dev
|
|
|
|
name: "🐍 3 • Clang ${{ matrix.clang }} • x64"
|
|
container: "silkeh/clang:${{ matrix.clang }}"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Add wget and python3
|
|
run: apt-get update && apt-get install -y python3-dev python3-numpy python3-pytest libeigen3-dev
|
|
|
|
- name: Configure
|
|
shell: bash
|
|
run: >
|
|
cmake -S . -B build
|
|
-DPYBIND11_WERROR=ON
|
|
-DDOWNLOAD_CATCH=ON
|
|
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
|
|
|
|
- name: Build
|
|
run: cmake --build build -j 2
|
|
|
|
- name: Python tests
|
|
run: cmake --build build --target pytest
|
|
|
|
- name: C++ tests
|
|
run: cmake --build build --target cpptest
|
|
|
|
- name: Interface test
|
|
run: cmake --build build --target test_cmake_build
|
|
|
|
|
|
cuda:
|
|
runs-on: ubuntu-latest
|
|
name: "🐍 3.8 • CUDA 11 • Ubuntu 20.04"
|
|
container: nvidia/cuda:11.0-devel-ubuntu20.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
# tzdata will try to ask for the timezone, so set the DEBIAN_FRONTEND
|
|
- name: Install 🐍 3
|
|
run: apt-get update && DEBIAN_FRONTEND="noninteractive" apt-get install -y cmake git python3-dev python3-pytest python3-numpy
|
|
|
|
- name: Configure
|
|
run: cmake -S . -B build -DPYBIND11_CUDA_TESTS=ON -DPYBIND11_WERROR=ON -DDOWNLOAD_CATCH=ON
|
|
|
|
- name: Build
|
|
run: cmake --build build -j2 --verbose
|
|
|
|
- name: Python tests
|
|
run: cmake --build build --target pytest
|
|
|
|
|
|
centos-nvhpc8:
|
|
runs-on: ubuntu-latest
|
|
name: "🐍 3 • CentOS8 / PGI 20.7 • x64"
|
|
container: centos:8
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Add Python 3 and a few requirements
|
|
run: yum update -y && yum install -y git python3-devel python3-numpy python3-pytest make environment-modules
|
|
|
|
- name: Install CMake with pip
|
|
run: |
|
|
python3 -m pip install --upgrade pip
|
|
python3 -m pip install cmake --prefer-binary
|
|
|
|
- name: Install NVidia HPC SDK
|
|
run: yum -y install https://developer.download.nvidia.com/hpc-sdk/nvhpc-20-7-20.7-1.x86_64.rpm https://developer.download.nvidia.com/hpc-sdk/nvhpc-2020-20.7-1.x86_64.rpm
|
|
|
|
- name: Configure
|
|
shell: bash
|
|
run: |
|
|
source /etc/profile.d/modules.sh
|
|
module load /opt/nvidia/hpc_sdk/modulefiles/nvhpc/20.7
|
|
cmake -S . -B build -DDOWNLOAD_CATCH=ON -DCMAKE_CXX_STANDARD=14 -DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
|
|
|
|
- name: Build
|
|
run: cmake --build build -j 2 --verbose
|
|
|
|
- name: Python tests
|
|
run: cmake --build build --target pytest
|
|
|
|
- name: C++ tests
|
|
run: cmake --build build --target cpptest
|
|
|
|
- name: Interface test
|
|
run: cmake --build build --target test_cmake_build
|
|
|
|
centos-nvhpc7:
|
|
runs-on: ubuntu-latest
|
|
name: "🐍 3 • CentOS7 / PGI 20.7 • x64"
|
|
container: centos:7
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Add Python 3 and a few requirements
|
|
run: yum update -y && yum install -y epel-release && yum install -y git python3-devel make environment-modules cmake3
|
|
|
|
- name: Install NVidia HPC SDK
|
|
run: yum -y install https://developer.download.nvidia.com/hpc-sdk/nvhpc-20-7-20.7-1.x86_64.rpm https://developer.download.nvidia.com/hpc-sdk/nvhpc-2020-20.7-1.x86_64.rpm
|
|
|
|
# On CentOS 7, we have to filter a few tests (compiler internal error)
|
|
# and allow deeper templete recursion (not needed on CentOS 8 with a newer
|
|
# standard library). On some systems, you many need further workarounds:
|
|
# https://github.com/pybind/pybind11/pull/2475
|
|
- name: Configure
|
|
shell: bash
|
|
run: |
|
|
source /etc/profile.d/modules.sh
|
|
module load /opt/nvidia/hpc_sdk/modulefiles/nvhpc/20.7
|
|
cmake3 -S . -B build -DDOWNLOAD_CATCH=ON \
|
|
-DCMAKE_CXX_STANDARD=11 \
|
|
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)") \
|
|
-DCMAKE_CXX_FLAGS="-Wc,--pending_instantiations=0" \
|
|
-DPYBIND11_TEST_FILTER="test_smart_ptr.cpp;test_virtual_functions.cpp"
|
|
|
|
# Building before installing Pip should produce a warning but not an error
|
|
- name: Build
|
|
run: cmake3 --build build -j 2 --verbose
|
|
|
|
- name: Install CMake with pip
|
|
run: |
|
|
python3 -m pip install --upgrade pip
|
|
python3 -m pip install pytest
|
|
|
|
- name: Python tests
|
|
run: cmake3 --build build --target pytest
|
|
|
|
- name: C++ tests
|
|
run: cmake3 --build build --target cpptest
|
|
|
|
- name: Interface test
|
|
run: cmake3 --build build --target test_cmake_build
|
|
|
|
gcc:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
gcc:
|
|
- 7
|
|
- latest
|
|
|
|
name: "🐍 3 • GCC ${{ matrix.gcc }} • x64"
|
|
container: "gcc:${{ matrix.gcc }}"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
|
|
- name: Add Python 3
|
|
run: apt-get update; apt-get install -y python3-dev python3-numpy python3-pytest python3-pip libeigen3-dev
|
|
|
|
- name: Update pip
|
|
run: python3 -m pip install --upgrade pip
|
|
|
|
- name: Setup CMake 3.18
|
|
uses: jwlawson/actions-setup-cmake@v1.3
|
|
with:
|
|
cmake-version: 3.18
|
|
|
|
- name: Configure
|
|
shell: bash
|
|
run: >
|
|
cmake -S . -B build
|
|
-DPYBIND11_WERROR=ON
|
|
-DDOWNLOAD_CATCH=ON
|
|
-DCMAKE_CXX_STANDARD=11
|
|
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
|
|
|
|
- name: Build
|
|
run: cmake --build build -j 2
|
|
|
|
- name: Python tests
|
|
run: cmake --build build --target pytest
|
|
|
|
- name: C++ tests
|
|
run: cmake --build build --target cpptest
|
|
|
|
- name: Interface test
|
|
run: cmake --build build --target test_cmake_build
|
|
|
|
|
|
centos:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
centos:
|
|
- 7 # GCC 4.8
|
|
- 8
|
|
|
|
name: "🐍 3 • CentOS ${{ matrix.centos }} • x64"
|
|
container: "centos:${{ matrix.centos }}"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Add Python 3
|
|
run: yum update -y && yum install -y python3-devel gcc-c++ make git
|
|
|
|
- name: Update pip
|
|
run: python3 -m pip install --upgrade pip
|
|
|
|
- name: Install dependencies
|
|
run: python3 -m pip install cmake -r tests/requirements.txt --prefer-binary
|
|
|
|
- name: Configure
|
|
shell: bash
|
|
run: >
|
|
cmake -S . -B build
|
|
-DPYBIND11_WERROR=ON
|
|
-DDOWNLOAD_CATCH=ON
|
|
-DDOWNLOAD_EIGEN=ON
|
|
-DCMAKE_CXX_STANDARD=11
|
|
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
|
|
|
|
- name: Build
|
|
run: cmake --build build -j 2
|
|
|
|
- name: Python tests
|
|
run: cmake --build build --target pytest
|
|
|
|
- name: C++ tests
|
|
run: cmake --build build --target cpptest
|
|
|
|
- name: Interface test
|
|
run: cmake --build build --target test_cmake_build
|
|
|
|
|
|
install-classic:
|
|
name: "🐍 3.5 • Debian • x86 • Install"
|
|
runs-on: ubuntu-latest
|
|
container: i386/debian:stretch
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
|
|
- name: Install requirements
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y git make cmake g++ libeigen3-dev python3-dev python3-pip
|
|
pip3 install "pytest==3.1.*"
|
|
|
|
- name: Configure for install
|
|
run: >
|
|
cmake .
|
|
-DPYBIND11_INSTALL=1 -DPYBIND11_TEST=0
|
|
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
|
|
|
|
- name: Make and install
|
|
run: make install
|
|
|
|
- name: Copy tests to new directory
|
|
run: cp -a tests /pybind11-tests
|
|
|
|
- name: Make a new test directory
|
|
run: mkdir /build-tests
|
|
|
|
- name: Configure tests
|
|
run: >
|
|
cmake ../pybind11-tests
|
|
-DDOWNLOAD_CATCH=ON
|
|
-DPYBIND11_WERROR=ON
|
|
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
|
|
working-directory: /build-tests
|
|
|
|
- name: Run tests
|
|
run: make pytest -j 2
|
|
working-directory: /build-tests
|
|
|
|
|
|
doxygen:
|
|
name: "Documentation build test"
|
|
runs-on: ubuntu-latest
|
|
container: alpine:3.12
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install system requirements
|
|
run: apk add doxygen python3-dev
|
|
|
|
- name: Ensure pip
|
|
run: python3 -m ensurepip
|
|
|
|
- name: Install docs & setup requirements
|
|
run: python3 -m pip install -r docs/requirements.txt pytest setuptools
|
|
|
|
- name: Build docs
|
|
run: python3 -m sphinx -W -b html docs docs/.build
|
|
|
|
- name: Make SDist
|
|
run: python3 setup.py sdist
|
|
|
|
- name: Compare Dists (headers only)
|
|
run: |
|
|
python3 -m pip install --user -U ./dist/*
|
|
installed=$(python3 -c "import pybind11; print(pybind11.get_include(True) + '/pybind11')")
|
|
diff -rq $installed ./include/pybind11
|