diff --git a/.github/workflows/python312dev.yml b/.github/workflows/python312dev.yml deleted file mode 100644 index 816c9379..00000000 --- a/.github/workflows/python312dev.yml +++ /dev/null @@ -1,138 +0,0 @@ -name: python312dev - -on: - workflow_dispatch: - pull_request: - -concurrency: - group: python312dev-${{ github.ref }} - cancel-in-progress: false - -env: - PIP_BREAK_SYSTEM_PACKAGES: 1 - PYTEST_TIMEOUT: 300 - # For cmake: - VERBOSE: 1 - -jobs: - standard: - name: "🐍 3.12-dev • ubuntu-latest • x64" - runs-on: ubuntu-latest - - # Hint: Select the label in the PR web view. - if: "contains(github.event.pull_request.labels.*.name, 'gha_wf_python312dev_enable')" - - steps: - - name: Show env - run: env - - - uses: actions/checkout@v4 - - - name: Setup Python 3.12-dev - 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.13 - - - name: Run pip installs - run: | - python -m pip install --upgrade pip - python -m pip install --prefer-binary -r tests/requirements.txt - # python -m pip install --prefer-binary numpy # SLOW - # python -m pip install --prefer-binary scipy # FAILED ~Nov 2022 - - - name: Show platform info - run: python -m platform - - - name: Show CMake version - run: cmake --version - - # FIRST BUILD - - name: Configure C++11 - run: > - cmake -S . -B build11 - -DCMAKE_VERBOSE_MAKEFILE=ON - -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++ tests C++11 - run: cmake --build build11 --target cpptest -j 2 - - - name: Interface test C++11 - run: cmake --build build11 --target test_cmake_build - - - name: Clean directory - run: git clean -fdx - - # SECOND BUILD - - name: Configure C++17 - run: > - cmake -S . -B build17 - -DCMAKE_VERBOSE_MAKEFILE=ON - -DPYBIND11_WERROR=ON - -DDOWNLOAD_CATCH=ON - -DDOWNLOAD_EIGEN=ON - -DCMAKE_CXX_STANDARD=17 - -DCMAKE_BUILD_TYPE=Debug - - - name: Build C++17 - run: cmake --build build17 -j 2 - - - name: Python tests C++17 - run: cmake --build build17 --target pytest - - - name: C++ tests C++17 - run: cmake --build build17 --target cpptest - - - name: Interface test C++17 - run: cmake --build build17 --target test_cmake_build - - - name: Clean directory - run: git clean -fdx - - # THIRD BUILD - - name: Configure C++17 max DPYBIND11_INTERNALS_VERSION - run: > - cmake -S . -B build17max - -DCMAKE_VERBOSE_MAKEFILE=ON - -DPYBIND11_WERROR=ON - -DDOWNLOAD_CATCH=ON - -DDOWNLOAD_EIGEN=ON - -DCMAKE_CXX_STANDARD=17 - -DCMAKE_BUILD_TYPE=Debug - -DPYBIND11_INTERNALS_VERSION=10000000 - - - name: Build C++17 max DPYBIND11_INTERNALS_VERSION - run: cmake --build build17max -j 2 - - - name: Python tests C++17 max DPYBIND11_INTERNALS_VERSION - run: cmake --build build17max --target pytest - - - name: C++ tests C++17 max DPYBIND11_INTERNALS_VERSION - run: cmake --build build17max --target cpptest - - - name: Interface test C++17 max DPYBIND11_INTERNALS_VERSION - run: cmake --build build17max --target test_cmake_build - - # Ensure the setup_helpers module can build packages using setuptools - - name: Setuptools helpers test - run: | - pip install setuptools - pytest tests/extra_setuptools - - - name: Clean directory - run: git clean -fdx diff --git a/.github/workflows/upstream.yml b/.github/workflows/upstream.yml new file mode 100644 index 00000000..38926003 --- /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 + # For cmake: + VERBOSE: 1 + +jobs: + standard: + name: "🐍 3.13 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@v4 + + - name: Setup Python 3.13 + uses: actions/setup-python@v5 + with: + python-version: "3.13" + allow-prereleases: true + + - name: Setup Boost + run: sudo apt-get install libboost-dev + + - name: Update CMake + uses: jwlawson/actions-setup-cmake@v2.0 + + - 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