diff --git a/.github/workflows/upstream.yml b/.github/workflows/upstream.yml index a15861ee47..721a920281 100644 --- a/.github/workflows/upstream.yml +++ b/.github/workflows/upstream.yml @@ -1,4 +1,3 @@ - name: Upstream on: @@ -7,108 +6,137 @@ on: concurrency: group: upstream-${{ github.ref }} - cancel-in-progress: true + cancel-in-progress: false env: - PIP_ONLY_BINARY: numpy - # For cmake: - VERBOSE: 1 + PYTEST_TIMEOUT: 300 jobs: standard: - name: "🐍 3.11 latest internals • ubuntu-latest • x64" + name: "🐍 3.12 latest • ubuntu-latest • x64" runs-on: ubuntu-latest + + # Hint: Select the 'python dev' label in the PR web view. if: "contains(github.event.pull_request.labels.*.name, 'python dev')" steps: + - name: Show env + run: env + - uses: actions/checkout@v3 - - name: Setup Python 3.11 + - name: Setup Python 3.12 uses: actions/setup-python@v4 with: - python-version: "3.11-dev" + python-version: "3.12-dev" - - name: Setup Boost (Linux) - if: runner.os == 'Linux' + - name: Setup Boost run: sudo apt-get install libboost-dev - name: Update CMake uses: jwlawson/actions-setup-cmake@v1.13 - - name: Prepare env + - name: Run pip installs run: | - python -m pip install -r tests/requirements.txt + 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: Setup annotations on Linux - if: runner.os == 'Linux' - run: python -m pip install pytest-github-actions-annotate-failures + - name: Show CMake version + run: cmake --version - # First build - C++11 mode and inplace + # FIRST BUILD - name: Configure C++11 run: > - cmake -S . -B . + 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 . -j 2 + run: cmake --build build11 -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 + run: cmake --build build11 --target pytest -j 2 + + # python-3.12.0-alpha.1-linux-22.04-x64.tar.gz PASSED + # python-3.12.0-alpha.2-linux-22.04-x64.tar.gz FAILED + # python-3.12.0-alpha.3-linux-22.04-x64.tar.gz FAILED + # free(): invalid pointer + # Custom PyConfig + # /home/runner/work/pybind11/pybind11/tests/test_embed/test_interpreter.cpp:175 + # /home/runner/work/pybind11/pybind11/tests/test_embed/test_interpreter.cpp:179: FAILED: + # gdb traceback points here: + # https://github.com/python/cpython/blame/54289f85b2af1ecf046089ddf535dda1bdf6af24/Python/import.c#L524 + # - name: C++ tests C++11 + # run: cmake --build build11 --target cpptest -j 2 - name: Interface test C++11 - run: cmake --build . --target test_cmake_build + run: cmake --build build11 --target test_cmake_build - name: Clean directory run: git clean -fdx - # Second build - C++17 mode and in a build directory + # SECOND BUILD - name: Configure C++17 run: > - cmake -S . -B build2 + cmake -S . -B build17 + -DCMAKE_VERBOSE_MAKEFILE=ON -DPYBIND11_WERROR=ON -DDOWNLOAD_CATCH=ON -DDOWNLOAD_EIGEN=ON -DCMAKE_CXX_STANDARD=17 - ${{ matrix.args }} - ${{ matrix.args2 }} + -DCMAKE_BUILD_TYPE=Debug + + - name: Build C++17 + run: cmake --build build17 -j 2 - - name: Build - run: cmake --build build2 -j 2 + - name: Python tests C++17 + run: cmake --build build17 --target pytest - - name: Python tests - run: cmake --build build2 --target pytest + # - name: C++ tests C++17 + # run: cmake --build build17 --target cpptest - - name: C++ tests - run: cmake --build build2 --target cpptest + - name: Interface test C++17 + run: cmake --build build17 --target test_cmake_build - # Third build - C++17 mode with unstable ABI - - name: Configure (unstable ABI) + - name: Clean directory + run: git clean -fdx + + # THIRD BUILD + - name: Configure C++17 max DPYBIND11_INTERNALS_VERSION run: > - cmake -S . -B build3 + 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 - "-DPYBIND11_TEST_OVERRIDE=test_call_policies.cpp;test_gil_scoped.cpp;test_thread.cpp" - ${{ matrix.args }} - - name: Build (unstable ABI) - run: cmake --build build3 -j 2 + - 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: Python tests (unstable ABI) - run: cmake --build build3 --target pytest + # - name: C++ tests C++17 max DPYBIND11_INTERNALS_VERSION + # run: cmake --build build17max --target cpptest - - name: Interface test - run: cmake --build build3 --target test_cmake_build + - name: Interface test C++17 max DPYBIND11_INTERNALS_VERSION + run: cmake --build build17max --target test_cmake_build - # This makes sure the setup_helpers module can build packages using - # setuptools + # Ensure the setup_helpers module can build packages using setuptools - name: Setuptools helpers test run: pytest tests/extra_setuptools + + - name: Clean directory + run: git clean -fdx