Add support for PEP-660

As with PEP-517 support, this is simply a shim over the setuptools
implementation added in setuptools v64.0.0 [1].

[1] https://github.com/pypa/setuptools/pull/3488

Change-Id: I32f974db37e364cf634b050b40bf0820dce0a3a3
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
Stephen Finucane 2023-11-01 11:12:50 +00:00 committed by Clark Boylan
parent 6df16432aa
commit 457a89ffda
4 changed files with 50 additions and 9 deletions

View File

@ -46,10 +46,9 @@ Your build-system block in ``pyproject.toml`` will need to look something
like this:: like this::
[build-system] [build-system]
requires = ["pbr>=5.7.0", "setuptools>=36.6.0"] requires = ["pbr>=6.0.0", "setuptools>=64.0.0"]
build-backend = "pbr.build" build-backend = "pbr.build"
Eventually PBR may grow its own direct support for PEP517 build hooks, but Eventually PBR may grow its own direct support for PEP517 build hooks, but
until then it will continue to need setuptools and ``setup.py``. until then it will continue to need setuptools and ``setup.py``.

View File

@ -12,15 +12,15 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
"""pep-517 support """PEP-517 / PEP-660 support
Add:: Add::
[build-system] [build-system]
requires = ["pbr>=5.7.0", "setuptools>=36.6.0", "wheel"] requires = ["pbr>=6.0.0", "setuptools>=64.0.0"]
build-backend = "pbr.build" build-backend = "pbr.build"
to pyproject.toml to use this to ``pyproject.toml`` to use this.
""" """
from setuptools import build_meta from setuptools import build_meta
@ -31,9 +31,14 @@ __all__ = [
'prepare_metadata_for_build_wheel', 'prepare_metadata_for_build_wheel',
'build_wheel', 'build_wheel',
'build_sdist', 'build_sdist',
'build_editable',
'get_requires_for_build_editable',
'prepare_metadata_for_build_editable',
] ]
# PEP-517
def get_requires_for_build_wheel(config_settings=None): def get_requires_for_build_wheel(config_settings=None):
return build_meta.get_requires_for_build_wheel(config_settings) return build_meta.get_requires_for_build_wheel(config_settings)
@ -53,9 +58,41 @@ def build_wheel(
metadata_directory=None, metadata_directory=None,
): ):
return build_meta.build_wheel( return build_meta.build_wheel(
wheel_directory, config_settings, metadata_directory, wheel_directory,
config_settings=config_settings,
metadata_directory=metadata_directory,
) )
def build_sdist(sdist_directory, config_settings=None): def build_sdist(sdist_directory, config_settings=None):
return build_meta.build_sdist(sdist_directory, config_settings) return build_meta.build_sdist(sdist_directory, config_settings)
# PEP-660
def build_editable(
wheel_directory,
config_settings=None,
metadata_directory=None,
):
return build_meta.build_editable(
wheel_directory,
config_settings=config_settings,
metadata_directory=metadata_directory,
)
def get_requires_for_build_editable(config_settings=None):
return build_meta.get_requires_for_build_editable(
config_settings=config_settings,
)
def prepare_metadata_for_build_editable(
metadata_directory,
config_settings=None,
):
return build_meta.prepare_metadata_for_build_editable(
metadata_directory,
config_settings=config_settings,
)

View File

@ -1023,6 +1023,11 @@ class TestPEP517Support(base.BaseTestCase):
Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.8
"""), """),
# note that we use 36.6.0 rather than 64.0.0 since the
# latter doesn't support Python < 3.8 and we run our tests
# against Python 2.7 still. That's okay since we're not
# testing PEP-660 functionality here (which requires the
# newer setuptools)
'pyproject.toml': textwrap.dedent("""\ 'pyproject.toml': textwrap.dedent("""\
[build-system] [build-system]
requires = ["pbr", "setuptools>=36.6.0", "wheel"] requires = ["pbr", "setuptools>=36.6.0", "wheel"]

View File

@ -4,7 +4,7 @@
# once we are more confident it works generally. # once we are more confident it works generally.
[build-system] [build-system]
requires = ["setuptools>=36.6.0"] requires = ["setuptools>=64.0.0"]
build-backend = "pbr.build" build-backend = "pbr.build"
backend-path = ["."] backend-path = ["."]