-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Replace upstream.yml with new python312.yml #4397
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why remove VERBOSE just to add it to every line below? |
||
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 | ||
Comment on lines
+43
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These generally will only work after RC1 is out, and by that time, we should be including the next release in our regular, required CI. I'd say just keep them out of this. |
||
|
||
- 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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should get printed in our regular build? If not, we could add it (only if pybind11 is the master project). |
||
|
||
# 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 | ||
Comment on lines
+69
to
+79
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the only 3.12 specific part. I'd rather record logs of things happening outside the repo, certainly not in the CI files. I'd just make an issue and dump this in there. One issue per Python release would make much more sense than renaming a CI file every year. It's easier to update an issue than commit a change to the files. |
||
|
||
- 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 | ||
Comment on lines
+104
to
+105
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure what the benefit of not running the tests to make the not-required and not-default tests pass is. |
||
|
||
- 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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why spend time deleting things if this is the last step? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this false? If you push a new commit, you probably don't care about the old one finishing, regardless of the fact this is a development build?