From 6008d31f2f70e1845dee6f21ec3df9fc4220bf06 Mon Sep 17 00:00:00 2001 From: Jay Faulkner Date: Thu, 29 Aug 2024 13:49:59 -0700 Subject: [PATCH] add pyproject.toml to support pip 23.1 pip 23.1 removed the "setup.py install" fallback for projects that do not have pyproject.toml and now uses a pyproject.toml which is vendored in pip. To address that, this change adds the minimal pyproject.toml to enable pbr to be properly used to build editable wheels. This is required to support installing devstack on centos stream 9 and related distros with GLOBAL_VENV=True Without this change the wsgi scripts are not generated in editable mode. i.e. pip install -e /opt/stack/keystone See https://pip.pypa.io/en/stable/news/#v23-1 and https://github.com/pypa/pip/issues/8368 for more details on the removal of the fallback support. setuptools v64.0.0 is used to support editable installs via its PEP-660 implmentation https://github.com/pypa/setuptools/pull/3488 This patch was taken nearly verbatim from the equivalent nova change. Co-Authored-By: Sean Mooney Change-Id: I34888e8f87b4a3ab09546ba58ef5f2cf495bc7e3 --- pyproject.toml | 3 +++ requirements.txt | 2 +- setup.py | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..5e862a9593 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["pbr>=6.0.0", "setuptools>=64.0.0"] +build-backend = "pbr.build" diff --git a/requirements.txt b/requirements.txt index 25f9d4c49c..3d228b0e31 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ # date but we do not test them so no guarantee of having them all correct. If # you find any incorrect lower bounds, let us know or propose a fix. -pbr>=3.1.1 # Apache-2.0 +pbr>=6.0.0 # Apache-2.0 SQLAlchemy>=1.4.0 # MIT alembic>=1.4.2 # MIT automaton>=1.9.0 # Apache-2.0 diff --git a/setup.py b/setup.py index e5bafb0134..36eaf2d45c 100644 --- a/setup.py +++ b/setup.py @@ -16,6 +16,6 @@ import setuptools setuptools.setup( - setup_requires=['pbr>=2.0.0'], + setup_requires=['pbr>=6.0.0'], pbr=True, )