aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/upstream.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/upstream.yml')
-rw-r--r--.github/workflows/upstream.yml116
1 files changed, 116 insertions, 0 deletions
diff --git a/.github/workflows/upstream.yml b/.github/workflows/upstream.yml
new file mode 100644
index 00000000..dd8a1c96
--- /dev/null
+++ b/.github/workflows/upstream.yml
@@ -0,0 +1,116 @@
+name: Upstream
+
+on:
+ workflow_dispatch:
+ pull_request:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: upstream-${{ github.ref }}
+ cancel-in-progress: true
+
+env:
+ PIP_BREAK_SYSTEM_PACKAGES: 1
+ PIP_ONLY_BINARY: ":all:"
+ # For cmake:
+ VERBOSE: 1
+
+jobs:
+ standard:
+ name: "🐍 3.12 latest • ubuntu-latest • x64"
+ runs-on: ubuntu-latest
+ # Only runs when the 'python dev' label is selected
+ if: "contains(github.event.pull_request.labels.*.name, 'python dev')"
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Setup Python 3.12
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.12-dev"
+
+ - name: Setup Boost
+ run: sudo apt-get install libboost-dev
+
+ - name: Update CMake
+ uses: jwlawson/actions-setup-cmake@v1.14
+
+ - name: Run pip installs
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install -r tests/requirements.txt
+
+ - name: Show platform info
+ run: |
+ python -m platform
+ cmake --version
+ pip list
+
+ # First build - C++11 mode and inplace
+ - name: Configure C++11
+ run: >
+ cmake -S . -B build11
+ -DPYBIND11_WERROR=ON
+ -DDOWNLOAD_CATCH=ON
+ -DDOWNLOAD_EIGEN=ON
+ -DCMAKE_CXX_STANDARD=11
+ -DCMAKE_BUILD_TYPE=Debug
+
+ - name: Build C++11
+ run: cmake --build build11 -j 2
+
+ - name: Python tests C++11
+ run: cmake --build build11 --target pytest -j 2
+
+ - name: C++11 tests
+ run: cmake --build build11 --target cpptest -j 2
+
+ - name: Interface test C++11
+ run: cmake --build build11 --target test_cmake_build
+
+ # Second build - C++17 mode and in a build directory
+ - name: Configure C++17
+ run: >
+ cmake -S . -B build17
+ -DPYBIND11_WERROR=ON
+ -DDOWNLOAD_CATCH=ON
+ -DDOWNLOAD_EIGEN=ON
+ -DCMAKE_CXX_STANDARD=17
+
+ - name: Build C++17
+ run: cmake --build build17 -j 2
+
+ - name: Python tests C++17
+ run: cmake --build build17 --target pytest
+
+ - name: C++17 tests
+ run: cmake --build build17 --target cpptest
+
+ # Third build - C++17 mode with unstable ABI
+ - name: Configure (unstable ABI)
+ run: >
+ cmake -S . -B build17max
+ -DPYBIND11_WERROR=ON
+ -DDOWNLOAD_CATCH=ON
+ -DDOWNLOAD_EIGEN=ON
+ -DCMAKE_CXX_STANDARD=17
+ -DPYBIND11_INTERNALS_VERSION=10000000
+
+ - name: Build (unstable ABI)
+ run: cmake --build build17max -j 2
+
+ - name: Python tests (unstable ABI)
+ run: cmake --build build17max --target pytest
+
+ - name: Interface test (unstable ABI)
+ run: cmake --build build17max --target test_cmake_build
+
+ # This makes sure the setup_helpers module can build packages using
+ # setuptools
+ - name: Setuptools helpers test
+ run: |
+ pip install setuptools
+ pytest tests/extra_setuptools