From 669a39fe03d20de82903cbeae775270e1fac2427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Sat, 16 Sep 2023 11:56:07 +0200 Subject: [PATCH 1/4] Add support for Python 3.12 Following the steps documented here: doc/source/hacking/updating_python_deps.rst --- .github/compose/ci.docker-compose.yml | 5 ++++ .github/workflows/ci.yml | 1 + .github/workflows/release.yml | 1 + tox.ini | 40 +++++++++++++-------------- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/.github/compose/ci.docker-compose.yml b/.github/compose/ci.docker-compose.yml index e1e6315d9..fa46db07b 100644 --- a/.github/compose/ci.docker-compose.yml +++ b/.github/compose/ci.docker-compose.yml @@ -114,3 +114,8 @@ services: <<: *tests-template image: quay.io/pypa/manylinux_2_28_x86_64 command: .github/wheel-helpers/test-wheel-manylinux.sh cp311 /opt/python/cp311-cp311/bin/python3 + + wheels-manylinux_2_28-cp312: + <<: *tests-template + image: quay.io/pypa/manylinux_2_28_x86_64 + command: .github/wheel-helpers/test-wheel-manylinux.sh cp312 /opt/python/cp312-cp312/bin/python3 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f38d703e..3bffc3a75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -147,6 +147,7 @@ jobs: - wheels-manylinux_2_28-cp39 - wheels-manylinux_2_28-cp310 - wheels-manylinux_2_28-cp311 + - wheels-manylinux_2_28-cp312 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b5126a09..dbac5c40a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,6 +91,7 @@ jobs: - wheels-manylinux_2_28-cp39 - wheels-manylinux_2_28-cp310 - wheels-manylinux_2_28-cp311 + - wheels-manylinux_2_28-cp312 steps: - uses: actions/checkout@v3 diff --git a/tox.ini b/tox.ini index 74e6b6228..cd11c5878 100644 --- a/tox.ini +++ b/tox.ini @@ -16,7 +16,7 @@ # Tox global configuration # [tox] -envlist = py{37,38,39,310,311} +envlist = py{37,38,39,310,311,312} skip_missing_interpreters = true isolated_build = true @@ -33,30 +33,30 @@ BST_PLUGINS_VERSION = ed65975aa3b0629a36112d474366ac86d4da8261 [testenv] usedevelop = # This is required by Cython in order to get coverage for cython files. - py{37,38,39,310,311}-!nocover: True + py{37,38,39,310,311,312}-!nocover: True commands = # Running with coverage reporting enabled - py{37,38,39,310,311}-!plugins-!nocover: pytest --basetemp {envtmpdir} --cov=buildstream --cov-config .coveragerc {posargs} + py{37,38,39,310,311,312}-!plugins-!nocover: pytest --basetemp {envtmpdir} --cov=buildstream --cov-config .coveragerc {posargs} # Running with coverage reporting disabled - py{37,38,39,310,311}-!plugins-nocover: pytest --basetemp {envtmpdir} {posargs} + py{37,38,39,310,311,312}-!plugins-nocover: pytest --basetemp {envtmpdir} {posargs} # Running external plugins tests with coverage reporting enabled - py{37,38,39,310,311}-plugins-!nocover: pytest --basetemp {envtmpdir} --cov=buildstream --cov-config .coveragerc --plugins {posargs} + py{37,38,39,310,311,312}-plugins-!nocover: pytest --basetemp {envtmpdir} --cov=buildstream --cov-config .coveragerc --plugins {posargs} # Running external plugins tests with coverage disabled - py{37,38,39,310,311}-plugins-nocover: pytest --basetemp {envtmpdir} --plugins {posargs} + py{37,38,39,310,311,312}-plugins-nocover: pytest --basetemp {envtmpdir} --plugins {posargs} commands_post: - py{37,38,39,310,311}-!nocover: mkdir -p .coverage-reports - py{37,38,39,310,311}-!nocover: mv {envtmpdir}/.coverage {toxinidir}/.coverage-reports/.coverage.{env:COVERAGE_PREFIX:}{envname} + py{37,38,39,310,311,312}-!nocover: mkdir -p .coverage-reports + py{37,38,39,310,311,312}-!nocover: mv {envtmpdir}/.coverage {toxinidir}/.coverage-reports/.coverage.{env:COVERAGE_PREFIX:}{envname} deps = - py{37,38,39,310,311}: -rrequirements/requirements.txt - py{37,38,39,310,311}: -rrequirements/dev-requirements.txt - py{37,38,39,310,311}: git+https://github.com/apache/buildstream-plugins.git@{env:BST_PLUGINS_VERSION:{[config]BST_PLUGINS_VERSION}} + py{37,38,39,310,311,312}: -rrequirements/requirements.txt + py{37,38,39,310,311,312}: -rrequirements/dev-requirements.txt + py{37,38,39,310,311,312}: git+https://github.com/apache/buildstream-plugins.git@{env:BST_PLUGINS_VERSION:{[config]BST_PLUGINS_VERSION}} # Install local sample plugins for testing pip plugin origins - py{37,38,39,310,311}: {toxinidir}/tests/plugins/sample-plugins + py{37,38,39,310,311,312}: {toxinidir}/tests/plugins/sample-plugins # Install external plugins for plugin tests - py{37,38,39,310,311}-plugins: git+https://gitlab.com/buildstream/bst-plugins-experimental.git@{env:BST_PLUGINS_EXPERIMENTAL_VERSION:{[config]BST_PLUGINS_EXPERIMENTAL_VERSION}}#egg=bst_plugins_experimental[deb] + py{37,38,39,310,311,312}-plugins: git+https://gitlab.com/buildstream/bst-plugins-experimental.git@{env:BST_PLUGINS_EXPERIMENTAL_VERSION:{[config]BST_PLUGINS_EXPERIMENTAL_VERSION}}#egg=bst_plugins_experimental[deb] # Only require coverage and pytest-cov when using it !nocover: -rrequirements/cov-requirements.txt @@ -84,21 +84,21 @@ passenv = # These keys are not inherited by any other sections # setenv = - py{37,38,39,310,311}: COVERAGE_FILE = {envtmpdir}/.coverage - py{37,38,39,310,311}: BST_TEST_HOME = {envtmpdir} - py{37,38,39,310,311}: BST_TEST_XDG_CACHE_HOME = {envtmpdir}/cache - py{37,38,39,310,311}: BST_TEST_XDG_CONFIG_HOME = {envtmpdir}/config - py{37,38,39,310,311}: BST_TEST_XDG_DATA_HOME = {envtmpdir}/share + py{37,38,39,310,311,312}: COVERAGE_FILE = {envtmpdir}/.coverage + py{37,38,39,310,311,312}: BST_TEST_HOME = {envtmpdir} + py{37,38,39,310,311,312}: BST_TEST_XDG_CACHE_HOME = {envtmpdir}/cache + py{37,38,39,310,311,312}: BST_TEST_XDG_CONFIG_HOME = {envtmpdir}/config + py{37,38,39,310,311,312}: BST_TEST_XDG_DATA_HOME = {envtmpdir}/share # This is required to run tests with python 3.7 py37: SETUPTOOLS_ENABLE_FEATURES = "legacy-editable" # This is required to get coverage for Cython - py{37,38,39,310,311}-!nocover: BST_CYTHON_TRACE = 1 + py{37,38,39,310,311,312}-!nocover: BST_CYTHON_TRACE = 1 randomized: PYTEST_ADDOPTS="--random-order-bucket=global" whitelist_externals = - py{37,38,39,310,311}: + py{37,38,39,310,311,312}: mv mkdir From c091049cc683d38d5b4d5d391fc48907cced0ce9 Mon Sep 17 00:00:00 2001 From: Seppo Yli-Olli Date: Fri, 1 Dec 2023 18:08:25 +0200 Subject: [PATCH 2/4] Update to latest image and enable Fedora 39 --- .github/common.env | 6 +++--- .github/compose/ci.docker-compose.yml | 4 ++++ .github/workflows/ci.yml | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/common.env b/.github/common.env index 964d7b130..5006d4831 100644 --- a/.github/common.env +++ b/.github/common.env @@ -1,6 +1,6 @@ # Shared common variables -CI_IMAGE_VERSION=master-862722333 -CI_TOXENV_MAIN=py37,py38,py39,py310,py311 -CI_TOXENV_PLUGINS=py37-plugins,py38-plugins,py39-plugins,py310-plugins,py311-plugins +CI_IMAGE_VERSION=master-1091773482 +CI_TOXENV_MAIN=py37,py38,py39,py310,py311,py322 +CI_TOXENV_PLUGINS=py37-plugins,py38-plugins,py39-plugins,py310-plugins,py311-plugins,py312-plugins CI_TOXENV_ALL="${CI_TOXENV_MAIN},${CI_TOXENV_PLUGINS}" diff --git a/.github/compose/ci.docker-compose.yml b/.github/compose/ci.docker-compose.yml index fa46db07b..6e54f0ae2 100644 --- a/.github/compose/ci.docker-compose.yml +++ b/.github/compose/ci.docker-compose.yml @@ -30,6 +30,10 @@ services: <<: *tests-template image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:38-${CI_IMAGE_VERSION:-latest} + fedora-39: + <<: *tests-template + image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:39-${CI_IMAGE_VERSION:-latest} + debian-10: <<: *tests-template image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-debian:10-${CI_IMAGE_VERSION:-latest} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3bffc3a75..243f777f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,7 @@ jobs: - debian-10 - fedora-37 - fedora-38 + - fedora-39 - fedora-missing-deps - lint - mypy From 82d10333545581a2b9288fa1d316fdebbdf0b93c Mon Sep 17 00:00:00 2001 From: Seppo Yli-Olli Date: Fri, 1 Dec 2023 18:17:09 +0200 Subject: [PATCH 3/4] Update cibuildwheel since the old one doesn't support Python 3.12 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 243f777f9..e0e9856eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -126,7 +126,7 @@ jobs: run: ${GITHUB_WORKSPACE}/.github/wheel-helpers/fetch-latest-buildbox-release.sh - name: Build wheels - run: pipx run cibuildwheel==2.11.3 + run: pipx run cibuildwheel==v2.16.2 - uses: actions/upload-artifact@v3 with: From 44c569d822452b1a8eac736fee66623b42d1be08 Mon Sep 17 00:00:00 2001 From: Seppo Yli-Olli Date: Sat, 2 Dec 2023 18:16:46 +0200 Subject: [PATCH 4/4] Update dependencies for Python 3.12 support * grpcio 1.59.3 * ruamel.yaml.clib 0.2.8 * pyroaring 0.4.4 * pyftpdlib 1.5.9 --- requirements/dev-requirements.txt | 2 +- requirements/requirements.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements/dev-requirements.txt b/requirements/dev-requirements.txt index ae883000a..3bb641466 100644 --- a/requirements/dev-requirements.txt +++ b/requirements/dev-requirements.txt @@ -6,7 +6,7 @@ pytest-datafiles==3.0.0 pytest-env==0.8.1 pytest-xdist==3.2.0 pytest-timeout==2.1.0 -pyftpdlib==1.5.7 +pyftpdlib==1.5.9 # isort is an indirect requirement, but it must be constrained # as 5.12 is not available for python 3.7 isort==5.11.5 diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 4d435d223..a9a9e9545 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,13 +1,13 @@ click==8.1.3 -grpcio==1.51.3 +grpcio==1.59.3 Jinja2==3.1.2 pluginbase==1.0.1 protobuf==4.22.0 psutil==5.9.4 ruamel.yaml==0.17.21 -ruamel.yaml.clib==0.2.7 +ruamel.yaml.clib==0.2.8 setuptools==67.4.0 -pyroaring==0.3.8 +pyroaring==0.4.4 ujson==5.7.0 ## The following requirements were added by pip freeze: MarkupSafe==2.1.2