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

addtionally horizon was using a legacy packaging hook
which is removed by this commit.

Change-Id: I904376f05c2ceca8db9dc989909cb05ea65b79f3
This commit is contained in:
Sean Mooney
2023-11-02 11:16:49 +00:00
parent 5a77b63117
commit 6f78d7d1d5
3 changed files with 3 additions and 30 deletions

View File

@@ -1,26 +0,0 @@
# Copyright 2013 Hewlett-Packard Development Company, L.P.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# pylint: disable=no-name-in-module,import-error,deprecated-module
from distutils.command import install
def setup_hook(config):
"""Filter config parsed from a setup.cfg to inject our defaults."""
# Tell distutils not to put the data_files in platform-specific
# installation locations. See here for an explanation:
# https://groups.google.com/forum/#!topic/comp.lang.python/Nex7L-026uw
for scheme in install.INSTALL_SCHEMES.values():
scheme['data'] = scheme['purelib']

3
pyproject.toml Normal file
View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["pbr>=6.0.0", "setuptools>=64.0.0"]
build-backend = "pbr.build"

View File

@@ -25,10 +25,6 @@ classifier =
Programming Language :: Python :: 3.11
Topic :: Internet :: WWW/HTTP
[global]
setup-hooks =
openstack_dashboard.hooks.setup_hook
[files]
packages =
horizon